Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
1、由实际缴款金额与约定缴款金额比较,若缴款金额不足约定金额,且在约定缴款日期之后一天,仍未达到约定缴款金额时,则会产生滞纳金。缴款一次计算一次滞纳金,且能统计出系统当前日期下的滞纳金。
2、滞纳金计算这样简化合同到期的次日到下一次交款的前一日为一段,计算第一段应缴的滞纳金,从前一次交款的当日至后一次缴款的前一日计算第二段应缴的滞纳金,以此类推,即缴款当日发生的滞纳金在本次缴款时不予计算,而计入下一个时段内。
3、宗地交款信息表中滞纳金计算是依据宗地合同信息表中内容计算的。
具体看附件程序中宗地交款信息表事件代码,现时程序中的代码计算滞纳金有误,请教高手编写代码。谢谢!
下载信息 [文件大小: 下载次数: ] | |
![]() |
登录用户名:admin
密码:888
好复杂,我没这方面的实战经验,有时间好好揣摸一下。
这个超难,C版的不知道是否正确? 因理解不同会有不同结果的,呵呵~
楼主:上面C版的结果对吗? 您给几个正确的各种情况下结果的贴图来看看。。。。(多些行数,三行单调了些)
这个超难,C版的不知道是否正确? 因理解不同会有不同结果的,呵呵~
楼主:您给几个正确的各种情况下结果的贴图来看看。。。。
是的,外行人单凭一楼数语理解起来更难。
我只是凭我的领会做了下,对错不敢说。
楼主在命令窗口测试一下这段代码看看结果是你要的么:
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