Обновленная корзина Woommerce Общая скидка Не обновляется сохраненный заказ - PullRequest
1 голос
/ 12 марта 2020

Я хочу установить макс. Скидка по купону для процентов, например, 15% от общей суммы заказа, но не более $ 150. Я успешно обновил это в своей корзине, поэтому он показывает максимум 150 долларов. Но при сохранении Заказ не берет 150 долларов, а пересчитывает общий Заказ на 15% и игнорирует скидку, которую я установил в своей Корзине (которая составляла 150 долларов).

Ниже приведен код, который я использую:

/**
 * Update subtotal with max discount set previously
 * @return string Subtotal with currency
 */
add_filter( 'woocommerce_cart_subtotal', 'woocommerce_set_max_discount', 10, 3 );
function woocommerce_set_max_discount( $subtotal, $compound, $cart ) {
    // Get current Coupons
    $coupons = $cart->coupon_discount_totals;
    foreach($coupons as $coupon_code => $discount) {
        $coupon = new WC_Coupon($coupon_code);
        // Check max discount
        $max_discount = get_post_meta( $coupon->get_id(), '_max_discount', true );
        if($max_discount) {
            // Current discount > max discount
            if($discount > $max_discount) {
                // Set discount to max discount
                $coupons[$coupon_code] = $max_discount;
                $need_update = true;
            }
        }
    }
    // Get total discount
    $total_discount = 0;
    foreach($coupons as $coupon_code => $discount) {
        $total_discount += $discount;
    }
    $total_content = $cart->get_subtotal() - $total_discount;
    // Update Cart's data
    // $cart->set_applied_coupons($coupons);
    $cart->set_discount_total($total_discount);
    $cart->set_cart_contents_total($total_content);
    $cart->set_total( $cart->get_subtotal() - $total_discount + $cart->get_fee_total());
    $cart->coupon_discount_totals = $coupons;
    return $subtotal;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...