Ejemplo n.º 1
0
 /**
  * Change product quantity in stock if needed
  *
  * @param \XLite\Model\OrderItem $entity Order item entity
  *
  * @return void
  */
 protected function changeItemAmountInStock($entity)
 {
     if ($entity->getVariant()) {
         $oldVariant = $this->orderItemsData[$entity->getItemId()]['variant'];
         $newVariant = $entity->getVariant();
         if ($this->isItemDataChangedVariant($oldVariant, $newVariant)) {
             // Return old variant amount to stock
             if (!$oldVariant->getDefaultAmount()) {
                 $oldVariant->changeAmount($this->orderItemsData[$entity->getItemId()]['amount']);
             } else {
                 $entity->getProduct()->getInventory()->changeAmount($this->orderItemsData[$entity->getItemId()]['amount']);
             }
             // Get new variant amount from stock
             if (!$newVariant->getDefaultAmount()) {
                 $newVariant->changeAmount(-1 * $entity->getAmount());
             } else {
                 $entity->getProduct()->getInventory()->changeAmount(-1 * $entity->getAmount());
             }
         } else {
             parent::changeItemAmountInStock($entity);
         }
     } else {
         parent::changeItemAmountInStock($entity);
     }
 }
Ejemplo n.º 2
0
 /**
  * Count available for parcel order items
  * 
  * @param \XLite\Model\OrderItem $orderItem Order item
  * 
  * @return integer
  */
 public function getAmountInParcel($orderItem)
 {
     $result = 0;
     foreach ($this->getParcelItems() as $item) {
         if ($item->getOrderItem() && $item->getOrderItem()->getItemId() == $orderItem->getItemId()) {
             $result += $item->getAmount();
         }
     }
     return $result;
 }
Ejemplo n.º 3
0
 /**
  * Check item id equal
  *
  * @param \XLite\Model\OrderItem $item   Item
  * @param integer                $itemId Item id
  *
  * @return boolean
  */
 public function checkItemIdEqual(\XLite\Model\OrderItem $item, $itemId)
 {
     return $item->getItemId() == $itemId;
 }
Ejemplo n.º 4
0
 /**
  * Get attribute input name 
  * 
  * @param \XLite\Model\OrderItem                $entity Order item
  * @param \XLite\Model\OrderItem\AttributeValue $av     Attribute value
  *  
  * @return string
  */
 protected function getAttributeInputName(\XLite\Model\OrderItem $entity, \XLite\Model\OrderItem\AttributeValue $av)
 {
     return $this->getIdx() > 0 ? 'order_items[' . $entity->getItemId() . '][attribute_values][' . $this->getAttributeId($av) . ']' : 'new[' . $this->getIdx() . '][attribute_values][' . $this->getAttributeId($av) . ']';
 }
Ejemplo n.º 5
0
 /**
  * Return false if order item amount exceeds maximum allowed value
  *
  * @param \XLite\Model\OrderItem $entity Order item entity
  *
  * @return boolean
  */
 protected function isItemHasWrongAmount($entity)
 {
     $oldAmount = $this->orderItemsData[$entity->getItemId()]['amount'];
     $maxAmount = $entity->getProductAvailableAmount();
     return $oldAmount + $maxAmount < $entity->getAmount();
 }
Ejemplo n.º 6
0
 /**
  * Assemble recalculate item event
  *
  * @param \XLite\Model\OrderItem $item Order item
  *
  * @return array
  */
 protected function assembleRecalculateItemEvent(\XLite\Model\OrderItem $item)
 {
     $maxAmount = $item->getProductAvailableAmount();
     if ($item->isPersistent() && \XLite\Core\Request::getInstance()->oldAmount) {
         $maxAmount += \XLite\Core\Request::getInstance()->oldAmount;
         \XLite\Core\Request::getInstance()->oldAmount = null;
     }
     return array('item_id' => $item->getItemId(), 'requestId' => \XLite\Core\Request::getInstance()->requestId, 'price' => $item->getNetPrice(), 'max_qty' => $maxAmount);
 }
Ejemplo n.º 7
0
 /**
  * {@inheritDoc}
  */
 public function getItemId()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getItemId', array());
     return parent::getItemId();
 }