/** * 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; }
/** * Creates OCL OrderStatus record * * @param Mage_Sales_Model_Order_Item $item * @return string */ protected function _createOrderItemStatus(Mage_Sales_Model_Order_Item $item) { switch ($item->getStatusId()) { case Mage_Sales_Model_Order_Item::STATUS_SHIPPED: return self::STATUS_SHIPPED; case Mage_Sales_Model_Order_Item::STATUS_BACKORDERED: return self::STATUS_BACKORDERED; case Mage_Sales_Model_Order_Item::STATUS_CANCELED: return self::STATUS_CANCELLED; case Mage_Sales_Model_Order_Item::STATUS_PARTIAL: return self::STATUS_PARTIALLY_SHIPPED; case Mage_Sales_Model_Order_Item::STATUS_REFUNDED: case Mage_Sales_Model_Order_Item::STATUS_RETURNED: return self::STATUS_PROCESSING_RETURN; } $orderState = $item->getOrder()->getState(); switch ($orderState) { case Mage_Sales_Model_Order::STATE_NEW: return self::STATUS_NEW; case Mage_Sales_Model_Order::STATE_HOLDED: return self::STATUS_ON_HOLD; case Mage_Sales_Model_Order::STATE_COMPLETE: case Mage_Sales_Model_Order::STATE_CLOSED: return self::STATUS_COMPLETED; } if ($orderState == Mage_Sales_Model_Order::STATE_PROCESSING && $item->getStatus() == Mage_Sales_Model_Order_Item::STATUS_INVOICED) { return $item->getIsVirtual() ? self::STATUS_PAID : self::STATUS_READY_TO_SHIP; } return self::STATUS_NEW; }