Как получить сумму налога программно, когда пользователь освобожден от налогов в WooCommerce? - PullRequest
0 голосов
/ 18 июня 2020

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

$customer->set_is_vat_exempt(true);

Отлично работает. Однако в некоторых случаях требуется, чтобы налог платил пользователи в корзине / кассе, даже если отображение цен на всем сайте должно быть освобождено от налогов.

Итак, я пытаюсь добавить плату в размере обычной суммы налога, если бы не освобождение от налогов. Я пытаюсь сделать это с помощью "woocommerce_cart_calculate_fees", но как я могу получить обычную общую сумму налога за корзину? Каждая функция, которую я пробовал, дает мне освобожденную версию.

Спасибо.

1 Ответ

0 голосов
/ 20 июня 2020

Это противоположность чистого и эффективного кода, но, по крайней мере, он работает:

$tax_vat = 0;
$tax_name = 'VAT';
                    $cart = WC()->cart;
                    foreach($cart->get_cart() as $item){
                        //Get product by supplying variation id or product_id
                        $product = wc_get_product( $item['variation_id'] ? $item['variation_id'] : $item['product_id'] );
                        if ($product->is_taxable()){
                            $tax_rates = WC_Tax::get_rates( $product->get_tax_class() );
                            if (!empty($tax_rates)) {
                                $tax_rate = reset($tax_rates);
                                $tax_vat += (wc_get_price_excluding_tax($product) * $tax_rate['rate'] * $item['quantity'])/100;
                                $tax_name = $tax_rate['label'];
                            }
                        }
                    }

                    $cart->add_fee( $tax_name, $tax_vat);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...