Beispiel #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);
     }
 }
Beispiel #2
0
 /**
  * Check - is item variant id equal specified variant id
  *
  * @param \XLite\Model\OrderItem $item      Item
  * @param integer                $variantId Variant id
  *
  * @return boolean
  */
 public function isItemVariantIdEqual(\XLite\Model\OrderItem $item, $variantId)
 {
     return $item->getVariant() && $item->getVariant()->getId() == $variantId;
 }
Beispiel #3
0
 /**
  * Return true if item amount limit is reached
  *
  * @param \XLite\Model\OrderItem $item Order item
  *
  * @return boolean
  */
 protected function isItemLimitReached($item)
 {
     $result = false;
     $product = $item->getObject();
     if ($product && $product->mustHaveVariants()) {
         $variant = $item->getVariant();
         $result = $variant && $variant->getAmount() <= $item->getAmount();
     } else {
         $result = parent::isItemLimitReached($item);
     }
     return $result;
 }
Beispiel #4
0
 /**
  * Check if the requested amount is available for the product
  *
  * @param \XLite\Model\OrderItem $item   Order item to add
  * @param integer                $amount Amount to check OPTIONAL
  *
  * @return integer
  */
 protected function checkAmount(\XLite\Model\OrderItem $item, $amount = null)
 {
     return $item->getVariant() && !$item->getVariant()->getDefaultAmount() ? ($amount ?: 0) < $item->getVariant()->getAvailableAmount() : parent::checkAmount($item, $amount);
 }
 /**
  * {@inheritDoc}
  */
 public function getVariant()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getVariant', array());
     return parent::getVariant();
 }