/**
  * 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;
 }
 /**
  * {@inheritDoc}
  */
 public function setProduct(\XLite\Model\Product $product = NULL)
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'setProduct', array($product));
     return parent::setProduct($product);
 }