ecshop flow.php goods_number,修复ECSHOP一重要BUG,当商品设置数量优惠时,加入不同属性的商品数量优惠判断错误...

修复ECSHOP一重要BUG,当商品设置数量优惠时,加入不同属性的商品数量优惠判断错误

例,优惠数量设置如下:

1件             100元

5件              90元

10件            80元

该商品有A、B属性规格

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

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

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

老杨在这里写了一个函数来解决此问题,也将此BUG的修改加入了LYECSHOP v1.1.3版中(老版本客户可以联系修改)。

修改如下:

找到

includes/lib_common.php

复制内容到剪贴板

/**

* 取得商品最终使用价格

*

* @param   string  $goods_id      商品编号

* @param   string  $goods_num     购买数量

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

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

*

* @return  商品最终购买价格

*/

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

{

在这上面加入一函数:

复制内容到剪贴板

functionupdate_cart_volume_price($goods_id){

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

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

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

if(!emptyempty($price_list))

{

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

$sql="SELECT SUM(goods_number) ".

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

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

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

foreach($price_listas$value)

{

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

{

$volume_price=$value['price'];

}

}

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

if($volume_price){

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

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

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

}

}

}

然后在这此文件找到:

复制内容到剪贴板

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

if($is_spec_price)

{

if(!emptyempty($spec))

{

$spec_price= spec_price($spec);

$final_price+=$spec_price;

}

}

在此下面添加如下代码:

复制内容到剪贴板

if(!$volume_price){

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

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

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

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

}

打开includes/lib_order.php

找到

复制内容到剪贴板

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

{

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

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

$parent['goods_number'] = $num;

$parent['parent_id']    = 0;

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

}

}

/* 把赠品删除 */

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

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

在下面添加:

复制内容到剪贴板

update_cart_volume_price($goods_id);//www.lyecs.com 老杨ECSHOP

打开flow.php

找到:

复制内容到剪贴板

/* 删除所有赠品 */

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

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

在下面添加:

复制内容到剪贴板

update_cart_volume_price($goods['goods_id']);  //www.lyecs.com 老杨ECSHOP

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值