f_rst_spt_bbala.srf 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. $PBExportHeader$f_rst_spt_bbala.srf
  2. global type f_rst_spt_bbala from function_object
  3. end type
  4. forward prototypes
  5. 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)
  6. end prototypes
  7. 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);//返回项目总帐期初数
  8. Decimal rst_spt_amt
  9. Decimal init_spt_debit,cur_spt_debit
  10. Decimal init_spt_credit,cur_spt_credit
  11. SELECT isnull(sum(uv_dept_bala.debit),0),
  12. isnull(sum(uv_dept_bala.credit),0)
  13. INTO :cur_spt_debit,:cur_spt_credit
  14. FROM uv_dept_bala,cw_subject
  15. WHERE ( uv_dept_bala.accsetid = cw_subject.accsetid ) AND
  16. ( uv_dept_bala.subid = cw_subject.subid ) AND
  17. ( cw_subject.detailflag = 1 ) AND
  18. ( uv_dept_bala.accsetid = :arg_accsetid ) AND
  19. ( uv_dept_bala.cmonth < :arg_cmonth ) AND
  20. ( uv_dept_bala.subid LIKE :arg_subid ) AND
  21. ( uv_dept_bala.sptid = :arg_sptid ) AND
  22. ( uv_dept_bala.postflag = :arg_postflag OR :arg_postflag = -1 );
  23. IF sqlca.SQLCode <> 0 THEN
  24. cur_spt_debit = 0
  25. cur_spt_credit = 0
  26. END IF
  27. SELECT isnull(uv_spt_init.debit,0),
  28. isnull(uv_spt_init.credit,0)
  29. INTO :init_spt_debit,:init_spt_credit
  30. FROM uv_spt_init,cw_subject
  31. WHERE ( uv_spt_init.accsetid = cw_subject.accsetid ) AND
  32. ( uv_spt_init.subid = cw_subject.subid ) AND
  33. ( cw_subject.detailflag = 1 ) AND
  34. ( uv_spt_init.accsetid = :arg_accsetid ) AND
  35. ( uv_spt_init.subid LIKE :arg_subid ) AND
  36. ( uv_spt_init.sptid = :arg_sptid ) ;
  37. IF sqlca.SQLCode <> 0 THEN
  38. init_spt_debit = 0
  39. init_spt_credit = 0
  40. END IF
  41. IF IsNull(cur_spt_debit) THEN cur_spt_debit = 0
  42. IF IsNull(init_spt_debit) THEN init_spt_debit = 0
  43. IF IsNull(cur_spt_credit) THEN cur_spt_credit = 0
  44. IF IsNull(init_spt_credit) THEN init_spt_credit = 0
  45. IF arg_dcflag = 1 THEN
  46. rst_spt_amt = (cur_spt_debit + init_spt_debit) - (cur_spt_credit - init_spt_credit)
  47. ELSE
  48. rst_spt_amt = (cur_spt_credit - init_spt_credit) - (cur_spt_debit + init_spt_debit)
  49. END IF
  50. RETURN rst_spt_amt
  51. end function