2012-09-17 39 views

回答

6

是的,我们可以禁用这个数量减少务实

如何?

扩展Mage_Checkout_Model_Type_Onepage重写方法saveOrder

变化

在上述方法中下面的行之前,将围绕#740至#742

$service = Mage::getModel('sales/service_quote', $this->getQuote()); 
    $service->submitAll(); 

添加

$quote = $this->getQuote(); 
    # Ref: Mage_CatalogInventory_Model_Observer::subtractQuoteInventory 
    $quote->setInventoryProcessed(true); 

这将通知Magento的是不处理库存的报价,所以它不会减少数量,即使它被配置这样做。

+0

非常感谢!有用 ! –

+1

@Manaf PM,@ Bijeesh K G这没有为我工作....我使用的任何其他解决方案授权.net支付模块,并不想减少付款失败时的数量... – ravisoni

5

系统>配置>目录>清单>股票期权

减少库存下订单时>无

+1

肯定做:) – Andrew

+1

尼斯,感谢的简单的方法来研究这一事件。任何人都知道热,然后减少数量,只有当航运创建? (所以当产品进入加工状态时)。谢谢 – Simbus82

0

你可以只禁用库存管理在管理,除非有您需要做特别的理由这条路?

你可以设置一个观测到成功的付​​款后添加到数量: 您可以在这里获得Magento的事件列表中,您可以连接到:http://www.nicksays.co.uk/magento_events_cheat_sheet/

<events> 
    <sales_order_payment_pay> 
     <observers> 
     <my_observer> 
      <type>singleton</type> 
      <class>my/observer</class> 
      <method>addQty</method> 
     </my_observer> 
     </observers> 
    </sales_order_payment_pay>  
</events> 

然后你的观察者会加数量回来..

<?php 
class Company_My_Model_Observer 
{ 
    public function addQty($event) 
    { 
     $order = $event->getInvoice()->getOrder(); // Mage_Sales_Model_Order 
     $items = $order->getAllVisibleItems(); 

     foreach($items as $item) { 
      $qty = $item->getQtyOrdered(); // Amount to add back on 
      $product = Mage::getModel('catalog/product')->load($item->getProductId()); 
      /** 
       * Here you would load the product and add this amount back on 
       */ 
     } 

     return $this; 
    } 
} 

这可能不会按原样工作,但你明白了。您需要注意magento和付款类型事件,因为不同的付款模块可以稍微不同地处理这些事件。

+0

嗨,谢谢你的回复。 我实际上有三个网站在我的magento安装 所以我不想更改股票期权配置,因为我需要此配置为其他网站。 我需要编程方式停止下降数量,当下订单。 –

1

对于谁想要找到有关的订货减法的详细信息任何人,只需要在这两个Magento的EE/CE

sales_model_service_quote_submit_before 
相关问题