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
到此問題解決了。另外,轉載請注意保留出處。謝謝。
總結
以上是生活随笔為你收集整理的ecshop flow.php goods_number,修复ECSHOP一重要BUG,当商品设置数量优惠时,加入不同属性的商品数量优惠判断错误...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中GIT组件,linux –
- 下一篇: linux ntp软件下载,Linux_