如果使用优惠券,如何在全球范围内应用woocommerce折扣并在购物车中选择最高折扣

时间:2019-10-17 05:40:00

标签: woocommerce cart coupon discount programmatically

我最近有一个客户要求,他们希望他们出售的每本图书都为客人提供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 的全球折扣是正确的。

因此,我的问题是,如果客户使用优惠券,则在购物车上应用最大折扣。如果我不在购物车中使用优惠券代码,之前所做的所有工作都可以正常工作。

我需要一些建议,将优惠券代码应用于销售价格,计算购物车中每种产品的优惠券折扣,并应用与全球折扣和销售价格相比的最大折扣。

当我们在优惠券和优惠券类型上考虑不同的设置时,涉及的条件更多。

我该怎么办?

0 个答案:

没有答案