woocommerce / 购物车页面中基于角色的税收
Role based taxes in woocommerce / Cart page
我已经建立了一个有多个用户(B2C 和 B2B)的 woocommerce 商店。其中一些将自动免税,只是让税收从 cart/checkout 中消失。我使用动态定价插件为不同的角色提供不同的价格,但没有税收变化的选项。
我找到了这个答案并尝试将其放在 Role based taxes in woocommerce but as @Jplus2 is telling, @dryan144 solution is not good because it is only applied during the checkout and not on the cart. I tried to figure out the way to do it but I still do have to refresh my 'cart' page 中以将税显示为 0(因为它们包含在 "guest" 或 "customer" 的价格中,任何帮助在调用我的购物车页面时启动操作?
我做了以下事情:
add_filter( 'woocommerce_before_cart_contents', 'prevent_wholesaler_taxes' );
add_filter( 'woocommerce_before_shipping_calculator', 'prevent_wholesaler_taxes' );
add_filter( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' );
function prevent_wholesaler_taxes() {
global $woocommerce;
if ( is_user_logged_in() && !(current_user_can('customer'))){
$woocommerce->customer->set_is_vat_exempt(false);
} else {
$woocommerce->customer->set_is_vat_exempt(true);
}
} //end prevent_wholesaler_taxes
它有时会立即工作,但大多数时候只有在刷新我的购物车后才能工作,这并不好。
尝试将 https://eshoes.com.au/product/test-shoes08/ 添加到购物车,然后 -> 查看您的购物篮
如有任何帮助,我们将不胜感激 ;)
干杯
这个解决方案非常有效,而不是使用 set_is_vat_exempt() 我只是使用 $tax)class = 'Zero Rate':
add_filter( 'woocommerce_before_cart_contents', 'wc_diff_rate_for_user', 1, 2 );
add_filter( 'woocommerce_before_shipping_calculator', 'wc_diff_rate_for_user', 1, 2);
add_filter( 'woocommerce_before_checkout_billing_form', 'wc_diff_rate_for_user', 1, 2 );
add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );
function wc_diff_rate_for_user( $tax_class ) {
if ( !is_user_logged_in() || current_user_can( 'customer' ) ) {
$tax_class = 'Zero Rate';
}
return $tax_class;
}
我已经建立了一个有多个用户(B2C 和 B2B)的 woocommerce 商店。其中一些将自动免税,只是让税收从 cart/checkout 中消失。我使用动态定价插件为不同的角色提供不同的价格,但没有税收变化的选项。
我找到了这个答案并尝试将其放在 Role based taxes in woocommerce but as @Jplus2 is telling, @dryan144 solution is not good because it is only applied during the checkout and not on the cart. I tried to figure out the way to do it but I still do have to refresh my 'cart' page 中以将税显示为 0(因为它们包含在 "guest" 或 "customer" 的价格中,任何帮助在调用我的购物车页面时启动操作?
我做了以下事情:
add_filter( 'woocommerce_before_cart_contents', 'prevent_wholesaler_taxes' );
add_filter( 'woocommerce_before_shipping_calculator', 'prevent_wholesaler_taxes' );
add_filter( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' );
function prevent_wholesaler_taxes() {
global $woocommerce;
if ( is_user_logged_in() && !(current_user_can('customer'))){
$woocommerce->customer->set_is_vat_exempt(false);
} else {
$woocommerce->customer->set_is_vat_exempt(true);
}
} //end prevent_wholesaler_taxes
它有时会立即工作,但大多数时候只有在刷新我的购物车后才能工作,这并不好。 尝试将 https://eshoes.com.au/product/test-shoes08/ 添加到购物车,然后 -> 查看您的购物篮
如有任何帮助,我们将不胜感激 ;)
干杯
这个解决方案非常有效,而不是使用 set_is_vat_exempt() 我只是使用 $tax)class = 'Zero Rate':
add_filter( 'woocommerce_before_cart_contents', 'wc_diff_rate_for_user', 1, 2 );
add_filter( 'woocommerce_before_shipping_calculator', 'wc_diff_rate_for_user', 1, 2);
add_filter( 'woocommerce_before_checkout_billing_form', 'wc_diff_rate_for_user', 1, 2 );
add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );
function wc_diff_rate_for_user( $tax_class ) {
if ( !is_user_logged_in() || current_user_can( 'customer' ) ) {
$tax_class = 'Zero Rate';
}
return $tax_class;
}