«включает НДС в размере x долларов США, оцененный для {страны}» в корзине WooCommerce и оформлении заказа

#php #wordpress #woocommerce

#php #wordpress #woocommerce

Вопрос:

Я настроил НДС как включающий налоги на цифровые товары. В моей корзине и при оформлении заказа налог отображается после общей суммы как:

«(включает НДС в размере xy долларов США)»

Я бы предпочел то, что я видел на других сайтах магазинов:

«(включает расчетный НДС в размере xy долларов США для Германии)»

Мой вопрос:

1) является ли это настройкой темы, которую я использую, это подключаемый модуль или я могу настроить это в WooCommerce самостоятельно? Указана ли предполагаемая страна в корзине по геолокации?

2) могу ли я поместить текст о предполагаемом налоге перед ценой с помощью привязки или фильтра?

Ответ №1:

Для вопроса 2 попробуйте это

 add_filter( 'woocommerce_cart_total', 'wc_prefix_text_on_price' ); 

function wc_prefix_text_on_price( $price ) {
    $prefix = 'estimated tax';
    return  $prefix . $price;
}
  

Комментарии:

1. отлично, спасибо. Я отредактировал ваш ответ и поменял местами $ suffix и $ price … теперь нам просто нужно найти фактическую оценочную налоговую стоимость, поэтому $ suffix может быть чем-то вроде: включает НДС в размере $ TAXVALUE … шедевром было бы: включает НДС в размере TAXVALUE, рассчитанный для СТРАНЫ с ГЕОГРАФИЧЕСКИМ местоположением

2. забавная вещь: когда я выбираю Венгрию или Италию в поле страна на странице оформления заказа, отображается: оценено для Венгрии / Италии… для других стран ЕС, таких как Германия и т.д., отображается только с учетом НДС, а не в строке «расчетный для страны»… странно … кто-нибудь может это подтвердить? все еще очень интересно, как получить текст с НДС в размере xy долларов США перед общей суммой / ценой! решение, приведенное выше, на самом деле не исправляет это.

Ответ №2:

Чтобы изменить сообщение «включает НДС, оцененный для [страны]» на странице оформления заказа WooCommerce, вы можете использовать фильтр woocommerce_cart_totals_shipping_html.

Вот пример того, как изменить сообщение:

 add_filter( 'woocommerce_cart_totals_shipping_html', 'custom_checkout_vat_message' );

function custom_checkout_vat_message( $shipping_html ) {
// Get the customer's country
$customer_country = WC()->customer->get_shipping_country();

// Get the tax rate for the customer's country
$tax_rate = WC_Tax::get_rates( $customer_country )[1]['rate'];

// Calculate the VAT amount
$vat_amount = WC()->cart->shipping_total * $tax_rate / 100;

// Format the VAT amount as a price
$formatted_vat = wc_price( $vat_amount );

// Replace the message with your custom message
$new_message = 'Price includes VAT of ' . $formatted_vat . ' for ' . $customer_country;
$shipping_html = str_replace( 'includes ' . wc_price( WC()->cart->get_shipping_tax() ) . ' VAT estimated for ' . $customer_country, $new_message, $shipping_html );

return $shipping_html;
  

}

В этом примере мы используем метод WC_Tax::get_rates (), чтобы получить ставку налога для страны клиента, а затем вычисляем сумму НДС на основе общей стоимости доставки в корзине. Затем мы используем wc_price () для форматирования суммы НДС в качестве цены и заменяем исходное сообщение нашим пользовательским сообщением с помощью str_replace().