关于Php折扣模块产品匹配问题

关于Php折扣模块产品匹配问题,php,module,opencart,product,discount,Php,Module,Opencart,Product,Discount,有一个模块我可以在我的网站上推广,我想对这个模块做一些修改。我做了一些,但我有一个问题 在模块的正常使用中:当x产品添加到我的购物车时,它会对y产品应用%折扣。我想将x产品添加到我的购物车中。如果将第二个x项目添加到购物车中,则只有第二个项目可以获得高达%的折扣。第三种产品不应该打折,而应该是第四种产品 在该模块中,当我为多个项目应用折扣时,它不会检查产品是否为同一产品。篮子里有任何两种折扣产品就足够了 比如,; 我折扣的产品是x、y、z。 如果篮子里至少有两样东西,我要求50%的折扣 模块:

有一个模块我可以在我的网站上推广,我想对这个模块做一些修改。我做了一些,但我有一个问题

在模块的正常使用中:当x产品添加到我的购物车时,它会对y产品应用%折扣。我想将x产品添加到我的购物车中。如果将第二个x项目添加到购物车中,则只有第二个项目可以获得高达%的折扣。第三种产品不应该打折,而应该是第四种产品

在该模块中,当我为多个项目应用折扣时,它不会检查产品是否为同一产品。篮子里有任何两种折扣产品就足够了

比如,; 我折扣的产品是x、y、z。 如果篮子里至少有两样东西,我要求50%的折扣

模块: 篮子里有x,y。它适用于50%

我想: 篮子里有x,y。没有折扣。 篮子有2个,1个。折扣仅适用于x。 有2x和2y。它将对第二个x和第二个y应用折扣

我希望我能解释一下。 下面是模块中所需的代码块

$promo1 = $promo['condition_min_quantity'];
$promo2 = $promo['condition_product_ids'];
$promo3 = $promo['discount_quantity'];
$promo4 = array_intersect_assoc($promo['condition_product_ids'], $promo['discount_product_ids']);
$promo5 = $promo['discount_value'];

// Block early
if (!$promo1 || !$promo2 || !$promo3 || !$promo4 || !$promo5) {
    return $promo;
}

$products     = $this->_cart['products'];
$p_conditions = array(  // Product conditions in cart
    'products'       => array(),
    'total_quantity' => 0,
    'condition_qty'  => '2',
    'base_multiply'  => 0,
    'qty_off'        => 0,
);
$p_discounts  = array(); // Product discounts in cart
$p_discounts_total = 0; // total quantity of free product in cart

foreach ($products as $product) {

    if (in_array($product['product_id'], $promo['condition_product_ids'])) {
        $p_conditions['products'][] = '<a href="' . $this->url->link('product/product', 'product_id=' . (int)$product['product_id'], true) . '">' . $product['name'] . '</a>';
        $p_conditions['total_quantity'] += $product['quantity'];
        $p_conditions['base_multiply']  = floor($p_conditions['total_quantity'] / $p_conditions['condition_qty']);
        if ($p_conditions['base_multiply']) {
            // Note: qty_off indicate the quantity of products that get discounts off
            $p_conditions['qty_off'] = ($promo['apply_once'] ? 1 : $p_conditions['base_multiply']) * 1;
        }
    }

    if (in_array($product['product_id'], $promo['discount_product_ids'])) {
        $p_discounts[$product['product_id']] = array(
            'product_id' => $product['product_id'],
            'name'       => $product['name'],
            'quantity'   => isset($p_discounts[$product['product_id']]['quantity']) ? $p_discounts[$product['product_id']]['quantity'] + $product['quantity'] : $product['quantity'],
            'prices'     => isset($p_discounts[$product['product_id']]['prices']) ? $p_discounts[$product['product_id']]['prices'] + array($product['islpr_cart_id'] => $product['price']) : array($product['islpr_cart_id'] => $product['price']),
            'tax_class_id' => $product['tax_class_id'],
        );
        $p_discounts[$product['product_id']]['least_price'] = min($p_discounts[$product['product_id']]['prices']);
        $p_discounts[$product['product_id']]['most_price']  = max($p_discounts[$product['product_id']]['prices']);

        $p_discounts_total = $p_discounts_total + $product['quantity'];
    }
}   
$promo1=$promo['condition\u min\u quantity'];
$promo2=$promo['condition_product_ID'];
$promo3=$promo[‘折扣数量’];
$promo4=数组相交关联($promo['condition\u product\u ids'],$promo['discount\u product\u ids']);
$promo5=$promo[‘折扣价值’];
//提前封锁
如果(!$promo1 | |!$promo2 | |!$promo3 | |!$promo4 | |!$promo5){
退回$promo;
}
$products=$this->_cart['products'];
$p_conditions=数组(//购物车中的产品条件
“产品”=>array(),
“总数量”=>0,
“条件数量”=>“2”,
“基数乘以”=>0,
“数量关闭”=>0,
);
$p_折扣=数组();//购物车中的产品折扣
$p_折扣总额=0;//购物车中免费产品的总数量
foreach($products as$product){
if(在数组中($product['product\U id'],$promo['condition\U product\U id'])){
$p_条件[“产品”][]=”;
$p_条件['total_quantity']+=$product['quantity'];
$p_条件['base_multiply']=地板($p_条件['total_quantity']/$p_条件['condition_quantity']);
如果($p_条件['base_multiply'])){
//注:qty_off表示获得折扣的产品数量
$p_条件['qty_off']=($promo['apply_once']-1:$p_条件['base_multiply'])*1;
}
}
if(在数组中($product['product\U id'],$promo['product\U id'])){
$p_折扣[$product['product_id']]=array(
'product_id'=>$product['product_id'],
'name'=>$product['name'],
“数量”=>isset($p_折扣[$product['product_id']]['QUOTE'])?$p_折扣[$product['product_id']]['QUOTE']+$product['QUOTE']:$product['QUOTE'],
“价格”=>isset($p\U折扣[$product['product\U id']]['prices'])?$p\U折扣[$product['product\U id']]['prices']+数组($product['islpr\U cart\U id']=>product['price']),数组($product['islpr\U cart\U id']=>product['price']),
'tax_class_id'=>$product['tax_class_id'],
);
$p_折扣[$product['product_id']['LEST_price']=min($p_折扣[$product['product_id']]['prices']);
$p_折扣[$product['product_id']['most_price']=max($p_折扣[$product['product_id']]['prices']);
$p_折扣总额=$p_折扣总额+$product[‘数量’];
}
}