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


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

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

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/27 9:42:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望: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


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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 9:49:00 [显示全部帖子]

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

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 14:19:00 [显示全部帖子]

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


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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 15:22:00 [显示全部帖子]

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

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

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 15:44:00 [显示全部帖子]

截图静态图说明,不要使用动图,看着累,等半天看到需要的数据,刷一下又没了,还得重头看

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 17:18:00 [显示全部帖子]

因为先计算的兑换积分等数据,这时可用积分还没有值。在计算可用积分后再计算一次兑换积分、折现和收款即可,自己思考一下在什么地方加代码

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/28 21:21:00 [显示全部帖子]

    Case "会员折扣"
        
        If e.DataRow("会员折扣") = "vip666" Then
            If e.DataTable.Find("会员折扣='vip666' and _SortKey < " & e.DataRow("_SortKey") ) Is Nothing Then
                e.DataRow("优惠金额")=1000
            Else
                e.DataRow("优惠金额")=100
            End If
            Dim je As Integer = e.DataRow("消费金额")- e.DataRow("优惠金额")
            If je < 0 Then je = 0
            e.DataRow("收款")= je
        Else If e.DataRow("会员折扣") = "会员折扣" Then
            e.DataRow("优惠金额")=0
            e.DataRow("收款")= e.DataRow("消费金额")
        End If
        
        
        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("会员折扣") = "积分折扣"  Then
                e.DataRow("可用积分") = 0 'e.DataRow("本次积分") - e.DataRow("兑换积分")
            Else
                e.DataRow("可用积分") = e.DataRow("本次积分")
            End If
            dr = e.DataRow
        End If
        drs = e.DataTable.Select("[_SortKey] >= " & dr("_SortKey"), "[_SortKey]")
        For i As Integer = 1 To drs.Count - 1 '重算余下行的余额
            If drs(i)("会员折扣") = "积分折扣"  Then
                drs(i)("可用积分") = drs(i-1)("可用积分") + drs(i-1)("本次积分") - drs(i)("兑换积分")
                drs(i)("优惠金额")=0
                'If e.DataRow("可用积分") > 0 Then
                drs(i)("积分折现")=drs(i)("可用积分")/100
                drs(i)("兑换积分")=drs(i)("可用积分")
                drs(i)("收款")= drs(i)("消费金额")- drs(i)("积分折现")
            Else
                drs(i)("可用积分") = drs(i-1)("可用积分") + drs(i-1)("本次积分")
            End If
        Next

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


加好友 发短信
等级:超级版主 帖子:110572 积分:562750 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/31 20:37:00 [显示全部帖子]

和前面一样,用数据和实例一步步截图说明计算步骤

 回到顶部