我需要在下订单时停止减少库存,我只有在成功付款后才需要进行此活动。

#1楼 票数:7 已采纳

是的,我们可以实用地禁用此数量减少

怎么样 ?

扩展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不处理报价的库存,因此即使配置为这样也不会减少数量。

#2楼 票数:5

系统>配置>目录>库存>库存选项

订单下达时减少库存>否

#3楼 票数:1

对于想要在下订单中找到有关减法的更多信息的人,只需要在Magento EE / CE中学习此事件

sales_model_service_quote_submit_before

#4楼 票数: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和支付类型事件,因为不同的支付模块可以稍微不同地处理这些事件。

#5楼 票数:0

在某些情况下,您可以使用以下内容

config.xml中

<frontend>
    <routers>
        <sales_model_service_quote_submit_after>
            <observers>
                <inventory>
                    <type>singleton</type>
                    <class>Vendor_Name_Model_Observer</class>
                    <method>revertQuoteInventory</method>
                </inventory>
            </observers>
        </sales_model_service_quote_submit_after>
    </events>
</frontend>

Observer.php

public function revertQuoteInventory(Varien_Event_Observer $observer)
{
    $quote = $observer->getEvent()->getQuote();
    $inventory = Mage::getModel('cataloginventory/observer');
    $inventory->revertQuoteInventory($observer);
    $inventory->reindexQuoteInventory($observer);

    $quote->setInventoryProcessed(true);
}

  ask by Bijeesh K G translate from so

未解决问题?本站智能推荐:

1回复

以编程方式创建订单时,库存不会减少

我有一个与来宾客户一起创建订单的脚本(请参见下面的代码)。 该脚本可以正常工作,但不会减少创建的订单中产品集的库存。 任何说明或解决方案? 谢谢
1回复

下订单时产品数量库存不会减少

我已经使用mag mi导入了几种可配置的产品,并且除了库存管理外,它的工作情况都很好。 当我下订单时,新进口的产品数量不会减少。但是,如果我创建一个新的可配置产品及其关联产品,则其工作状况会很好。 系统配置->目录->库存中的配置设置 1)下订单时减少库存->
1回复

Magento中取消订单后如何停止将数量重新添加到库存中

我需要停止下订单时减少库存数量,并且仅在成功付款后才减少库存,因为我的网站上有很多被放弃的交易。 我找到了一篇做此链接的文章,该文章说如何在重定向操作中将数量贷记到产品中,在成功响应操作中如何减少数量。 另外,我正在执行cron来取消已放弃的订单。 取消订单后,数量将重新添加到产品库存
1回复

以编程方式导入magento产品时如何填充库存表

我有一个Magento输入脚本,我已经编写了该脚本以将我提供的csv文件解析为magento。 它成功地将产品传递给了magento,但即使在管理区域中将其标记为“有货”和“启用”,它们在网站上仍显示为“无货”。 说服自己之后,这不是我一直在通过magento代码查找的已导入产品的“库存
1回复

以编程方式创建Magento订单

有没有一种方法可以在Magento中使用将在订单内定义的“自定义”产品创建订单。 该订单不需要创建自定义产品。 这些定制产品在创建订单时将具有定制价格和定制产品标题。 因此,在创建订单时,我只需简单地指定一些具有价格的自定义产品,然后将其添加到订单中即可。 同样,产品不会在Mag
1回复

Magento以编程方式取消订单

我正在使用API​​创建订单,如果客户在完成订单后不愿意,我想返回一些数量。我知道magento中有一个选项,即贷项凭单,但我们的要求不是创建贷项凭单。 我想创建一个延期订单,例如创建要返回负数产品数量的订单,或者 我想取消特定产品及其数量的订单。
2回复

Magento:以编程方式创建Magento订单

我想在magento中以编程方式创建订单,以下是我的脚本但是收到错误。 安装了带有示例数据的demo magento。 致命错误:在第108行的F:\\ wamp \\ www \\ magento1910sampledata \\ createorder.php中的非对象上调用成员函数
1回复

Magento:以编程方式创建订单时遇到的问题

我正在创建一个magento扩展程序,其中需要以编程方式从购物车中创建订单。 为此,我正在使用以下代码。 但是我无法使它工作。 任何帮助,将不胜感激。 当我打开开发人员模式时,它将显示此错误消息