/** * Check product inventory data when quote item quantity declaring * * @param Varien_Event_Observer $observer * @return Mage_CatalogInventory_Model_Observer */ public function checkQuoteItemQty($observer) { $quoteItem = $observer->getEvent()->getItem(); /* @var $quoteItem Mage_Sales_Model_Quote_Item */ if (!$quoteItem || !$quoteItem->getProductId() || !$quoteItem->getQuote() || $quoteItem->getQuote()->getIsSuperMode()) { return $this; } // added to skip double inventory check for promo item. if ($quoteItem->getPrice() === NULL) { return $this; } return parent::checkQuoteItemQty($observer); }
public function refundOrderInventory($observer) { if (!Mage::helper('udmulti')->isActive()) { return parent::refundOrderInventory($observer); } $creditmemo = $observer->getEvent()->getCreditmemo(); $parentItems = $items = array(); foreach ($creditmemo->getAllItems() as $item) { $return = false; if ($item->hasBackToStock()) { if ($item->getBackToStock() && $item->getQty()) { $return = true; } } elseif (Mage::helper('cataloginventory')->isAutoReturnEnabled()) { $return = true; } $oItem = $item->getOrderItem(); $children = $oItem->getChildrenItems() ? $oItem->getChildrenItems() : $oItem->getChildren(); if ($oParent = $oItem->getParentItem()) { $parentItem = @$parentItems[$oParent->getId()]; } else { $parentItem = null; } if ($children) { $parentItems[$oItem->getId()] = $item; } elseif ($return && ($vId = $oItem->getUdropshipVendor())) { $qty = null; if ($oItem->isDummy() && $parentItem) { $parentQtyOrdered = $parentItem->getOrderItem()->getQtyOrdered(); $parentQtyOrdered = $parentQtyOrdered > 0 ? $parentQtyOrdered : 1; $qty = $parentItem->getQty() * $oItem->getQtyOrdered() / $parentQtyOrdered; } elseif (!$oItem->isDummy()) { $qty = $item->getQty(); } if ($qty !== null) { if (isset($items[$vId][$item->getProductId()])) { $items[$vId][$item->getProductId()]['stock_qty_add'] += $qty; } else { $items[$vId][$item->getProductId()] = array('stock_qty_add' => $qty); } } } } if (!empty($items)) { $reindexPids = array(); foreach ($items as $vId => $update) { $reindexPids = array_merge($reindexPids, array_keys($update)); Mage::helper('udmulti')->setReindexFlag(false); Mage::helper('udmulti')->saveThisVendorProductsPidKeys($update, $vId); Mage::helper('udmulti')->setReindexFlag(true); } $reindexPids = array_unique($reindexPids); $indexer = Mage::getSingleton('index/indexer'); $pAction = Mage::getModel('catalog/product_action'); $idxEvent = Mage::getModel('index/event')->setEntity(Mage_Catalog_Model_Product::ENTITY)->setType(Mage_Index_Model_Event::TYPE_MASS_ACTION)->setDataObject($pAction); /* hook to cheat index process to be executed */ $pAction->setWebsiteIds(array(0)); $pAction->setProductIds($reindexPids); $indexer->getProcessByCode('cataloginventory_stock')->register($idxEvent)->processEvent($idxEvent); $indexer->getProcessByCode('catalog_product_price')->register($idxEvent)->processEvent($idxEvent); $indexer->getProcessByCode('udropship_vendor_product_assoc')->register($idxEvent)->processEvent($idxEvent); } //Mage::getSingleton('cataloginventory/stock')->revertProductsSale($items); }
/** * Check product inventory data when quote item quantity declaring * * @param Varien_Event_Observer $observer * @return Mage_CatalogInventory_Model_Observer */ public function checkQuoteItemQty($observer) { $observer->getEvent()->getItem()->getQuote()->setIsSuperMode(false); return parent::checkQuoteItemQty($observer); }