(注:由于固定资产系统涉及的表格较多,为方便记忆和理解,这里从程序员设计该系统的思路,逐步禅析数据结构)。
固定资产是什么?——程序员的眼里,是一件物品。
固定资产系统干什么?——记录本企业有多少固定资产,记录这些资产的添置、变动、报废等业务,计提折旧并把这些折旧费用合理地分配到相应的责任部门。
固定资产系统让我们设计,我们该怎么入手?————
首先,让我们分析一下固定资产本身有什么内容:名称,原值,预计净残值,使用寿命,经济用途。一个表格搞定。
经济用途使用专门一个表来存储,这里只存储该经济用途的ID即可。这就产生了基础资料表。其他如存放地点、固定资产类别、变动方式、固定资产状态等等亦因此而来。
原值可能由多种币别组成,当前表无法记录。故使用一个专门的表来存储。产生了原值原币表。其他如部门分摊表、折旧费用分配表、附属设备表等等亦因此而来。他们统称变动表相关表。
如果固定资产变动怎么办?增加一个变动ID来记录。这样,在同一个表格里,同一个固定资产就有多条记录,但是其变动ID不同,各条记录的信息也不同。
当前的表只记录了固定资产的信息,现在,我们要提取折旧。如果只提一次,在当前表加上一个字段记录和计算折旧额即可。可是,每期的折旧饿都不一样,怎么办?故此,专门增加一个表来存储各期的折旧信息,他就是余额表。他所要求记录的内容,当然必须有固定资产的ID,年度,期间,折旧额等等。
为了计提折旧时取数方便,专门增加了一些表格来存储各个期间卡片的当期信息,他们就是余额表相关表。这些表存储的是当前该固定资产的最新状态,提取折旧时可直接从这些表取得折旧要素。
表的分类
固定资产的表主要有四大类:基础资料表、卡片及变动相关表、余额与折旧相关表、其他表。
基础资料表:变动方式表(T_FAAlterMode)、固定资产类别表(T_FAGroup)、使用状态表(T_FAStatus)、存放地点表(T_FALocation)、经济用途表(T_FAEconomyUse)、卡片项目定义表(T_FACardItemDefine)、类别项目对照表(T_FAGroupItem)、折旧方法定义表(T_FADeprMethod)、每期自定义折旧率表(T_FAUserDeprRate)等。
卡片变动相关表:变动基本表(T_FAAlter)、卡片基本信息表(T_FACard)、附属设备表(T_FADevice)、原值原币表(T_FAOrgFor)、部门分配表(T_FADept)、折旧费用分配表(T_FAExpenses)、卡片自定义项目表(T_FACardItem)等 。
余额与计提折旧相关表:余额表(T_FABalance)、卡片每期状况表(T_FAbalCard)、附属设备每期状况表(T_FABalDevice)、原值原币每期状况表(T_FABalOrgFor)、部门分配每期状况表(T_FABalDept)、折旧费用分配每期状况表(T_FABalExpenses)、卡片自定义项目每期状况表(T_FABalCardItem)等 。
其他表:报废清理表(T_FAClear)、凭证对照表(T_FAVoucher)。
基础资料表
基础资料表的表结构请参考后面的固定资产系统V806 ER图(实体联系图)。这里只讲解一下各表内部记录的存放方法以及他们与卡片基本信息表的关系。
基础资料表只和卡片基本信息表(T_FACard)和卡片状况表(T_FABalCardItem)相关联。下面只挑几个有代表性的表来具体说明,其它表亦类似,这里不再赘述。
1)固定资产类别表T_FAGroup:
下图是固定资产类别表的记录:
表中,建筑物(FID=1001)、交通工具(FID=1004)为一级类别,办公楼(FID=1002)、车间(FID=1003)为建筑物的下级类别,故此,他们的FparentID均为1001(建筑物);因为他们为第二级的类别,故此Flevel=2;因为他们是明细类别,故此Fdetail=1。
2)卡片项目定义表T_FACardItemDefine:
记录了系统中所有的项目,存储了各个项目的名称、显示名称、字段类型等等。自定义项目FID>1000,FBasic=0表示为自定义项目,FBasic=1表示该项目为系统预定义。
3)类别项目对照表T_FAGroupItem:
该表定义了自定义项目和各个类别的关系。该表定义了某个类别所具有的自定义项目;如果某个类别没有自定义项目,则此表没有有关该类别的记录;某类别有多少个自定义项目,该表就有多少个有关该类别的记录。如下图,内码为1002、1003、1006的类别均具有1个自定义项目;而内码为1005的类别有两个自定义项目1002、1004;而类别1002和1003拥有同样的自定义项目1001。
卡片及变动相关表:
1)变动基本表和变动相关表的关系:
卡片相关表的核心是变动基本表(T_FAAlter)。该表记录了固定资产的内码,变动的期间,摘要,制单人等信息。因为新够入的固定资产也可以看作一种变动方式为新增的业务来处理,故此,该表可以记录从固定资产够入到变动、报废等业务处理的所有情况。该表中的Fnew字段表明该记录是否为新增卡片形成,Fnew=1表示该固定资产入账时产生,即原始记录。在同一个会计期间,同一个固定资产在该表中只能有一个记录。
下图为某账套的固定资产变动基本表的记录:
图中,内码为1的固定资产有两条记录。其中,期间为2000年0期的记录是初始化录入该固定资产时产生的。在结束初始化后,系统进入2000年第1期,然后做了一次变动,故此又产生了第二条记录,但该记录期间和变动FAlterID 与第1条都不同。内码为2的固定资产在2000年第1期录入,在第2期进行了一次变动,可以看出,两条记录的期间、变动FAlterID都不同。由此,我们可以总结出固定资产变动基本表T_FAAlter记录的规则:
卡片每变动一次(包括新增),即产生一条变动基本记录,固定资产做每一次变动,变动ID FalterID依次加1,每期每个固定资产只能变动一次。
每当固定资产做一次变动,卡片变动相关表也会产生一条记录。它们通过变动ID即FalterID与变动基本表联系。也就是说,每一次变动,各相关表都会产生一条记录已记录变动时的各个要素,如果固定资产的某个要素不发生变动,则从上一次变动记录中复制而来。
如下图是某账套的原值原币表:
图中,FAlterID=1,3的记录是某固定资产的记录,FAlterID=1的记录是新增的时候生成的;FAlterID=3的记录是该固定资产原值做了变动,有原来的800000变动为现在的600000。当某个固定资产原值由多种币别组成时,该表中会形成多条变动号FalterID一样的记录,每条记录反映该币种的原币和本位币的价值。
下图揭示了变动基本表与变动相关表的内在联系。其他变动相关表亦同。
现在总结一下卡片变动基本表和相关表的记录间的内在联系:
当卡片新增或变动时,T_FAAlter变动基本表插入一条新记录;它记录了固定资产变动时的基本要素,如固定资产的内码,期间,变动ID等等。与此同时,卡片变动相关表也会以该记录的变动ID为主键,各自生成一条新的记录,记录各自的固定资产相关信息。
2)卡片基本信息表T_FACard:
该表记录每一次变动时当次变动卡片的基本信息,如固定资产名称、存放地点、入账时间、入账原值、累计折旧、预计净残值、相关科目等等。其中,入账原值=原值原币表该固定资产的各币别金额总和。
3)原值原币表T_FAOrgFor:
该表记录固定资产某次变动时的价值组成,即该固定资产由几种币别组成,每种币别各自金额为多少。有几种币别,就有几条记录。
4)固定资产部门分摊表T_FADept:
该表记录该次变动的固定资产由几个部门使用,每个部门占多少比率。有多少个部门,就生成几个记录。FdetailID记录了存储该部门核算项目信息的记录的内码。此表为生成折旧费用部门分配表的依据。
5)折旧费用分摊表T_FAExpenses:
记录该固定资产所产生的折旧费用分摊到哪几个科目,每个科目所占比例。有几个科目,就有几条记录。FdetailID记录了存储该科目核算项目信息的记录的内码。此表为生成折旧费用项目科目分配表的依据。
6)自定义卡片项目表T_FACardItem:
该表初始时只有一个字段FalterID。当该账套无论任何一个类别的卡片定义了自定义卡片项目时,该表就会以“F+自定义项目的内码”为字段名,动态增加相应的字段,整个系统中有几个自定义项目,就增加几个字段。存储时,对于每个字段,如果该卡片具有该自定义项目,则存入相应的值,否则该字段值为Null。
7)附属设备表T_FADevice:
该表记录了该固定资产所拥有的附属设备,记录了各附属设备的名称规格、数量、金额和存放地点等等。有几个附属设备,就有几条记录。
余额与折旧计提相关表:
1)各表的关系:
余额表及计提折旧相关表的核心是余额表,它主要是用于记录某个固定资产在各个期间的最新状态(当前工作期间)或期末状态(已结账期间),存储各个期间每个固定资产的累计折旧额,反映原值、累计折旧等等要素。它和变动基本表和变动相关表不同,变动基本表只有卡片新增或变动才会产生新的记录;而余额表自卡片新增的期间开始,每一期每个固定资产都会有一条记录。从系统实现的目的来讲,如果和卡片变动基本表及相关表相联合,只使用余额表已经可以实现每个期间折旧的计提、保存和分配工作。但是,考虑到计提折旧和折旧分配时提取折旧要素的方便性,系统增加了卡片状况表、原值原币状况表、部门分摊状况表、折旧费用分摊状况表、附属设备状况表、自定义卡片项目状况表等等。这些余额表相关表都通过一个余额ID即FBalID和余额表相关联,就像卡片基本变动表通过变动ID和卡片变动基本表相关联一样。
那么,余额表以及其相关表记录是怎样生成的呢?
当新增固定资产时,系统除了生成变动基本表及其相关表的记录外,还在余额表及其相关中插入一条新的记录;除了余额ID外,计提折旧相关表几乎与变动相关表雷同,保存的内容完全一样,所不同的是变动相关表只有变动才会产生新记录,而余额相关表每期都有记录。
当固定资产变动时,系统亦同新增时的情况一样,在卡片变动基本表及其相关表、余额表及其相关表都记录一遍。同时,余额表亦使用“累计折旧调增、调减;原值调增、调减;本年原值调增、调减”等字段记录本次变动的变动额。
当系统结账时,余额表及其相关表固定资产记录从上期复制而来。如果该期该固定资产未变动,则除余额表ID不一样外,计提折旧相关表的记录和上一期的记录完全一样;当然,如果该期该固定资产做了变动,余额相关表的记录被更新为当期最新状态。
2)余额表T_FABalance:
余额表是计提折旧的核心,它保存了每个固定资产在每个期间的当期计提折旧额,同时亦记录了固定资产当期、当年原值、累计折旧等变化值。下图是某账套的固定资产余额表:
图中,Fassetid=2的固定资产记录有两条。第1条是新增时产生的记录,因为是第一次新增,所以期初原值ForgValP为0,而本期原值调增为350000,同理,本年原值调增亦为350000;第二条记录是结账到复制生成的,所以该记录的期初原值为上一期的其末原值即ForgValP=350000,由于该资产在第2期做了变动,原值增加了500元,故此,该记录的本期原值调增ForgValInc为500,本年原值调增FYtdOrgValInc为350500(350000+500)。
3)其它计提折旧相关表:
计提折旧相关表通过余额ID和余额表相关联,它们所存储的固定资产信息是当前最新状态。它们的结构除了余额表ID和变动相关表不一样之外,其它和变动相关表完全相同。另外,部门分摊情况表和折旧费用分配情况表增加了一个“分配金额Famount”字段以记录每期分摊额。
其它表
其它表包括报废清理表T_FAClear和凭证对照表T_FAVoucher。固定资产发生报废清理后,系统会自动生成一条变动记录。凭证对照表则为记录变动与相应凭证的对应关系,便于管理。这两个表也是通过变动ID即FalterID和变动基本表关联。
当固定资产清理时,系统会首先做一个变动记录,把该固定资产的原值、累计折旧等清零,并且在该变动记录的“是否已清理Fcleared”字段和该固定资产当期的余额表记录的“是否清理Fcleared”字段置1;然后在报废清理表中增加一条记录。
折旧公式说明
平均年限法(基于原值和预计使用期间)
公式:月折旧额=(入账原值-入账预计净残值)/入账预计使用期间
月折旧率=月折旧额/(入账原值-入账预计净残值)*100%
平均年限法(基于净值和剩余使用期间)
公式:月折旧额=(入账原值-入账累计折旧-入账预计净残值)/入账剩余使用期间
月折旧率=月折旧额/(入账原值-入账累计折旧-入账预计净残值)*100%
年数总和法
年折旧率=剩余年限/(预计使用年限*(预计使用年限+1)/2)
月折旧率=年折旧率/12
双倍余额递减法
年折旧率=2/预计使用年限*100%
月折旧率=年折旧率/12
工作量法
无
动态平均法
公式:月折旧额=(调整后原值-调整后累计折旧-调整后净残值)/调整后剩余使用期间
月折旧率=月折旧额/(调整后原值-调整后累计折旧-调整后净残值)*100%
自定义每期折旧率法
按自定义每期折旧率取。
用户自定义时必须同时定义月折旧率。
最后一期折旧的处理
由于806系统能自由定义折旧公式,有些公式因没有考虑要素变动对折旧额的调整,在提取最后一期折旧时(剩余期间为0),需要增加必要的处理机制,具体如下:
当最后一期折旧额小于或等于前一期折旧金额时,最后一期提完折旧。系统不做提示。
当最后一期折旧额大于前一期折旧金额时,做如下判断:
A)差额小于或等于前一期折旧金额时,直接提完折旧。系统不做提示。
B)差额大于前一期折旧金额时,系统提示:(1)、最后一期提完折旧;(2)、继续以前期折旧额继续计提折旧,直到剩余折旧额小于或等于该金额时完成。(3)、重新设置每期折旧额。此时所有符合条件的固定资产列表显示(包含原值、净值、月折旧额、待折旧额等),让用户自行选择折旧政策,但不影响当期折旧额。当最后一期时,重做A和A)条件检查。
折旧要素说明
第一类:基本类
原值:建立卡片时的原值,是固定资产的最初原值。
累计折旧:建立卡片时已提折旧额。包括本年及以前年度的折旧。
预计净残值:建立卡片时的净残值。
入账前净值:原值-累计折旧。
预计使用期间:建立卡片时的预计使用期间数。
入账前已使用期间:建立卡片时的已使用期间数。
剩余使用期间:预计使用期间-入账前已使用期间数。
工作总量:建立卡片时的预计使用/工作量数。
入账前已使用工作量:建立卡片时的已使用工作量数。
剩余工作量:工作总量-入账前已使用工作量。
月折旧额:
月折旧率:
本月工作量:
第二类:变动影响类
变动后原值:最近一次卡片要素(原值,净残值,累计折旧,期间/工作量等)变动时的原值。
变动后累计折旧:最近一次卡片要素变动时的累计折旧额。
变动后净残值:最近一次卡片要素变动时的净残值。
变动后净值:变动后原值-变动后累计折旧。
变动后预计使用期间:最近一次卡片要素变动时的预计使用期间。
变动后已使用期间:最近一次卡片要素变动时的已使用期间。
变动后剩余使用期间:变动后预计使用期间-变动后已使用期间。
变动后工作总量:最近一次卡片要素变动时的工作总量。
变动后已使用工作量:最近一次卡片要素变动时已使用工作量。
变动后剩余工作量:变动后工作总量-变动后已使用工作量。
原值变动额:从入账到当期累计原值变动金额。
累计折旧变动额:从入账到当期累计变动金额。
预计净残值变动额:从入账到当期累计残值变动金额。
预计使用期间变动:从入账到当期累计累计使用期间变动。
剩余使用期间变动:从入账到当期累计剩余期间变动。
已使用期间变动:从入账到当期累计已使用期间变动。
工作总量变动量:从入账到当期累计工作总量变动。
剩余工作量变动:从入账到当期累计剩余工作量变动。
已使用工作量变动:从入账到当期累计已使用工作量变动。
第三类:函数及卡片其它项目类
卡片上基本项目及自定义项目可作为公式的条件或要素。以及函数列为第三类。函数应能取某年某期数。
重要报表的取数来源
固定资产清单:
固定资产清单的内容来自t_fabalance,t_fabalcard,t_fabaldept,t_fabalexpense,t_faalter等等余额相关表和变动相关。固定资产清单是可以按期间查询的。其中有一个选项,是“多部门使用”的固定资产是否显示,或则如何显示的问题。一个固定资产如果有多个部门使用,那可以只显示其中的一个部门,也可以多个部门都显示出来。
折旧费用明细表、折旧费用汇总表:
两个表的数据来源都是t_fabalance,t_fabalcard,t_fabaldept,t_fabalexpense等等余额相关表,只不过是折旧汇总表只显示汇总数据,而明细表把每个卡片的各自数据都显示出来。一般情况下,不论固定资产数据是否存在数据不一致的情况,但这两个表的数据都是一致的,因为他们的来源和算法一样。
折旧费用分配表:
这个表的数据来自 t_fabalance、t_fabalcard、t_fabaldept、t_fabalexpense等等余额相关表。
固定资产明细账:
固定资产明细账除了折旧凭证的信息外,所有数据来自t_fabalance、t_falter、t_facard等余额和变动相关表。折旧凭证的信息来自凭证表中fobjectname=’fa’ 和fparameter=’depr’的当期折旧凭证
固定资产自动对账:
总账的数据来自余额表和当期的凭证;固定资产的数据全部来自于t_fabalance余额表。