<?php
namespace App\AtechNet\CoreBundle\Entity;
use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Doctrine\ORM\Mapping\HasLifecycleCallbacks;
use Doctrine\ORM\Mapping\JoinColumn;
use Doctrine\ORM\Mapping\ManyToOne;
use Doctrine\ORM\Mapping\OneToOne;
use Doctrine\ORM\Mapping\Table as Table;
/**
* OrderItemAttributeOption
*
* @Table(name="orders__items_attributes")
* @Entity
* @HasLifecycleCallbacks
*/
class OrderItemAttributeOption extends AbstractEntity
{
/**
* @var OrderItem
*
* @ManyToOne(targetEntity="OrderItem", inversedBy="itemAttributes", cascade={"persist"})
* @JoinColumn(name="order_item_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $orderItem;
/**
* @var AttributeOption
*
* @ManyToOne(targetEntity="AttributeOption")
* @JoinColumn(name="attribute_option_id", referencedColumnName="id")
*/
private $attributeOption;
/**
* @var float
*
* @Column(name="price", type="float")
*/
private $price;
/**
* @var StockMovementItem|null
*
* @OneToOne(targetEntity="StockMovementItem", mappedBy="orderItemAttribute", cascade={"persist", "remove"})
*/
private $stockMovementItem;
/**
* @return OrderItem
*/
public function getOrderItem()
{
return $this->orderItem;
}
/**
* @param OrderItem $orderItem
*/
public function setOrderItem($orderItem)
{
$this->orderItem = $orderItem;
}
/**
* @return AttributeOption
*/
public function getAttributeOption()
{
return $this->attributeOption;
}
/**
* @param AttributeOption $attributeOption
*/
public function setAttributeOption($attributeOption)
{
$this->attributeOption = $attributeOption;
}
/**
* @return float
*/
public function getPrice()
{
if (in_array($this->orderItem->getOrder()->getDomain()->getId(), [Domain::DOMAIN_ID_RT_HU, Domain::DOMAIN_ID_WS_HU])) {
return ceil($this->price / 10) * 10;
} elseif (in_array($this->orderItem->getOrder()->getDomain()->getId(), [Domain::DOMAIN_ID_RT_CZ, Domain::DOMAIN_ID_WS_CZ])) {
return ceil($this->price);
}
return $this->price;
}
/**
* @param float $price
*/
public function setPrice($price)
{
$this->price = $price;
}
/**
* @return StockMovementItem
*/
public function getStockMovementItem()
{
return $this->stockMovementItem;
}
/**
* @param StockMovementItem|null $stockMovementItem
*/
public function setStockMovementItem(?StockMovementItem $stockMovementItem)
{
$this->stockMovementItem = $stockMovementItem;
}
/**
* @param OrderItem $orderItem
* @param AttributeOption $attributeOption
* @param $price
*
* @return OrderItemAttributeOption
*/
public static function create(OrderItem $orderItem, AttributeOption $attributeOption, $price): OrderItemAttributeOption
{
$itemAttribute = new self();
$itemAttribute->setOrderItem($orderItem);
$itemAttribute->setAttributeOption($attributeOption);
$itemAttribute->setPrice($price);
return $itemAttribute;
}
}