<?php
namespace App\Entity\Produit;
use App\Entity\Order\OrderLineFinition;
use App\Repository\FinitionRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\{ProduitRelatedVersion};
use App\Entity\Produit\Produit;
#[ORM\Entity(repositoryClass: FinitionRepository::class)]
class Finition
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private $id;
#[ORM\OneToMany(mappedBy: 'finition', targetEntity: ProduitRelatedVersion::class, orphanRemoval: true)]
private $produitRelatedVersions;
#[ORM\Column(type: 'string', length: 255)]
private $name;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $priceHt;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $priceTtc;
#[ORM\Column(type: 'decimal', precision: 10, scale: 2, nullable:true)]
private $taxRate;
#[ORM\Column(type: 'string', length: 400)]
private $descriptions;
#[ORM\OneToMany(mappedBy: 'finition', targetEntity: Produit::class)]
private $produits;
#[ORM\OneToMany(mappedBy: 'finition', targetEntity: OrderLineFinition::class)]
private Collection $orderLineFinitions;
public function __construct()
{
$this->produitRelatedVersions = new ArrayCollection();
$this->produits = new ArrayCollection();
$this->orderLineFinitions = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
/**
* @return Collection<int, ProduitRelatedVersion>
*/
public function getProduitRelatedVersions(): Collection
{
return $this->produitRelatedVersions;
}
public function addProduitRelatedVersion(ProduitRelatedVersion $produitRelatedVersion): self
{
if (!$this->produitRelatedVersions->contains($produitRelatedVersion)) {
$this->produitRelatedVersions[] = $produitRelatedVersion;
$produitRelatedVersion->setFinition($this);
}
return $this;
}
public function removeProduitRelatedVersion(ProduitRelatedVersion $produitRelatedVersion): self
{
if ($this->produitRelatedVersions->removeElement($produitRelatedVersion)) {
// set the owning side to null (unless already changed)
if ($produitRelatedVersion->getFinition() === $this) {
$produitRelatedVersion->setFinition(null);
}
}
return $this;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDescriptions(): ?string
{
return $this->descriptions;
}
public function setDescriptions(string $descriptions): self
{
$this->descriptions = $descriptions;
return $this;
}
/**
* @return Collection<int, Produit>
*/
public function getProduits(): Collection
{
return $this->produits;
}
public function addProduit(Produit $produit): self
{
if (!$this->produits->contains($produit)) {
$this->produits[] = $produit;
$produit->setFinition($this);
}
return $this;
}
public function removeProduit(Produit $produit): self
{
if ($this->produits->removeElement($produit)) {
// set the owning side to null (unless already changed)
if ($produit->getFinition() === $this) {
$produit->setFinition(null);
}
}
return $this;
}
/**
* @return Collection<int, OrderLineFinition>
*/
public function getOrderLineFinitions(): Collection
{
return $this->orderLineFinitions;
}
public function addOrderLineFinition(OrderLineFinition $orderLineFinition): static
{
if (!$this->orderLineFinitions->contains($orderLineFinition)) {
$this->orderLineFinitions->add($orderLineFinition);
$orderLineFinition->setFinition($this);
}
return $this;
}
public function removeOrderLineFinition(OrderLineFinition $orderLineFinition): static
{
if ($this->orderLineFinitions->removeElement($orderLineFinition)) {
// set the owning side to null (unless already changed)
if ($orderLineFinition->getFinition() === $this) {
$orderLineFinition->setFinition(null);
}
}
return $this;
}
public function getPrice(): ?string
{
return $this->priceTtc;
}
public function getPriceHt()
{
return $this->priceHt;
}
public function setPriceHt($priceHt): self
{
$this->priceHt = $priceHt;
return $this;
}
public function getPriceTtc()
{
return $this->priceTtc;
}
public function setPriceTtc($priceTtc): self
{
$this->priceTtc = $priceTtc;
return $this;
}
public function getTaxRate()
{
return $this->taxRate;
}
public function setTaxRate($taxRate): self
{
$this->taxRate = $taxRate;
return $this;
}
public function __toString(){
return $this->getName(). " (".$this->getPriceTtc()." €)";
}
}