1

我需要一个产品库存在订单创建时立即减少,除非订单被取消,否则它不应该增加(它也不应该在付款成功或任何其他切换后第二次减少)。

我的问题是我想使用我的店面开具发票并收集本地服务工作。我正在使用稍后付款发票网关,该网关将订单放入处理中,并且在此状态下 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 确实拉货,并且允许从该状态进行付款。最后我认为这很好,但是当我开始另一轮测试时,我发现如果我创建一个订单并购买某个产品的所有剩余库存,它会 A:正确地从库存中拉出库存,使产品库存为零,然后B: 当我用应付链接向客户发送电子邮件发票时。

它告诉他们,由于商品缺货,因此无法支付订单。令人沮丧,因为它可以很好地处理库存充足的订单;订单完成后,我留下了适当的库存水平。

看来 woo 需要手头有额外的库存才能让客户付款……或者至少在我看来是这样。

关于如何实现目标的任何想法?提前致谢。

更新-

所以我将第一个代码更改为:

function reduce_stock_pending($order_id) {
    wc_reduce_stock_levels($order_id);
}
add_action('woocommerce_order_status_pending', 'reduce_stock_pending');

起初我认为它不起作用,因为在创建订单并将其直接降至待付款状态时库存水平没有改变,但是在将状态切换为暂停后,它减少了库存,当我将其切换回来时待定状态,库存仍然减少,付款成功后,它不会进一步减少库存,因此考虑到我是版主,这似乎至少可行,我会知道该怎么做....但是有更好的解决方案可以让我创建订单并将其直接放入待处理状态并立即减少库存,而无需来回切换状态。

-更多信息订单说明: 图片上方的所有内容仅与付款有关

因此,它似乎正在迅速增加,然后将状态更改为待处理的库存减少。再次感谢任何帮助。

4

0 回答 0