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);
     }
 }