Foxtable(狐表)用户栏目专家坐堂 → 【问题】积分折现计算没有按照预期规则,麻烦老师帮忙看看


  共有3620人关注过本帖树形打印复制链接

主题:【问题】积分折现计算没有按照预期规则,麻烦老师帮忙看看

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
【问题】积分折现计算没有按照预期规则,麻烦老师帮忙看看  发帖心情 Post By:2021/10/27 9:20:00 [只看该作者]

想实现:
1、根据消费金额,按照消费金额*10得到本次积分,然后累计计算可用积分。
2、如果折扣方式_镜架或镜片,没有选择积分折现的话,那积分折现为零。可用积分等于本次积分加上历史所有本次积分之和。如果有选择积分折现的话,积分折现这将本次积分之前的上一次本次积分,也就是可用积分全部按照可用积分/100的方式换算成积分折现值,然后将本次积分计算为可用积分。今后的消费,按照这个规则进行累加循环往复。

当前代码如下:
Select Case e.DataCol.Name
Case "本次积分"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
            e.DataRow("可用积分") = e.DataRow("本次积分") - e.DataRow("积分折现")
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            drs(i)("可用积分") = drs(i-1)("可用积分") + drs(i)("本次积分") - drs(i)("积分折现")
        Next

Case "折扣方式_镜架","折扣方式_镜片"   
        If e.DataRow("折扣方式_镜架") = "积分折现"  orelse  e.DataRow("折扣方式_镜片") = "积分折现" Then
            e.DataRow("积分折现")=e.DataRow("可用积分")/100
        End If

End Select

运行效果如下:【折扣方式没有选,积分折现不应该有值,结果却有了,积分折现后,可用积分没有对应减掉历史积分,正常时,折现后,可用积分应该=本次积分】

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20211027091007.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/27 9:42:00 [只看该作者]

正确的结果是怎么样的?手工填一个截图看看

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)正确的结果是怎么样的?手工填一个截...  发帖心情 Post By:2021/10/27 11:07:00 [只看该作者]

麻烦老师指导下
第一条:选择了积分折现之后   积分折现才计算当前所有可用积分并算出数字  清空折现之前的历史可用积分,然后可用积分就等于当前消费金额*10积分为当前新的可用积分,在没有折现之前,继续第二条规则
第二条:没有选择积分折现时,积分折现不计算,当前可用积分等于历史可用积分加上本次积分

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20211027110332.png
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/27 12:05:00 [只看该作者]

Case "折扣方式_镜架","折扣方式_镜片"   的方法一样加个判断就行了

Select Case e.DataCol.Name
Case "本次积分"
        Dim dr As DataRow
        Dim drs As List(of DataRow)
        dr = e.DataTable.Find("[_SortKey] < " & e.DataRow("_SortKey"), "[_SortKey] Desc") '找出上一行
        If dr Is Nothing Then '如果没有找到上一行,说明本行就是第一行
If e.DataRow("折扣方式_镜架") = "积分折现"  orelse  e.DataRow("折扣方式_镜片") = "积分折现" Then
            e.DataRow("可用积分") = e.DataRow("本次积分") - e.DataRow("积分折现")
else
按计算无积分折现的方式计算
endif
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
If e.DataRow("折扣方式_镜架") = "积分折现"  orelse  e.DataRow("折扣方式_镜片") = "积分折现" Then
            drs(i)("可用积分") = drs(i-1)("可用积分") + drs(i)("本次积分") - drs(i)("积分折现")
else
按计算无积分折现的方式计算
endif
        Next


 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)和Case "折扣方式_镜架","折扣方式_...  发帖心情 Post By:2021/10/27 17:13:00 [只看该作者]

老师你好  还是没有能够成功达到预期   麻烦老师指导下   谢谢!

现在我从新架构了表
预期实现如下:
收款=消费金额-(积分折现+优惠金额)
1、当消费金额输入数字后,在进行会员折扣的选择,如果选择vip666,如果是第一次使用vip666,就将优惠金额写成1000.如果不是第一次,那就将优惠金额写成100。如果选择第一次积分折扣,本次可用积分=本次积分,可用积分为零,如果第二次选择积分折扣,可用积分等于上行本次积分之和,积分兑换就等于可用积分,全部进行兑换,然后计算积分折现=积分/100.
2、当收款为零时,本次积分为零。也就是说本次积分的换算=收款*10
3、第一行数据的可用积分为0,本次积分参照第2来计算。
4、第二行数据的可用积分等于第一行数据的本次积分,第二行数据本次积分参照第2来计算
5、第三行数据的可用积分等于第二行数据的可用积分+第三行数据的本次积分
6、假设第四行消费金额输入数字后,进行会员折扣的选择,如果选择积分折扣,就自动将第三行的可用积分列值进行全部兑换积分,积分折现换算=积分/100.本次金额大于零时,计算本次积分。
7、第五行数据的可用积分等于第四行数据的本次积分,因为第四行已经进行了所有积分兑换,所以第五行数据可用积分等于第四行的本次积分
【每次积分折扣都是将以往所有的积分全部折现,然后清除本次数据行可用积分,本次数据行的积分显示在本次积分中,并计算为下一行数据的可用积分。】
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:huiyuan.table




 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 9:49:00 [只看该作者]

正确的结果是怎么样的?手工填写截图看看

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)正确的结果是怎么样的?手工填写截图...  发帖心情 Post By:2021/10/28 12:03:00 [只看该作者]

正确数据应该如图:【麻烦老师看看  谢谢!】

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20211028114648.png
图片点击可在新窗口打开查看
第一条数据  可用积分开始为0  根据消费金额得到本次积分
第二条数据  可用积分等于第一条本次积分  因为第一次选择vip666 所以优惠金额等于1000    本次积分等于收款计算
第三条数据  选择积分折扣   可用积分等于第一条 本次积分  +第二条本次积分  =6000  然后直接折扣所有可用积分   扣减后 按照收款计算第三条本次积分
第四条数据   选择会员折扣  无优惠   可用积分 等于第三条本次积分
第五条数据 可用积分等于第四条的可用积分+本次积分 第二次选择vip666  优惠金额等于100【目前这个没有实现】不兑换积分  直接收款 计算本次积分
第六条数据 可用积分等于第五条可用积分+第五条本次积分  第三次选择vip666 优惠金额等于100 然后按收款计算本次积分
第七条数据  选择积分折扣  将本次可用积分全部兑换  然后计算本次积分
第八条数据  可用积分=第七条数据的本次积分


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 14:19:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:huiyuan.zip


 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)[upload=zip,huiyuan.zip]viewFile.a...  发帖心情 Post By:2021/10/28 15:11:00 [只看该作者]

谢谢老师的耐心指导  当前已经可以达到预期目标

但是在会员折扣选择积分折扣的时候  出现一个问题  第一次选择只有可用积分计算了
非要换成其它折扣方式 然后再选择积分折扣的时候  才计算积分兑换值    有没有办法解决呢?

图片点击可在新窗口打开查看此主题相关图片如下:gif 2021-10-28 15-06-23.gif
图片点击可在新窗口打开查看


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 15:22:00 [只看该作者]

我花了2天时间才大概理解了一下您的逻辑,现在一说我又迷糊了。不用噼里啪啦搞一大推录入,看不懂的。请仔细说明哪一行录入什么数据计算有什么问题。正确的结果应该是怎么样的。

自己的业务自己最清楚,尽量先自己琢磨一下代码,尝试改,并不是别人改的功能也只能等着别人来改...

 回到顶部
总数 18 1 2 下一页