/** * Convert order item to quote item * * @param Mage_Sales_Model_Order_Item $orderItem * @param mixed $qtyFlag if is null set product qty like in order * @return Mage_Checkout_Model_Cart */ public function addOrderItem($orderItem, $qtyFlag = null) { /* @var $orderItem Mage_Sales_Model_Order_Item */ if (is_null($orderItem->getParentItem())) { $product = Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($orderItem->getProductId()); if (!$product->getId()) { return $this; } $info = $orderItem->getProductOptionByCode('info_buyRequest'); $info = new Varien_Object($info); if (is_null($qtyFlag)) { $info->setQty($orderItem->getQtyOrdered()); } else { $info->setQty(1); } $this->addProduct($product, $info); } return $this; }
/** * 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); } }
/** * Safe way to lookup parent order items. * * @param Mage_Sales_Model_Order_Item $item * @return Mage_Sales_Model_Order_Item */ protected function _getOrderItemParent(Mage_Sales_Model_Order_Item $item) { if ($item->getParentItem()) { return $item->getParentItem(); } $parentItem = Mage::getModel('sales/order_item')->load($item->getParentItemId()); $item->setParentItem($parentItem); return $parentItem; }
/** * 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; } }
/** * @param Mage_Sales_Model_Order_Item $item * @param int $index * * @return Bronto_Common_Model_Email_Template_Filter */ protected function _filterInvoiceItem($item, $index = null) { if ($item->getParentItem()) { return $this; } // Product Price Excluding Tax if (Mage::helper('tax')->displaySalesPriceExclTax($this->getStore()) || Mage::helper('tax')->displaySalesBothPrices($this->getStore())) { if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'email', $this->getStore())) { $this->setField("productPriceExclTax_{$index}", $this->formatPrice($item->getRowTotal() + $item->getWeeeTaxAppliedRowAmount() + $item->getWeeeTaxRowDisposition())); } else { $this->setField("productPriceExclTax_{$index}", $this->formatPrice($item->getRowTotal())); } } // Product Price Including Tax if (Mage::helper('tax')->displaySalesPriceInclTax($this->getStore()) || Mage::helper('tax')->displaySalesBothPrices($this->getStore())) { $_incl = Mage::helper('checkout')->getSubtotalInclTax($item); if (Mage::helper('weee')->typeOfDisplay($item, array(0, 1, 4), 'email', $this->getStore())) { $this->setField("productPriceInclTax_{$index}", $this->formatPrice($_incl + $item->getWeeeTaxAppliedRowAmount())); } else { $this->setField("productPriceInclTax_{$index}", $this->formatPrice($_incl - $item->getWeeeTaxRowDisposition())); } } // Set Product Detail Fields $this->setField("productName_{$index}", $item->getName()); $this->setField("productSku_{$index}", $item->getSku()); $this->setField("productPrice_{$index}", $this->formatPrice($item->getPrice())); $this->setField("productTotal_{$index}", $this->formatPrice($item->getRowTotal())); $this->setField("productQty_{$index}", $item->getQtyOrdered() * 1); $this->setField("productUrl_{$index}", $this->_getOrderItemUrl($item)); // Handle Gift Message Details if ($item->getGiftMessageId() && ($_giftMessage = Mage::helper('giftmessage/message')->getGiftMessage($item->getGiftMessageId()))) { $this->setField("giftMessage_{$index}", $_giftMessage->getMessage()); $this->setField("giftMessageFrom_{$index}", $_giftMessage->getSender()); $this->setField("giftMessageTo_{$index}", $_giftMessage->getRecipient()); } /* @var $product Mage_Catalog_Model_Product */ $product = $item->getProduct(); if (!$product) { $product = Mage::getModel('bronto_common/product')->getProduct($item->getProductId(), $this->getStoreId()); } $this->_filterProduct($product, $index); return $this; }
/** * Check if the item is the child of a configurable product. * * @param Mage_Sales_Model_Order_Item * @return bool */ protected function _itemIsConfigurableChild(Mage_Sales_Model_Order_Item $item) { $parentItem = $item->getParentItem(); return $parentItem && $parentItem->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE; }
/** * get the item to use when looking up a relationship. * return null if the item is not supposed to have a * relationship payload * * @return Mage_Sales_Model_Order_Item|null */ protected function getKeyItem() { $keyItem = $this->item->getParentItem() ?: $this->item; return $keyItem->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_BUNDLE ? $keyItem : null; }