以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  固定资产累计折旧  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=160744)

--  作者:nuoyan89
--  发布时间:2021/2/19 20:31:00
--  固定资产累计折旧

老师,以下我想增加个条件,就是第一年开始折旧时yz= e.DataRow("设备原值") * (1-0.85),从第二年开始用"(e.DataRow("设备原值")-之前每年折旧的累计值)*满足条件的折旧率(满足条件的折旧率如红色字体)例如蓝色字体样的。

例:

   一台设备原值:75600元,第一年折旧时年折旧额= 756000*(1-0.85)=113475元,第二年的年折旧额= (756000-113475)*(1-0.85)= 96453.75元,第三年的年折旧额 = (756000-113475-96453.75)*(1-0.85)= 81985.6875元,第四年的年折旧额= (756000-113475-96453.75-81985.6875)*(1-0.9)= 46408.55625元,以此类推

Dim nx As Integer  = (Date.Today.Year - e.DataRow("投入使用日期").Year)
Dim yz = e.DataRow("设备原值")
For i As Integer = 0 To nx
    If i >= 0 And i < 4 Then
        yz =  yz * (1-0.85)
    ElseIf i >= 4 And i <= 7 Then
        yz = yz * (1-0.9)
    Else
        yz = yz * (1-0.95)
    End If
Next
e.DataRow("年折旧额") = yz


--  作者:有点蓝
--  发布时间:2021/2/20 9:23:00
--  
Dim nx As Integer  = (Date.Today.Year - e.DataRow("投入使用日期").Year)
Dim i As Integer = 1
Dim sum As Double = 0
Dim yz As Double = e.DataRow("设备原值")
Dim k As Double 
Do While i <= nx
    If i < 4 Then
        k =  (yz - sum) * (1.0-0.85)
    ElseIf i >= 4 And i <= 7 Then
        k =  (yz - sum) * (1.0-0.9)
    Else
        k =  (yz - sum) * (1.0-0.95)
    End If
    sum += k
    i += 1
Loop

e.DataRow("年折旧额") = k


--  作者:nuoyan89
--  发布时间:2021/2/20 9:37:00
--  
问题完美解决,非常谢谢!
--  作者:nuoyan89
--  发布时间:2021/2/20 11:07:00
--  

老师,这个第一年的折旧值不能显示。如图1

 


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

--  作者:有点蓝
--  发布时间:2021/2/20 11:15:00
--  
Dim nx As Integer  = (Date.Today.Year - e.DataRow("投入使用日期").Year)
msgbox(nx)显示什么

--  作者:nuoyan89
--  发布时间:2021/2/20 11:43:00
--  

是的,也是相当于第一年


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


--  作者:有点蓝
--  发布时间:2021/2/20 11:48:00
--  
如果0是第一年

Dim i As Integer = 0

--  作者:nuoyan89
--  发布时间:2021/2/20 13:23:00
--  
真笨,咋就没有想到这个呢
--  作者:nuoyan89
--  发布时间:2021/2/21 21:11:00
--  

老师,目前有如图1的问题,请帮忙看看,谢谢!问题描述:原值:756000元,投入使用日期 :2018-06-28  目前年限:2.7个月,目前应该折旧额是:106382.81元,但系统里代码折旧是:79787.11元,原因是是这个代码中的1改成了0(代码:Dim i As Integer = 0),如果不改成0的话,小于1年的又折旧不出来,改成0后会多折1年的,如果要达到目前的折旧额106382.81这个金额又能让小于1年的正常折旧出来应该怎么改呢?谢谢

 

 


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


--  作者:有点蓝
--  发布时间:2021/2/21 21:32:00
--  
0单独处理

Dim nx As Integer  = (Date.Today.Year - e.DataRow("投入使用日期").Year)
if nx = 0 then
e.DataRow("年折旧额") = e.DataRow("设备原值") * (1.0-0.85)
else
Dim i As Integer = 1
Dim sum As Double = 0
Dim yz As Double = e.DataRow("设备原值")
Dim k As Double 
Do While i <= nx
    If i < 4 Then
        k =  (yz - sum) * (1.0-0.85)
    ElseIf i >= 4 And i <= 7 Then
        k =  (yz - sum) * (1.0-0.9)
    Else
        k =  (yz - sum) * (1.0-0.95)
    End If
    sum += k
    i += 1
Loop

e.DataRow("年折旧额") = k
endif