首页 > 解决方案 > Woocommerce - 在订单上以编程方式更改税类并重新计算

问题描述

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

该商店位于欧盟,为 B2B 和 B2C 提供服务。因此,对于所有可以提供增值税 ID 的欧盟公司,除非原产国相同,否则不会收取任何税费。对于所有无法提供增值税 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 );

谢谢你的帮助!

标签: wordpresswoocommercehook-woocommerce

解决方案


经过数小时试图找到原因,解决方案很简单:

我发现的所有解决方案都建议编写'Zero rate''Zero Rate'. 取决于在 Woocommerce 设置中给出的名称。但对我来说,只有这样写才有效'zero-rate'。因此,更改表类名称并删除 woocommerce 设置中的所有空格,当然还有变量中的空格。

$tax_class = 'zero-rate';

希望能节省一些人的时间!


推荐阅读