f_check_credit.srf 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. $PBExportHeader$f_check_credit.srf
  2. global type f_check_credit from function_object
  3. end type
  4. forward prototypes
  5. 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)
  6. 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)
  7. end prototypes
  8. 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
  9. Long ll_curyearmon
  10. Decimal ld_bdebit,ld_bcredit,ld_BRawDebit,ld_BRawCredit
  11. Decimal ld_debit,ld_credit,ld_RawDebit,ld_RawCredit
  12. decimal ld_balance,ld_rawbalance
  13. IF Not (Left(arg_subid,3) = '101' OR Left(arg_subid,3) = '102') THEN
  14. rslt = 1
  15. GOTO ext
  16. END IF
  17. ll_curyearmon = sys_curyearmon
  18. SELECT bdebit,bcredit,BRawDebit,BRawCredit
  19. INTO :ld_bdebit,:ld_bcredit,:ld_BRawDebit,:ld_BRawCredit
  20. FROM cw_Balance
  21. WHERE accsetid = :sys_accsetid
  22. AND subid = :arg_subid
  23. AND YearMon = :ll_curyearmon;
  24. IF sqlca.SQLCode = -1 THEN
  25. rslt = 0
  26. arg_msg = '查询科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'期初余额失败'
  27. GOTO ext
  28. END IF
  29. SELECT sum(debit),sum(credit),sum(RawDebit),sum(RawCredit)
  30. INTO :ld_debit,:ld_credit,:ld_RawDebit,:ld_RawCredit
  31. FROM cw_credence,cw_credencemx
  32. WHERE cw_credence.accsetid = cw_credencemx.accsetid
  33. and cw_credence.credid = cw_credencemx.credid
  34. and cw_credence.accsetid = :sys_accsetid
  35. AND cw_credencemx.subid = :arg_subid
  36. AND cw_credence.cmonth = :ll_curyearmon
  37. group by cw_credencemx.subid;
  38. IF sqlca.SQLCode = -1 THEN
  39. rslt = 0
  40. arg_msg = '查询科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'本期发生额失败'
  41. GOTO ext
  42. END IF
  43. ld_balance = ld_bdebit - ld_bcredit + ld_debit - ld_credit
  44. ld_Rawbalance = ld_bRawdebit - ld_bRawcredit + ld_Rawdebit - ld_Rawcredit
  45. if ld_balance < 0 or ld_Rawbalance < 0 then
  46. arg_msg = '注意,科目:'+arg_subid+'月份:'+string(ll_curyearmon)+'余额在贷方'
  47. rslt = 0
  48. goto ext
  49. end if
  50. ext:
  51. RETURN rslt
  52. end function
  53. 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
  54. Decimal ld_bdebit,ld_bcredit,ld_brawdebit,ld_brawcredit
  55. Decimal ld_debit,ld_credit,ld_rawdebit,ld_rawcredit
  56. decimal ld_balance,ld_rawbalance
  57. if not (left(arg_subid,3) = '101' or left(arg_subid,3) = '102') then
  58. rslt = 1
  59. goto ext
  60. end if
  61. //查期初余额
  62. SELECT bdebit,bcredit,brawdebit,brawcredit
  63. INTO :ld_bdebit,:ld_bcredit,:ld_brawdebit,:ld_brawcredit
  64. FROM cw_balance
  65. WHERE accsetid = :sys_accsetid
  66. AND yearmon = :sys_curyearmon
  67. AND subid = :arg_subid;
  68. IF sqlca.SQLCode = -1 THEN
  69. arg_msg = '查询科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'期初余额失败'
  70. rslt = 0
  71. GOTO ext
  72. END IF
  73. //查本期发生额
  74. SELECT sum(debit),sum(credit),sum(rawdebit),sum(rawcredit)
  75. INTO :ld_debit,:ld_credit,:ld_rawdebit,:ld_rawcredit
  76. FROM cw_credence,cw_credencemx
  77. WHERE cw_credence.accsetid = cw_credencemx.accsetid
  78. AND cw_credence.credid = cw_credencemx.credid
  79. AND cw_credence.accsetid = :sys_accsetid
  80. AND cw_credence.cmonth = :sys_curyearmon
  81. AND cw_credence.credid <> :arg_credid
  82. AND cw_credencemx.subid = :arg_subid
  83. Group By cw_credencemx.subid;
  84. IF sqlca.SQLCode = -1 THEN
  85. arg_msg = '查询科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期发生额失败'
  86. rslt = 0
  87. GOTO ext
  88. END IF
  89. ld_balance = ld_bdebit - ld_bcredit + ld_debit - ld_credit + arg_debit - arg_credit
  90. ld_rawbalance = ld_brawdebit - ld_brawcredit + ld_rawdebit - ld_rawcredit + arg_rawdebit - arg_rawcredit
  91. if ld_balance < 0 then
  92. arg_msg = '注意,科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期余额在贷方'
  93. rslt = 0
  94. GOTO ext
  95. end if
  96. if ld_rawbalance < 0 then
  97. arg_msg = '注意,科目:'+arg_subid+'月份:'+String(sys_curyearmon)+'本期外币余额在贷方'
  98. rslt = 0
  99. GOTO ext
  100. end if
  101. ext:
  102. RETURN rslt
  103. end function