如何根据opencart购物车页面上的产品类别计算折扣?

时间:2013-12-07 09:19:45

标签: php mysql opencart

我想按类别分组并在购物车页面上展示产品。我的意思是说,如果我们有四种产品,那么它应该如下所示:

  

第1类

     
      
  • product i
  •   
  • 产品ii
  •   
     

第2类

     
      
  • product i
  •   
  • 产品ii
  •   

我还希望将每个类别值的总量存储在一个数组中。我正在尝试实施类别明智的折扣。 感谢。

EDITED: - 这是我的购物车页面,我正在尝试根据产品类别显示折扣 enter image description here

假设购物车中有两个产品,它们属于两个不同的类别。现在我想根据每个类别的数量来计算折扣。 我在管理部分创建了一个模块,我在其中设置了所有必需的值,并将其存储到数据库中的表中。

enter image description here

现在,根据管理员设置的值,我正在尝试在购物车页面上实现折扣​​。但我不知道,我怎么能这样做?

  

这就是我没有代码放在这里的原因。

请提出一些想法,以便我可以尝试创造一些东西。 谢谢!

以下是我的要求 -

  
      
  1. 销售和交付条款:

         
        
    • 订单超过600法郎,免费送货;
    •   
    • 如果订单少于上述,将收取20法郎的运费;
    •   
  2.   
  3. 折扣和数量

         
        
    • 红葡萄酒,白葡萄酒:

           
          
      • 来自36瓶,每瓶750ml,6%折扣;
      •   
      • 从60瓶,每瓶750ml,10%折扣;
      •   
      • 从84瓶装,每瓶750ml,13%折扣。
      •   
    •   
    • 强化葡萄酒(甜味):

           
          
      • 从12瓶,每瓶750ml,5%折扣。
      •   
    •   
    • 提货折扣:

           
          
      • 24瓶,每瓶750ml,3折优惠。
      •   
    •   
    • 现金支付:

           
          
      • 24瓶,每瓶750ml,3折优惠。
      •   
    •   
    • 交付时的现金付款:

           
          
      • 3%折扣。
      •   
    •   
  4.   

1 个答案:

答案 0 :(得分:1)

可以实现如下。 我们可以根据类别对所有产品进行排序,然后可以轻松应用任何折扣..

首先,您应该对所有产品进行排序---

////////////// Grouping Same category products into one array //////////////

$category_id = $this->model_discount_cdiscount->getcategory($product['product_id']);

$array_key = $category_id[0]['category_id']; 

if (array_key_exists($array_key, $this->data['discount']))
{

    $this->data['discount'][$array_key]['total'] = $this->data['discount'][$array_key]['total']+(preg_replace("/[^0-9.]/","",$total));
    $this->data['discount'][$array_key]['quantity'] = $this->data['discount'][$array_key]['quantity']+$product['quantity'];
}
else
{
    $this->data['discount'][$array_key] = array(
            'category_name' => $category_id[0]['name'],
            'category_id' => $array_key,
            'total' => (preg_replace("/[^0-9.]/","",$total)),
            'quantity' => $product['quantity'],
            'length' => $product['length']
        );
}

然后可以申请---

////////////////////// Get Discount values from Discount table //////////////////////

foreach($this->data['discount'] as $key2 => $value2)
{
    $this->data['product_match'][] = $this->model_discount_cdiscount->matchDiscount($key2);
}


//////////////////////  Calculate Discount //////////////////////
$total_d =0;
foreach($this->data['discount'] as $discounts)
{
    foreach($this->data['product_match'] as $match)
    {
        if(count($match)!=0)
        {
            if ($discounts['category_id']==$match['category'] AND $discounts['quantity']>=$match['quantity'] AND $discounts['length']==$match['class_value'])
            {

                $dt = ($match['discount']/100)*$discounts['total'];
                $total_d += $dt;
            }
        }
    }

}