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

MCG*_*MCG 2 wordpress woocommerce hook-woocommerce

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

\n\n

该商店位于欧盟,为 B2B 和 B2C 提供服务。\n因此,对于所有可以提供增值税 ID 的欧盟公司,除非来源国家/地区相同,否则不会收取税费。\n对于所有无法提供增值税 ID 的客户,我们将添加当地税费。\n依此类推...

\n\n

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

\n\n

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

\n\n

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

\n\n
function wc_change_tax_class( $tax_class, $product ) {\n\n    $tax_class = 'Zero rate';\n\n    return $tax_class;\n\n}\nadd_filter( 'woocommerce_product_get_tax_class', 'wc_change_tax_class', 1, 2 );\nadd_filter( 'woocommerce_product_variation_get_tax_class', 'wc_change_tax_class', 1, 2 );\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还在创建订单的函数中尝试了这种方法,但结果相同。什么也没发生。

\n\n
$woocommerce->customer->set_is_vat_exempt( true );\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢你的帮助!

\n

MCG*_*MCG 5

经过几个小时的尝试找到原因后,解决方案非常简单:

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

$tax_class = 'zero-rate';
Run Code Online (Sandbox Code Playgroud)

希望这可以节省某人的时间!