如何向WooCommerce客户开具已支付订单的附加项目余额发票

时间:2019-07-06 作者:ODTV

如何向Woocommerce客户开具已付款订单中其他项目的剩余余额发票

现在,它向客户发送了一份新的更新发票,并在订单中添加了其他项目,并要求客户再次支付全部金额+新的意大利金额。

当我的客户在Woocommerce下订单并付款时。已捕获并授权付款

订单处于“处理中”阶段

如果客户想在已付款的订单中添加更多项目,我会将订单更改为“暂停”。添加客户想要添加的项目。然后我重新计算总金额。然后将订单更改为“待定付款”,然后向客户发送发票。

但发票上显示的是完整的订单金额。

如何发送显示已支付金额和待支付到期金额的新发票

50美元是客户的原始订单
20美元是订单中添加的附加项目70美元是新订单总额

修改后的发票将显示所有项目(旧的和新的)

70美元是新的总金额-50美元已支付金额20美元到期余额

客户将支付20美元

1 个回复
SO网友:Faham Shaikh

我认为您可以检测订单状态的变化,并将当前订单总额存储为负费用,以便在计算总额之前从订单总额中扣除。

为了减少混淆,代码应该是这样的:

add_action(\'woocommerce_order_status_changed\', \'add_credit_fee_if_editing\', 10,3);
function add_credit_fee_if_editing($order_id, $old_status, $new_status) {
    $order = wc_get_order( $order_id );
    $order_total = $order->get_total();
    if($old_status == \'processing\' && $new_status == \'on-hold\') {//I am not sure about the \'on-hold\' status\'s slug so verify that for yourself.    
        $order->update_meta_data( \'_creditable_amount\', $order_total );
    }
    if($old_status == \'on-hold\' && $new_status == \'processing\') {//I am not sure about the \'on-hold\' status\'s slug so verify that for yourself.
        $order_credit = $order->get_meta(\'_creditable_amount\', true);
        if($order_total > $order_credit) {
            $credit = -1 * $order_credit;
            $order->add_fee(\'Credit\', $credit);
            $order->calculate_totals();
            $order->update_meta_data( \'_creditable_amount\', 0);
        }
    }
}
我认为这应该行得通。

相关推荐