Я создал магазин woocommerce с несколькими пользователями (B2C & B2B). Некоторые из них будут автоматически освобождены от уплаты налогов, и они просто исчезнут из корзины / оформления заказа. Я использовал динамический плагин ценообразования, чтобы предоставлять разные цены для разных ролей, но нет вариантов для налоговых изменений.
Я нашел этот ответ и попытался поставить его на место Ролевые налоги в торговле но, как говорит @ Jplus2, решение @ dryan144 не годится, потому что оно применяется только во время оформления заказа, а не на тележке. Я пытался выяснить, как это сделать, но мне все еще нужно обновить моя страница «корзины» отображать налоги до 0 (так как они включены в цену для «гостя» или «клиента», какая-нибудь помощь в запуске действия при вызове страницы моей корзины?
Я сделал следующее:
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;
}
Других решений пока нет …