src/AtechNet/CoreBundle/Entity/OrderItemAttributeOption.php line 20

Open in your IDE?
  1. <?php
  2. namespace App\AtechNet\CoreBundle\Entity;
  3. use Doctrine\ORM\Mapping\Column;
  4. use Doctrine\ORM\Mapping\Entity;
  5. use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
  6. use Doctrine\ORM\Mapping\JoinColumn;
  7. use Doctrine\ORM\Mapping\ManyToOne;
  8. use Doctrine\ORM\Mapping\OneToOne;
  9. use Doctrine\ORM\Mapping\Table as Table;
  10. /**
  11.  * OrderItemAttributeOption
  12.  *
  13.  * @Table(name="orders__items_attributes")
  14.  * @Entity
  15.  * @HasLifecycleCallbacks
  16.  */
  17. class OrderItemAttributeOption extends AbstractEntity
  18. {
  19.     /**
  20.      * @var OrderItem
  21.      *
  22.      * @ManyToOne(targetEntity="OrderItem", inversedBy="itemAttributes", cascade={"persist"})
  23.      * @JoinColumn(name="order_item_id", referencedColumnName="id", onDelete="CASCADE")
  24.      */
  25.     private $orderItem;
  26.     /**
  27.      * @var AttributeOption
  28.      *
  29.      * @ManyToOne(targetEntity="AttributeOption")
  30.      * @JoinColumn(name="attribute_option_id", referencedColumnName="id")
  31.      */
  32.     private $attributeOption;
  33.     /**
  34.      * @var float
  35.      *
  36.      * @Column(name="price", type="float")
  37.      */
  38.     private $price;
  39.     /**
  40.      * @var StockMovementItem|null
  41.      *
  42.      * @OneToOne(targetEntity="StockMovementItem", mappedBy="orderItemAttribute", cascade={"persist", "remove"})
  43.      */
  44.     private $stockMovementItem;
  45.     /**
  46.      * @return OrderItem
  47.      */
  48.     public function getOrderItem()
  49.     {
  50.         return $this->orderItem;
  51.     }
  52.     /**
  53.      * @param OrderItem $orderItem
  54.      */
  55.     public function setOrderItem($orderItem)
  56.     {
  57.         $this->orderItem = $orderItem;
  58.     }
  59.     /**
  60.      * @return AttributeOption
  61.      */
  62.     public function getAttributeOption()
  63.     {
  64.         return $this->attributeOption;
  65.     }
  66.     /**
  67.      * @param AttributeOption $attributeOption
  68.      */
  69.     public function setAttributeOption($attributeOption)
  70.     {
  71.         $this->attributeOption = $attributeOption;
  72.     }
  73.     /**
  74.      * @return float
  75.      */
  76.     public function getPrice()
  77.     {
  78.         if (in_array($this->orderItem->getOrder()->getDomain()->getId(), [Domain::DOMAIN_ID_RT_HU, Domain::DOMAIN_ID_WS_HU])) {
  79.             return ceil($this->price / 10) * 10;
  80.         } elseif (in_array($this->orderItem->getOrder()->getDomain()->getId(), [Domain::DOMAIN_ID_RT_CZ, Domain::DOMAIN_ID_WS_CZ])) {
  81.             return ceil($this->price);
  82.         }
  83.         return $this->price;
  84.     }
  85.     /**
  86.      * @param float $price
  87.      */
  88.     public function setPrice($price)
  89.     {
  90.         $this->price = $price;
  91.     }
  92.     /**
  93.      * @return StockMovementItem
  94.      */
  95.     public function getStockMovementItem()
  96.     {
  97.         return $this->stockMovementItem;
  98.     }
  99.     /**
  100.      * @param StockMovementItem|null $stockMovementItem
  101.      */
  102.     public function setStockMovementItem(?StockMovementItem $stockMovementItem)
  103.     {
  104.         $this->stockMovementItem = $stockMovementItem;
  105.     }
  106.     /**
  107.      * @param OrderItem $orderItem
  108.      * @param AttributeOption $attributeOption
  109.      * @param $price
  110.      *
  111.      * @return OrderItemAttributeOption
  112.      */
  113.     public static function create(OrderItem $orderItem, AttributeOption $attributeOption, $price): OrderItemAttributeOption
  114.     {
  115.         $itemAttribute = new self();
  116.         $itemAttribute->setOrderItem($orderItem);
  117.         $itemAttribute->setAttributeOption($attributeOption);
  118.         $itemAttribute->setPrice($price);
  119.         return $itemAttribute;
  120.     }
  121. }