/** * Retrieve * * @param Mage_Sales_Model_Order_Item $item * @return unknown */ public function itemToQuoteItem(Mage_Sales_Model_Order_Item $item) { $quoteItem = Mage::getModel('sales/quote_item')->setStoreId($item->getStoreId())->setQuoteItemId($item->getId())->setProductId($item->getProductId())->setSuperProductId($item->getSuperProductId())->setParentProductId($item->getParentProductId())->setSku($item->getSku())->setName($item->getName())->setDescription($item->getDescription())->setWeight($item->getWeight())->setCustomPrice($item->getPrice())->setDiscountPercent($item->getDiscountPercent())->setDiscountAmount($item->getDiscountAmount())->setTaxPercent($item->getTaxPercent())->setTaxAmount($item->getTaxAmount())->setRowWeight($item->getRowWeight())->setRowTotal($item->getRowTotal())->setAppliedRuleIds($item->getAppliedRuleIds())->setBaseDiscountAmount($item->getBaseDiscountAmount())->setBaseTaxAmount($item->getBaseTaxAmount())->setBaseRowTotal($item->getBaseRowTotal()); return $quoteItem; }
/** * Get the final price in base currency for an ordered item including * taxes as discounts. * * @param Mage_Sales_Model_Order_Item $item the item model. * * @return float */ public function getItemFinalPriceInclTax(Mage_Sales_Model_Order_Item $item) { $quantity = (double) $item->getQtyOrdered(); $basePrice = $item->getBaseRowTotal() + $item->getBaseTaxAmount() + $item->getBaseHiddenTaxAmount() - $item->getBaseDiscountAmount(); $orderCurrencyCode = $item->getOrder()->getOrderCurrencyCode(); $baseCurrencyCode = $item->getOrder()->getBaseCurrencyCode(); if ($orderCurrencyCode != $baseCurrencyCode) { $priceInOrderCurrency = Mage::helper('directory')->currencyConvert($basePrice, $baseCurrencyCode, $orderCurrencyCode); } else { $priceInOrderCurrency = $basePrice; } if ($quantity > 1) { $priceInOrderCurrency = round($priceInOrderCurrency / $quantity, 2); } return $priceInOrderCurrency; }
/** * Cancel specific qty of order item * * @param Mage_Sales_Model_Order_Item $orderItem * @param null $qtyToCancel * @return Mage_Sales_Model_Order_Item */ public function cancelOrderItem(Mage_Sales_Model_Order_Item $orderItem, $qtyToCancel = null) { if ($orderItem->getStatusId() !== Mage_Sales_Model_Order_Item::STATUS_CANCELED) { if (is_null($qtyToCancel)) { $qtyToCancel = $orderItem->getQtyToCancel(); } Mage::dispatchEvent('sales_order_item_cancel', array('item' => $orderItem)); $orderItem->setQtyCanceled($orderItem->getQtyCanceled() + $qtyToCancel); $orderItem->setTaxCanceled($orderItem->getTaxCanceled() + $orderItem->getBaseTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered()); $orderItem->setHiddenTaxCanceled($orderItem->getHiddenTaxCanceled() + $orderItem->getHiddenTaxAmount() * $orderItem->getQtyCanceled() / $orderItem->getQtyOrdered()); } return $orderItem; }
/** * Calculates the Row Total Price the same way the UI does. * @param Mage_Sales_Model_Order_Item $item * @return float */ public function calculateRowTotalPrice($item) { return $item->getBaseRowTotal() + $item->getBaseTaxAmount() + $item->getBaseHiddenTaxAmount() + $item->getBaseWeeeTaxAppliedRowAmount() - $item->getBaseDiscountAmount(); }