ecshop折扣计算的一个bug

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



今天发现ecshop的一个bug,这个bug会导致订单金额错误,并错误地扣除会员的余额。截图如下:



经过排查,原来是ecshop的折扣计算有bug,这个bug会在下述情况下发生:
1,后台设置了“享受现金减免”优惠,例如200元。
2,前台客户购买小于这个优惠金额的产品,例如,本例的170.1
3,系统计算折扣,仍旧会按照200计算,这显然是错误的,正确的应该是按照170.1计算。
4,如果按照200计算折扣,lib_order.php里的order_fee函数,就会计算出使用余额29.9,并且使用红包29.9。

修正方法如下:
在lib_order.php里的compute_discount()和compute_discount_amount()函数的return语句前添加:
$discount=$total_amount >= $discount ? $discount : $total_amount;

回答:
好东西 多谢分享

嗯,谢谢!

真的吗?有空试一下



肯定真的了啊,都测试过了的。




看的不是很明白,你的金额下限设置为多少呢?

我按照楼主修改,还是没变化。
麻烦楼主具体说明下,是修改那个路径的文件,增加代码的具体问题