资源描述
1,K/3系统数据处理讲解,金蝶软件有限公司南宁分公司,提纲基础资料的数据表结构凭证的数据表结构基础资料表与凭证表之间关系总账初始化处理过程总账凭证处理过程期末结帐及结转损益处理过程总账案例分析固定资产表结构及表间关系固定资产折旧过程固定资产案例分析,3,第一章基础数据表结构本章重点讲述基础资料常用的8个表:T_currency币别表T_unitgroup计量单位组表T_measureunit计量单位表T_account科目表T_itemclass核算项目类别表T_item核算项目表T_itemdetail核算项目横表T_itemdetailv核算项目纵表,4,5,6,7,1.1币别币别表常用到的字段:FcurrencyID(币别内码),FFixRate(换算率),Fscale(小数位数)等等。FcurrencyID:系统默认帐套记帐本位的FcurrencyID值为1。外币内码从1000起,依次加1.,8,k3内码递增机制自动编码步长表t_identityK/3系统中的基础资料表和大部分单据的内码值都源于自动编码步长表。自动编码步长表结构如下:自动编码步长表Fname-对应的表名Fnext-表内码Fstep-步长值当K/3系统中的基础资料表增加一项时,会从”t_identity”获取内码,即Fnext的值,该值是由本表的最大内码值加1获得。如:t_accountUpdatat_identitysetfnext=(selectmax(faccountid)+1fromt_account)wherefname=t_account,9,1.2计量单位计量单位信息涉及到的表有t_unitgroup(计量单位组表)和t_measureunit(计量单位表)。t_unitgroup存储计量单位组信息,t_measureunit存储计量单位详细信息,计量单位表也含有计量单位组ID信息,两表通过计量单位组ID关联。,10,11,计量单位组表(t_unitgroup),1.2.2计量单位表(t_measureunit),12,1.3科目表(t_account),13,14,注意:这里(FPatentid)父级ID与(FRootid)根ID表示的意义是不相同的。科目的FPatentid取它上级科目的内码,当科目本身为一级科目时,FPatentid取值为0;科目的FRootid都取对应的一级科目内码,当科目本身为一级时,取值为它自身的内码。注意此处不是上一级的科目代码,15,数量金额核算科目,16,17,带有核算项目的科目,18,19,20,1.4核算项目核算项目信息主要涉及到t_itemclass(核算项目类别表)、t_item(核算项目表)、t_itemdetail(核算项目横表)、t_itemdetailv(核算项目纵表)这四个表。这四个表间的关联非常紧密。下面我们分别对它们进行详细说明:,21,核算项目类别表,22,核算项目明细表,23,1.4.3核算项目详情横表(t_itemdetail),24,1.4.4核算项目详情纵表(t_itemdetailv),25,t_itemdetailv通过Fdetailid与t_itemDetail表关联通过Fitemid与t_item.Fitemid关联,通过Fitemclassid与t_item.Fitemclassid关联当t_itemdetailV表中的记录不正确时,可以通过以下存储过程来重建:execsp_cleanitemdetailv,26,第二章凭证会计凭证是整个会计核算系统的主要数据来源,是整个核算系统的基础,会计凭证的正确性将直接影响到整个会计信息系统的真实性、可靠性,因此系统必须能保证会计凭证录入数据的正确性。这一章我们将介绍凭证信息涉及到的最常用的五个表:t_settle结算方式表:存储结算方式信息t_vouchergroup凭证字表:存储凭证字信息t_voucher凭证分录头表:存储下图中蓝线框以外的凭证信息t_voucherentry凭证分录体表:存储下图中蓝线框以内的分录信息t_VoucherBlankOut作废凭证表:记录作废的凭证信息,27,28,2.1结算方式表(t_settle)t_settle表是保存结算方式信息,结构非常简单。这里不详细介绍了。,29,2.2凭证字表(t_vouchergroup)t_vouchergroup主要存储凭证字信息,一般被t_voucher(凭证表)引用。,30,2.3凭证分录头表(t_voucher)t_voucher表主要存储凭证的会计年度、会计期间、凭证序号、凭证日期、业务日期、摘要、附件张数、借贷方金额合计、是否过账、审核、分录数、机制凭证等信息,31,2.4凭证分录体表(t_voucherentry)t_voucherentry表主要存储凭证借贷方科目内码、金额、核算项目、分录号、币别、汇率、余额方向、摘要、数量、单价等信息。,32,FDC:表示科目的余额方向,与t_account表中的FDC意义是不一样的。这里0表示余额在贷方,1表示余额在借方;t_account表中的FDC=1表借方科目,FDC=-1表贷方科目。,33,第三章余额K/3大部分帐簿报表都是从余额表取数。本章将重点讲述下面三个余额表:1、科目余额表:t_balance2、数量余额表:t_quantitybalance3、损益类科目实际发生额表t_profitandloss这三个余额表是在初始化和凭证过账时,同时写入数据。,34,不带核算项目的余额表,35,带核算项目的余额表,36,3.2数量余额表(t_quantitybalance),37,3.3损益类科目实际发生额表(t_profitandloss),t_profitandloss-在初始化和凭证过账时写数据,只记损益类科目的实际损益发生额数据,只为报表取损益类数据提供依据。当结转损益到本年利润时,该表不产生影响,损益类科目从t_balance取得余额转出,不是从本表。,38,t_Account,t_Balance,t_ItemDetail,t_ItemDetailv,t_Item,t_Voucher,第三章凭证表与核算项目横表和纵表的关联,39,40,初始化,初始化时,涉及到的表主要是t_balance(金额余额表),t_quantitybalance(数量余额表)和t_profitandloss(损益类科目实际发生额情况表),往来科目带往来业务核算时,还涉及到t_transinitbalance(往来初始数据表)。在年初和年中做初始时,这三个表中的数据存储情况。科目核算多币别时,三表中的数据存储情况。,41,初始化,结束初始化时,系统平衡检查的原理:当前期间的综合本位币科目借方余额合计等于贷方余额合计,借方累计发生合计等于贷方累计发生额合计,即汇总t_Balance表中FcurrencyID=0的启用期间数据。平衡检查语句:selectb.fdc,sum(a.fbeginbalance)fromt_balanceajoint_accountbona.faccountid=b.faccountidWherea.fdetailid=0anda.fcurrencyid=0andb.fdetail=1groupbyb.fdc结束初始化时,系统将自动更新表t_Subsys(新增或更新一条记录),同时更新t_SystemProfile表中Fcategory=GL,Fkey=InitClosed对应的Fvalue=1,初始化完成。,启用期间为第一期,启用期间大于第一期,试算平衡?,录入初始数据,结束初始化,不保存本年累计数、损益数据,按照本年累计数、损益数倒算出第一期的余额数据,检查当前期间,一级科目、fcurrencyid=0的借方、贷方余额的本位币合计是否相等,设置t_systemprofil中initclosed的值为1,在子系统处理表t_subsys新增一条纪录,43,凭证处理,凭证保存凭证过账凭证反过账,44,凭证处理:凭证保存1,检查凭证上核算项目在基础资料中是否存在。取出总账系统的一些系统参数:如当前年、当前期间、凭证是否按年度排列、凭证是否按期间排列、凭证结账日、凭证录入截止日等,以便确定凭证上的凭证日期和业务日期是否合法。取出凭证的最大号(Fnumber)、最大内码(FVoucherID)和最大序号(FserialNum)。把所获得的凭证头数据(如FDate、FTransDate、FYear、FPeriod、FGroupID、FNumber、FExplanation、FDebitTotal、FCreditTotal、FInternalInd、FChecked、FPosted、FPreparerID、FCheckerID等字段的值)插入到凭证头表中。在插入数据的过程中触发T_Voucher表中的t_Voucher_AutoNumber触发器,自动取得FVoucherID字段的值。,45,凭证处理:凭证保存2,验证凭证中的科目资料,核算项目资料是否是最明细的。并在T_ItemDetail表中找出核算项目所对应的FDetailID值。如果这时T_ItemDetail表中不存在核算项目所对应的FDetailID值,则系统会往T_ItemDetail表插入此核算项目对应的记录,FDetailID值取自于T_Identity表中的FName=t_itemdetail记录的FNext字段的值。最后把获得的凭证体数据(如FVoucherID、FentryID、Fexplanation、FaccountID、FcurrencyID、FexchangeRate、FDC、FamountFor等字段值)分别插入T_VoucherEntry表中。,46,凭证处理:凭证过账1,检查凭证是否在本会计年度、期间。根据账套选项的“凭证过账前必须审核”,检查凭证是否已经审核。检查科目、核算项目的合法性。检查凭证号是否连续。,47,凭证处理:凭证过账2,将分录中的借或贷方发生额登记至t_Balance,分三步完成:A、登记科目的原币、原币折合本位币发生额。B、登记核算项目的原币、原币折合本位币发生额。C、若是非明细科目,则汇总其所有上级科目的发生数。以上三步操作中数据库中数据会发生变化的表t_Balance中的FdebitFor,FcreditFor,FytdDebitFor,FytdCreditFor,FEndBalanceFor,FDebit,FCredit,FytdDebit,FYtdCredit,FendBalance十个字段。,48,凭证处理:凭证过账3,检查是否机制损益类凭证,如是结转机制凭证(FinternalInd=“TransferPL”、“RateAdjust”),则不更新余额表数据。若科目属于损益类科目(t_Account中FGroupID值大于500),且凭证分录中的FinternalInd字段值为“TransferPL”(自动结转),则将分录中的借或贷方发生额登记至表t_ProfitAndLoss中,分三步完成:A、登记损益类科目的原币、原币折合本位币发生额。B、登记核算项目的原币、原币折合本位币发生额。C、若是非明细科目,则汇总其所有上级科目的发生数。以上三步操作中数据库中数据会发生变化的有表t_ProfitAndLoss中的FamountFor,FytdAmountFor,Famount,FytdAmount四个字段。,49,凭证处理:凭证过账4,若科目或核算项目设有数量辅助核算,则更新表t_QuantityBalance,发生变化的字段有FDebitQty,FCreditQty,FYtdDebitQty,FytdCreditQty,FEndQty五个字段。表t_Voucher的对应字段Fposted=1,FpostID=过账人,加上过账标记。,50,凭证过账过程图,51,凭证处理:凭证反过账1,检查本期有没有已过账的凭证,若没有,则退出反过账过程。更新t_Balance本期发生、本年累计及期末余额字段,使其数值去除当前反过账凭证的发生额:如反过账凭证分录为借方:注以下:Vch.FamountFor、Vch.Famount、Vch.FQuantit为凭证分录金额及数量FDebitFor:=FdebitForVch.FAmountForFYtdDebitFor=FytdDebitForVch.FAmountForFEndBalanceFor=FBeginBalanceFor+FDebitForFCreditForFDebit=FdebitVch.FAmountFYtdDebit=FytdDebitVch.FAmountFEndBalance=FBeginBalance+FDebitFCredit,52,凭证处理:凭证反过账2,损益类科目更新t_ProfitAndLoss本期发生及本年累计字段:FamountFor=FamountForVch.FAmountForFytdAmountFor=FytdAmountForch.FAmountForFamount=FamountVch.FAmountFytdAmount=FytdAmountVch.Famount,53,凭证处理:凭证反过账3,更新t_QuantityBalance本期发生、本年累计及期末余额字段,使其恢复至期初状态:如反过账凭证分录为借方:FdebitQty=FdebitQtyVch.FquantityFytdDebitQty=FytdDebitQtyVch.FquantityFendQty=FbeginQty+DebitQtyCreditQty表t_Voucher的对应字段Fposted=0,FpostID=-1修改为未过账标记。,54,凭证反过账过程图,55,期末处理:结转损益1,先检测系统参数(t_Systemprofile表中Fcategory=“GL”,Fkey=“EarnAccount”的记录)中有无本年利润科目(Fvalue的值),若无则退出;再检测系统中有无结转损益的凭证(t_Voucher表中本期有无FInternalInd=TransferPL的记录),若有则提示是删还是过账结转损益的凭证,若是选过账,则系统把结转损益的凭证过账,若是选删除,则把结转损益的凭证删除,再进入到下一步。从科目表中把所有损益类科目列出(t_Account表中FgroupID501的记录),并更新科目表中损益类科目对应本年利润科目(FearnAccountID字段)的值为系统参数中设置的本年利润科目的科目ID。,56,期末处理:结转损益2,从系统参数表(t_Systemprofile)中取出一系列的参数值,如果这些参数值没有错误,则再从余额表(t_Balance)和数量余额表(t_QuantityBalance)取出所有最明细损益科目包括所有币别和核算项目的期末余额(也即损益类科目实际发生额),另外再对照损益类科目设置的项目核算,分别从t_Account、t_ItemDetailV和t_ItemClass表中进行验证科目对应的FdetailID值的正确性,若无错误,最后再往t_Voucher,t_VoucherEntry表中插入相应的记录。,57,期末处理:期末结账1,检查是否完成初始化。检查本期是否还有未过账的凭证如果需要-检查本期损益类科目余额是否结平,如果不平不能结账。检查T-SubSys表看是否其他要求与总账同步(Fperiodsynch=1)的子系统是否已经结账将t_Balance、t_ProfitAndLoss、t_QuantityBalance表中所有本期期末数据复制为下一期期初数据,本年累计数据累计到下一期,发生额为0。删除表t_ItemDetail、t_ItemDetailV中一些在t_Balance、t_ProfitAndLoss、t_QuantityBalance、t_VoucherEntry、t_Account中都不存在的核算项目多余数据。,58,期末处理:期末结账2,更新表t_SystemProfile当前期间加到下一期间如果Fperiod=PeriodPerYear则更新Fkey=CurrentYear,Fvalue=Fvalue+1;Fkey=CurrentPeriod,Fvalue=1否则更新Fkey=urrentPeriod,Fvalue=Fvalue+1期末处理管理表t_SubSYS将本期数据设为已结账Fcheckout=1,增加一条下一期Fcheckout=0的记录。,59,期末处理:期末反结账,删除表t_Balance中所有本期记录。删除表t_ProfitAndLoss中所有本期记录。删除表t_QuantityBalance中所有本期记录。期末处理管理表t_SubSYS删除当前期的记录上期数据设为未结账Fcheckout=0。,60,期末结账与反结账过程图,数据流向图,T_voucher,T_balance,调汇,结损益,自动转账,t_ProfitAndLoss,t_QuantityBalance,过账,过账,T_voucher,账表查询,62,案例11、问题描述该账套为新建账套,其中基础资料数据是从其他账套引入。由于科目体系变更后,个别科目需设置核算项目,但其中几个科目在设置核算项目时,前面自动出现一个“部门”。,案例-问题,63,为什么?,64,“其他应收款”进行分析:selectfdetailid,*fromt_accountwherefnumber=1221-查询该科目的fdetailid值,select*fromt_itemdetailwherefdetailid=5-查询核算项目横表,select*fromt_itemdetailvwherefdetailid=5-查询核算项目纵表,思路和方法,execsp_cleanitemdetail重写t_itemdetailv表,65,2问题描述查询第五期凭证时提示“使用Null无效”,错误代码:94(5EH)。查询其它期间正常,查询全部凭证时也出现同样的错误提示。,问题,66,select*fromt_voucherentrywherefvoucheridnotin(selectfvoucheridfromt_voucher)-查询表体是否存在表头没有的fvoucheridselect*fromt_voucherwherefvoucheridnotin(selectfvoucheridfromt_voucherentry)-查询表头是否存在表体没有的fvoucheriddeletefromt_voucherwhereFvoucherIDNOTIN(selectFvoucherIDfromt_VoucherEntry),思路及方法,67,3.问题描述客户科目产品销售收入501分明细再挂核算项目“产品”并进行数量金额核算。从升级后2006年2期开始,在月底做自动结转损益时,这张凭证上产品销售收入科目的数量和单价不能结转过去,数量和单价都为0,只能结转金额。而在升级前是可以的。导致查数量金额总帐和明细帐的期末余额为0,但有数量。,问题,68,69,发现错误:当计量单位表的funitgroupid与计量单位组的funitgroupid相等且fstandard=1时,计量单位的内码没有被反写到计量单位组表。,updateaseta.fdefaultunitid=b.fnufromt_unitgroupajoin(selectfmeasureunitidfnu,*fromt_measureunitwherefstandard=1)bona.funitgroupid=b.funitgroupid,70,4.问题描述人民币试算平衡,但是综合本位币试算不平衡,所以不能结束初始化(在没有使用外币的情况下)。,71,SelectFdc,SUM(FBeginBalanceFor)FBeginBalanceFor,SUM(FBeginBalance)FBeginBalanceFROMt_Balancebal,t_AccountaWHEREbal.FDetailID=0ANDa.FAccountID=bal.FAccountIDanda.Flevel=1Anda.FGroupID600AndFPeriod=1AndFYear=2006Andbal.FCurrencyID=0GroupByFDCorderbyFDC-(币别选择“综合本位币”的跟踪过程),SelectFdc,SUM(FBeginBalanceFor)FBeginBalanceFor,SUM(FBeginBalance)FBeginBalanceFROMt_Balancebal,t_AccountaWHEREbal.FDetailID=0ANDa.FAccountID=bal.FAccountIDanda.Flevel=1Anda.FGroupID600AndFPeriod=1AndFYear=2006Andbal.FCurrencyID=1GroupByFDCorderbyFDC-(币别选择“人民币”的跟踪过程),72,通过以上查询结果可知:t_balance表中FCurrencyID为0和FCurrencyID为1的记录不相同,为了进一步细化问题需要检查出具体是哪个科目的原币金额与综合本位币的金额不相符:selecta.*,b.FBeginBalanceFor,b.FBeginBalancefrom(selectFYear,FPeriod,FAccountID,FDetailID,FBeginBalanceFor,FBeginBalancefromt_balancewhereFCurrencyID=0)ajoin(selectFYear,FPeriod,FAccountID,FDetailID,FBeginBalanceFor,FBeginBalancefromt_balancewhereFCurrencyID=1)bona.fyear*100+a.fperiod=b.fyear*100+b.fperiodanda.faccountid=b.faccountidanda.fdetailid=b.fdetailidwherea.FBeginBalanceForb.FbeginBalanceFor,73,3),按币别及核算项目分别查找有没有丢失记录:-按核算项目:selectc.fnumber,a.*fromt_balanceajoint_accountcona.faccountid=c.faccountidwherea.fcurrencyid=0anda.fdetailidnotin(selectfdetailidfromt_balancewherefcurrencyid=1andfaccountid=a.faccountidandfyear*100+fperiod=a.fyear*100+a.fperiod),74,5.问题描述在损益表里,主营业务成本科目的取数公式是=ACCT(502,sy,0,0,0)和=ACCT(502,sL,0,0,0),在1-4月份都能正确取数,但是在5月份就突然取不上数了,然后把公式改成=ACCT(502,jf,0,0,0)和=ACCT(502,jl,0,0,0),又能取上数了。但是损益类的取数公式函数应该为sy和sl。,75,在损益表里,用“sy及”sl取得上数,而用“jf及jl取得上数。这两种公式一种是从t_balance表中取数,而后一种是从t_profitandloss表中取数,而正确的应该是从t_profitandloss表中取数。查询t_balance表与t_profitandloss表中相关数据,发现T_profitandloss表的对应科目的famount值为0,但其它损益类科目并不存在这种问题。select*fromt_balancewherefyear=2006andfperiod=5andfaccountid=1163,76,T_balance表,t_profitandloss表,77,处理方法:1)将凭证反过帐,并将结转损益的那张凭证删除,2)执行以下SQL语句:updatet_voucherentrysetfinternalind=NULLwherefvoucheridin(79,80)updatet_vouchersetfinternalind=NULL,ftrantype=0wherefvoucheridin(79,80)3)重新结转损益,并将凭证过帐。,78,提纲,固定资产卡片数据结构账套数据处理实例,79,基础资料表,t_faaltermode(变动方式类别表),t_fastatus(使用状态类别表),t_FADeprMethod(折旧方法定义表),t_fagroup(卡片类别表),t_falocation(存放地点表),80,卡片基本概貌,上图红色框内容存于t_facard表,蓝色框内容存于t_fadevice表,绿色框内容存于t_facarditem表。,81,卡片基本概貌,上图红色框内容存于t_facard卡片基本信息表,蓝色框内容存于t_fadept表,绿色框内容存于t_faexpense表。,82,变动相关表,变动基本表T_FAAlter卡片基本信息表T_FACard原值原币表T_FAOrgFor固定资产部门分摊表T_FADept折旧费用分摊表T_FAExpenses自定义卡片项目表T_FACardItem附属设备表T_FADevice,83,变动基本表和变动相关表的关系,卡片相关表的核心是变动基本表(T_FAAlter)。该表记录了固定资产的内码,变动的期间,摘要,制单人等信息。因为新增的固定资产也可以看作一种变动方式为新增的业务来处理,故此,该表可以记录从固定资产新增到变动、报废等业务处理的所有情况。该表中的Fnew字段表明该记录是否为新增卡片形成,Fnew=1表示该固定资产入账时产生,即原始记录。在同一个会计期间,同一个固定资产在该表中只能有一个记录。,84,变动基本表的使用,卡片每变动一次(包括新增),即产生一条变动基本记录,固定资产做每一次变动,变动IDFalterID依次加1,每期每个固定资产只能变动一次。当卡片新增或变动时,T_FAAlter变动基本表插入一条新记录;它记录了固定资产变动时的基本要素,如固定资产的内码,期间,变动ID等等。与此同时,卡片变动相关表也会以该记录的变动ID为主键,各自生成一条新的记录,记录各自的固定资产相关信息。,85,卡片基本信息表T_FACard,1)卡片基本信息表T_FACard:该表记录每一次变动时当次变动卡片的基本信息,如固定资产名称、存放地点、入账时间、入账原值、累计折旧、预计净残值、相关科目等等其中,入账原值=原值原币表该固定资产的各币别金额总和。,86,原值原币表T_FAOrgFor,2)原值原币表T_FAOrgFor:该表记录固定资产某次变动时的价值组成,即该固定资产由几种币别组成,每种币别各自金额为多少。有几种币别,就有几条记录。,87,固定资产部门分摊表T_FADept,3)固定资产部门分摊表T_FADept:该表记录该次变动的固定资产由几个部门使用,每个部门占多少比率。有多少个部门,就生成几个记录。FdetailID记录了存储该部门核算项目信息的记录的内码。此表为生成折旧费用部门分配表的依据。,88,折旧费用分摊表T_FAExpenses,1)折旧费用分摊表T_FAExpenses:记录该固定资产所产生的折旧费用分摊到哪几个科目,每个科目所占比例。有几个科目,就有几条记录。FdetailID记录了存储该科目核算项目信息的记录的内码。此表为生成折旧费用项目科目分配表的依据。,89,附属设备表T_FADevice,2)附属设备表T_FADevice:该表记录了该固定资产所拥有的附属设备,记录了各附属设备的名称规格、数量、金额和存放地点等等。有几个附属设备,就有几条记录。,90,变动相关表的关系图示,变动基本表T_FAAlter,卡片基本信息表T_FACard原值原币表T_FAOrgFor固定资产部门分摊表T_FADept折旧费用分摊表T_FAExpenses自定义卡片项目表T_FACardItem附属设备表T_FADevice,通过faalterid与其他表相连,91,余额表和余额相关表,余额表t_FABalance卡片每期状况表t_FABalCard附属设备每期状况表t_FABalDevice原值原币每期状况表t_FABalOrgFor部门每期分配情况表t_FABalDept折旧费用每期分配情况表t_FABalExpense卡片自定义项目每期状况表t_FABalCardItem,92,余额表t_FABalance结构,93,余额相关表关系图示,余额表t_FABalance,卡片每期状况表t_FABalCard附属设备每期状况表t_FABalDevice原值原币每期状况表t_FABalOrgFor部门每期分配情况表t_FABalDept折旧费用每期分配情况表t_FABalExpense卡片自定义项目每期状况表t_FABalCardItem,通过Fabalid字段与其他表相连,94,变动基本表与余额表相连,变动基本表T_FAAlter,余额表T_FABalance,通过FAAssetid相连,95,其他相关表,报废清理表(T_FAClear)凭证对照表(T_FAVoucher)报废清理表T_FAClear和凭证对照表T_FAVoucher。固定资产发生报废清理后,系统会自动生成一条变动记录。凭证对照表则为记录变动与相应凭证的对应关系,便于管理。这两个表也是通过变动ID即FalterID和变动基本表关联。当固定资产清理时,系统会首先做一个变动记录,把该固定资产的原值、累计折旧等清零,并且在该变动记录的“是否已清理Fcleared”字段和该固定资产当期的余额表记录的“是否清理Fcleared”字段置1;然后在报废清理表中增加一条记录。,96,报废清理表(T_FAClear),97,折旧程序处理流程,一、检查固定资产是否完成初始化如果t_SystemProfile表中Fcategory=FA,Fkey=Closed对应的Fvalue=1,则初始化已完成,开始进行折旧事务处理.否则给出提示,初始化尚未结束。二、开始计提折旧,98,折旧程序处理流程,先找出本次需要记提折旧的卡片。计提折旧所涉及的表为T_FaBalance,T_FaBalCard,T_Faalter,T_FaCard,T_FaBalDept,T_FaBalExpense,t_FaDeprMethod,T_FaStatus,T_FaGroup,T_Falocation检查入账状态、折旧状态、折旧方法、工作量等信息,99,折旧程序处理流程,入账状态对应t_FABalance表的FCleared字段:值为1表示“已清理”,固定资产不需计提折旧。根据t_FABalcard表中的FstatusID(使用状态)对应表t_FAStatus中的FstatusID取出折旧状态字段FWhetherDepr,FwhetherDepr=1提折旧,FwhetherDepr=0不提折旧。当需提折旧时,再根据t_FABalance表中的FdeprMethodID(折旧方法)对应表t_FADeprMethod中的FdeprMethodID得出折旧方法等信息。,100,折旧程序处理流程,根据t_FABalance表中的FworkLoad字段得到工作量信息。根据t_FABalance表中的FABalID(固定资产余额代码)对应表t_FABaldept、t_FABalExpense中的FABalID得到折旧相关部门分配FitemID字段、折旧费用科目FacctID字段及核算项目分配FdetailID字段信息。,101,计算本期应提折旧额,根据t_FABalance表中字段FhasDepr是否为1,逐个判断其折旧状态,对需要计提折旧的固定资产,计算其本期折旧额。计算折旧额涉及到的折旧要素可见下表:,102,账套数据处理实例,1、提折旧时提示:“进行卡片调整”,不能正常进行卡片调整,所以提折旧失败。账套:稀土高科处理方法:提示需要调整的卡片是指核算项目不为空,而部门为空的卡片.通过以下SQL可以查询出来.select*fromt_facardwherefalteridin(SELECTdistinctFAlterIDFROMt_FAExpenseWHEREFDeptID=0)-需调整的卡片检查这些卡片,将丢失的部门代码数据补上就可以.,103,实例请解,可以运行以下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),104,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表中的部门数据却没有丢失,所以可以将之替换到与之相对应的表内。,实例请解,105,Thanks!,
展开阅读全文