Как настроить налоговый класс WooCommerce, который будет применяться к заказу в соответствии с настраиваемым полем оформPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как настроить налоговый класс WooCommerce, который будет применяться к заказу в соответствии с настраиваемым полем оформ

Сообщение Anonymous »


В WooCommerce мне нужно добавить настраиваемое поле «billing_legal_person» на страницу оформления заказа, в котором можно выбирать между «Лицо» и «Компания», чтобы указать, должен ли клиент облагаться налогом как компания или как физическое лицо. Тогда применимый процент НДС должен различаться в зависимости от содержимого выбора billing_legal_person.

Я успешно создал 2 налоговых класса: стандартный (стандартный) для физических лиц и новый класс «компании» для компаний.

Я также могу успешно программно применить тот или иной налоговый класс с помощью этого кода:

add_filter( 'woocommerce_product_get_tax_class', 'my_set_taxrate_for_billing_legal_person', 10, 2 ); add_filter( 'woocommerce_product_variation_get_tax_class', 'my_set_taxrate_for_billing_legal_person', 10, 2); функция my_set_taxrate_for_billing_legal_person($tax_class, $product) { // Комментируя строку ниже, применяется стандартный налоговый класс $tax_class = 'компании'; вернуть $tax_class; } Я использовал плагин Checkout Field Editor, чтобы легко создать поле выбора billing_legal_person (значения «человек» или «компания»).

Мне также удалось принудительно пересчитать налоги при изменении содержимого моего настраиваемого поля billing_legal_person:

add_filter('woocommerce_checkout_fields', 'my_checkout_fields_trigger_refresh', 9999); функция my_checkout_fields_trigger_refresh($fields) { $fields['billing']['billing_legal_person']['class'][] = 'update_totals_on_change'; вернуть $поля; } Моя проблема заключается в том, что внутри my_set_taxrate_for_billing_legal_person() я не могу получить доступ к содержимому настраиваемого поля billing_legal_person, выбранного пользователем.

Если я проверяю WC()->checkout->get_checkout_fields['billing_legal_person'], я всегда получаю пустое значение.

Если я проверю WC()->checkout->checkout->get_value('billing_first_name'), я получу предполагаемое значение (имя клиента). Однако если я затем проверю WC()->checkout->checkout->get_value('billing_legal_person'), я получу значение NULL. Я полагаю, что могу получить доступ к billing_first_name, потому что это стандартное поле, но я не могу получить доступ к billing_legal_person, потому что это настраиваемое поле, но я не смог найти подсказки о том, как получить доступ настраиваемые поля.

Все подходы, основанные на проверке $_POST['billing_legal_person'], терпят неудачу, поскольку мне нужно показать сумму налогов, подлежащих уплате ДО того, как пользователь отправит форму оформления заказа.

Любая помощь о том, как мне получить доступ к содержимому настраиваемого поля billing_legal_person из my_set_taxrate_for_billing_legal_person(), чтобы я мог проверить его и вернуть тот или иной налоговый класс?
р>
Заранее большое спасибо!!!
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»