<?php
namespace App\Entity;
use App\Repository\ProjectOrderExpensesRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
use Symfony\Component\Serializer\Annotation\MaxDepth;
/**
* @ORM\Entity(repositoryClass=ProjectOrderExpensesRepository::class)
*/
// README annotation info
//
class ProjectOrderExpenses
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* πproject.orders.expense.minify.base.for.position Expense Position Project ordar'a related oldugu icin bu Positionnun bagli oldugu expense mini bilgileri veriyori, yoksa circular reference olusuyor
* @Groups({
* "project.orders.expense.base",
* "project.orders.expense.minify.version",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Suppliers::class, inversedBy="projectOrderExpenses")
* @ORM\JoinColumn(nullable=false)
* @Groups({
* "supplier.base",
* "project.orders.expense.minify.version",
*
* "expense.supplier"
* })
*/
private $supplier;
/**
* ββββββ use in positions
* @deprecated will remove completelly
* @ORM\ManyToOne(targetEntity=ProjectOrders::class, inversedBy="projectOrderExpenses")
* Groups({
* "project.orders.expense.assigned.order",
*
* })
*/
private $project_order;
/**
* @ORM\Column(type="string", length=64, nullable=true, unique=true )
* @ORM\JoinColumn(nullable=true)
* @Groups({
* "project.orders.expense.base",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $invoice_nr;
/**
* @ORM\Column(type="datetime_immutable")
* @Groups({
* "project.orders.expense.base",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $created_at;
/**
* @MaxDepth(1)
* "project.orders.expense.minify.version" for count
* @ORM\OneToMany(targetEntity=ProjectOrderExpensePositions::class, mappedBy="project_order_expense", cascade={"persist"})
* @Groups({
* "@deprecated_.project.orders.expense.positions",
* "expense.positions",
* "project.orders.expense.minify.version",
* "expense.positions"
* })
* @ORM\OrderBy({"id": "DESC"})
*/
private $project_order_expense_positions;
/**
* @deprecated βββββββ Amount use for older vers. with new use positions amount
*
* @ORM\Column(type="decimal", precision=10, scale=2, nullable=true)
* @Groups({
* "project.orders.expense.base"
* })
*/
private $amount;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
* @Groups({
* "project.orders.expense.base",
* "project.orders.expense.minify.version",
* "project.orders.expense.position.expense",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $expensed_at;
/**
* @ORM\Column(type="string", length=64, nullable=true, unique=true, options={"comment": "Bu bir siparis numarasi bir Proje>Orderlar icin yapilan siparislerin geneli"})
* @Groups({
* "project.orders.expense.base",
* "project.orders.expense.minify.version",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $expense_nr;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({
* "project.orders.expense.base",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $comment;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups({
* "project.orders.expense.base",
* "project.orders.expense.minify.version",
*
* "expense.core", "expense:core", "expense@core"
* })
*/
private $file_name;
/**
* ORM\OneToOne(targetEntity=PurchaseRequest::class, mappedBy="expense", cascade={"persist", "remove"})
* @ORM\ManyToOne(targetEntity=PurchaseRequest::class, inversedBy="expense", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({
* "expense:purchse_request",
* "expense@purchse_request"
* })
*/
private $purchase_request;
public function __construct()
{
$this->project_order_expense_positions = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getSupplier(): ?Suppliers
{
return $this->supplier;
}
public function setSupplier(?Suppliers $supplier): self
{
$this->supplier = $supplier;
return $this;
}
public function getProjectOrder(): ?ProjectOrders
{
return $this->project_order;
}
public function setProjectOrder(?ProjectOrders $project_order): self
{
$this->project_order = $project_order;
return $this;
}
public function getInvoiceNr(): ?string
{
return $this->invoice_nr;
}
public function setInvoiceNr(?string $invoice_nr): self
{
$this->invoice_nr = $invoice_nr;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->created_at;
}
public function setCreatedAt(\DateTimeImmutable $created_at): self
{
$this->created_at = $created_at;
return $this;
}
/**
* @return Collection<int, ProjectOrderExpensePositions>
*/
public function getProjectOrderExpensePositions(): Collection
{
return $this->project_order_expense_positions;
}
public function addProjectOrderExpensePosition(ProjectOrderExpensePositions $projectOrderExpensePosition): self
{
if (!$this->project_order_expense_positions->contains($projectOrderExpensePosition)) {
$this->project_order_expense_positions[] = $projectOrderExpensePosition;
$projectOrderExpensePosition->setProjectOrderExpense($this);
}
return $this;
}
public function removeProjectOrderExpensePosition(ProjectOrderExpensePositions $projectOrderExpensePosition): self
{
if ($this->project_order_expense_positions->removeElement($projectOrderExpensePosition)) {
// set the owning side to null (unless already changed)
if ($projectOrderExpensePosition->getProjectOrderExpense() === $this) {
$projectOrderExpensePosition->setProjectOrderExpense(null);
}
}
return $this;
}
public function getAmount(): ?string
{
return $this->amount;
}
public function setAmount(?string $amount): self
{
$this->amount = $amount;
return $this;
}
public function getExpensedAt(): ?\DateTimeImmutable
{
return $this->expensed_at;
}
public function setExpensedAt(?\DateTimeImmutable $expensed_at): self
{
$this->expensed_at = $expensed_at;
return $this;
}
public function getExpenseNr(): ?string
{
return $this->expense_nr;
}
public function setExpenseNr(?string $expense_nr): self
{
$this->expense_nr = $expense_nr;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
public function getFileName(): ?string
{
return $this->file_name;
}
public function setFileName(?string $file_name): self
{
$this->file_name = $file_name;
return $this;
}
public function getPurchaseRequest(): ?PurchaseRequest
{
return $this->purchase_request;
}
public function setPurchaseRequest(?PurchaseRequest $purchase_request): self
{
$this->purchase_request = $purchase_request;
return $this;
}
}