發現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()就是檢查一組屬性中是否有單選屬性。由於加上此判斷後問題解決。