<?php
namespace App\Entity;
use App\Repository\InvoicePositionsRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=InvoicePositionsRepository::class)
* @UniqueEntity(
* fields={"invoice", "project_order", "order_billing"},
* message="Invoice position already registered|Invoice position with combination -> Invoice-Nr:%s Order-Nr:%s Billing:%s already registered"
* )
*/
class InvoicePositions
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({
* "invoice_position@core",
* "invoice_position@base"
* })
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity=Invoices::class, inversedBy="invoice_positions")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
* @Groups({
* "invoice_position@invoice"
* })
*/
private $invoice;
/**
* @ORM\Column(type="string", length=64, nullable=true)
* @Groups({
* "invoice_position@core",
* "invoice_position@base"
* })
*/
private $alias;
/**
* @ORM\ManyToOne(targetEntity=ProjectOrders::class, inversedBy="invoice_positions")
* @ORM\JoinColumn(nullable=false, onDelete="CASCADE")
* @Groups({
* "invoice_position@project_order"
* })
*/
private $project_order;
/**
* @ORM\Column(type="float", nullable=true)
* @Groups({
* "invoice_position@core",
* "invoice_position@base",
* })
*/
private $position_amount;
/**
* Asagidaki aciklama eski, Yeni bit position olustur Billing Silinirse Invoice Positionun anlami klamaz silmelisin!!!
* NULL Olabilir sebebi Eger bir invoice silinirse ona bagli billing bosa ciksin belki baska bi invoice baglanti kurabilir
* @ORM\ManyToOne(targetEntity=ProjectOrderBillings::class, inversedBy="invoice_position", cascade={"persist"})
* @ORM\JoinColumn(nullable=true, onDelete="CASCADE")
* @Groups({
* "invoice_position@order_billing"
* })
*/
private $order_billing;
/**
* @ORM\ManyToOne(targetEntity=InvoicePaymentStatus::class, inversedBy="invoice_positions")
* @Groups({
* "invoice_position@payment_status"
* })
*/
private $payment_status;
/**
* @ORM\Column(type="datetime_immutable", nullable=true)
*/
private $created_at;
public function getId(): ?int
{
return $this->id;
}
public function getInvoice(): ?Invoices
{
return $this->invoice;
}
public function setInvoice(?Invoices $invoice): self
{
$this->invoice = $invoice;
return $this;
}
public function getAlias(): ?string
{
return $this->alias;
}
public function setAlias(?string $alias): self
{
$this->alias = $alias;
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 getPositionAmount(): ?float
{
return $this->position_amount;
}
public function setPositionAmount(?float $position_amount): self
{
$this->position_amount = $position_amount;
return $this;
}
public function getOrderBilling(): ?ProjectOrderBillings
{
return $this->order_billing;
}
public function setOrderBilling(?ProjectOrderBillings $order_billing): self
{
$this->order_billing = $order_billing;
return $this;
}
public function getPaymentStatus(): ?InvoicePaymentStatus
{
return $this->payment_status;
}
public function setPaymentStatus(?InvoicePaymentStatus $payment_status): self
{
$this->payment_status = $payment_status;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->created_at;
}
public function setCreatedAt(?\DateTimeImmutable $created_at): self
{
$this->created_at = $created_at;
return $this;
}
}