Налог не учитывается, если применяется купон, в том числе налог в пунктах - PullRequest
9 голосов
/ 24 июня 2019

У меня есть установочные налоги включительно для всех моих товаров и заполненная ППМ в цене.Но теперь я хочу применять налог включительно, если клиент не применил купон, то есть, покупая по ППМ.Но когда клиент применяет купон, мне нужно применять налоги после суммы скидки.

Возможно ли это с настройками в Woocommerce или есть какой-либо плагин?

For e.g.
**Case I**
Product MRP = 670
Shipping    =  50
Tax 18%     = 102
Final price = 670 (Including Taxes) 
It's Fine.


**Case II**
Product MRP = 670
Discount 40%= 268
Price       = 402
Shipping    =  50
Tax 18%     =  61
Final price = 452 (Including Taxes)
But I need tax to calculated exclusively on discounted price i.e. 402+18% = 474+50 (Ship) = 524

Я пробовал следующий фильтр вМой пользовательский плагин:

add_filter( 'woocommerce_calc_tax', 'inc_or_exc',10,3 );
// add_filter( 'woocommerce_calculate_totals', 'calculate_totals',11 );
function inc_or_exc( $taxes,$price,$rates ) {
    // echo "<pre>";
    if(!empty(WC()->cart->coupon_discount_amounts)){
        return  WC_Tax::calc_exclusive_tax( $price, $rates );
    }else{
        return  WC_Tax::calc_inclusive_tax( $price, $rates );
    }
}

Но он подсчитывает налоги немного странно.Если значение ППМ равно 100, оно показывает 98,85, а итоги не обновляются с новыми налогами и ставками доставки после запуска плагина.Если я отключаю плагин, то элемент MRP отображается нормально, т.е. 100.

1 Ответ

8 голосов
/ 30 июня 2019

Наконец-то я решил это.

Сначала я применил включающий эксклюзивный фильтр. Затем позвонил woocommerce_calculated_total с заказным условием и добился своего мотива.

add_filter( 'woocommerce_calc_tax', 'inc_or_exc',10,3 );
// do_action('add_points');

add_filter( 'woocommerce_calculated_total', 'custom_calculated_total', 10, 2 );
function inc_or_exc( $taxes,$price,$rates ) {
    // echo "<pre>";
    if(!empty(WC()->cart->coupon_discount_amounts)){
        return  WC_Tax::calc_exclusive_tax( $price, $rates );
    }else{
        return  WC_Tax::calc_inclusive_tax( $price, $rates );
    }
}

function custom_calculated_total( $total, $cart ){
    // echo "<pre>";
    if(!empty(WC()->cart->coupon_discount_amounts)){
        return round( $total + WC()->cart->get_cart_contents_tax(), $cart->dp );
    }else{
        return round( $total, $cart->dp );
    }   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...