当前位置:首页 > 开源系统 > ECshop > 正文内容

只有在库存为0的缺货状态下报缺货登记,有库存需先下单再报缺货登记

最近公司系统做了个库存管理,方便各分部门领取物品及统计每月每个部门使用经费,所以使用了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);
}



扫描二维码推送至手机访问。

版权声明:本文由Znanr发布,如需转载请注明出处。

本文链接:https://znanr.com/?id=41

标签: PHPECshop

相关文章

更改后台管理地址

更改后台管理地址

打开 根目录/data/config.php ,把 config.php 文件里面 admin 改为你自己的, admin 文件夹的名字也要改为你自己的就可以了。PC端配置文件地址:根目录/data/...

ecshop模板文件说明

ecshop模板文件说明

style.css – 模板所使用样式表activity.dwt – 活动列表article.dwt – 文章内容页article_cat.dwt – 文章列表页article_pro.dwt – 前...

PC端后台管理左侧菜单管理中心修改

PC端后台管理左侧菜单管理中心修改

打开文件 languages/zh_cn/admin/common.php 155行$_LANG['14_sms'] = '管理中心';首...

模板修改详细教程 and 模板对应的文件

模板修改详细教程 and 模板对应的文件

ECSHOP模板修改需要会DIV CSS知识。还有就是DWT,LBI文件的意义,熟记以下一些模板程序有助于修改模板。 模板文件说明 style.css  &n...

后台首页信息修改

后台首页信息修改

①手机端文件位置: 打开 mobile/admin/templates/start.htm 约190-208行②PC端文件位置: 打开 admin/templates/s...

ecshop数据库表说明(官方)

ecshop数据库表说明(官方)

访问日期searchengine varchar 搜索引擎名称count mediumint 访问次数ecs_sessions session记录表sesskey char sessionid,exp...