src/Entity/Order/Order.php line 23

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Entity\Order;
  4. use DateTime;
  5. use Doctrine\Common\Collections\ArrayCollection;
  6. use Doctrine\Common\Collections\Collection;
  7. use Doctrine\ORM\Mapping as ORM;
  8. use Setono\SyliusMailchimpPlugin\Model\OrderInterface as SetonoSyliusMailchimpPluginOrderInterface;
  9. use Setono\SyliusMailchimpPlugin\Model\OrderTrait as SetonoSyliusMailchimpPluginOrderTrait;
  10. use Sylius\Component\Core\Model\AdjustmentInterface;
  11. use Sylius\Component\Core\Model\Order as BaseOrder;
  12. use Sylius\Component\Resource\Model\ArchivableTrait;
  13. /**
  14.  * @ORM\Entity
  15.  * @ORM\Table(name="sylius_order")
  16.  *
  17.  * @method Collection|OrderItem[] getItems()
  18.  */
  19. class Order extends BaseOrder implements SetonoSyliusMailchimpPluginOrderInterface
  20. {
  21.     use ArchivableTrait;
  22.     use SetonoSyliusMailchimpPluginOrderTrait;
  23.     public const STATE_QUOTATION 'quotation';
  24.     /**
  25.      * @var \DateTimeInterface|null
  26.      *
  27.      * @ORM\Column(name="archived_at", type="datetime", nullable=true)
  28.      */
  29.     protected $archivedAt;
  30.     /** @ORM\Column(name="shipping_date_estimated", type="datetime", nullable=true) */
  31.     protected ?DateTime $shippingDateEstimated;
  32.     /** @ORM\Column(name="date_validation_payment", type="datetime", nullable=true) */
  33.     protected ?DateTime $dateValidationPayment;
  34.     /**
  35.      * @ORM\ManyToOne(targetEntity=OrderStatus::class, inversedBy="orders")
  36.      * @ORM\JoinColumn(nullable=true, onDelete="SET NULL")
  37.      */
  38.     protected $orderStatus;
  39.     /** @ORM\Column(type="boolean") */
  40.     protected $pickingPrint false;
  41.     /**
  42.      * @ORM\Column(name="admin_order_comment", type="string", nullable=true)
  43.      */
  44.     protected ?string $adminOrderComment null;
  45.     public function __construct()
  46.     {
  47.         parent::__construct();
  48.         $this->messageHistories = new ArrayCollection();
  49.     }
  50.     public function getShippingDateEstimated(): ?DateTime
  51.     {
  52.         return $this->shippingDateEstimated;
  53.     }
  54.     public function setShippingDateEstimated(?DateTime $shippingDateEstimated): void
  55.     {
  56.         $this->shippingDateEstimated $shippingDateEstimated;
  57.     }
  58.     public function getOrderStatus(): ?OrderStatus
  59.     {
  60.         return $this->orderStatus;
  61.     }
  62.     public function setOrderStatus(?OrderStatus $orderStatus): self
  63.     {
  64.         $this->orderStatus $orderStatus;
  65.         return $this;
  66.     }
  67.     public function isPickingPrint(): bool
  68.     {
  69.         return $this->pickingPrint;
  70.     }
  71.     public function setPickingPrint(bool $pickingPrint): void
  72.     {
  73.         $this->pickingPrint $pickingPrint;
  74.     }
  75.     /* Récupère le subtotal de la commande avec sous taxes */
  76.     public function getItemsTotalWithTaxes(?bool $withTaxes false): int
  77.     {
  78.         // récupère les taxes de l'order sans prendre la tax du/des shipments
  79.         $totalTaxOrder 0;
  80.         foreach ($this->getItems() as $item) {
  81.             $totalTaxItem array_reduce(
  82.                 $item->getAdjustmentsRecursively(AdjustmentInterface::TAX_ADJUSTMENT)->toArray(),
  83.                 static fn (int $totalAdjustmentInterface $adjustment) => $withTaxes === $adjustment->isNeutral() ? $total $adjustment->getAmount() : $total,
  84.                 0
  85.             );
  86.             $totalTaxOrder += $totalTaxItem;
  87.         }
  88.         return $this->itemsTotal $totalTaxOrder;
  89.     }
  90.     public function canBeProcessed(): bool
  91.     {
  92.         return $this->state === self::STATE_CART;
  93.     }
  94.     public function getDateValidationPayment(): ?DateTime
  95.     {
  96.         return $this->dateValidationPayment;
  97.     }
  98.     public function setDateValidationPayment(?DateTime $dateValidationPayment): void
  99.     {
  100.         $this->dateValidationPayment $dateValidationPayment;
  101.     }
  102.     public function getAdminOrderComment(): ?string
  103.     {
  104.         return $this->adminOrderComment;
  105.     }
  106.     public function setAdminOrderComment(?string $adminOrderComment): void
  107.     {
  108.         $this->adminOrderComment $adminOrderComment;
  109.     }
  110. }