固定资产数据分析技术支持部整理2005年2月提纲卡片处理及数据结构分析计提折旧分析期末处理报表分析卡片处理及数据结构分析卡片新增卡片静态信息,不做变动,不再改变卡片新增新增卡片变动情况(t_faalter)新增卡片基本信息(t_facard)新增自定义项目(t_facarditem)新增设备信息(t_fadevice)新增原值原币信息(t_faorgfor)新增部门分配(t_fadept)新增余额(t_fabalance)新增T_fabalcard新增T_fabaldept新增费用分配(t_faexpense)新增T_fabalexpense动态信息,每期都不同,因此每期都有一条记录数据表基础资料表:T_FAAlterMode,T_FAGroup,T_FAStatus,T_FALocationT_FAEconomyUse,T_FACardItemDefine,T_FAGroupItem,T_FADeprMethodT_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卡片新增基础资料表t_faaltermode(变动方式类别表),t_fastatus(使用状态类别表),t_FADeprMethod(折旧方法定义表),t_fagroup(卡片类别表),t_falocation(存放地点表)t_fagroup(卡片类别表),t_falocation(存放地点表变动基本表T_FAAlter卡片基本信息表T_FACard原值原币表T_FAOrgFor固定资产部门分摊表T_FADept折旧费用分摊表T_FAExpenses自定义卡片项目表T_FACardItem附属设备表T_FADevice变动相关表保留静态信息,只在变动期间保留一次余额表t_FABalance卡片每期状况表t_FABalCard附属设备每期状况表t_FABalDevice原值原币每期状况表t_FABalOrgFor部门每期分配情况表t_FABalDept折旧费用每期分配情况表t_FABalExpense卡片自定义项目每期状况表t_FABalCardItem余额表和余额相关表动态信息,每期保留一条,直到卡片清理T_FAAlterT_FABalanceT_FACardt_facarditemt_fadevicet_faorgfort_fadeptt_faexpensefaalteridT_fabalcardT_fabaldeptT_fabalexpenseFbaIdfassetid余额表和余额相关表新增卡片变动情况(t_faalter)新增卡片基本信息(t_facard)新增自定义项目(t_facarditem)新增设备信息(t_fadevice)新增原值原币信息(t_faorgfor)新增部门分配(t_fadept)修改余额(t_fabalance)新增T_fabalcard新增T_fabaldept新增费用分配(t_faexpense)新增T_fabalexpense卡片变动(清理)T_faclear部门,费用科目,折旧方法的变动与新增卡片的保存方式一样变动与新增基本相似唯一差异,写入t_fabalance信息不同变动T_fabalanceT_fabalcard清理,可以看作是原值和累计折旧减少的变动清理差异,写入t_fabalance,t_fabalcard,t_faclear信息不同关系累计折旧+净值-累积折旧调整=0而净值=本期折旧案例:清理不正确,导致下期对账时,期初折旧与总账不符此问题是由于在上期做清理之前没有先记提折旧,所以卡片做清理时,清理的折旧数据错误导致。判断原则:当月清理的卡片,必须保证期初折旧+本期折旧+调增-调减=0,否则下期对账一定不平(调减也就是清理的折旧)执行下面SQL找出不正确的清理卡片(aa不为0,则此卡片清理不正确)selectfasetid,(sum(FAccumDeprP)+sum(fdepr)+sum(faccumdeprinc)-sum(faccumdeprdec))asaafromt_fabalancewherefperiod=’期间’andfyear=’年度’andfassetidin(selectfassetidfromt_faclearwherefperiod=’期间’andfyear=’年度’)groupbyfassetid处理方法:如果更改数据库,虽能解决此问题,但是已生成的相对应的总账凭证却是错的。所以彻底的解决办法是:反结到第上期,将错误的清理卡片删除掉,然后重新记提折旧之后再清理.这样结到下期之后将不会再发生这种情况.或则,直接在总账当期做凭证调整可以运行以下SQL进行数据调整:请运行以下SQLupdateaseta.fdeptid=x.fitemidfromt_FAbalexpensea,t_FABalDeptxwherea.fbalid=x.fbalidanda.fbalidin(selectfbalidfrom(selecta.fitemid,a.fbalid,b.fdeptidfromt_FABalDeptaleftjoint_FAbalexpensebona.fbalid=b.fbalidanda.fitemid=b.fdeptid)cwherefdeptidisnull)updateaseta.fdeptid=x.fitemidfromt_FAexpensea,t_FADeptxwherea.falterid=x.falteridanda.falteridin(selectfalteridfrom(selecta.fitemid,a.falterid,b.fdeptidfromt_FADeptaleftjoint_FAexpensebona.falterid=b.falteridanda.fitemid=b.fdeptid)cwherefdeptidisnull)因为t_faexpense及t_fabalexpense表中的部门虽然丢失了,但是与之相对应的t_fadept表及t_fabaldept表中的部门数据却没有丢失,所以可以将之替换到与之相对应的表内。案例计提折旧分析计提折旧分析计提折旧分摊本期折旧到部门与折旧费分配表调用折旧子函数算出折旧额率调用折旧子函数算出折旧额生成计提折旧凭证取得本期要折旧卡片的信息记录集合清除本期部门与折旧费用分配表(0)第一阶段第二阶段第三阶段计提折旧的特点1.计提折旧是采用公式计算折旧额和折旧率,0,1,2,3,4,5,6折旧方法为系统予设,0为没有公式,不提折旧,1,2,3,4,5折旧时全用卡片入账时的信息来折旧,6变动时采用的方法,以变动后的值来折旧.同时系统允许自定义折旧公式(自定义折旧公式和自定义折旧率法),自定义折旧率法折旧时用入账时的值为基础来体折旧,自定义方法用自定义的计算项目值提折旧计提折旧的特点取得本期要折旧卡片的信息记录集合z.FassetNumber,z.FassetName,z.FDeprAcctId,z.Forgval,z.FResidueval,z.FDeprMethodid,z.Flifeperiods,z.FDeprPeriods,z.Fbuildvoucher,z.FLocationName,z.FFormula,z.FIsWorkLoad,z.FDeprOption,z.FUserRate,z.FGroupName,i.FInitDate,i.FBeginUseDate,i.FOrgValS,i.FAccumDeprS,i.FResidueValS,i.FDecPreReadS,i.FLifePeriodsS,i.FPeriodsUsedS,q.FaccumDeprA,q.FperiodsUsedAfromJleftouterjoinIoni.Fassetid=j.fassetidleftouterjoinQonq.Fassetid=j.Fassetidandq.fyear=j.Falteryearandq.fperiod=j.falterperiodandq.FCleared=j.FAlterClearedleftouterjoinZonz.Fassetid=j.fassetid折旧信息(Selecta.FassetId,a.FBalId,a.fworkload,a.fdeprshould,a.fader,a.fdate,a.FOrgvalP,a.FAccumDeprp,FAccumDeprInc,FAccumDeprDec,a.FDecPreP,a.FDeprShouldLP,a.FDeprRemain,d.ForgvalForgvalA,d.FResiduevalFResiduevalA,d.FAMiuValueReadFDecPreReadA,d.FlifePeriodsFlifePeriodsA,c.FyearFalterYear,c.FperiodFalterPeriod,c.FClearedFAlterClearedFromT_FaBalancea,T_FaBalCardb,T_Faalterc,T_FaCarddWherec.FAlterNum=(Selectmax(FAlterNum)fromt_FAAlterWherefassetid=c.fassetid)anda.Fyear=2001anda.FPeriod=1Anda.FOrgvalp0Anda.FBalId=b.FBalIdAnda.FAssetId=c.Fassetidanda.Fdate=c.Fdateandc.Falterid=d.FalteridAnda.FCleared=c.FClearedAnda.FHasDepr=1)J(Selectb.Fassetid,b.FdateFInitDate,a.FBeginUseDate,a.FOrgValFOrgValS,a.FAccumDeprFAccumDeprS,a.FAMiuValueReadFDecPreReadS,a.FResiduevalFResidueValS,a.FLifePeriodsFLifePeriodsS,a.FPeriodsUsedFPeriodsUsedSfromt_facarda,t_faalterbwherea.Falterid=b.falteridandb.fnew=1)I(SelectFassetid,fyear,fperiod,FCleared,Faccumdeprp+faccumdeprinc-faccumdeprdec+FdeprFaccumDeprA,FdeprperiodsFperiodsUsedAfromt_FAbalance)Q(Selecta.FassetId,b.FassetNumber,b.FModel,b.FassetName,b.FDeprAcctId,b.Forgval,b.FResidueval,b.FDeprMethodid,a.FDeprPeriods,b.Flifeperiods,b.Fbuildvoucher,l.FnameFLocationName,c.FFormula,c.FIsWorkLoad,c.FDeprOption,c.FUserRate,e.FnameFGroupNameFromT_FaBalancea,T_FaBalCardb,T_FaDeprMethodc,T_FaStatusd,T_FaGroupE,T_FalocationlWherea.Fyear=2001Anda.Fperi