以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [原创]请教滞纳金计算代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=8584)

--  作者:KK2010
--  发布时间:2010/11/14 15:25:00
--  [原创]请教滞纳金计算代码

1、由实际缴款金额与约定缴款金额比较,若缴款金额不足约定金额,且在约定缴款日期之后一天,仍未达到约定缴款金额时,则会产生滞纳金。缴款一次计算一次滞纳金,且能统计出系统当前日期下的滞纳金。

 

2、滞纳金计算这样简化合同到期的次日到下一次交款的前一日为一段,计算第一段应缴的滞纳金,从前一次交款的当日至后一次缴款的前一日计算第二段应缴的滞纳金,以此类推,即缴款当日发生的滞纳金在本次缴款时不予计算,而计入下一个时段内。

 

3、宗地交款信息表中滞纳金计算是依据宗地合同信息表中内容计算的。

 

具体看附件程序中宗地交款信息表事件代码,现时程序中的代码计算滞纳金有误,请教高手编写代码。谢谢!
 

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

 

登录用户名:admin

密码:888


 

[此贴子已经被作者于2010-11-15 20:14:19编辑过]

--  作者:KK2010
--  发布时间:2010/11/15 8:27:00
--  
有人写过滞纳金计算代码吗?
--  作者:czy
--  发布时间:2010/11/15 9:48:00
--  
来个.Table格式的项目看看。
--  作者:KK2010
--  发布时间:2010/11/15 20:16:00
--  

这个是.table格式,请CZY版主看看代码,谢谢!

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

[此贴子已经被作者于2010-11-15 20:16:31编辑过]

--  作者:czy
--  发布时间:2010/11/16 0:43:00
--  

好复杂,我没这方面的实战经验,有时间好好揣摸一下。


--  作者:czy
--  发布时间:2010/11/16 16:54:00
--  

你的问题的确不太好理解,为便于自己理解我在第一个表增加了两列。

做的不一定对,不知道对你有没有参考价值。

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目12.table


--  作者:KK2010
--  发布时间:2010/11/16 17:11:00
--  
先谢谢C版!
--  作者:mr725
--  发布时间:2010/11/16 19:23:00
--  

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

 

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

 

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


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

--  作者:czy
--  发布时间:2010/11/16 19:35:00
--  
以下是引用mr725在2010-11-16 19:23:00的发言:

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

 

楼主:您给几个正确的各种情况下结果的贴图来看看。。。。

 

是的,外行人单凭一楼数语理解起来更难。

我只是凭我的领会做了下,对错不敢说。

 


--  作者:mr725
--  发布时间: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