打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ecshop积分系统修改小记(2)
三、后台确认收货的bug

    还有一种情况,是顾客通知我们货物已收到了,由我们在后台进行收货确认设置(点击“已
收货”按钮)这个时候,客户的积分还是没有增加,因此我们还要修改后台管理程序
    我们找到后台“订单信息”的页面为admin/order.php?act=info&order_id=xxx,对应的模板
是admin下面的templates/order_info.htm,从order_info.htm我们可以查到,“已收货”的按钮
是如下语句:
   
    因此,在/admin/order.php里搜索receive,找到2627行的收货确认操作的程序段。即
'receive' == $operation下面这一段,然后在这段程序的最后(即'}'之前一行)加上以下语句:
        //add by iamstar
        log_account_change($order['user_id'], 0, 0, $order['integral'], 0,
sprintf($_LANG['order_gift_integral'], $order['order_sn']));
    也就是说我们点击“已收货”按钮时,也能够自动帮客户增加积分了。
    可是在反复测试一个购物流程时,当点击“未发货”按钮以收回之前的收货确认时,却有提
示程序出错(不知你们有没有,反正我有,是在order.php的2611行),经查,是以下这一段出错:
    $integral = integral_to_give($order);
    当我们替客户确认收货却要反悔时,点击“未发货”,理应收回之前所赠送的积分的,因此
要对$integral赋值,再执行下一行的操作:
    log_account_change($order['user_id'], 0, 0, (-1) * $integral, (-1) * $integral,
sprintf($_LANG['return_order_gift_integral'], $order['order_sn']));
    也许是赋值有问题,因此将出错的赋值语句注释掉,改为如下,就不会有错误提示了:
    $integral=intval($order['integral']);   
    因为我只需要减掉相应的等级积分,因此减分操作我也改了一下:
    log_account_change($order['user_id'], 0, 0, (-1) * $integral, 0,
sprintf($_LANG['return_order_gift_integral'], $order['order_sn']));
    即将第五个参数(对应pay_points)的加减值置零,就不会有任何操作了。关于
log_account_change()函数的参数结构可以自己去 /includes/lib_common.php里查找,这里就
不多说了。

    五、拾遗

    1) 发现提交订单的时候后台“会员帐户变动明细”会记录“支付订单 xxxxxxxxxxxx”,而且
       这个地方无端端会相应扣掉消费积分帐户。这可不是我想要的,在flow.php大约1540行处
       注释掉下面这一段即可:
     if ($order['user_id'] > 0 && $order['integral'] > 0)
     {
         log_account_change($order['user_id'], 0, 0, 0, $order['integral'] *
  (-1), sprintf($_LANG['pay_order'], $order['order_sn']));
     }

这样在提交订单的时候就不会记录一条无谓的日志了。

    2) 我们发现系统后台“会员帐户变动明细”会在管理员点击“发货”操作时开始赠送积分,
       只是这里的赠送额都为0,但我觉得不应该在发货的时候就赠送吧?总得让客户收到货物
       之后,因此这里我把它取消掉,免得心烦。在/admin/order.php的约2549行处,注释掉
       下面这一段:
            /* 计算并发放积分 */
            $integral = integral_to_give($order);
            log_account_change($order['user_id'], 0, 0, $integral, $integral,
sprintf($_LANG['order_gift_integral'], $order['order_sn']));
    3) 退货的操作也要减积分,但我的应用没有消费积分可减,因此order.php的大约2762行处
       的log_account_change操作我把减消费积分的操作置零:
            log_account_change($order['user_id'], 0, 0, (-1) * $integral, 0,
sprintf($_LANG['return_order_gift_integral'], $order['order_sn']));
       上面的一行$integral = integral_to_give($order); 还是会引发错误,因此象在前面
       一样改成:
$integral=intval($order['integral']);
       3100行的return_user_surplus_integral_bonus函数会在退货时给顾客补回相应的消费
       积分,我不需要因此将这一整段注释掉:
     if ($order['user_id'] > 0 && $order['integral'] > 0)
     {
         log_account_change($order['user_id'], 0, 0, 0, $order['integral'],
  sprintf($GLOBALS['_LANG'] ['return_order_integral'], $order['order_sn']));
     }

     到这里积分的问题就基本修改完毕了,相信看完这篇东东的人都能够根据自己的需要做出
修改。我把相应的修改过的文件共享给大家参考(http://www.paiban.com/sample.rar),
但不建议大家直接覆盖,因为我这些文件可能还做了其它的修改,而且我也不知道您的程序文件
有没有过别的其它修改。大家在sample搜索iamstar找到修改过的地方,对照自己的程序修改即可。
    以前碰到什么问题总是google,但这个问题总是找不到解决的方法(包括官网),所以自己尝
试修改了一下,文章胡乱写,也比较烦琐,先致歉。如果文章有写错的地方,也望来信指正。希望
这篇东西能够对受到ecshop积分困扰的人有一些帮助,也算自己的一点点贡献吧。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
我不允许准备买手机的人不知道这6个知识
杜甫五古《寄题江外草堂》读记
会调情的男人永远让女人上瘾 ,不会的赶快学起来
戴绿帽子(笑话)
PS无法直接拖入图片如何解决?
天啦!万万没想到,搞钱还有万能公式!
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服