<?php
namespace App\Entity;
use App\Repository\ProjectOrderTaskFulfillmentRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=ProjectOrderTaskFulfillmentRepository::class)
*/
class ProjectOrderTaskFulfillment
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({
* "project_order_task_fulfillment@base",
* "project_order_task_fulfillment@core"
* })
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Vendor::class, inversedBy="project_order_task_fulfillments")
* @ORM\JoinColumn(nullable=true, options={"comment": "Use this data if scope:External & work-natue: support&production"})
* @Groups({
* "project_order_task_fulfillment@vendor"
* })
*/
private $vendor;
/**
* @ORM\ManyToOne(targetEntity=VendorContactPersons::class, inversedBy="project_order_task_fulfillments")
* @ORM\JoinColumn(nullable=true, options={"comment": "Use this data if scope:External & work-natue: support&production"})
* @Groups({
* "project_order_task_fulfillment@contact_person"
* })
*/
private $vendor_contact_person;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $work_content;
/**
* @ORM\ManyToOne(targetEntity=TaskFulfillmentReasons::class, inversedBy="project_order_task_fulfillments")
* @ORM\JoinColumn(nullable=false)
* @Groups({
* "project_order_task_fulfillment@reason"
* })
*/
private $reason;
// "project_order_task_fulfillment@task"
/**
* @ORM\OneToOne(targetEntity=ProjectOrderTasks::class, inversedBy="task_fulfillment")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
* @Groups({
* "project_order_task_fulfillment@task"
* })
*/
private $task;
/**
* @ORM\Column(type="boolean", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $is_linked;
/**
* @ORM\Column(type="date_immutable", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $planned_start_at;
/**
* @ORM\Column(type="date_immutable", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $planned_end_at;
/**
* @ORM\Column(type="date_immutable", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $actual_end_at;
/**
* @ORM\Column(type="date_immutable", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $delivery_at;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $delivery_note;
/**
* @ORM\Column(type="float", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $rating;
/**
* @ORM\Column(type="float", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $cost;
/**
* @ORM\Column(type="string", length=64, nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $contract_reference_nr;
/**
* @ORM\ManyToOne(targetEntity=ContractTypes::class, inversedBy="project_order_task_fulfillments")
* @Groups({
* "project_order_task_fulfillment@contract_type"
* })
*/
private $contract_type;
/**
* @ORM\OneToMany(targetEntity=ProjectOrderTaskFulfillmentWorkDocs::class, mappedBy="project_order_task_fulfillment", cascade={"persist"}, orphanRemoval=true)
* @Groups({
* "project_order_task_fulfillment@work_documents"
* })
*/
private $work_documents;
/**
* @ORM\Column(type="task_execution_scope", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $execution_scope;
/**
* @ORM\Column(type="task_execution_work_nature", nullable=true)
* @Groups({
* "project_order_task_fulfillment@core"
* })
*/
private $execution_work_nature;
/**
* @ORM\ManyToOne(targetEntity=Branches::class, inversedBy="project_order_task_fulfillments")
* @ORM\JoinColumn(options={"comment": "Use this data if fulfillment is internal&production"})
* @Groups({
* "project_order_task_fulfillment@branch"
* })
*/
private $branch;
/**
* @ORM\ManyToOne(targetEntity=WorkerActivities::class, inversedBy="project_order_task_fulfillments")
* @ORM\JoinColumn(options={"comment": "Use this data if fulfillment is internal&production"})
* @Groups({
* "project_order_task_fulfillment@branch_contact_person"
* })
*/
private $branch_contact_person;
public function __construct()
{
$this->work_documents = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getVendor(): ?Vendor
{
return $this->vendor;
}
public function setVendor(?Vendor $vendor): self
{
$this->vendor = $vendor;
return $this;
}
public function getVendorContactPerson(): ?VendorContactPersons
{
return $this->vendor_contact_person;
}
public function setVendorContactPerson(?VendorContactPersons $vendor_contact_person): self
{
$this->vendor_contact_person = $vendor_contact_person;
return $this;
}
public function getWorkContent(): ?string
{
return $this->work_content;
}
public function setWorkContent(?string $work_content): self
{
$this->work_content = $work_content;
return $this;
}
public function getReason(): ?TaskFulfillmentReasons
{
return $this->reason;
}
public function setReason(?TaskFulfillmentReasons $reason): self
{
$this->reason = $reason;
return $this;
}
public function getTask(): ?ProjectOrderTasks
{
return $this->task;
}
public function setTask(ProjectOrderTasks $task): self
{
$this->task = $task;
return $this;
}
public function isIsLinked(): ?bool
{
return $this->is_linked;
}
public function setIsLinked(?bool $is_linked): self
{
$this->is_linked = $is_linked;
return $this;
}
public function getPlannedStartAt(): ?\DateTimeImmutable
{
return $this->planned_start_at;
}
public function setPlannedStartAt(?\DateTimeImmutable $planned_start_at): self
{
$this->planned_start_at = $planned_start_at;
return $this;
}
public function getPlannedEndAt(): ?\DateTimeImmutable
{
return $this->planned_end_at;
}
public function setPlannedEndAt(?\DateTimeImmutable $planned_end_at): self
{
$this->planned_end_at = $planned_end_at;
return $this;
}
public function getActualEndAt(): ?\DateTimeImmutable
{
return $this->actual_end_at;
}
public function setActualEndAt(?\DateTimeImmutable $actual_end_at): self
{
$this->actual_end_at = $actual_end_at;
return $this;
}
public function getDeliveryAt(): ?\DateTimeImmutable
{
return $this->delivery_at;
}
public function setDeliveryAt(?\DateTimeImmutable $delivery_at): self
{
$this->delivery_at = $delivery_at;
return $this;
}
public function getDeliveryNote(): ?string
{
return $this->delivery_note;
}
public function setDeliveryNote(?string $delivery_note): self
{
$this->delivery_note = $delivery_note;
return $this;
}
public function getRating(): ?float
{
return $this->rating;
}
public function setRating(?float $rating): self
{
$this->rating = $rating;
return $this;
}
public function getCost(): ?float
{
return $this->cost;
}
public function setCost(?float $cost): self
{
$this->cost = $cost;
return $this;
}
public function getContractReferenceNr(): ?string
{
return $this->contract_reference_nr;
}
public function setContractReferenceNr(?string $contract_reference_nr): self
{
$this->contract_reference_nr = $contract_reference_nr;
return $this;
}
public function getContractType(): ?ContractTypes
{
return $this->contract_type;
}
public function setContractType(?ContractTypes $contract_type): self
{
$this->contract_type = $contract_type;
return $this;
}
/**
* @return Collection<int, ProjectOrderTaskFulfillmentWorkDocs>
*/
public function getWorkDocuments(): Collection
{
return $this->work_documents;
}
public function addProjectOrderTaskFulfillmentWorkDoc(ProjectOrderTaskFulfillmentWorkDocs $projectOrderTaskFulfillmentWorkDocs): self
{
if (!$this->work_documents->contains($projectOrderTaskFulfillmentWorkDocs)) {
$this->work_documents[] = $projectOrderTaskFulfillmentWorkDocs;
$projectOrderTaskFulfillmentWorkDocs->setProjectOrderTaskFulfillment($this);
}
return $this;
}
public function removeProjectOrderTaskFulfillmentWorkDoc(ProjectOrderTaskFulfillmentWorkDocs $projectOrderTaskFulfillmentWorkDocs): self
{
if ($this->work_documents->removeElement($projectOrderTaskFulfillmentWorkDocs)) {
// set the owning side to null (unless already changed)
if ($projectOrderTaskFulfillmentWorkDocs->getProjectOrderTaskFulfillment() === $this) {
$projectOrderTaskFulfillmentWorkDocs->setProjectOrderTaskFulfillment(null);
}
}
return $this;
}
public function getExecutionScope(): ?string
{
return $this->execution_scope;
}
public function setExecutionScope(?string $execution_scope): self
{
$this->execution_scope = $execution_scope;
return $this;
}
public function getExecutionWorkNature()
{
return $this->execution_work_nature;
}
public function setExecutionWorkNature($execution_work_nature): void
{
$this->execution_work_nature = $execution_work_nature;
}
public function getBranch(): ?Branches
{
return $this->branch;
}
public function setBranch(?Branches $branch): self
{
$this->branch = $branch;
return $this;
}
public function getBranchContactPerson(): ?WorkerActivities
{
return $this->branch_contact_person;
}
public function setBranchContactPerson(?WorkerActivities $branch_contact_person): self
{
$this->branch_contact_person = $branch_contact_person;
return $this;
}
}