WC:禁用缺货时订单中的负库存

时间:2018-12-07 15:48:10

标签: caching woocommerce


这是我的问题:一位客户购买了缺货的产品。因此股票从0升至-1。

我的缺货阈值是0,并且所有产品都禁止再订购。 我试图在我的登台站点上重新创建该方案,但是对我而言这是不可能的。当我将其数量设置为0时,该产品显示为灰色且无法选择。

我认为可能是某些缓存问题(我正在使用Hummingbird)阻止它更新库存。这些是我尝试过的其他情况:
-在单个产品页面上选择产品,将后端的库存设置为0->不可能
-购物篮中的产品,后端的库存设置为0->不可能
-产品已结帐,后端的库存设置为0->不可能

你们中的任何人都知道怎么可能吗?我不确定如何进行。

谢谢

Jan

1 个答案:

答案 0 :(得分:0)

仔细阅读WooCommerce源代码后,如果您有两台计算机,我认为您可以重新创建该问题。

请考虑库存数量等于1的产品P。有两个不同的客户A和B。客户A将产品P放入购物车。在客户A下订单之前,客户B将产品P放入购物车。然后,客户A下订单将产品P的库存量减少到0。然后客户B下订单将产品P的库存量减少到-1。不幸的是,要测试它需要两台计算机(或两个浏览器),因为您需要两个同时登录的客户。我只有一台电脑,不想安装其他浏览器。

问题出在函数WC_Cart :: add_to_cart()中。它仅引用产品的库存数量及其购物车中订购的数量来调用WC_Product :: has_enough_stock()。它没有考虑其他推车中产品的数量。实际上,WooCommerce应该能够做得更好,因为当客户B将产品P添加到其购物车A时,WooCommerce知道了客户A购物车的内容。

当然,这里存在一些难题,因为如果WooCommerce阻止客户B将产品P添加到购物车中,因为客户A将产品P放入购物车中,而客户A并未实际下订单,则该公司可能已经丢失出售。

或者,当B下订单时,WooCommerce可以拒绝客户B的订单,但是除非我错过了任何事情,否则我看不到任何代码可以这样做。在我看来,这是一个合理的解决方案。

相关问题