src/Infrastructure/Doctrine/Entity/DoctrineIzOrderOrder.php line 19

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Infrastructure\Doctrine\Entity;
  4. use App\Domain\Common\Entity\IzOrderClient;
  5. use App\Domain\Common\Entity\IzOrderOrder;
  6. use App\Domain\Common\Entity\IzOrderOrderLine;
  7. use App\Domain\Order\Enum\StatusEnum;
  8. use App\Infrastructure\Doctrine\Entity\Traits\TimestampableTrait;
  9. use Doctrine\Common\Collections\ArrayCollection;
  10. use Doctrine\Common\Collections\Collection;
  11. use Doctrine\ORM\Mapping as ORM;
  12. /**
  13.  * @ORM\Entity(repositoryClass="App\Infrastructure\Doctrine\Repository\DoctrineIzOrderOrderRepository")
  14.  */
  15. class DoctrineIzOrderOrder implements IzOrderOrder
  16. {
  17.     use TimestampableTrait;
  18.     /**
  19.      * @ORM\Id
  20.      * @ORM\Column(type="string", length=10)
  21.      * @ORM\GeneratedValue(strategy="CUSTOM")
  22.      * @ORM\CustomIdGenerator(class="App\Infrastructure\Doctrine\IdGenerator\OrderIdGenerator")
  23.      */
  24.     private string $numeroDeCommande '';
  25.     /**
  26.      * @ORM\Column(type="string", length=3)
  27.      */
  28.     private string $numeroDeRepresentant '';
  29.     /**
  30.      * @ORM\Column(type="string", length=16)
  31.      */
  32.     private string $codeClient '';
  33.     /**
  34.      * @ORM\Column(type="integer")
  35.      */
  36.     private int $totalQuantite 0;
  37.     /**
  38.      * @ORM\Column(type="float")
  39.      */
  40.     private float $totalMontant 0.0;
  41.     /**
  42.      * @ORM\Column(type="integer")
  43.      */
  44.     private int $totalQuantiteExpediee 0;
  45.     /**
  46.      * @ORM\Column(type="integer")
  47.      */
  48.     private int $totalQuantiteReliquat 0;
  49.     /**
  50.      * @ORM\Column(type="date_immutable", nullable=true)
  51.      */
  52.     private ?\DateTimeImmutable $dateDeLivraisonSouhaitee null;
  53.     /**
  54.      * @ORM\Column(type="string", length=10, nullable=true)
  55.      */
  56.     private ?string $codeFiliere null;
  57.     /**
  58.      * @ORM\Column(type="string", length=191)
  59.      */
  60.     private string $nomLivraison '';
  61.     /**
  62.      * @ORM\Column(type="string", length=191)
  63.      */
  64.     private string $adresseLivraison '';
  65.     /**
  66.      * @ORM\Column(type="string", length=191)
  67.      */
  68.     private string $codePostalLivraison '';
  69.     /**
  70.      * @ORM\Column(type="string", length=191)
  71.      */
  72.     private string $villeLivraison '';
  73.     /**
  74.      * @ORM\Column(type="string", length=191)
  75.      */
  76.     private string $paysLivraison '';
  77.     /**
  78.      * @ORM\Column(type="string", length=191)
  79.      */
  80.     private string $statut;
  81.     /**
  82.      * @var Collection<int, IzOrderOrderLine>
  83.      *
  84.      * @ORM\OneToMany(
  85.      *     targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderOrderLine",
  86.      *     mappedBy="order",
  87.      *     orphanRemoval=true,
  88.      *     cascade={"persist"}
  89.      * )
  90.      */
  91.     private iterable $lines;
  92.     /**
  93.      * @ORM\ManyToOne(targetEntity="App\Infrastructure\Doctrine\Entity\DoctrineIzOrderClient")
  94.      * @ORM\JoinColumn(referencedColumnName="code_client", onDelete="SET NULL")
  95.      */
  96.     private ?IzOrderClient $client null;
  97.     /**
  98.      * @ORM\Column(type="datetime_immutable", nullable=true)
  99.      */
  100.     private ?\DateTimeImmutable $sendAt null;
  101.     public function __construct()
  102.     {
  103.         $this->statut StatusEnum::PRISE_EN_COMPTE()->getKey();
  104.         $this->lines = new ArrayCollection();
  105.     }
  106.     public function __toString(): string
  107.     {
  108.         return "Commande n°{$this->getNumeroDeCommande()}";
  109.     }
  110.     public function getNumeroDeCommande(): string
  111.     {
  112.         return $this->numeroDeCommande;
  113.     }
  114.     public function setNumeroDeCommande(string $numeroDeCommande): void
  115.     {
  116.         $this->numeroDeCommande $numeroDeCommande;
  117.     }
  118.     public function getNumeroDeRepresentant(): string
  119.     {
  120.         return $this->numeroDeRepresentant;
  121.     }
  122.     public function setNumeroDeRepresentant(string $numeroDeRepresentant): void
  123.     {
  124.         $this->numeroDeRepresentant $numeroDeRepresentant;
  125.     }
  126.     public function getCodeClient(): string
  127.     {
  128.         return $this->codeClient;
  129.     }
  130.     public function setCodeClient(string $codeClient): void
  131.     {
  132.         $this->codeClient $codeClient;
  133.     }
  134.     public function getTotalQuantite(): int
  135.     {
  136.         return $this->totalQuantite;
  137.     }
  138.     public function setTotalQuantite(int $totalQuantite): void
  139.     {
  140.         $this->totalQuantite $totalQuantite;
  141.     }
  142.     public function getTotalMontant(): float
  143.     {
  144.         return $this->totalMontant;
  145.     }
  146.     public function setTotalMontant(float $totalMontant): void
  147.     {
  148.         $this->totalMontant $totalMontant;
  149.     }
  150.     public function getTotalQuantiteExpediee(): int
  151.     {
  152.         return $this->totalQuantiteExpediee;
  153.     }
  154.     public function setTotalQuantiteExpediee(int $totalQuantiteExpediee): void
  155.     {
  156.         $this->totalQuantiteExpediee $totalQuantiteExpediee;
  157.     }
  158.     public function getTotalQuantiteReliquat(): int
  159.     {
  160.         return $this->totalQuantiteReliquat;
  161.     }
  162.     public function setTotalQuantiteReliquat(int $totalQuantiteReliquat): void
  163.     {
  164.         $this->totalQuantiteReliquat $totalQuantiteReliquat;
  165.     }
  166.     public function getDateDeLivraisonSouhaitee(): ?\DateTimeImmutable
  167.     {
  168.         return $this->dateDeLivraisonSouhaitee;
  169.     }
  170.     public function setDateDeLivraisonSouhaitee(?\DateTimeImmutable $dateDeLivraisonSouhaitee): void
  171.     {
  172.         $this->dateDeLivraisonSouhaitee $dateDeLivraisonSouhaitee;
  173.     }
  174.     public function getCodeFiliere(): ?string
  175.     {
  176.         return $this->codeFiliere;
  177.     }
  178.     public function setCodeFiliere(?string $codeFiliere): void
  179.     {
  180.         $this->codeFiliere $codeFiliere;
  181.     }
  182.     public function getNomLivraison(): string
  183.     {
  184.         return $this->nomLivraison;
  185.     }
  186.     public function setNomLivraison(string $nomLivraison): void
  187.     {
  188.         $this->nomLivraison $nomLivraison;
  189.     }
  190.     public function getAdresseLivraison(): string
  191.     {
  192.         return $this->adresseLivraison;
  193.     }
  194.     public function setAdresseLivraison(string $adresseLivraison): void
  195.     {
  196.         $this->adresseLivraison $adresseLivraison;
  197.     }
  198.     public function getCodePostalLivraison(): string
  199.     {
  200.         return $this->codePostalLivraison;
  201.     }
  202.     public function setCodePostalLivraison(string $codePostalLivraison): void
  203.     {
  204.         $this->codePostalLivraison $codePostalLivraison;
  205.     }
  206.     public function getVilleLivraison(): string
  207.     {
  208.         return $this->villeLivraison;
  209.     }
  210.     public function setVilleLivraison(string $villeLivraison): void
  211.     {
  212.         $this->villeLivraison $villeLivraison;
  213.     }
  214.     public function getPaysLivraison(): string
  215.     {
  216.         return $this->paysLivraison;
  217.     }
  218.     public function setPaysLivraison(string $paysLivraison): void
  219.     {
  220.         $this->paysLivraison $paysLivraison;
  221.     }
  222.     public function getStatut(): string
  223.     {
  224.         return $this->statut;
  225.     }
  226.     public function setStatut(string $statut): void
  227.     {
  228.         $this->statut $statut;
  229.     }
  230.     /**
  231.      * {@inheritDoc}
  232.      */
  233.     public function getLines(): iterable
  234.     {
  235.         return $this->lines;
  236.     }
  237.     public function addLine(IzOrderOrderLine $line): void
  238.     {
  239.         if (!$this->lines->contains($line)) {
  240.             $this->lines[] = $line;
  241.             $line->setOrder($this);
  242.         }
  243.     }
  244.     public function removeLine(IzOrderOrderLine $line): void
  245.     {
  246.         $this->lines->removeElement($line);
  247.     }
  248.     public function getClient(): ?IzOrderClient
  249.     {
  250.         return $this->client;
  251.     }
  252.     public function setClient(?IzOrderClient $client): void
  253.     {
  254.         $this->client $client;
  255.         if ($client) {
  256.             $this->setCodeClient($client->getCodeClient());
  257.             $this->setNumeroDeRepresentant(($representant $client->getCodeRepresentant()) ? $representant->getCodeRepresentant() : '00');
  258.             $this->setCodeFiliere($client->getCodeFiliere());
  259.             $this->setNomLivraison((string) $client->getRaisonSociale());
  260.             $this->setAdresseLivraison(trim($client->getAdresse1().' '.$client->getAdresse2()));
  261.             $this->setCodePostalLivraison($client->getCodePostal() ?? '');
  262.             $this->setVilleLivraison($client->getVille() ?? '');
  263.             $this->setPaysLivraison($client->getPays() ?? '');
  264.         }
  265.     }
  266.     public function getSendAt(): ?\DateTimeImmutable
  267.     {
  268.         return $this->sendAt;
  269.     }
  270.     public function setSendAt(?\DateTimeImmutable $sendAt): void
  271.     {
  272.         $this->sendAt $sendAt;
  273.     }
  274. }