$PBExportHeader$f_rst_spt_bbala.srf global type f_rst_spt_bbala from function_object end type forward prototypes global function decimal f_rst_spt_bbala (long arg_accsetid, long arg_cmonth, string arg_subid, long arg_sptid, integer arg_dcflag, integer arg_postflag) end prototypes global function decimal f_rst_spt_bbala (long arg_accsetid, long arg_cmonth, string arg_subid, long arg_sptid, integer arg_dcflag, integer arg_postflag);//返回项目总帐期初数 Decimal rst_spt_amt Decimal init_spt_debit,cur_spt_debit Decimal init_spt_credit,cur_spt_credit SELECT isnull(sum(uv_dept_bala.debit),0), isnull(sum(uv_dept_bala.credit),0) INTO :cur_spt_debit,:cur_spt_credit FROM uv_dept_bala,cw_subject WHERE ( uv_dept_bala.accsetid = cw_subject.accsetid ) AND ( uv_dept_bala.subid = cw_subject.subid ) AND ( cw_subject.detailflag = 1 ) AND ( uv_dept_bala.accsetid = :arg_accsetid ) AND ( uv_dept_bala.cmonth < :arg_cmonth ) AND ( uv_dept_bala.subid LIKE :arg_subid ) AND ( uv_dept_bala.sptid = :arg_sptid ) AND ( uv_dept_bala.postflag = :arg_postflag OR :arg_postflag = -1 ); IF sqlca.SQLCode <> 0 THEN cur_spt_debit = 0 cur_spt_credit = 0 END IF SELECT isnull(uv_spt_init.debit,0), isnull(uv_spt_init.credit,0) INTO :init_spt_debit,:init_spt_credit FROM uv_spt_init,cw_subject WHERE ( uv_spt_init.accsetid = cw_subject.accsetid ) AND ( uv_spt_init.subid = cw_subject.subid ) AND ( cw_subject.detailflag = 1 ) AND ( uv_spt_init.accsetid = :arg_accsetid ) AND ( uv_spt_init.subid LIKE :arg_subid ) AND ( uv_spt_init.sptid = :arg_sptid ) ; IF sqlca.SQLCode <> 0 THEN init_spt_debit = 0 init_spt_credit = 0 END IF IF IsNull(cur_spt_debit) THEN cur_spt_debit = 0 IF IsNull(init_spt_debit) THEN init_spt_debit = 0 IF IsNull(cur_spt_credit) THEN cur_spt_credit = 0 IF IsNull(init_spt_credit) THEN init_spt_credit = 0 IF arg_dcflag = 1 THEN rst_spt_amt = (cur_spt_debit + init_spt_debit) - (cur_spt_credit - init_spt_credit) ELSE rst_spt_amt = (cur_spt_credit - init_spt_credit) - (cur_spt_debit + init_spt_debit) END IF RETURN rst_spt_amt end function