123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- $PBExportHeader$f_amt.srf
- $PBExportComments$取科目金额
- global type f_amt from function_object
- end type
- forward prototypes
- global function decimal f_amt (long arg_accsetid, string arg_subid, string arg_str, long arg_mth, transaction arg_sqlca)
- end prototypes
- global function decimal f_amt (long arg_accsetid, string arg_subid, string arg_str, long arg_mth, transaction arg_sqlca);//f_getsubfromtable(string arg_subid,string arg_str)
- //科目余额表取数
- //arg_subid:科目名称
- //arg_str:类型串(年初余额,期初余额,本期累计,期末余额,本年累计等等)
- Decimal{2} rst_amt, year_amt = 0
- Int ii_dcflag
- Long tmp_year
- Long ll_length_subid
- Boolean if_sameyear = FALSE
- tmp_year = Long(Left(String(arg_mth),4)) * 100
- IF Left(String(arg_mth),4) = Left(String(sys_startyearmon),4) THEN
- if_sameyear = TRUE
- ELSE
- if_sameyear = FALSE
- END IF
- ll_length_subid = Len(arg_subid)
- SELECT dcflag INTO :ii_dcflag FROM cw_subject
- WHERE accsetid = :arg_accsetid
- AND subid = :arg_subid USING arg_sqlca;
- IF arg_sqlca.SQLCode <> 0 THEN
- ii_dcflag = 1
- END IF
- rst_amt = 0
- year_amt = 0
- CHOOSE CASE arg_str
- CASE '本期借方'
- SELECT sum(debit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- CASE '本期贷方'
- SELECT sum(credit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- CASE '年初余额'
- IF ii_dcflag = 1 THEN
- SELECT sum(ybdebit) - sum(ybcredit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(ybcredit) - sum(ybdebit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- END IF
- CASE '期初余额'
- IF ii_dcflag = 1 THEN
- SELECT sum(bdebit) - sum(bcredit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(bcredit) - sum(bdebit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- END IF
- CASE '本期累计'
- IF ii_dcflag = 1 THEN
- SELECT sum(debit) - sum(credit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(credit) - sum(debit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- END IF
- CASE '期末余额'
- IF ii_dcflag = 1 THEN
- SELECT sum(edebit) - sum(ecredit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(ecredit) - sum(edebit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- END IF
- CASE '本年累计'
- IF ii_dcflag = 1 THEN
- SELECT sum(ydebit) - sum(ycredit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(ycredit) - sum(ydebit) INTO :rst_amt FROM cw_balance
- WHERE accsetid = :arg_accsetid
- AND subaccsetid = 0
- AND yearmon = :arg_mth
- AND subid = :arg_subid USING arg_sqlca;
- END IF
-
- CASE '本期累计[损益]'
- IF ii_dcflag = 1 THEN
- SELECT sum(credit) - sum(debit) INTO :rst_amt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :arg_accsetid
- AND cw_credence.postflag = 1
- AND left(cw_credencemx.subid,:ll_length_subid) = :arg_subid
- AND cw_credence.cmonth = :arg_mth
- AND (cw_credence.readtype = 100 ) USING arg_sqlca;
- ELSE
- SELECT sum(debit) - sum(credit) INTO :rst_amt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :arg_accsetid
- AND cw_credence.postflag = 1
- AND left(cw_credencemx.subid,:ll_length_subid) = :arg_subid
- AND cw_credence.cmonth = :arg_mth
- AND (cw_credence.readtype = 100 ) USING arg_sqlca;
- END IF
-
- CASE '本年累计[损益]'
- IF ii_dcflag = 1 THEN
- SELECT sum(credit) - sum(debit) INTO :rst_amt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :arg_accsetid
- AND cw_credence.postflag = 1
- AND left(cw_credencemx.subid,:ll_length_subid) = :arg_subid
- AND cw_credence.cmonth - :tmp_year <= 12
- AND cw_credence.cmonth - :tmp_year >= 1
- AND cw_credence.cmonth <= :arg_mth
- AND (cw_credence.readtype = 100 ) USING arg_sqlca;
- ELSE
- SELECT sum(debit) - sum(credit) INTO :rst_amt FROM cw_credence,cw_credencemx
- WHERE cw_credence.accsetid = cw_credencemx.accsetid
- AND cw_credence.credid = cw_credencemx.credid
- AND cw_credence.accsetid = :arg_accsetid
- AND cw_credence.postflag = 1
- AND left(cw_credencemx.subid,:ll_length_subid) = :arg_subid
- AND cw_credence.cmonth - :tmp_year <= 12
- AND cw_credence.cmonth - :tmp_year >= 1
- AND cw_credence.cmonth <= :arg_mth
- AND (cw_credence.readtype = 100 ) USING arg_sqlca;
- END IF
- END CHOOSE
- IF arg_sqlca.SQLCode = -1 THEN
- rst_amt = 0.00
- ELSEIF arg_sqlca.SQLCode = 100 THEN
- rst_amt = 0.00
- END IF
- IF IsNull(rst_amt) THEN
- rst_amt = 0.00
- END IF
- //**查询期初本年累计
- IF arg_str = '本年累计[损益]' AND if_sameyear THEN
- IF ii_dcflag = 1 THEN
- SELECT sum(plhavedone) INTO :year_amt FROM cw_InitBalance
- WHERE cw_InitBalance.accsetid = :arg_accsetid
- AND cw_InitBalance.subid = :arg_subid USING arg_sqlca;
- ELSE
- SELECT sum(plhavedone) INTO :year_amt FROM cw_InitBalance
- WHERE cw_InitBalance.accsetid = :arg_accsetid
- AND cw_InitBalance.subid = :arg_subid USING arg_sqlca;
- END IF
- END IF
- IF arg_sqlca.SQLCode = -1 THEN
- year_amt = 0.00
- ELSEIF arg_sqlca.SQLCode = 100 THEN
- year_amt = 0.00
- END IF
- IF IsNull(year_amt) THEN
- year_amt = 0.00
- END IF
- //********************
- rst_amt = rst_amt + year_amt
- RETURN rst_amt
- end function
|