Woocommerce - изменение класса налога программно при заказе и пересчет - PullRequest
1 голос
/ 09 января 2020

Я работаю над решением изменить налоговый класс в зависимости от страны покупателя И если он может предоставить идентификатор НДС или нет.

Магазин находится в ЕС и предоставляет услуги B2B и B2 C. Таким образом, для всех компаний из стран ЕС, которые могут предоставить идентификатор НДС, налоги не взимаются, если страна происхождения не является той же. Для всех клиентов, которые не могут предоставить идентификатор НДС, будут добавлены наши местные налоги. И так далее ...

Все решения, которые я нашел, взаимодействуют только с корзиной, но, поскольку я создаю заказ программно, мне нужно другое решение.

Есть ли способ (возможно, зацепка) изменить 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 );

Спасибо за любую помощь!

1 Ответ

1 голос
/ 09 января 2020

После нескольких часов попыток найти причину, решение было довольно простым:

Все найденные решения предлагали написать 'Zero rate' или 'Zero Rate'. В зависимости от того, какое имя было указано в настройках Woocommerce. Но для меня это работает, только если вы пишете это так 'zero-rate'. Так что измените имя класса таблицы и удалите все пробелы в настройках woocommerce и, конечно, в переменной.

$tax_class = 'zero-rate';

Надеюсь, это сэкономит кому-то время!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...