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