Ломается способ доставки СДЭК - Компьюти
Logo КОМПЬЮТИ

Ломается способ доставки СДЭК

Время чтения: 1 мин. 113 просмотров

Проблема:

При применении баллов выбранный способ доставки ломается и надо выбирать заново.

Решение:

Добавьте в файл functions.php вашей темы код:

add_filter('woocommerce_package_rates', 'apply_points_discount_to_shipping', 10, 2);

function apply_points_discount_to_shipping($rates, $package) {

    $cart = WC()->cart;
    if (!$cart || $cart->is_empty()) {
        return $rates;
    }

    $couponCode = mb_strtolower(BfwSetting::get('bonus-points-on-cart'));

    if (!$cart->has_discount($couponCode)) {
        return $rates;
    }

    $coupon = new WC_Coupon($couponCode);
    $points_discount = (float) $coupon->get_amount();

    if ($points_discount <= 0) {
        return $rates;
    }

    $subtotal = $cart->get_subtotal();
    $excess_discount = $points_discount - $subtotal;

    if ($excess_discount <= 0) {
        return $rates;
    }

    foreach ($rates as $rate_key => $rate) {

        $original_cost = $rate->get_cost();
        $new_cost = max(0, $original_cost - $excess_discount);

        $rates[$rate_key]->set_cost($new_cost);
    }

    return $rates;
}
Комментариев 0