$PBExportHeader$f_init_astbalance.srf $PBExportComments$初始化固定资产累计折旧 global type f_init_astbalance from function_object end type forward prototypes global function integer f_init_astbalance (integer arg_inittype, long arg_yearmon, long arg_nextyearmon, ref string arg_msg, boolean arg_ifcommit) end prototypes global function integer f_init_astbalance (integer arg_inittype, long arg_yearmon, long arg_nextyearmon, ref string arg_msg, boolean arg_ifcommit);//初始化固定资产累计折旧 //f_cmp_astbalance(arg_inittype,arg_yearmon,arg_nextyearmon,arg_msg,arg_ifcommit) //arg_inittype 1:初始化,0:反初始化 // Int rslt = 1 DateTime firstdate IF arg_inittype = 1 THEN IF arg_yearmon = arg_nextyearmon THEN //启用帐套 firstdate = f_rst_mon_1st(1,arg_yearmon) INSERT INTO cw_astbalance(accsetid,assetcardid,yearmon,totalwl,currwl,usedvalue, deprrate,deprvalue,bastdebit,yastdebit,yastcredit,astdebit,astcredit,bdprcredit, ydprdebit,ydprcredit,dprdebit,dprcredit) SELECT :sys_accsetid,assetcardid,:arg_yearmon,usedall + 1,0,usedvalue, 0,0,rawvalue,0,0,0,0,usedvalue, 0,0,0,0 FROM cw_assetcard WHERE ( cw_assetcard.clearflag = 0 ) AND ( cw_assetcard.startdate < :firstdate ) AND ( cw_assetcard.accsetid = :sys_accsetid ) And ( cw_assetcard.Initflag = 1 ) ; IF sqlca.SQLCode <> 0 THEN arg_msg = '初始化期初固定资产累计折旧失败 ~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF ELSE //初始化下月 IF Right(String(arg_yearmon),2) = '12' THEN INSERT INTO cw_astbalance (accsetid, assetcardid, yearmon, totalwl, currwl, usedvalue, deprrate, deprvalue, bastdebit, yastdebit, yastcredit, astdebit, astcredit, bdprcredit, ydprdebit, ydprcredit, dprdebit, dprcredit) SELECT :sys_accsetid, cw_astbalance.assetcardid, :arg_nextyearmon, cw_astbalance.totalwl + 1, 0, cw_astbalance.usedvalue + cw_astbalance.deprvalue, 0, 0, case cw_assetcard.clearflag when 0 then cw_assetcard.rawvalue else cw_astbalance.bastdebit + cw_astbalance.astdebit - cw_astbalance.astcredit end, 0, 0, 0, 0, cw_astbalance.bdprcredit - cw_astbalance.dprdebit + cw_astbalance.dprcredit, 0, 0, 0, 0 FROM cw_astbalance,cw_assetcard WHERE ( cw_astbalance.accsetid = cw_assetcard.accsetid ) and ( cw_astbalance.assetcardid = cw_assetcard.assetcardid ) and ( cw_astbalance.yearmon = :arg_yearmon ) And ( cw_astbalance.accsetid = :sys_accsetid ); ELSE INSERT INTO cw_astbalance (accsetid, assetcardid, yearmon, totalwl, currwl, usedvalue, deprrate, deprvalue, bastdebit, yastdebit, yastcredit, astdebit, astcredit, bdprcredit, ydprdebit, ydprcredit, dprdebit, dprcredit) SELECT :sys_accsetid, cw_astbalance.assetcardid, :arg_nextyearmon, cw_astbalance.totalwl + 1, 0, cw_astbalance.usedvalue + cw_astbalance.deprvalue, 0, 0, case cw_assetcard.clearflag when 0 then cw_assetcard.rawvalue else cw_astbalance.bastdebit + cw_astbalance.astdebit - cw_astbalance.astcredit end , cw_astbalance.yastdebit, cw_astbalance.yastcredit, 0, 0, cw_astbalance.bdprcredit - cw_astbalance.dprdebit + cw_astbalance.dprcredit, cw_astbalance.ydprdebit, cw_astbalance.ydprcredit, 0, 0 FROM cw_astbalance,cw_assetcard WHERE ( cw_astbalance.accsetid = cw_assetcard.accsetid ) and ( cw_astbalance.assetcardid = cw_assetcard.assetcardid ) and ( cw_astbalance.yearmon = :arg_yearmon ) And ( cw_astbalance.accsetid = :sys_accsetid ); END IF IF sqlca.SQLCode <> 0 THEN arg_msg = '初始化下月:'+String(arg_nextyearmon)+'期初固定资产累计折旧失败 ~n'+sqlca.SQLErrText rslt = 0 GOTO ext END IF END IF ELSE DELETE cw_astbalance Where accsetid = :sys_accsetid AND yearmon = :arg_yearmon; IF sqlca.SQLCode <> 0 THEN arg_msg = '删除固定资产本期累计折旧失败' rslt = 0 GOTO ext END IF END IF ext: IF rslt = 0 THEN ROLLBACK; ELSEIF rslt = 1 AND arg_ifcommit THEN COMMIT; END IF RETURN rslt end function