Как применить глобальную скидку woocommerce и выбрать максимальную скидку в корзине, если используется купон - PullRequest
0 голосов
/ 17 октября 2019

У меня есть недавний запрос от клиента, что он хочет применить 10% скидку для гостей на каждую книгу, которую они продают, и 30% скидку для участников.

Я достиг этого, применив цену продажи для продукта, еслион / она гость или участник.

add_filter( 'woocommerce_product_get_price', 'rp_custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_get_sale_price', 'rp_custom_dynamic_sale_price', 10, 2 );
add_filter( 'woocommerce_product_variation_get_sale_price', 'rp_custom_dynamic_sale_price', 10, 2 );
function rp_custom_dynamic_sale_price( $sale_price, $product ) {

    if(is_admin()) return false;

    $regular_price = $product->get_regular_price();
    $sale_price_if_member =  $regular_price - ($regular_price*0.25);
    $sale_price_if_guest = $regular_price - ($regular_price*0.10);

    if( pmpro_hasMembershipLevel(array('1','2','3','4'))){

        if( $product->slug == 'one-year-membership' || $product->slug == 'two-year-membership' || $product->slug == 'three-years-membership' ){
            return $sale_price;
        }

        if( empty($sale_price) || $sale_price == 0 ){
            return $sale_price_if_member;
        }

        // when sale discount is high then sale_price is less than member's discounted price
        if(  $sale_price < $sale_price_if_member ){
            return $sale_price;
        }else{
            return $sale_price_if_member;
        }

    }else{

        if( $product->slug == 'one-year-membership' || $product->slug == 'two-year-membership' || $product->slug == 'three-years-membership' ) {
            return $sale_price;
        }

        if( empty($sale_price) || $sale_price == 0 ){
            return $sale_price_if_guest;
        }

        if($sale_price < $sale_price_general){
            return $sale_price;
        }else{
            return $sale_price_if_guest;
        }

    }

}

Теперь проблема здесь, когда клиенты используют код купона в корзине, я должен применить максимальную скидку по сравнению с глобальной скидкой.

Значение, Случай 1 : скажем, если клиент является участником, мы применяем скидку 30% в глобальном масштабе, добавляя цену продажи к товару, когда член магазина применяет код купона 40%, тогда мы должны применять 40% скидка и удалить глобальную скидку для этого клиента. В том же случае, если клиент является гостем, мы применяем 10% в глобальном масштабе, а если он / она применяет 40%, то нам нужно удалить 10% и применить скидку 40% на купон.

Случай 2 :скажем, у нас есть некоторые продукты в корзине A со скидкой 20%, B может применить купон к нему и изначально применила глобальную скидку 10% или 30%, C не продается и не распространяется на купоны, но имеет глобальную скидку 10% или 30%. Для расчета, A должен получить 30% скидку, если клиент является участником, и оставит 20%, если гость. Для B действует скидка по купону, если она превышает 10% или 30% в зависимости от того, что применимо. для C примененная глобальная скидка верна.

Итак, моя проблема заключается в применении максимальной скидки в корзине, если клиент использует купон . Вся работа, сделанная до этого, работает нормально, если я не использую код купона в корзине.

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

Это включаетбольше условий, когда мы рассматриваем различные настройки в купоне и типы купонов.

Что мне делать?

...