ecshop积分兑换时提示库存不足解决方法

使用积分兑换商品时会提示库存不足:“对不起,该商品库存不足,现在不能兑换!” ,解决方法如下:

1. 打开Ecshop积分商城文件 "根目录/exchange.php"

发现248行与289行都有库存不足时报错的提示代码:

248行:

/* 查询:检查兑换商品是否有库存 */

if($goods['goods_number'] == 0 && $_CFG['use_storage'] == 1)

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

289行:

//查询:商品存在规格 是货品 检查该货品库存

if((!empty($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

显然248行是直接检查的商品库存这里是没有问题的。问题出在289行,检查货品出了问题。

这里代码的意思是只要存在属性选择,就对对货品数量进行库存检查这显然是错误的,

因为:只有单选属性 跟货品挂钩,多选属性 是没有货品概念。

2. 修改Ecshop积分兑换文件代码解决问题。

修改289行代码:

//查询:商品存在规格 是货品 检查该货品库存

if((!empty($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

如下:

//查询:商品存在规格 是货品 检查该货品库存

if((is_spec($specs)) && ($product_info['product_number'] == 0) && ($_CFG['use_storage'] == 1))

{

show_message($_LANG['eg_error_number'], array($_LANG['back_up_page']), array($back_act), 'error');

}

重新测试问题已经解决了。

3. 修改原理介绍——Ecshop二次开发知识总结。

做过Ecshop二次开发的朋友都了解,Ecshop中商品的属性有三种:

唯一属性:

只有一个值,购买商品时不能选择。

单选属性:

拥有多个值,用户只能选一个,比如颜色,选择红色的衣服或者蓝色的。

复选属性:

复选属性拥有多个值,用户可以选择多个。

在三种属性中仅第二种“单选属性 ”与货品库存有关。而函数is_spec()就是检查一组属性中是否有单选属性。因为加上此判断后问题解决。

下一篇: 让ecshop文章列表以更新时间排序 上一篇: 让ecshop文章增加点击次数显示

(0)

相关推荐