发现248行与289行都有库存不足时报错的提示代码:php
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行,检查货品出了问题。开发
这里代码的意思是只要存在属性选择,就对对货品数量进行库存检查这显然是错误的,原理
由于:只有单选属性 跟货品挂钩,多选属性 是没有货品概念。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');
}
以下:查询
//查询:商品存在规格 是货品 检查该货品库存
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');
}
从新测试问题已经解决了。商城
作过Ecshop二次开发的朋友都了解,Ecshop中商品的属性有三种:文件
在三种属性中仅第二种“单选属性 ”与货品库存有关。而函数is_spec()就是检查一组属性中是否有单选属性。由于加上此判断后问题解决。