Ecshop的積分商城-對不起,該商品庫存不足,如今不能兌換

1. 打開Ecshop積分商城文件 "根目錄/exchange.php"

發現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

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

相關文章
相關標籤/搜索