Foxtable(狐表)用户栏目专家坐堂 → [原创]请教滞纳金计算代码


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

主题:[原创]请教滞纳金计算代码

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/11/16 19:23:00 [显示全部帖子]

这个超难,C版的不知道是否正确? 因理解不同会有不同结果的,呵呵~ 

 

 
图片点击可在新窗口打开查看此主题相关图片如下:未命名-.jpg
图片点击可在新窗口打开查看

 

楼主:上面C版的结果对吗? 您给几个正确的各种情况下结果的贴图来看看。。。。(多些行数,三行单调了些)


[此贴子已经被作者于2010-11-16 19:25:33编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/11/17 0:35:00 [显示全部帖子]

楼主在命令窗口测试一下这段代码看看结果是你要的么:


Dim dr As DataRow
dr = DataTables("宗地合同信息").Find("宗地编号='" & Tables("宗地交款信息").Current("宗地编号") & "' and 合同号 = '" &  Tables("宗地交款信息").Current("合同号") & "'")
Dim t1,t2,t3,t4 As Date
t1 = dr("缴款日期1")
t2 = dr("缴款日期2")
t3 = dr("缴款日期3")
t4 = dr("缴款日期4")

Dim z,z1,z2,z3,z4 As Double
z1 = dr("缴款金额1")
z2 = dr("缴款金额2")
z3 = dr("缴款金额3")
z4 = dr("缴款金额4")
Dim td1,td2,td3,td4 As TimeSpan
For i As Integer = 0 To Tables("宗地交款信息").count - 1
    Tables("宗地交款信息").rows(i)("应交滞纳金") = 0
   
    Dim tj As Date = Tables("宗地交款信息").rows(i)("缴款日期")
    Dim Sum,Sum2,Sumd1 As Double
   
    If Tables("宗地交款信息").rows(i)("缴款金额") = 0
        Tables("宗地交款信息").rows(i)("应交滞纳金") = 0
    Else
       
        If tj <= t1
            Tables("宗地交款信息").rows(i)("应交滞纳金") = 0
        Else
            Sum = DataTables("宗地交款信息").Compute("Sum(缴款金额)", "缴款日期 <= '" & tj & "'")
            Sum2 = DataTables("宗地交款信息").Compute("Sum(缴款金额)", "缴款日期 < '" & tj & "'")
            If Sum <= z1
                Sumd1 = z1 - Sum2
                td1 = tj - t1
                Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td1.days
            Elseif Sum > z1 AndAlso Sum <= z1+z2
                If z1 - Sum2 > 0
                    Sumd1 = z1 - Sum2
                    td1 = tj - t1
                    td2 = tj - t2
                    If td2.days > 0
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td1.days + (Sum-z1) * 0.001 * td2.days
                    Else
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td1.days
                    End If
                Else
                    If z1+z2 >= Sum
                        Sumd1 = Sum - Sum2
                        td1 = tj - t2
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td1.days
                    End If
                End If
                '-----------------------------
            Elseif Sum > z1+z2  AndAlso Sum <= z1+z2+z3  '当累计缴款金额 > 约定金额1+2时
                If z1+z2 - Sum2 > 0   '约定金额1+2大于本次缴款之前的累计时
                    Sumd1 = z1+z2 - Sum2
                    td1 = tj - t2
                    td2 = tj - t3
                    If td2.days > 0
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = sumd1 * 0.001 * td1.days + (Sum-z1-z2)*0.001*td2.days
                    Else
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = sumd1 * 0.001 * td1.days
                    End If
                Else
                    If z1+z2+z3 >= Sum
                        Sumd1 = Sum - Sum2
                        td3 = tj - t3
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td3.days
                    End If
                End If
            Elseif Sum > z1+z2+z3  AndAlso Sum <= z1+z2+z3+z4
                If z1+z2+z3 - Sum2 > 0
                    Sumd1 = z1+z2+z3 - Sum2
                    td1 = tj - t3
                    td2 = tj - t4
                    If td2.days > 0
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = sumd1 * 0.001 * td1.days + (Sum-z1-z2-z3)*0.001*td2.days
                    Else
                        Tables("宗地交款信息").rows(i)("应交滞纳金") = sumd1 * 0.001 * td1.days
                    End If
                Else
                    If z1+z2+z3+z4 >= Sum
                        Sumd1 = Sum - Sum2
                        If Sumd1 > 0  '最后多缴款退回时会出现负数的滞纳金,所以加此判断···
                            td3 = tj - t4
                            If td3.days > 0
                                Tables("宗地交款信息").rows(i)("应交滞纳金") = Sumd1 * 0.001 * td3.days
                            Else
                                Tables("宗地交款信息").rows(i)("应交滞纳金") = 0
                            End If
                        End If
                    End If
                    '-------------------------------------------
                End If
            Elseif Sum > z1+z2+z3+z4
                messagebox.show("谢谢,多交了" & Sum - (z1+z2+z3+z4) & "元", "** ^_^ **")
            End If
        End If
    End If
Next


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/11/18 17:44:00 [显示全部帖子]

下图中的结果对否? 代码可是够写了···

  


图片点击可在新窗口打开查看此主题相关图片如下:未命名.jpg
图片点击可在新窗口打开查看

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/11/18 19:08:00 [显示全部帖子]

以下是引用czy在2010-11-18 18:17:00的发言:
呵呵,剃头挑子一头热。

是的,挺难的,楼主无影无踪了···

 

我13楼手工计算的结果还合理吗? 其中个位的数字代表天数: 即  剩余的金额×天数×滞纳金比率

[此贴子已经被作者于2010-11-18 19:10:47编辑过]

 回到顶部