$PBExportHeader$f_balc_astbalance.srf $PBExportComments$固定资产累计折旧登帐 global type f_balc_astbalance from function_object end type forward prototypes global function integer f_balc_astbalance (integer arg_balctype, long arg_yearmon, ref string arg_msg, boolean arg_ifcommit) end prototypes global function integer f_balc_astbalance (integer arg_balctype, long arg_yearmon, ref string arg_msg, boolean arg_ifcommit);//固定资产累计折旧登帐 //f_balc_astbalance(arg_balctype,arg_yearmon,arg_msg,arg_ifcommit) //arg_balctype 1:登帐,0:反登帐 Int rslt = 1 datetime ldt_firstdate,ldt_enddate ldt_firstdate = DateTime(f_rst_mon_1st(1,sys_curyearmon)) ldt_enddate = DateTime(f_rst_mon_1st(3,sys_curyearmon)) IF arg_balctype = 1 THEN UPDATE cw_astbalance SET cw_astbalance.ydprcredit = cw_astbalance.ydprcredit + cw_astbalance.deprvalue, cw_astbalance.dprcredit = cw_astbalance.deprvalue from cw_astbalance,cw_assetcard Where cw_astbalance.yearmon = :arg_yearmon and cw_astbalance.accsetid = :sys_accsetid and cw_astbalance.assetcardid = cw_assetcard.assetcardid and cw_astbalance.accsetid = cw_assetcard.accsetid and cw_assetcard.clearflag = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '登帐时更新未清理固定资产累计折旧失败,'+sqlca.sqlerrtext rslt = 0 GOTO ext END IF //更新清理 UPDATE cw_astbalance SET cw_astbalance.ydprdebit = cw_astbalance.ydprdebit + cw_astbalance.bdprcredit, cw_astbalance.dprdebit = cw_astbalance.dprdebit + cw_astbalance.bdprcredit, cw_astbalance.yastcredit = cw_astbalance.yastcredit + cw_astbalance.bastdebit, cw_astbalance.astcredit = cw_astbalance.astcredit + cw_astbalance.bastdebit from cw_astbalance,cw_assetcard,cw_astclear Where cw_astbalance.yearmon = :arg_yearmon and cw_astbalance.accsetid = :sys_accsetid and cw_astbalance.assetcardid = cw_assetcard.assetcardid and cw_astbalance.accsetid = cw_assetcard.accsetid and cw_astclear.assetcardid = cw_assetcard.assetcardid and cw_astclear.accsetid = cw_assetcard.accsetid and cw_assetcard.clearflag = 1 and cw_astclear.cleardate >= :ldt_firstdate and cw_astclear.cleardate <= :ldt_enddate; IF sqlca.SQLCode <> 0 THEN arg_msg = '登帐时更新本月清理固定资产累计折旧失败,'+sqlca.sqlerrtext rslt = 0 GOTO ext END IF ELSE UPDATE cw_astbalance SET cw_astbalance.ydprcredit = cw_astbalance.ydprcredit - cw_astbalance.deprvalue, cw_astbalance.dprcredit = 0 from cw_astbalance,cw_assetcard Where cw_astbalance.yearmon = :arg_yearmon and cw_astbalance.accsetid = :sys_accsetid and cw_astbalance.assetcardid = cw_assetcard.assetcardid and cw_astbalance.accsetid = cw_assetcard.accsetid and cw_assetcard.clearflag = 0; IF sqlca.SQLCode <> 0 THEN arg_msg = '反登帐时更新未清理固定资产累计折旧失败,'+sqlca.sqlerrtext rslt = 0 GOTO ext END IF //更新清理 UPDATE cw_astbalance SET cw_astbalance.ydprdebit = cw_astbalance.ydprdebit - cw_astbalance.bdprcredit, cw_astbalance.dprdebit = cw_astbalance.dprdebit - cw_astbalance.bdprcredit, cw_astbalance.yastcredit = cw_astbalance.yastcredit - cw_astbalance.bastdebit, cw_astbalance.astcredit = cw_astbalance.astcredit - cw_astbalance.bastdebit from cw_astbalance,cw_assetcard,cw_astclear Where cw_astbalance.yearmon = :arg_yearmon and cw_astbalance.accsetid = :sys_accsetid and cw_astbalance.assetcardid = cw_assetcard.assetcardid and cw_astbalance.accsetid = cw_assetcard.accsetid and cw_astclear.assetcardid = cw_assetcard.assetcardid and cw_astclear.accsetid = cw_assetcard.accsetid and cw_assetcard.clearflag = 1 and cw_astclear.cleardate >= :ldt_firstdate and cw_astclear.cleardate <= :ldt_enddate; IF sqlca.SQLCode <> 0 THEN arg_msg = '反登帐时更新已清理固定资产累计折旧失败,'+sqlca.sqlerrtext 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