zoukankan      html  css  js  c++  java
  • 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()就是检查一组属性中是否有单选属性。因为加上此判断后问题解决。

  • 相关阅读:
    Java程序员必知的8大排序
    Servlet与JSP间的传值问题
    Servlet上传文件详细解析以及注意事项
    JSP入门学习经验
    统计语言模型(Statistical Language Models)(条件概率公式)
    自定义用户控件ascx
    asp.net相对路径、绝对路径
    A list of supported CSS selectors when invoking g(..)
    一位研究生导师心目中理想的论文(转)
    常用软件
  • 原文地址:https://www.cnblogs.com/nuanxin/p/10110040.html
Copyright © 2011-2022 走看看