/** * Surcharge la méthode after save pour mettre a jour les stocks * * @return Mage_Core_Model_Abstract */ protected function _afterSave() { try { //appel le parent parent::_afterSave(); //Define if shipment just created $creation = $this->getentity_id() != $this->getOrigData('entity_id'); if ($creation) { //Create stock movements $order = $this->getOrder(); foreach ($this->getAllItems() as $item) { //retrieve informaiton $qty = $this->getRealShippedQtyForItem($item); try { $StockMovement = mage::getmodel('Purchase/StockMovement')->setsm_product_id($item->getproduct_id())->setsm_type('order')->setsm_coef(-1)->setsm_qty($qty)->setsm_date(date('Y-m-d'))->setsm_ui($item->getId())->setsm_description(mage::helper('purchase')->__('Order #') . $this->getOrder()->getincrement_id())->save(); } catch (Exception $ex) { //nothing, db constraint exception because stock movement already exists } //reset reserved qty $orderItem = $item->getOrderItem(); $orderItem->setreserved_qty(0)->save(); } //update order planning $orderId = $this->getOrder()->getId(); mage::helper('BackgroundTask')->AddTask('Update planning for order ' . $orderId, 'purchase/Planning', 'updatePlanning', $orderId); //Met a jour les qte commandées pour le produit $order->UpdateProductsOrdererQty; } } catch (Exception $ex) { mage::log($ex->getMessage()); } return $this; }