示例#1
0
 /**
  * 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;
         }
     }
 }
示例#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;
         }
     }
 }
示例#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);
     }
 }
示例#7
0
 /**
  * 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;
 }
示例#8
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;
     }
 }
示例#9
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;
 }