|
- <?php
-
- namespace Lc\CaracoleBundle\Model\Order;
-
- use Lc\CaracoleBundle\Doctrine\Extension\PriceTrait;
- use Doctrine\ORM\Mapping as ORM;
- use Lc\CaracoleBundle\Doctrine\Extension\PriceInterface;
- use Lc\CaracoleBundle\Model\Product\ProductInterface;
-
- /**
- * @ORM\MappedSuperclass()
- */
- abstract class OrderProductModel implements PriceInterface
- {
- use PriceTrait;
-
- /**
- * @ORM\ManyToOne(targetEntity="Lc\CaracoleBundle\Model\Order\OrderShopInterface", inversedBy="orderProducts", cascade={"persist"})
- * @ORM\JoinColumn(nullable=false)
- */
- protected $orderShop;
-
- /**
- * @ORM\ManyToOne(targetEntity="Lc\CaracoleBundle\Model\Product\ProductInterface"))
- */
- protected $product;
-
- /**
- * @ORM\Column(type="integer")
- */
- protected $quantityOrder;
-
- /**
- * @ORM\Column(type="float")
- */
- protected $quantityProduct;
-
- /**
- * @ORM\Column(type="string", length=255)
- */
- protected $title;
-
- /**
- * @ORM\OneToOne(targetEntity="Lc\CaracoleBundle\Model\Order\OrderProductReductionCatalogInterface", cascade={"persist", "remove"})
- */
- protected $orderProductReductionCatalog;
-
- /**
- * @ORM\OneToOne(targetEntity="Lc\CaracoleBundle\Model\Order\OrderProductRefundInterface", mappedBy="orderProduct", cascade={"persist", "remove"})
- */
- protected $orderProductRefund;
-
- public function __toString()
- {
- if ($this->getTitle()) {
- return $this->getTitle();
- } else {
- return $this->getProduct()->getProductFamily()->getTitle() . ' - ' . $this->getProduct()->getTitle();
- }
- }
-
- public function getTitleOrderShop()
- {
- $product = $this->getProduct();
- $productFamily = $product->getProductFamily();
-
- $titleProduct = $product->getTitle();
- $titleProductFamily = $productFamily->getTitle();
-
- if (strlen($titleProduct) > 0 && strlen($titleProductFamily) > 0) {
- $title = $titleProductFamily . ' - ' . $titleProduct;
- } else {
- $title = strlen($titleProduct) ? $titleProduct : $titleProductFamily;
- }
-
- if ($productFamily->hasProductsWithVariousWeight()) {
- $title .= ' - ' . $product->getQuantityLabelInherited();
- }
-
- return $title;
- }
-
- public function getTitleSummaryAfterAddCart()
- {
- $title = '';
-
- $product = $this->getProduct();
- $productFamily = $product->getProductFamily();
- $titleProduct = $product->getTitleInherited();
- $titleProductFamily = $productFamily->getTitle();
-
- // multiple
- if ($productFamily->getActiveProducts() && $productFamily->getBehaviorAddToCart() == 'multiple') {
- $title .= $titleProduct;
- if ($productFamily->hasProductsWithVariousWeight()) {
- $title .= ' - ' . $product->getQuantityLabelInherited();
- }
- }
-
- // simple
- if ($productFamily->getBehaviorAddToCart() == 'simple') {
- if ($productFamily->getActiveProducts()) {
- $title .= $titleProduct;
- if ($productFamily->hasProductsWithVariousWeight()) {
- $title .= ' - ' . $product->getQuantityLabelInherited();
- }
- }
- }
-
- return $title;
- }
-
- // isOrderProductAvailable
- public function isAvailable()
- {
- return $this->getProduct()->isAvailable($this->getQuantityOrder());
- }
-
- // isOrderProductAvailableAddCart
- public function isAvailableAddCart(OrderShopInterface $orderShop = null)
- {
- $product = $this->getProduct();
- return $this->isProductAvailable($product, $this->getQuantityOrder(), true, $orderShop);
- }
-
- public function getOrderShop(): ?OrderShopInterface
- {
- return $this->orderShop;
- }
-
- public function setOrderShop(?OrderShopInterface $orderShop): self
- {
- $this->orderShop = $orderShop;
-
- return $this;
- }
-
- public function getProduct(): ?ProductInterface
- {
- return $this->product;
- }
-
- public function setProduct(?ProductInterface $product): self
- {
- $this->product = $product;
-
- return $this;
- }
-
- public function getQuantityOrder(): ?int
- {
- return $this->quantityOrder;
- }
-
- public function setQuantityOrder(int $quantityOrder): self
- {
- $this->quantityOrder = $quantityOrder;
-
- return $this;
- }
-
- public function getQuantityProduct(): ?float
- {
- return $this->quantityProduct;
- }
-
- public function setQuantityProduct(float $quantityProduct): self
- {
- $this->quantityProduct = $quantityProduct;
-
- return $this;
- }
-
- public function getTitle(): ?string
- {
- return $this->title;
- }
-
- public function setTitle(string $title): self
- {
- $this->title = $title;
-
- return $this;
- }
-
- public function getOrderProductReductionCatalog(): ?OrderProductReductionCatalogInterface
- {
- return $this->orderProductReductionCatalog;
- }
-
- public function setOrderProductReductionCatalog(?OrderProductReductionCatalogInterface $orderProductReductionCatalog): self
- {
- $this->orderProductReductionCatalog = $orderProductReductionCatalog;
-
- return $this;
- }
-
- public function getOrderProductRefund(): ?OrderProductRefundInterface
- {
- return $this->orderProductRefund;
- }
-
- public function setOrderProductRefund(OrderProductRefundInterface $orderProductRefund): self
- {
- $this->orderProductRefund = $orderProductRefund;
-
- // set the owning side of the relation if necessary
- if ($orderProductRefund->getOrderProduct() !== $this) {
- $orderProductRefund->setOrderProduct($this);
- }
-
- return $this;
- }
-
- }
|