Example #1
0
 /**
  * Retrieve tracking variables for an order item
  *
  * @param \Magento\Sales\Model\Order\Item $item The order item
  *
  * @return array
  */
 private function getOrderItemVariables($item)
 {
     $variables = [];
     if (!$item->isDummy()) {
         $itemId = $item->getId();
         $prefix = "order.items.{$itemId}";
         $variables[$prefix . '.sku'] = $item->getSku();
         $variables[$prefix . '.product_id'] = $item->getProductId();
         $variables[$prefix . '.qty'] = $item->getQtyOrdered();
         $variables[$prefix . '.price'] = $item->getBasePrice();
         $variables[$prefix . '.row_total'] = $item->getRowTotal();
         $variables[$prefix . '.label'] = $item->getName();
         $variables[$prefix . '.salesrules'] = $item->getAppliedRuleIds();
         if ($product = $item->getProduct()) {
             $categoriesId = $product->getCategoryIds();
             if (count($categoriesId)) {
                 $variables[$prefix . '.category_ids'] = implode(",", $categoriesId);
             }
         }
     }
     return $variables;
 }
 /**
  * Checks if order item can be shipped.
  *
  * Dummy item can be shipped or with his children or
  * with parent item which is included to shipment.
  *
  * @param \Magento\Sales\Model\Order\Item $item
  * @param array $items
  * @return bool
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function canShipItem($item, array $items = [])
 {
     if ($item->getIsVirtual() || $item->getLockedDoShip()) {
         return false;
     }
     if ($item->isDummy(true)) {
         if ($item->getHasChildren()) {
             if ($item->isShipSeparately()) {
                 return true;
             }
             foreach ($item->getChildrenItems() as $child) {
                 if ($child->getIsVirtual()) {
                     continue;
                 }
                 if (empty($items)) {
                     if ($child->getQtyToShip() > 0) {
                         return true;
                     }
                 } else {
                     if (isset($items[$child->getId()]) && $items[$child->getId()] > 0) {
                         return true;
                     }
                 }
             }
             return false;
         } elseif ($item->getParentItem()) {
             $parent = $item->getParentItem();
             if (empty($items)) {
                 return $parent->getQtyToShip() > 0;
             } else {
                 return isset($items[$parent->getId()]) && $items[$parent->getId()] > 0;
             }
         }
     } else {
         return $item->getQtyToShip() > 0;
     }
 }
Example #3
0
 /**
  * Check if order item can be refunded
  *
  * @param \Magento\Sales\Model\Order\Item $item
  * @param array $qtys
  * @param array $invoiceQtysRefundLimits
  * @return bool
  * @SuppressWarnings(PHPMD.CyclomaticComplexity)
  */
 protected function _canRefundItem($item, $qtys = [], $invoiceQtysRefundLimits = [])
 {
     if ($item->isDummy()) {
         if ($item->getHasChildren()) {
             foreach ($item->getChildrenItems() as $child) {
                 if (empty($qtys)) {
                     if ($this->_canRefundNoDummyItem($child, $invoiceQtysRefundLimits)) {
                         return true;
                     }
                 } else {
                     if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                         return true;
                     }
                 }
             }
             return false;
         } elseif ($item->getParentItem()) {
             $parent = $item->getParentItem();
             if (empty($qtys)) {
                 return $this->_canRefundNoDummyItem($parent, $invoiceQtysRefundLimits);
             } else {
                 return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
             }
         }
     } else {
         return $this->_canRefundNoDummyItem($item, $invoiceQtysRefundLimits);
     }
 }
Example #4
0
 /**
  * Checks if quantity available for refund
  *
  * @param int $qty
  * @param \Magento\Sales\Model\Order\Item $orderItem
  * @return bool
  */
 private function isQtyAvailable($qty, \Magento\Sales\Model\Order\Item $orderItem)
 {
     return $qty <= $orderItem->getQtyToRefund() || $orderItem->isDummy();
 }