/** * 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); } }
/** * 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; }
/** * 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; }
/** * 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(); }