ecshop默认只有下订单时和发货时,在用户拍了而没确认订单就减少库存,是不合理的机制,也不能满足各种客户需求。因此ECSHOP插件网提供付款后自动减少库存插件,在用户下单付款后自动减少商品库存,满足大部分客户所需。
功能效果截图:登录ECSHOP后台 -> 系统设置 -> 购物流程,设置减库存的机制(这里新增付款时减少库存)
以下是ECSHOP插件网提供网上的实现方法如下:
第一步:打开includes/inc_constant.php文件
找到如下代码:
define('SDT_PLACE', 1); // 下订单时
下行加上以下代码:
define('SDT_PAY', 2); // 支付时减少库
第二步:打开languages/zh-cn/admin/shop_config.php文件,在338行加上如下代码
$_LANG['cfg_range']['stock_dec_time']['2'] = '商家付款后';
第三步:给ECSHOP数据表 ship_config 中 id 为 423 的行 store_range 增加 2
第四步:打开includes/lib_order.php文件,找到如下代码
case 1 :
$sql = "SELECT goods_id, SUM(goods_number) AS num, MAX(extension_code) AS extension_code, product_id FROM " . $GLOBALS['ecs']->table('order_goods') .
" WHERE order_id = '$order_id' AND is_real = 1 GROUP BY goods_id, product_id";
break;
下行加上以下代码:
case 2 :
$sql = "SELECT goods_id, SUM(goods_number) AS num, MAX(extension_code) AS extension_code, product_id FROM " . $GLOBALS['ecs']->table('order_goods') .
" WHERE order_id = '$order_id' AND is_real = 1 GROUP BY goods_id, product_id";
break;
第五步:打开includes/lib_payment.php文件,找到如下代码
/* 记录订单操作记录 */
order_action($order_sn, OS_CONFIRMED, SS_UNSHIPPED, $pay_status, $note, $GLOBALS['_LANG']['buyer']);
上行加上以下代码:
/* 如果使用库存,且付款后减库存,则减少库存 by ecshop.cx */
include_once(ROOT_PATH . 'includes/lib_order.php');
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order['order_id'], true, SDT_PAY);
}
第六步:打开admin/order.php文件,找到如下代码(共有四处需修改)
/* 如果使用库存,且下订单时减库存,则增加库存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
change_order_goods_storage($order_id, false, SDT_PLACE);
}
下行加上以下代码:
/* 无效与取消时加库存 by ecshop.cx */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order_id, false, SDT_PAY);
}
继续找到如下代码:
if ($payment['is_cod'])
{
$arr['shipping_status'] = SS_RECEIVED;
$order['shipping_status'] = SS_RECEIVED;
}
update_order($order_id, $arr);
下行加上以下代码:
/* 如果使用库存,且付款后减库存,则减少库存 by ecshop.cx */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order['order_id'], true, SDT_PAY);
}
最后第七步:打开flow.php文件文件,找到如下代码
/* 如果订单金额为0 处理虚拟卡 */
if ($order['order_amount'] <= 0)
{
下行加上以下代码:
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order['order_id'], true, SDT_PAY);
}
按照以上每一步操作一个ecshop付款后减少库存的功能就实现了!!
提醒:以上是网上提供的方法,经过我们ECSHOP插件网测试,虽然功能实现了代码存在不完整以及功能不完善,还有提示错误等问题。比如当你下订单后先不要支付,然后返回用户中心切换支付方式或者使用余额支付,库存不减。有能力的自己完善修复解决或建议使用ECSHOP付款后自动减少库存功能请选购安装我们ECSHOP插件网开发的正版,全网唯一完善完整正版。(https://www.ecshop.cx/goods-355.html)。