【问题标题】:Programmatically stop decreasing stock qty while placing an order in magento and increaging qty when order state is Compleate在magento下订单时以编程方式停止减少库存数量,并在订单状态为完成时增加数量
【发布时间】:2014-12-03 09:54:42
【问题描述】:

默认情况下,在 Magento 1.9.0.1 中,它会在下订单时减少库存数量。我想在以假订单为目的下订单时停止减少库存数量。而且我还想要在订单状态完成、未挂起、未处理时增加库存数量的功能。如何以编程方式或通过在管理面板中进行设置。如果有人知道,请回复。

谢谢你 安看

【问题讨论】:

    标签: php stock magento-1.9


    【解决方案1】:

    只需打开您的管理面板,转到系统->配置->目录选项卡->库存,然后单击堆栈选项并将下订单时减少库存更改为否。

    谢谢, 洛夫凯什

    【讨论】:

      【解决方案2】:

      在管理面板中,系统->配置->目录选项卡->库存然后单击堆栈选项并将下订单时减少库存更改为否。以便它停止库存数量增加。在 Model/Automatically/Complete/Order/Observer.php 页面中,类 Webspidy_Customoption_Model_Automatically_Complete_Order_Observer { 公共函数 __construct(){} 公共函数自动完成订单($observer) { //法师::log('Ankan'); $order = $observer->getEvent()->getOrder(); /$orders = Mage::getModel('sales/order_invoice')->getCollection() ->addAttributeToFilter('order_id', array('eq'=>$order->getId()));/

          /*if ((int)$orders->count() !== 0) {
              return $this;
          }*/
      
          //Mage::log($orderstate);
      
          //if($order->getState() == 'complete'){
          if(($order->getState() == 'processing') || ($order->getState() == 'pending_payment')){
              if($order->hasInvoices()){  
          //Mage::log($orderstate);
              //Mage::log('Ankan');
              //Mage::log($order->getData());
              //====== Order Details ================
              $orderNumber = $order->getIncrementId();  //Mage::log($orderNumber);
              $orderDet = Mage::getModel('sales/order')->load($orderNumber, 'increment_id');
                //Mage::log($orderDet->getData());
              $orderItems = $orderDet->getItemsCollection()
                  ->addAttributeToSelect('*')
                  ->load();
      
              foreach($orderItems as $orderItem){ 
                  $productId = $orderItem->getProductId();
                  $productOptionSku   = $orderItem->getSku();
                  $productQty = $orderItem->getQtyOrdered();
      
                  $product = Mage::getModel('catalog/product')->load($productId);
                  $sku = $product->getSku();
                  $centralqty = $product->getStockItem()->getQty();
      
                  $values = array();
                  foreach ($product->getOptions() as $o) {
                     $p = $o->getValues();
                  }
                  foreach($p as $v)
                  {
                      $optionSku = $v->getSku();
                      $optionItem = $v->getQty();
      
                      //Mage::log($optionItem);
                      //Mage::log($productOptionSku.".....".$sku."-".$optionSku.".....".$optionItem);
      
                      if($productOptionSku == ($sku."-".$optionSku)){
      
                          if($centralqty >= ($optionItem*(int)$productQty)){
                              //$stockQty = (($centralqty-($optionItem*(int)$productQty))+$productQty);
                              $stockQty = ($centralqty-($optionItem*(int)$productQty));
                          }
                      }
                   }
                  $product->save();
                  //Mage::log($stockQty); 
      
                  $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
                  //$stockItem = Mage::getModel('cataloginventory/stock_item')->load($productId);
                  $stockItemId = $stockItem->getId();
      
                  $stockItem->setData('qty', $stockQty);//(integer)$XMLproduct->QtyInStock
                  $stockItem->setData('manage_stock',1);
      
      
                  $stockItem->save(); 
      
              }
            }
              //======== End ======
          }
      
      }
      

      }
      在 etc/config.xml 中, <global><events> <sales_order_save_after><observers> <webspidy_customoption_automatically_complete_order_observer> <type>singleton</type> <class>Webspidy_Customoption_Model_Automatically_Complete_Order_Observer</class> <method>automaticallycompleteorder</method> </webspidy_customoption_automatically_complete_order_observer> </observers></sales_order_save_after></events></global>经过漫长的过程,在我的自定义模块中创建Observer成功了。

      【讨论】:

        【解决方案3】:

        我正在使用 Magento 1.9

        我已尝试使用以下代码。没关系,但我有另一个智能代码

        $stockItem = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId);
        $stockItemId = $stockItem->getId();
        $stockItem->setData('qty', $stockQty);
        $stockItem->setData('manage_stock',1);
        $stockItem->save(); 
        

        我的代码如下:-

        Mage::getModel('cataloginventory/stock')->backItemQty($productId,$new_qty); 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-01
          • 1970-01-01
          • 2017-11-13
          • 1970-01-01
          • 2012-10-31
          • 1970-01-01
          相关资源
          最近更新 更多