Woocommerce-以编程方式在“订单”上更改税种并重新计算

时间:2020-01-09 13:48:02

标签: wordpress woocommerce hook-woocommerce

我正在研究一种解决方案,可以根据客户所在的国家/地区以及是否可以提供增值税ID来更改税种。

该商店位于欧盟,为B2B和B2C提供服务。 因此,对于所有可以提供VAT-ID的欧盟公司而言,除非原产国相同,否则不收税。 对于所有无法提供VAT-ID的客户,我们都会加收我们的地方税。 等等...

我发现的所有解决方案都仅与购物车交互,但是当我以编程方式创建订单时,我需要另一个解决方案。

在创建订单时是否有办法(可能是一个挂钩)更改 tax_class

为了进行测试,我尝试添加此方法,但是没有用。它会触发过滤器,但不会更改订单中的税种。

function wc_change_tax_class( $tax_class, $product ) {

    $tax_class = 'Zero rate';

    return $tax_class;

}
add_filter( 'woocommerce_product_get_tax_class', 'wc_change_tax_class', 1, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'wc_change_tax_class', 1, 2 );

我还在创建订单但功能相同的函数中尝试了此方法。没事

$woocommerce->customer->set_is_vat_exempt( true );

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

经过数小时的查找原因,解决方案非常简单:

我发现所有解决方案都建议写'Zero rate''Zero Rate'。取决于Woocommerce设置中提供的名称。但是对我来说,只有用'zero-rate'这样写,它才起作用。因此,更改表类名称,并删除woocommerce设置中的所有空格,当然也要删除变量中的所有空格。

$tax_class = 'zero-rate';

希望可以节省别人的时间!