打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
修复ecshop当商品设置数量优惠时,加入不同属性的商品数量优惠判断错误


例,优惠数量设置如下:

1件             100元

5件              90元

10件            80元

该商品有A、B属性规格

我添加A属性5件到购物车,再添加B属性此商品5件到购物车

按道理该商品数量达到了10件,价格应该会是80元。

但是ECSHOP在这里有一个错误是没有进行相以应的验证,只判断了单件商品的数量,所以价格是90元。而且单独增减一个时不会对另一个的价格进行处理 。

在这里写了一个函数来解决此问题

修改如下:

找到

includes/lib_common.php

  1. /**  

  2.  * 取得商品最终使用价格  

  3.  *  

  4.  * @param   string  $goods_id      商品编号  

  5.  * @param   string  $goods_num     购买数量  

  6.  * @param   boolean $is_spec_price 是否加入规格价格  

  7.  * @param   mix     $spec          规格ID的数组或者逗号分隔的字符串  

  8.  *  

  9.  * @return  商品最终购买价格  

  10.  */  

  11. function get_final_price($goods_id, $goods_num = '1', $is_spec_price = false, $spec = array())  

  12. {  

在这上面加入一函数:

  1. function update_cart_volume_price($goods_id){     

  2.     $volume_price  = '0'; //商品优惠价格 www.lyecs.com 老杨ECSHOP  

  3.     //取得商品优惠价格列表  

  4.     $price_list   = get_volume_price_list($goods_id, '1');  

  5.     if (!emptyempty($price_list))  

  6.     {  

  7.         //获取所不同规格的相同商品数量 www.lyecs.com 老杨ECSHOP  

  8.         $sql = "SELECT SUM(goods_number) " .  

  9.                 " FROM " . $GLOBALS['ecs']->table('cart') . " " .  

  10.                 " WHERE session_id = '" . SESS_ID . "' AND goods_id= '$goods_id' AND rec_type = '" . CART_GENERAL_GOODS . "' ";  

  11.         $all_number = $GLOBALS['db']->getOne($sql);  

  12.         foreach ($price_list as $value)  

  13.         {  

  14.             if ($all_number >= $value['number'])  

  15.             {  

  16.                 $volume_price = $value['price'];  

  17.             }  

  18.         }  

  19.         //如果有优惠价格,更新所不同规格的相同商品的价格 www.lyecs.com 老杨ECSHOP  

  20.         if($volume_price){  

  21.             $sql = "UPDATE ".$GLOBALS['ecs']->table('cart'). " SET goods_price = '$volume_price' ".  

  22.             " WHERE session_id = '" . SESS_ID . "' AND goods_id= '$goods_id' AND rec_type = '" . CART_GENERAL_GOODS . "' ";  

  23.             $GLOBALS['db']->query($sql);  

  24.         }  

  25.     }  

  26. }  

然后在这此文件找到:

  1. //如果需要加入规格价格  

  2.     if ($is_spec_price)  

  3.     {  

  4.         if (!emptyempty($spec))  

  5.         {  

  6.             $spec_price   = spec_price($spec);  

  7.             $final_price += $spec_price;  

  8.         }  

  9.     }  

在此下面添加如下代码:

  1. if(!$volume_price){  

  2.     //如果没有优惠价格,更新所不同规格的相同商品的价格 www.lyecs.com 老杨ECSHOP  

  3.     $sql = "UPDATE ".$GLOBALS['ecs']->table('cart'). " SET goods_price = '$final_price' ".  

  4.     " WHERE session_id = '" . SESS_ID . "' AND goods_id= '$goods_id' AND rec_type = '" . CART_GENERAL_GOODS . "' ";  

  5.     $GLOBALS['db']->query($sql);      

  6. }  

打开includes/lib_order.php

找到

  1. else //购物车没有此物品,则插入  

  2.      {  

  3.          $goods_price = get_final_price($goods_id, $num, true, $spec);  

  4.          $parent['goods_price']  = max($goods_price, 0);  

  5.          $parent['goods_number'] = $num;  

  6.          $parent['parent_id']    = 0;  

  7.          $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('cart'), $parent, 'INSERT');  

  8.      }  

  9.  }  

  10.  /* 把赠品删除 */  

  11.  $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '" . SESS_ID . "' AND is_gift <> 0";  

  12.  $GLOBALS['db']->query($sql);  

在下面添加:

  1. update_cart_volume_price($goods_id);   

打开flow.php

找到:

  1. /* 删除所有赠品 */  

  2. $sql = "DELETE FROM " . $GLOBALS['ecs']->table('cart') . " WHERE session_id = '" .SESS_ID. "' AND is_gift <> 0";  

  3. $GLOBALS['db']->query($sql);  

在下面添加:

  1. update_cart_volume_price($goods['goods_id']);  

到此问题解决了。另外,转载请注意保留出处。谢谢。

下一篇: 推广ecshop网店三大关键方法 上一篇: 显示ecshop最近几天最新发布商品的方法

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
世界最长寿的十位老人一览图!|巴西|日本|印尼|南非|俄罗斯
人物白描稿(仕女图合集二 )
如果发现微信文件已过期,先别急着删,其实一个小方法就可以找回
2024年辰山植物园芍药花(25)
女人变心,不再爱你,多半是这3个原因
赚钱的22条铁律,收藏转发给孩子们吧,总能得到启发~~
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服