Beispiel #1
0
 public function getItemHtml(Mage_Sales_Model_Order_Item $item)
 {
     $warehouseData = $this->getWarehouseFlatArray();
     $html = '';
     $children = $item->getChildrenItems();
     if (empty($children)) {
         $children = array($item);
     }
     /** @var Mage_Sales_Model_Order_Item $childItem  */
     foreach ($children as $childItem) {
         $serializedAdditionalData = $childItem->getAdditionalData();
         if (empty($serializedAdditionalData)) {
             continue;
         }
         $additionalData = unserialize($serializedAdditionalData);
         $tmpHtml = sprintf('<tr class="border"><td><strong>%s</strong><br/><strong>SKU:</strong> %s</td>', $childItem->getName(), $childItem->getSku());
         $tmpCount = 0;
         foreach ($warehouseData as $wid => $wdata) {
             $qty = 0;
             if (array_key_exists($wid, $additionalData)) {
                 $qty = $additionalData[$wid];
             }
             $tmpCount += $qty;
             $qty = $this->_formatQty($qty, $childItem->getIsQtyDecimal());
             $tmpHtml .= '<td class="a-center" style="vertical-align:middle;">' . $qty . '</td>';
         }
         if ($tmpCount) {
             $html .= $tmpHtml;
         }
         $html .= '</tr>';
     }
     return $html;
 }
 /**
  * Decides if we need to create dummy shipment item or not
  * for eaxample we don't need create dummy parent if all
  * children are not in process
  *
  * @deprecated after 1.4, Mage_Sales_Model_Service_Order used
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @return bool
  */
 protected function _needToAddDummyForShipment($item, $qtys)
 {
     if ($item->getHasChildren()) {
         foreach ($item->getChildrenItems() as $child) {
             if ($child->getIsVirtual()) {
                 continue;
             }
             if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                 return true;
             }
         }
         if ($item->isShipSeparately()) {
             return true;
         }
         return false;
     } else {
         if ($item->getParentItem()) {
             if ($item->getIsVirtual()) {
                 return false;
             }
             if (isset($qtys[$item->getParentItem()->getId()]) && $qtys[$item->getParentItem()->getId()] > 0) {
                 return true;
             }
             return false;
         }
     }
 }
 /**
  * Decides if we need to create dummy shipment item or not
  * for eaxample we don't need create dummy parent if all
  * children are not in process
  *
  * @deprecated after 1.4, Mage_Sales_Model_Service_Order used
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @return bool
  */
 protected function _needToAddDummy($item, $qtys)
 {
     if ($item->getHasChildren()) {
         foreach ($item->getChildrenItems() as $child) {
             if ($child->getIsVirtual()) {
                 continue;
             }
             if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0 || !isset($qtys[$child->getId()]) && $child->getQtyToShip()) {
                 return true;
             }
         }
         return false;
     } else {
         if ($item->getParentItem()) {
             if ($item->getIsVirtual()) {
                 return false;
             }
             if (isset($qtys[$item->getParentItem()->getId()]) && $qtys[$item->getParentItem()->getId()] > 0 || !isset($qtys[$item->getParentItem()->getId()]) && $item->getParentItem()->getQtyToShip()) {
                 return true;
             }
             return false;
         }
     }
 }
Beispiel #4
0
 /**
  * Decides if we need to create dummy invoice item or not
  * for eaxample we don't need create dummy parent if all
  * children are not in process
  *
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @return bool
  */
 protected function _needToAddDummy($item, $qtys = array())
 {
     if ($item->getHasChildren()) {
         foreach ($item->getChildrenItems() as $child) {
             if (empty($qtys)) {
                 if ($child->getQtyToInvoice() > 0) {
                     return true;
                 }
             } else {
                 if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                     return true;
                 }
             }
         }
         return false;
     } else {
         if ($item->getParentItem()) {
             if (empty($qtys)) {
                 if ($item->getParentItem()->getQtyToInvoice() > 0) {
                     return true;
                 }
             } else {
                 if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                     return true;
                 }
             }
             return false;
         }
     }
 }
 /**
  * Decides if we need to create dummy invoice item or not
  * for eaxample we don't need create dummy parent if all
  * children are not in process
  *
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @return bool
  */
 protected function _needToAddDummy($item, $qtys)
 {
     if ($item->getHasChildren()) {
         foreach ($item->getChildrenItems() as $child) {
             if (isset($qtys[$child->getId()]) && isset($qtys[$child->getId()]['qty']) && $qtys[$child->getId()]['qty'] > 0) {
                 return true;
             }
         }
         return false;
     } else {
         if ($item->getParentItem()) {
             if (isset($qtys[$item->getParentItem()->getId()]) && isset($qtys[$item->getParentItem()->getId()]['qty']) && $qtys[$item->getParentItem()->getId()]['qty'] > 0) {
                 return true;
             }
             return false;
         }
     }
 }
Beispiel #6
0
 /**
  * Check if order item can be refunded
  *
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @param array $invoiceQtysRefundLimits
  * @return bool
  */
 protected function _canRefundItem($item, $qtys = array(), $invoiceQtysRefundLimits = array())
 {
     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;
         } else {
             if ($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);
     }
 }
Beispiel #7
0
 /**
  * Check if order item can be refunded
  *
  * @param Mage_Sales_Model_Order_Item $item
  * @param array $qtys
  * @return bool
  */
 protected function _canRefundItem($item, $qtys = array())
 {
     if ($item->isDummy()) {
         if ($item->getHasChildren()) {
             foreach ($item->getChildrenItems() as $child) {
                 if (empty($qtys)) {
                     if ($child->getQtyToRefund() > 0) {
                         return true;
                     }
                 } else {
                     if (isset($qtys[$child->getId()]) && $qtys[$child->getId()] > 0) {
                         return true;
                     }
                 }
             }
             return false;
         } else {
             if ($item->getParentItem()) {
                 $parent = $item->getParentItem();
                 if (empty($qtys)) {
                     return $parent->getQtyToRefund() > 0;
                 } else {
                     return isset($qtys[$parent->getId()]) && $qtys[$parent->getId()] > 0;
                 }
             }
         }
     } else {
         return $item->getQtyToRefund() > 0;
     }
 }
 /**
  * deletes item with all children
  * 
  * @param Mage_Sales_Model_Order_Item $item
  */
 private function _cancelItem($item)
 {
     $childItems = $item->getChildrenItems();
     foreach ($childItems as $child) {
         $this->_cancelItem($child);
     }
     $item->delete();
 }
 /**
  * Get the product the item represents.
  *
  * @param Mage_Sales_Model_Order_Item
  * @return Mage_Catalog_Model_Product
  */
 protected function getItemProduct(Mage_Sales_Model_Order_Item $item)
 {
     // When dealing with configurable items, need to get tax data from
     // the child product and not the parent.
     if ($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
         $sku = $item->getSku();
         $children = $item->getChildrenItems();
         if ($children) {
             /** @var Mage_Sales_Model_Order_Item $childItem */
             foreach ($children as $childItem) {
                 $childProduct = $childItem->getProduct();
                 // If the SKU of the child product matches the SKU of the
                 // item, the simple product being ordered was found and should
                 // be used.
                 if ($childProduct->getSku() === $sku) {
                     return $childProduct;
                 }
             }
         }
     }
     return $item->getProduct() ?: Mage::getModel('catalog/product')->load($item->getProductId());
 }