/** * Get item * * @return \XLite\Model\OrderItem */ public function getItem() { if (!isset($this->item)) { // Initialize order item from request param item_id if (is_numeric(\XLite\Core\Request::getInstance()->item_id)) { $item = \XLite\Core\Database::getRepo('XLite\\Model\\OrderItem')->find(\XLite\Core\Request::getInstance()->item_id); if ($item && $item->getProduct() && $item->hasAttributeValues()) { $this->item = $item; } } } if (!isset($this->item) && \XLite\Core\Request::getInstance()->productId) { // Initialize order item from productId param $product = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->find(\XLite\Core\Request::getInstance()->productId); if ($product) { $this->item = new \XLite\Model\OrderItem(); $this->item->setProduct($product); $this->item->setAttributeValues($product->prepareAttributeValues()); } } if (!isset($this->item)) { // Order item was not initialized: set to false to prevent re-initialization $this->item = false; } return $this->item; }
/** * Get order item entity * * @return \XLite\Model\OrderItem */ public function getEntity() { if (is_null($this->orderItem)) { $this->orderItem = $this->getParam(self::PARAM_ORDER_ITEM); } if (is_null($this->orderItem) && $this->getParam(self::PARAM_PRODUCT_ID)) { $product = \XLite\Core\Database::getRepo('XLite\\Model\\Product')->find($this->getParam(self::PARAM_PRODUCT_ID)); if ($product) { $this->orderItem = new \XLite\Model\OrderItem(); $this->orderItem->setProduct($product); $this->orderItem->setAttributeValues($product->prepareAttributeValues()); } } return $this->orderItem; }
/** * Prepare order item before price calculation * * @param \XLite\Model\OrderItem $item Order item * @param array $attributes Attributes * * @return void */ protected function prepareItemBeforePriceCalculation(\XLite\Model\OrderItem $item, array $attributes) { \XLite\Core\Request::getInstance()->oldAmount = $item->getAmount(); $item->setAmount(\XLite\Core\Request::getInstance()->amount); if ($attributes) { $attributeValues = $item->getProduct()->prepareAttributeValues($attributes); $item->setAttributeValues($attributeValues); } }
/** * {@inheritDoc} */ public function setAttributeValues(array $attributeValues) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'setAttributeValues', array($attributeValues)); return parent::setAttributeValues($attributeValues); }