Foxtable(狐表)用户栏目专家坐堂 → 固定资产折旧表达式请教


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

主题:固定资产折旧表达式请教

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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
固定资产折旧表达式请教  发帖心情 Post By:2015/7/19 11:59:00 [只看该作者]

入帐日期、设备原值、使用年限、残值率:手工按实际情况输入;
折旧开始:资产入帐的下个月第一天可以计算;
折旧结束:资产达到使用年限后的那天;
使用月限(资产有效使用月数) = 使用年限 * 12
预计净残值(资产折旧结束后剩余的价值,即报废价值) = 设备原值 * 残值率;
月折旧额(减掉净残值后,平均到每个使用月的折旧费) = (设备原值 * ( 1 - 残值率 )) / 使用月限
使用月数:资产从折旧开始,到当前月份,已使用的月份数

 

现在需求:本月折旧、本年折旧、累计折旧
问题出在:
月折旧额是按小数2位取值的,造成:月折旧额 * 使用月限 <> 设备原值 * ( 1 - 残值率 )      '即:设备原值 - 预计净残值
为了使用帐面平,最后一个月的折旧 = (设备原值 * ( 1 - 残值率 )) - (月折旧额 * (使用月限 - 1))

 

判断最否超出使用期,判断是否是最后一个月,又要判断本年折旧月是否包含最后一个月...
对我来说难度太大了,请求帮助,非常感谢。
若需要,可以增加一些列。


图片点击可在新窗口打开查看此主题相关图片如下:折旧.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:固定资产.table


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/19 12:19:00 [只看该作者]

 呃,有什么问题,你写的代码,就已经判断了啊。

 

 然后根据的你个规则运算出结果就行啊。


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


加好友 发短信
等级:二尾狐 帖子:526 积分:5083 威望:0 精华:0 注册:2015/4/15 15:25:00
  发帖心情 Post By:2015/7/19 21:47:00 [只看该作者]

不会写代码,用了好多表达式列。

现在的问题是:资料录入完整后,“本年折旧”列不能自动更新或者数据错误,需要重置“折旧开始”列才行,代码需要如果修改?

 

 

不知道代码能否再简化下,看到有个折旧函数,但不知道怎么用。
SLN:指定在一段时间内资产的直线折旧
语法
SLN(cost, salvage, life)

这个可以不处理,因为数据太乱了,我自己看得都头晕了。

 

Select Case e.DataCol.name
    Case "折旧开始","折旧结束","月折旧额"
        If e.DataRow.IsNull("折旧开始") OrElse e.DataRow.IsNull("折旧结束") OrElse e.DataRow.IsNull("月折旧额") Then
            e.DataRow("本年折旧") = Nothing
        Else
            Dim da3 As Date =  e.DataRow("折旧开始")
            Dim da4 As Date = Date.Today()
            Dim da5 As Date = e.DataRow("折旧结束")
            If da3.year < da4.year
                If da4.year < da5.year
                    e.DataRow("本年折旧") = e.DataRow("月折旧额") * da4.month
                Else If da4.year = da5.year
                    If da4.month > da5.month
                        e.DataRow("本年折旧") = e.DataRow("月折旧额") * da5.month
                    Else If da4.month <= da5.month
                        e.DataRow("本年折旧") = e.DataRow("月折旧额") * da4.month
                    End If
                Else If da4.year > da5.year
                    e.DataRow("本年折旧") = 0
                End If
            Else If da3.year > da4.year
                e.DataRow("本年折旧") = 0
            Else If da3.year = da4.year
                e.DataRow("本年折旧") =  e.DataRow("月折旧额") * ((da4.month - da3.month) + 1 )
            End If
        End If
End Select

 

 


此主题相关图片如下:12121.jpg
按此在新窗口浏览图片


 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:固定资产2.table

[此贴子已经被作者于2015/7/19 21:49:54编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/7/20 9:41:00 [只看该作者]

 重新计算,可参考重置列

 

http://www.foxtable.com/help/topics/1468.htm

 


 回到顶部