只有在库存为0的缺货状态下报缺货登记,有库存需先下单再报缺货登记
2016-07-07 15:00 来源:www.chinab4c.com 作者:ecshop专家
最近公司系统做了个库存管理,方便各分部门领取物品及统计每月每个部门使用经费,所以使用了ecshop,但是有一处小功能不适合库存管理,也就是缺货登记,如果某个人在有库存的状态下(即商品不为0)下订单,但是下订单时数量大于库存,按照系统就要先报缺货登记再下单,但是有点不符合公司的要求,公司的要求是库存为0时才能包缺货登记,不为0时,要先把库存数量下单,然后在报缺货登记,于是我就下了一个ecshop(v2.7.2)在本地做测试。更改结果如下: 第一步:找到echop(根目录)/includes/inc_c**tant.php文件51行,这一处是报错、提示的六个级别,需要增加一个,我做为7. 代码如下: /* 加入购物车失败的错误代码 */ define('ERR_NOT_EXISTS',1); // 商品不存在 define('ERR_OUT_OF_STOCK', 2); // 商品缺货(0) define('ERR_NOT_ON_SALE',3); // 商品已下架 define('ERR_CANNT_ALONE_SALE',4); // 商品不能单独销售 define('ERR_NO_BASIC_GOODS',5); // 没有基本件 define('ERR_NEED_SELECT_ATTR',6); // 需要用户选择属性 define('ERR_OUT_OF_STOCK_NUM',7); // 商品缺货(不为0) 第二步:找到echop(根目录)/languages/zh_cn/common.php文件185行,这一行是再前台商品缺货或者订购数量大于库存时所报的提示,在下面加一行: $_LANG['shortage'] = "对不起,该商品已经库存不足暂停销售。\n你现在要进行缺货登记来预订该商品吗?"; $_LANG['shortage2'] = "对不起,该商还有库存。\n请您先下订单购买,不足再下缺货登记!"; 第三步:找到echop(根目录)/includes/lib_order.php文件1082行, 检查:商品购买数量是否大于总库存 if ($num > $goods['goods_number'] ) { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['shortage'], $goods['goods_number']), ERR_OUT_OF_STOCK); return false; } 原系统只是判断购买数量大于库存,但是没有考虑库存是否为0.所以作如下更改 if (($num > $goods['goods_number']) && ($goods['goods_number'] == 0)) { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['shortage'], $goods['goods_number']), ERR_OUT_OF_STOCK); return false; }else if(($num > $goods['goods_number']) && ($goods['goods_number'] != 0)){ $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['shortage2'], $goods['goods_number']), ERR_OUT_OF_STOCK_NUM); return false; } 再找到1220行左右 if($row) //如果购物车已经有此物品,则更新 { $num += $row['goods_number']; if ($GLOBALS['_CFG']['use_storage'] == 0 || $num <= $goods['goods_number']) { $goods_price = get_final_price($goods_id, $num, true, $spec); $sql = "UPDATE " . $GLOBALS['ecs']->table('cart') . " SET goods_number = '$num'" . " , goods_price = '$goods_price'". " WHERE session_id = '" .SESS_ID. "' AND goods_id = '$goods_id' ". " AND parent_id = 0 AND goods_attr = '" .get_goods_attr_info($spec). "' " . " AND extension_code <> 'package_buy' " . "AND rec_type = 'CART_GENERAL_GOODS'"; $GLOBALS['db']->query($sql); } else { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['shortage'], $num), ERR_OUT_OF_STOCK); return false; } } 作如下更改 else { $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['shortage2'], $num), ERR_OUT_OF_STOCK_NUM); return false; } 第四步,找到echop(根目录)/js/common.js文件78行, else if (result.error == 6) { openSpeDiv(result.message, result.goods_id, result.parent); } 再后面再加 else if (result.error == 6) { openSpeDiv(result.message, result.goods_id, result.parent); } else if (result.error == 7) { alert(result.message); } 更改到此结束,我试验成功了,满足了我现在的需求,但是还有许多不足之处,请大家指正!谢谢! |
回答:
感谢分享!! |
感恩你, 太好了,越多人分享越爽. |
感谢分享,不知道还有用不 |
感谢分享!!我也觉得那个缺货登记不怎么好。。。最好能后台设置是否开启缺货登记。。。 |
最近更新
常用插件
- ecshop2.7.1打印发货单插件
ecshop2.7.1打印发货单插件介绍:ecshop2.7.1和以前的ecshop版本不一样,ecs...
- ecshop商品分类名称增加样
ecshop插件介绍:本插件可以方便在后台管理,为ecshop商品分类名称增加样...
- ecshop二次商品订购人信息
ecshop二次商品订购人信息填写插件,有时候给朋友送花,或者是送礼品的...
- ecshop二次开发详细页面生
插件介绍: ECSHOP系统,在很多时候,很多商品没有人购买,不但购买的人...
- ecshop分类批量扩展插件
ecshop分类批量扩展插件,这个插件是ecshop插件里面比较核心的插件。我们...
ecshop热门问答
ecshop热门资料
ecshop支付方式
ecshop百度优化
ecshop马萨
ecshopmembers
ecshop单不能
ecshopGzip
ecshop在线帮助
ecshop引擎
ecshop程序问题
ecshopfalse
ecshop掌柜
ecshop小图切换
ecshopclick
ecshop扫描
ecshop趣玩
ecshop订单附言
ecshop仪器仪表
ecshop简单重写
ecshop验证码问题
ecshop不能创建产品
ecshop语言
ecshop闹鬼
ecshop团队合作
ecshop加入购物车
ecshop团购报名
ecshop影片
ecshop白板
ecshop改模板
ecshop站内公告
ecshop短信发送