wordpress - 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 );
谢谢你的帮助!
解决方案
经过数小时试图找到原因,解决方案很简单:
我发现的所有解决方案都建议编写'Zero rate'
或'Zero Rate'
. 取决于在 Woocommerce 设置中给出的名称。但对我来说,只有这样写才有效'zero-rate'
。因此,更改表类名称并删除 woocommerce 设置中的所有空格,当然还有变量中的空格。
$tax_class = 'zero-rate';
希望能节省一些人的时间!
推荐阅读
- imagemagick - 在 imagemagick Ruby 中一次合成大量图像
- ios - TableView HeaderSections 隐藏按钮
- c# - Bot Framework Context 等待不等待下一条消息
- css - CSS - 如果 td 有类,则将 td 隐藏在正文中
- reactjs - 在反应中动态地将数据传递给子组件
- javascript - 如何替换 jquery 地图中的数据并在后面添加逗号
- r - 如何根据分组 data.frame 中另一列中的 any() 填充列?
- python - 如何绘制 TensorBoard 图?
- javascript - javascript如何找到包含文本的DOM节点?
- javascript - Jquery 问题创建闪烁的文本和图像