Отменить все налоги в зависимости от роли пользователя в WooCommerce (включая Теннесси) - PullRequest
0 голосов
/ 22 апреля 2019

Мне нужно отменить все налоги для определенных пользовательских ролей.В моем случае это оптовые покупатели с ролью / учетной записью оптового покупателя.Я получил это на в основном работе, но в США, штат Теннесси является исключением.По некоторым причинам TN все еще взимает налог, даже с фрагментами кода, которые я попробовал.Я не знаю, применяется ли налог к ​​доставке или к сумме корзины.Я знаю, что у TN есть специальные налоговые правила, поэтому возможно, что это как-то связано.

(сайт littlethingsstudio.com )

Я пробовал 2 кодафрагменты пока и оба не работают полностью:

1) из Stackoverflow Ролевые налоги в woocommerce

add_action( 'woocommerce_before_checkout_billing_form', 'prevent_wholesaler_taxes' );

function prevent_wholesaler_taxes() {

 global $woocommerce;

 if ( current_user_can( 'customer_net30_wholesale' ) || current_user_can( 'customer_wholesale' ) ) {

          $woocommerce->customer->set_is_vat_exempt(true);

     } else {

          $woocommerce->customer->set_is_vat_exempt(false);
     }
}

2) и из WooCommerceдокументы

function wc_diff_rate_for_user( $tax_class, $product ) {
if ( current_user_can( 'customer_net30_wholesale' ) || current_user_can( 'customer_wholesale' ) ) {
    $tax_class = 'Zero Rate';
}
return $tax_class;
}
add_filter( 'woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2 );

Вот несколько скриншотов (сайт littlethingsstudio.com )

Screenshots showing tax for different states in the US

  • Я использую плагин Snippets для активации / деактивации фрагментов кода
  • WordPress 5.1.1
  • Плоская тема 3.6.2
  • Woo 3.6.1
  • WooCommerce Dynamic Pricing 3.1.13 (для изменения цены продукта в зависимости от роли)
  • WooCommerce Stripe Gateway 4.1.16 (для обработки платежей)
  • WooCommerce Services 1.19.0 (для автоматизациирасчет налогов, отгрузка печати этикеток и более плавная настройка оплаты)

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 22 апреля 2019

Крюк woocommerce_product_tax_class устарел и заменен.Попробуйте следующее:

// For products and product variations
add_filter( 'woocommerce_product_get_tax_class', 'wc_diff_tax_rate_by_user_role', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'wc_diff_tax_rate_by_user_role', 10, 2 );
function wc_diff_tax_rate_by_user_role( $tax_class, $product ) {
    if ( ( current_user_can( 'customer_net30_wholesale' ) || current_user_can( 'customer_wholesale' ) ) ) {
        $tax_class = 'Zero Rate';
    }
    return $tax_class;
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Проверено и работает (даже для Теннесси) .

...