我们有一个相当棘手的问题:我们经营着一家德国Woocommerce商店。所有价格包括19%的增值税。对于奥地利,我们必须计算20%,但包括增值税在内的价格应该是相同的。这可以使用woocommerce\\u adjust\\u non\\u base\\u location\\u prices过滤器轻松完成。
现在是棘手的部分:由于瑞士不是欧盟的一部分,产品销售不含增值税。如果我们将瑞士的增值税设置设置为0%,则添加的过滤器将不再起作用。示例:
产品成本为100欧元,包括19%的增值税。
德国买家支付100欧元,包括16欧元增值税奥地利买家支付100欧元,包括17欧元增值税瑞士买家应支付84欧元(100欧元-16欧元增值税),但系统计算为100欧元。
一个快速而肮脏的解决办法是将过滤器排除在瑞士买家之外。我试过:
add_action( \'woocommerce_checkout_update_order_review\', \'vd_adjust_ch_prices\', 0, 1 );
public function vd_adjust_ch_prices( $post_data ) {
if ( isset( $_POST[\'country\'] ) && ! in_array( $_POST[\'country\'], WC()->countries->get_european_union_countries() ) || ( ! isset( $_POST[\'country\'] ) && ! in_array( WC()->checkout()->get_value(\'billing_country\'), WC()->countries->get_european_union_countries() ) ) ) {
add_filter( \'woocommerce_product_is_taxable\', \'__return_false\', 20 );
}
}
代码段不起作用,不知道为什么。有什么想法吗?