programing

쿠폰 적용 시 세금 제외, 품목 세금 포함

newsource 2023. 4. 5. 21:58

쿠폰 적용 시 세금 제외, 품목 세금 포함

저는 모든 상품에 대한 세금 설정 및 MRP 가격 기입이 완료되어 있습니다.하지만 지금은 고객이 MRP로 쿠폰을 적용하지 않았다면 세금 포함을 적용하고 싶지만, 고객이 쿠폰을 적용할 때는 할인 후 세금을 적용해야 합니다.

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 );
    }
}

하지만 세금을 좀 이상하게 계산한다.아이템 MRP가 100인 경우 98.85가 표시되고 플러그인 실행 후 새로운 세금과 배송료도 갱신되지 않습니다.플러그인을 비활성화하면 MRP 항목이 100으로 표시됩니다.

드디어 해결했어요.

먼저 배액 필터를 적용했습니다.그럼 전화했어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 );
    }   
}

언급URL : https://stackoverflow.com/questions/56737369/tax-exclusive-if-coupon-applied-else-tax-inclusive-in-items