Exemplo n.º 1
0
 /**
  * Convert quote item to order item. Most part of the code was taken from Mage_Sales_Model_Convert_Quote::itemToOrderItem()
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract $item
  * @param null|Mage_Sales_Model_Order_Item $orderItem
  * @return Mage_Sales_Model_Order_Item
  */
 public function itemToOrderItem(Mage_Sales_Model_Quote_Item_Abstract $item, $orderItem = null)
 {
     if (is_null($orderItem)) {
         $orderItem = Mage::getModel('sales/order_item');
     }
     $orderItem->setStoreId($item->getStoreId())->setQuoteItemId($item->getId())->setQuoteParentItemId($item->getParentItemId())->setProductId($item->getProductId())->setProductType($item->getProductType())->setQtyBackordered($item->getBackorders())->setProduct($item->getProduct())->setBaseOriginalPrice($item->getBaseOriginalPrice());
     $options = $item->getProductOrderOptions();
     if (!$options) {
         $options = $item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());
     }
     $orderItem->setProductOptions($options);
     Mage::helper('core')->copyFieldset('sales_convert_quote_item', 'to_order_item', $item, $orderItem);
     if ($item->getParentItem()) {
         $orderItem->setQtyOrdered($orderItem->getQtyOrdered() * $item->getParentItem()->getQty());
     }
     if (!$item->getNoDiscount()) {
         Mage::helper('core')->copyFieldset('sales_convert_quote_item', 'to_order_item_discount', $item, $orderItem);
     }
     Mage::dispatchEvent('sales_convert_quote_item_to_order_item', array('order_item' => $orderItem, 'item' => $item));
     return $orderItem;
 }
Exemplo n.º 2
0
 /**
  * Convert quote item to order item
  *
  * @param   Mage_Sales_Model_Quote_Item_Abstract $item
  * @return  Mage_Sales_Model_Order_Item
  */
 public function itemToOrderItem(Mage_Sales_Model_Quote_Item_Abstract $item)
 {
     $orderItem = AO::getModel('sales/order_item')->setStoreId($item->getStoreId())->setQuoteItemId($item->getId())->setQuoteParentItemId($item->getParentItemId())->setProductId($item->getProductId())->setProductType($item->getProductType())->setProductOptions($item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct()))->setQtyBackordered($item->getBackorders());
     AO::helper('core')->copyFieldset('sales_convert_quote_item', 'to_order_item', $item, $orderItem);
     if ($item->getParentItem()) {
         $orderItem->setQtyOrdered($orderItem->getQtyOrdered() * $item->getParentItem()->getQty());
     }
     //            ->setSku($item->getSku())
     //            ->setName($item->getName())
     //            ->setDescription($item->getDescription())
     //            ->setWeight($item->getWeight())
     //            ->setIsQtyDecimal($item->getIsQtyDecimal())
     //            ->setQtyOrdered($item->getQty())
     //            ->setOriginalPrice($item->getOriginalPrice())
     //            ->setAppliedRuleIds($item->getAppliedRuleIds())
     //            ->setAdditionalData($item->getAdditionalData())
     //
     //            ->setPrice($item->getCalculationPrice())
     //            ->setTaxPercent($item->getTaxPercent())
     //            ->setTaxAmount($item->getTaxAmount())
     //            ->setRowWeight($item->getRowWeight())
     //            ->setRowTotal($item->getRowTotal())
     //
     //            ->setBasePrice($item->getBaseCalculationPrice())
     //            ->setBaseOriginalPrice($item->getPrice())
     //            ->setBaseTaxAmount($item->getBaseTaxAmount())
     //            ->setBaseRowTotal($item->getBaseRowTotal());
     if (!$item->getNoDiscount()) {
         AO::helper('core')->copyFieldset('sales_convert_quote_item', 'to_order_item_discount', $item, $orderItem);
         //            $orderItem->setDiscountPercent($item->getDiscountPercent())
         //                ->setDiscountAmount($item->getDiscountAmount())
         //                ->setBaseDiscountAmount($item->getBaseDiscountAmount());
     }
     AO::dispatchEvent('sales_convert_quote_item_to_order_item', array('order_item' => $orderItem, 'item' => $item));
     return $orderItem;
 }
 /**
  * Get the type of product the item represents - e.g. simple or configurable.
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract
  * @return string
  */
 protected function _getItemProductType(Mage_Sales_Model_Quote_Item_Abstract $item)
 {
     return $item->getProductType() ?: $item->getQuoteItem()->getProductType();
 }
 /**
  * Get the product the item represents.
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract
  * @return Mage_Catalog_Model_Product
  */
 protected function getItemProduct(Mage_Sales_Model_Quote_Item_Abstract $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->getChildren();
         if ($children) {
             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());
 }
 /**
  * determine if the item's amounts should be put into the request.
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract
  * @return bool
  */
 protected function _canIncludeAmounts(Mage_Sales_Model_Quote_Item_Abstract $item)
 {
     return !($item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_BUNDLE && $item->isChildrenCalculated());
 }