$PBExportHeader$f_check_credit.srf global type f_check_credit from function_object end type forward prototypes global function integer f_check_credit (string arg_subid, decimal arg_debit, decimal arg_credit, decimal arg_rawdebit, decimal arg_rawcredit, ref string arg_msg) global function integer f_check_credit (long arg_credid, string arg_subid, decimal arg_debit, decimal arg_credit, decimal arg_rawdebit, decimal arg_rawcredit, ref string arg_msg) end prototypes global function integer f_check_credit (string arg_subid, decimal arg_debit, decimal arg_credit, decimal arg_rawdebit, decimal arg_rawcredit, ref string arg_msg);Int rslt = 1 Long ll_curyearmon Decimal ld_bdebit,ld_bcredit,ld_BRawDebit,ld_BRawCredit Decimal ld_debit,ld_credit,ld_RawDebit,ld_RawCredit decimal ld_balance,ld_rawbalance IF Not (Left(arg_subid,3) = '101' OR Left(arg_subid,3) = '102') THEN rslt = 1 GOTO ext END IF ll_curyearmon = sys_curyearmon SELECT bdebit,bcredit,BRawDebit,BRawCredit INTO :ld_bdebit,:ld_bcredit,:ld_BRawDebit,:ld_BRawCredit FROM cw_Balance WHERE accsetid = :sys_accsetid AND subid = :arg_subid AND YearMon = :ll_curyearmon; IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'期初余额失败' GOTO ext END IF SELECT sum(debit),sum(credit),sum(RawDebit),sum(RawCredit) INTO :ld_debit,:ld_credit,:ld_RawDebit,:ld_RawCredit FROM cw_credence,cw_credencemx WHERE cw_credence.accsetid = cw_credencemx.accsetid and cw_credence.credid = cw_credencemx.credid and cw_credence.accsetid = :sys_accsetid AND cw_credencemx.subid = :arg_subid AND cw_credence.cmonth = :ll_curyearmon group by cw_credencemx.subid; IF sqlca.SQLCode = -1 THEN rslt = 0 arg_msg = '查询科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'本期发生额失败' GOTO ext END IF ld_balance = ld_bdebit - ld_bcredit + ld_debit - ld_credit ld_Rawbalance = ld_bRawdebit - ld_bRawcredit + ld_Rawdebit - ld_Rawcredit if ld_balance < 0 or ld_Rawbalance < 0 then arg_msg = '注意,科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'余额在贷方' rslt = 0 goto ext end if ext: RETURN rslt end function global function integer f_check_credit (long arg_credid, string arg_subid, decimal arg_debit, decimal arg_credit, decimal arg_rawdebit, decimal arg_rawcredit, ref string arg_msg);Int rslt = 1 Decimal ld_bdebit,ld_bcredit,ld_brawdebit,ld_brawcredit Decimal ld_debit,ld_credit,ld_rawdebit,ld_rawcredit decimal ld_balance,ld_rawbalance if not (left(arg_subid,3) = '101' or left(arg_subid,3) = '102') then rslt = 1 goto ext end if //查期初余额 SELECT bdebit,bcredit,brawdebit,brawcredit INTO :ld_bdebit,:ld_bcredit,:ld_brawdebit,:ld_brawcredit FROM cw_balance WHERE accsetid = :sys_accsetid AND yearmon = :sys_curyearmon AND subid = :arg_subid; IF sqlca.SQLCode = -1 THEN arg_msg = '查询科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'期初余额失败' rslt = 0 GOTO ext END IF //查本期发生额 SELECT sum(debit),sum(credit),sum(rawdebit),sum(rawcredit) INTO :ld_debit,:ld_credit,:ld_rawdebit,:ld_rawcredit FROM cw_credence,cw_credencemx WHERE cw_credence.accsetid = cw_credencemx.accsetid AND cw_credence.credid = cw_credencemx.credid AND cw_credence.accsetid = :sys_accsetid AND cw_credence.cmonth = :sys_curyearmon AND cw_credence.credid <> :arg_credid AND cw_credencemx.subid = :arg_subid Group By cw_credencemx.subid; IF sqlca.SQLCode = -1 THEN arg_msg = '查询科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期发生额失败' rslt = 0 GOTO ext END IF ld_balance = ld_bdebit - ld_bcredit + ld_debit - ld_credit + arg_debit - arg_credit ld_rawbalance = ld_brawdebit - ld_brawcredit + ld_rawdebit - ld_rawcredit + arg_rawdebit - arg_rawcredit if ld_balance < 0 then arg_msg = '注意,科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期余额在贷方' rslt = 0 GOTO ext end if if ld_rawbalance < 0 then arg_msg = '注意,科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期外币余额在贷方' rslt = 0 GOTO ext end if ext: RETURN rslt end function