当前位置: 首页 > 知识库问答 >
问题:

Woodcommerce中具有加工状态的COD订单应避免减少库存

彭华皓
2023-03-14

我的付款方式有问题,当一个客户订购...订单变成了正在处理,它减少了项目的库存。

基于这个答案线程:在Woocommerce中减少库存仅用于特定的订单状态和支付方式,我定制了代码并尝试了这个脚本:

add_filter( 'woocommerce_can_reduce_order_stock', 'wcs_do_not_reduce_processing_stock', 10, 2 );
function wcs_do_not_reduce_processing_stock( $reduce_stock, $order ) {
    if ( $order->has_status( 'processing' ) && $order->get_payment_method() == 'cod' ) {
        $reduce_stock = false;
    }
    return $reduce_stock;
}

但不管用。

对于使用“货到付款”付款方式且状态为“正在处理”的订单,如何避免订单项的库存减少?

共有1个答案

弓宏茂
2023-03-14

我已经更改了一个您的代码一点,并添加了缺失的代码,将减少库存的“已完成”订单状态的COD付款方式仅:

add_filter( 'woocommerce_can_reduce_order_stock', 'processing_cod_stock_not_reduced', 20, 2 );
function processing_cod_stock_not_reduced( $reduce_stock, $order ) {
    if ( ! $order->has_status( 'completed' ) && $order->get_payment_method() == 'cod' ) {
        return false;
    }
    return $reduce_stock;
}

// Reduce stock on COD orders with completed status
add_action( 'woocommerce_order_status_completed', 'order_stock_reduction_based_on_payment_method', 20, 2 );
function order_stock_reduction_based_on_payment_method( $order_id, $order ){
    if( $order->get_payment_method() == 'cod' && ! get_post_meta( $order_id, '_order_stock_reduced', true ) ){
        wc_reduce_stock_levels($order_id);
    }
}

代码放在活动子主题(或活动主题)的function.php文件中。经测试并工作

 类似资料:
  • 我使用WooCommerce通过电话/电子邮件等手动接受订单,我使用后端记录订单,手动添加订单。 目前,当生成“待付款”的订单作为状态时,库存会自动减少/扣减。我不希望这种情况发生。理想情况下,我只想减少库存,当订单被标记为“正在处理”,然后付款,然后采取。 我明白这是如何WooCommerce工作回来,有没有一种方法来避免库存减少,直到某一个状态已经被选中? 我已经在functions.php中

  • 1.自动收货完成如何设置? 商家可以在【交易设置】里面设置自动确认收货时间,从发货时间开始后粉丝没有在手机端点击确定收货,后台系统到时间自动确定收货。 2.订单可以修改价格吗? 订单在待付款状态下可以修改价格。 3.已经完成的订单为什么自动就关闭? 用户通过额外方式导入的订单数据,导入的订单数据为待支付状态,订单的创建时间到现在时间超出了订单自动关闭时间 所以订单自动关闭了。 4.支付时,扫码提示

  • 我正在学习RxJava,但我遇到了避免可变状态的问题。 我正在解决的问题很简单:有一个条目的输入流和一个条目组的输入流。每个项目都属于一个组(有一个组标识符),并且有一些数据。每个组都有一个标识符和一些数据。许多项目可能属于同一组。目标是将这些输入流组合成一个(项、组)对的输出流,以便: 只有当项目及其组都已知时,才会发出(项目,组)对 每次接收更新的项目数据时,必须发出更新的(项目、组)对 当接

  • 用车类型码 计价类型(rule) 用车类型(require_level) 描述 301(快车) 600 普通快车 900 快车优享 201(专车) 203(专车接机) 204(专车送机) 100 舒适型 400 六座商务 200 行政级 501(豪华车) 503(豪华车接机) 504(豪华车送机) 1000 普通豪华车 订单状态返回码 状态码 描述 300 等待应答 311 订单超时 400 等待

  • 问题内容: 我正在做一些练习,但是我对此感到困惑: 目的是什么?因此,例如,并且 当我们第一次去while循环的内部()将= 4或5?当我在计算机上运行代码时,返回值为5。返回值为3。抱歉,如果我不清楚我的问题。 问题答案: 首先分配,然后 递减 ()。 还要看看前缀/后缀一元增量运算符。 该示例(摘自链接页面)演示了它:

  • 批量分单的结果会有成功、失败两种状态,其中失败又分为无坐标、无区划两种状态; 此处可对批量分单的所有状态结果进行归类 支持按照时间查询 支持对归类结果点击下载