修改destoon商城库存减少的逻辑错误,由确认付款后减库存改为客户付款后减库存。

2015年10月14日12:39:09 评论 781 次浏览

好久没有来更新文章了,主要是最近一直实在是太忙了,而且也没碰到过什么大的难题,所以感觉没什么要分享的东西。正好最近有一个destoon的二次开发项目,终于碰到了难题。

不知道destoon的程序员怎么想的,dt的商城系统的库存逻辑感觉有点奇怪,是卖出去的商品,要等到客户确认后,才会在库存中减去客户购买的数量。因为从客户购买下单到商家发货,货物运到客户那边,再到客户确认收货,是需要很长时间的,但是实际上,在客户下单付款后,这个订单就正式的形成了,就该在库存中减去购买数量了,因为客户付款了,这个货是必须要发的。因为从客户付款到商家发货,也是有时间的,如果一个商品就剩下了1件,一个客户购买付款后,库存没有减去,在而是有第二个客户又购买了,其实这个商品已经没有货了,这也是采用客户付款减库存而不是商家发货减库存的原因。

当然,还有问为什么不是客户下单减库存的,这个就好解释了,肯定有很多人恶意或是随意下单。

当碰见这个问题后,我习惯的去百度搜索结果没有人提出过问题,destoon论坛上2013年有人提出,但是没有人能解决,看来dt对这个商城还是不重视啊。

所以,没办法,只能自己修改了,下面上修改方法。

1、打开文件\module\member\trade.inc.php

搜索:买家付款  找到 case 'pay'://买家付款 在 $db->query("UPDATE {$table} SET status=2,updatetime=$DT_TIME WHERE itemid=$itemid"); 下面添加 大约104行

//更新商品数据
if($td['mid'] == 16) {
$db->query("UPDATE {$DT_PRE}mall SET orders=orders+1,sales=sales+$td[number],amount=amount-$td[number] WHERE itemid=$mallid");
} else {
$db->query("UPDATE ".get_table($td['mid'])." SET amount=amount-$td[number] WHERE itemid=$mallid");
}

大体解释一下:$td['mid'] == 16 就是确定是不是商城模块,简单的if else语句。

orders=orders+1 就是成交量+1;

sales=sales+$td[number] 就是销量加上客户购买的数量;

amount=amount-$td[number] 就是库存减去客户购买的数量。

如果不想客户付款,就计算成交次数跟销量的话,想等到客户确认付款的时候,在统计,就去掉orders=orders+1,sales=sales+$td[number],这一句。

这样的话,当客户付款的时候,商品的库存就减去购买数量了。

2、这边修改之后,还没完,因为 当货到付款 交易成功、客户确认收货、买家确认超时 卖家申请直接付款付款的时候,代码没修改,就容易造成统计两次成交、库存,所以只要搜索

//货到付款,确认完成

//确认收货

//买家确认超时 卖家申请直接付款

然后把下面的更新商品数据的代码

//更新商品数据
if($td['mid'] == 16) {
$db->query("UPDATE {$DT_PRE}mall SET orders=orders+1,sales=sales+$td[number],amount=amount-$td[number] WHERE itemid=$mallid");
} else {
$db->query("UPDATE ".get_table($td['mid'])." SET amount=amount-$td[number] WHERE itemid=$mallid");
}

删除掉就可以了。

 

继续阅读
weinxin
加我微信
微信扫一扫,加我微信好友,共同交流,共同进步! (备注:焦国强博客)
destoon 最后更新:2016-10-18
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: