我需要在创建订单时立即减少产品库存,除非取消订单,否则库存不应增加(在成功付款或进行任何其他切换后,库存也不应再次减少)。
我的问题是我想用店面开具发票并收集本地服务工作。我正在使用以后付款的发票网关,该订单将订单放入处理中,并且woo在这种状态下不会减少库存,因此我刚售出的数量仍列在我的产品/目录页面中。但是,我发现,当客户去添加这些无形库存数量时,即使目录页面显示了可用数量,他们也会收到一条消息,例如无法将其添加到购物车中。
我无法弄清楚这将起到什么作用,因为在待处理的付款订单中已经说明了数量,为什么它会在产品/目录页面中显示。我在3个搜索引擎上都能找到的每条帖子都花了很多时间,试图找到答案的类似情况,但是运气不高。
我发现了:
function reduce_stock_processing($order_id) {
wc_reduce_stock_levels($order_id);
}
在类似问题的帖子中,我尝试实施,但是我看不到任何效果。
然后我发现了这一点
add_action( 'woocommerce_valid_order_statuses_for_payment', function( $statuses, $order ) {
$statuses[] = 'on-hold';
return $statuses;
}, 10, 2 );
但是,这使我可以将订单置于保留状态,此时woo确实提货,并且允许从该状态付款。我以为最终好极了,但是当我开始另一轮测试时,我发现如果我创建订单并购买了某种产品的所有剩余库存,它将答:正确地从库存中取出库存,使产品库存为零,然后B:当我向带有付款链接的客户发送电子邮件发票时。
它告诉他们由于物品缺货,无法付款。令人沮丧的是,因为它能很好地处理大量库存的订单;订单完成后,我的库存水平仍然合适。
看来woo需要手头上的多余库存才能让客户付款....或者至少在我看来就是这样。
关于如何实现目标的任何想法?预先感谢。
更新-
所以我将第一个代码更改为此:
function reduce_stock_pending($order_id) {
wc_reduce_stock_levels($order_id);
}
add_action('woocommerce_order_status_pending', 'reduce_stock_pending');
,起初我以为这是行不通的,因为在创建订单并将库存直接降至待付款状态时库存水平没有变化,但是在切换状态为保留状态后库存减少了,当我将其切换回待处理状态,库存仍会减少,并且付款成功后,它不会进一步减少库存,因此考虑到我是主持人,我知道该怎么办,这似乎至少是可行的...。但是有更好的解决方案可以让我创建一个订单并将其直接放入待处理状态,并立即减少库存,而不必来回切换状态。
-更多信息 订购须知: everything located above image only pertains to payment
因此,它似乎正在迅速增加,然后将状态更改为待定的库存减少。同样,任何帮助将不胜感激。