コード例 #1
0
ファイル: Observer.php プロジェクト: AleksNesh/pandora
 /**
  * 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);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 /**
  * 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);
 }