ecshop支付时减库存方法
ecshop后台减少库存的时机默认只有下订单时和发货时,不能满足各种客户需求啊,要增加一个商家付款后就能减少库存,先解决方法如下
1. includes/inc_constant.php 文件 大约207行 加上
define('SDT_PAY', 2); // 支付时减少库
languages/zh-cn/admin/shop_config.php 文件 大约338行加上
$_LANG['cfg_range']['stock_dec_time']['2'] = '商家付款后';
给 数据表 ship_config 中 id 为 423 的行 store_range 增加 2
2. includes/lib_order.php 文件 大约2207行 增加如下代码
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 文件
/* 修改订单状态为已付款 */
$sql = 'UPDATE ' . $GLOBALS['ecs']->table('order_info') .
" SET order_status = '" . OS_CONFIRMED . "', " .
" confirm_time = '" . gmtime() . "', " .
" pay_status = '$pay_status', " .
" pay_time = '".gmtime()."', " .
" money_paid = order_amount," .
" order_amount = 0 ".
"WHERE order_id = '$order_id'";
$GLOBALS['db']->query($sql);
//在这段之后增加
include_once(ROOT_PATH . 'includes/lib_order.php');
/* 如果使用库存,且付款时减库存,则减少库存 by sid*/
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY){
change_order_goods_storage($order['order_id'], true, SDT_PAY);
}
3. admin/order.php 文件
/* 如果使用库存,且下订单时减库存,则增加库存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
change_order_goods_storage($order_id, false, SDT_PLACE);
}
//在这段之后增加
//无效与取消时加库存
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY){
change_order_goods_storage($order_id, false, SDT_PAY);
}
4. 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);
}
admin/order.php 文件
$payment = payment_info($order['pay_id']);
if ($payment['is_cod'])
{
$arr['shipping_status'] = SS_RECEIVED;
$order['shipping_status'] = SS_RECEIVED;
}
update_order($order_id, $arr);
//在这段之后增加
//扣库存
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY){
change_order_goods_storage($order['order_id'], true, SDT_PAY);
}
/* 如果使用库存,且下订单时减库存,则增加库存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
change_order_goods_storage($order_id, false, SDT_PLACE);
}
//在这段之后增加
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order_id, false, SDT_PAY);
}
继续往下
/* 如果使用库存,且下订单时减库存,则增加库存 */
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PLACE)
{
change_order_goods_storage($order_id, false, SDT_PLACE);
}
//在这段之后增加
if ($_CFG['use_storage'] == '1' && $_CFG['stock_dec_time'] == SDT_PAY)
{
change_order_goods_storage($order_id, false, SDT_PAY);
}
如此,一个完整的ecshop商家付款后减少库存的功能就实现了!!
bug:这个教程是有bug的,当你下订单后先不要支付,然后返回用户中心切换支付方式或者使用余额支付,库存不减。希望能完善
ecshop支付时减库存方法的更多相关文章
- ECshop使用财付通接口支付时出现“[3006]您的请求无效,请重新再试
ECshop使用财付通接口支付时出现“[3006]您的请求无效,请重新再试.”解决方案\includes\modules\payment\tenpay.php 行 104原来的为 $bill_no = ...
- redis分布式锁扣减库存弊端: 吞吐量低, 解决方法:使用 分段锁 分布式分段锁并发扣减库存--代码实现
package tech.codestory.zookeeper.aalvcai.ConcurrentHashMapLock; import lombok.AllArgsConstructor; im ...
- ENode框架Conference案例分析系列之 - 订单处理减库存的设计
前言 前面的文章,我介绍了Conference案例的业务.上下文划分.领域模型.架构,以及代码整体流程.接下来想针对案例中一些重要的场景,分别做进一步的分析.本文想先介绍一下Conference案例的 ...
- EF+MySQL乐观锁控制电商并发下单扣减库存,在高并发下的问题
下订单减库存的方式 现在,连农村的大姐都会用手机上淘宝购物了,相信电商对大家已经非常熟悉了,如果熟悉电商开发的同学,就知道在买家下单购买商品的时候,是需要扣减库存的,当然有2种扣减库存的方式, 一种是 ...
- 如何开发ecshop支付插件
如何开发ecshop支付插件 ecshop模板网 / 2014-06-03 目标一:搞懂ecshop的支付流程 选完商品,进入购物车页面,点击“结算中心”,页面跳转到flow.php?step=che ...
- IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。
IQ: Intelligence Quotient 智商 一个人的智力和对科学知识的理解掌握程度. EQ: Emotional Quotient 情商 一个人对环境和个人情绪的掌控和对团队关系的运作能 ...
- 集成支付宝钱包支付iOS SDK的方法与经验
流程 摘自第一个文档<支付宝钱包支付接口开发包2.0标准版.pdf> 图中的“商户客户端”就是我们的iOS客户端需要做的事情: 调用支付宝支付接口 处理支付宝返回的支付结果 在调用支付宝支 ...
- ios--集成支付宝钱包支付iOS SDK的方法与经验
文/胖花花(简书作者)原文链接:http://www.jianshu.com/p/fe56e122663e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 没想到,支付宝的SDK是我目前 ...
- 集成支付宝钱包支付ios SDK的方法和经验
没想到,支付宝的SDK是我目前用过的所有第三方SDK中最难用的一个了. 下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 “请点此下载集成开 ...
随机推荐
- Linux常用命令_(文件权限)
Linux权限管理: 二.权限管理1.3种基本权限在Linux中,将使用系统资源的人员分为4类:超级用户.文件或目录的属主.属主的同组人和其他人员.超级用户拥有对Linux系统一切操作权限,对 于其他 ...
- eclispe报错PermGen space
最近使用eclipse做开发,使用的服务器是tomcat,但在启动时报了Caused by: java.lang.OutOfMemoryError: PermGen space的异常. 这个错误很常见 ...
- wait、notify、notifyAll和Condition
wait().notify()和notifyAll()是基于synchronized Condition是基于Lock的. Condition是在java 1.5中才出现的,它用来替代传统的Objec ...
- 递推DP URAL 1586 Threeprime Numbers
题目传送门 /* 题意:n位数字,任意连续的三位数字组成的数字是素数,这样的n位数有多少个 最优子结构:考虑3位数的数字,可以枚举出来,第4位是和第3位,第2位组成的数字判断是否是素数 所以,dp[i ...
- 水题 HDOJ 4727 The Number Off of FFF
题目传送门 /* 水题:判断前后的差值是否为1,b[i]记录差值,若没有找到,则是第一个出错 */ #include <cstdio> #include <iostream> ...
- ios CGImageRelease 出现 EXC_BAD_ACCESS的错误 ios特定形状剪裁图片 内存泄露
CGImageRef imgRef = [image CGImage]; 通过此种方式的得到的CGImageRef不能利用CGImageRelease释放,因为你不拥有它所以不用释放 在ios中特定形 ...
- 【BZOJ】2321: [BeiJing2011集训]星器(数学+特殊的技巧)
http://www.lydsy.com/JudgeOnline/problem.php?id=2321 完全想不到.. 第一眼以为是爆搜,看到数据范围果断放弃:第二眼以为是网络流(因为只有行列操作, ...
- ueditor使用总结——前端篇.md
首先吐槽下,百度的API太坑,谁让人家都是大牛呢. 说明:本文所涉猎代码均依托于seajs,本文所用ueditor版本为1.4.3.3 JSP UTF-8版 编辑器前端部署: 1.把ueditor引入 ...
- Java_获取当前月最后一天
List<String> ms = DateUtils.getMonths(7,"yyyyMM"); SimpleDateFormat sdf = new Simple ...
- jsoncpp封装和解析字符串、数字、布尔值和数组
使用jsoncpp进行字符串.数字.布尔值和数组的封装与解析. 1)下载jsoncpp的代码库 百度网盘地址 :http://pan.baidu.com/s/1ntqQhIT 2)解压缩文件 json ...