Как настроить налоговый класс WooCommerce, который будет применяться к заказу в соответствии с настраиваемым полем оформ ⇐ Php
Как настроить налоговый класс WooCommerce, который будет применяться к заказу в соответствии с настраиваемым полем оформ
В 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(), чтобы я мог проверить его и вернуть тот или иной налоговый класс?
р>
Заранее большое спасибо!!!
В 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(), чтобы я мог проверить его и вернуть тот или иной налоговый класс?
р>
Заранее большое спасибо!!!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Измените налоговый класс в соответствии с полем, выбранным при оформлении заказа.
Anonymous » » в форуме Php - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-