*/ class Mage_Sales_Model_Order_Shipment_Item extends Mage_Core_Model_Abstract { protected $_eventPrefix = 'sales_shipment_item'; protected $_eventObject = 'shipment_item'; protected $_shipment = null; protected $_orderItem = null; /** * Initialize resource model */ function _construct() { $this->_init('sales/order_shipment_item'); } /** * Declare Shipment instance * * @param Mage_Sales_Model_Order_Shipment $shipment * @return Mage_Sales_Model_Order_Shipment_Item */ public function setShipment(Mage_Sales_Model_Order_Shipment $shipment) { $this->_shipment = $shipment; return $this; } /** * Retrieve Shipment instance * * @return Mage_Sales_Model_Order_Shipment */ public function getShipment() { return $this->_shipment; } /** * Declare order item instance * * @param Mage_Sales_Model_Order_Item $item * @return Mage_Sales_Model_Order_Shipment_Item */ public function setOrderItem(Mage_Sales_Model_Order_Item $item) { $this->_orderItem = $item; $this->setOrderItemId($item->getId()); return $this; } /** * Retrieve order item instance * * @return Mage_Sales_Model_Order_Item */ public function getOrderItem() { if (is_null($this->_orderItem)) { if ($this->getShipment()) { $this->_orderItem = $this->getShipment()->getOrder()->getItemById($this->getOrderItemId()); } else { $this->_orderItem = Mage::getModel('sales/order_item') ->load($this->getOrderItemId()); } } return $this->_orderItem; } /** * Declare qty * * @param float $qty * @return Mage_Sales_Model_Order_Invoice_Item */ public function setQty($qty) { if ($this->getOrderItem()->getIsQtyDecimal()) { $qty = (float) $qty; } else { $qty = (int) $qty; } $qty = $qty > 0 ? $qty : 0; /** * Check qty availability */ if ($qty <= $this->getOrderItem()->getQtyToShip() || $this->getOrderItem()->isDummy(true)) { $this->setData('qty', $qty); } else { Mage::throwException( Mage::helper('sales')->__('Invalid qty to ship for item "%s"', $this->getName()) ); } return $this; } /** * Applying qty to order item * * @return Mage_Sales_Model_Order_Shipment_Item */ public function register() { $this->getOrderItem()->setQtyShipped( $this->getOrderItem()->getQtyShipped()+$this->getQty() ); return $this; } /** * Before object save * * @return Mage_Sales_Model_Order_Shipment_Item */ protected function _beforeSave() { parent::_beforeSave(); if (!$this->getParentId() && $this->getShipment()) { $this->setParentId($this->getShipment()->getId()); } return $this; } }