f_balc_astbalance.srf 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. $PBExportHeader$f_balc_astbalance.srf
  2. $PBExportComments$固定资产累计折旧登帐
  3. global type f_balc_astbalance from function_object
  4. end type
  5. forward prototypes
  6. global function integer f_balc_astbalance (integer arg_balctype, long arg_yearmon, ref string arg_msg, boolean arg_ifcommit)
  7. end prototypes
  8. global function integer f_balc_astbalance (integer arg_balctype, long arg_yearmon, ref string arg_msg, boolean arg_ifcommit);//固定资产累计折旧登帐
  9. //f_balc_astbalance(arg_balctype,arg_yearmon,arg_msg,arg_ifcommit)
  10. //arg_balctype 1:登帐,0:反登帐
  11. Int rslt = 1
  12. datetime ldt_firstdate,ldt_enddate
  13. ldt_firstdate = DateTime(f_rst_mon_1st(1,sys_curyearmon))
  14. ldt_enddate = DateTime(f_rst_mon_1st(3,sys_curyearmon))
  15. IF arg_balctype = 1 THEN
  16. UPDATE cw_astbalance
  17. SET cw_astbalance.ydprcredit = cw_astbalance.ydprcredit + cw_astbalance.deprvalue,
  18. cw_astbalance.dprcredit = cw_astbalance.deprvalue
  19. from cw_astbalance,cw_assetcard
  20. Where cw_astbalance.yearmon = :arg_yearmon
  21. and cw_astbalance.accsetid = :sys_accsetid
  22. and cw_astbalance.assetcardid = cw_assetcard.assetcardid
  23. and cw_astbalance.accsetid = cw_assetcard.accsetid
  24. and cw_assetcard.clearflag = 0;
  25. IF sqlca.SQLCode <> 0 THEN
  26. arg_msg = '登帐时更新未清理固定资产累计折旧失败,'+sqlca.sqlerrtext
  27. rslt = 0
  28. GOTO ext
  29. END IF
  30. //更新清理
  31. UPDATE cw_astbalance
  32. SET cw_astbalance.ydprdebit = cw_astbalance.ydprdebit + cw_astbalance.bdprcredit,
  33. cw_astbalance.dprdebit = cw_astbalance.dprdebit + cw_astbalance.bdprcredit,
  34. cw_astbalance.yastcredit = cw_astbalance.yastcredit + cw_astbalance.bastdebit,
  35. cw_astbalance.astcredit = cw_astbalance.astcredit + cw_astbalance.bastdebit
  36. from cw_astbalance,cw_assetcard,cw_astclear
  37. Where cw_astbalance.yearmon = :arg_yearmon
  38. and cw_astbalance.accsetid = :sys_accsetid
  39. and cw_astbalance.assetcardid = cw_assetcard.assetcardid
  40. and cw_astbalance.accsetid = cw_assetcard.accsetid
  41. and cw_astclear.assetcardid = cw_assetcard.assetcardid
  42. and cw_astclear.accsetid = cw_assetcard.accsetid
  43. and cw_assetcard.clearflag = 1
  44. and cw_astclear.cleardate >= :ldt_firstdate
  45. and cw_astclear.cleardate <= :ldt_enddate;
  46. IF sqlca.SQLCode <> 0 THEN
  47. arg_msg = '登帐时更新本月清理固定资产累计折旧失败,'+sqlca.sqlerrtext
  48. rslt = 0
  49. GOTO ext
  50. END IF
  51. ELSE
  52. UPDATE cw_astbalance
  53. SET cw_astbalance.ydprcredit = cw_astbalance.ydprcredit - cw_astbalance.deprvalue,
  54. cw_astbalance.dprcredit = 0
  55. from cw_astbalance,cw_assetcard
  56. Where cw_astbalance.yearmon = :arg_yearmon
  57. and cw_astbalance.accsetid = :sys_accsetid
  58. and cw_astbalance.assetcardid = cw_assetcard.assetcardid
  59. and cw_astbalance.accsetid = cw_assetcard.accsetid
  60. and cw_assetcard.clearflag = 0;
  61. IF sqlca.SQLCode <> 0 THEN
  62. arg_msg = '反登帐时更新未清理固定资产累计折旧失败,'+sqlca.sqlerrtext
  63. rslt = 0
  64. GOTO ext
  65. END IF
  66. //更新清理
  67. UPDATE cw_astbalance
  68. SET cw_astbalance.ydprdebit = cw_astbalance.ydprdebit - cw_astbalance.bdprcredit,
  69. cw_astbalance.dprdebit = cw_astbalance.dprdebit - cw_astbalance.bdprcredit,
  70. cw_astbalance.yastcredit = cw_astbalance.yastcredit - cw_astbalance.bastdebit,
  71. cw_astbalance.astcredit = cw_astbalance.astcredit - cw_astbalance.bastdebit
  72. from cw_astbalance,cw_assetcard,cw_astclear
  73. Where cw_astbalance.yearmon = :arg_yearmon
  74. and cw_astbalance.accsetid = :sys_accsetid
  75. and cw_astbalance.assetcardid = cw_assetcard.assetcardid
  76. and cw_astbalance.accsetid = cw_assetcard.accsetid
  77. and cw_astclear.assetcardid = cw_assetcard.assetcardid
  78. and cw_astclear.accsetid = cw_assetcard.accsetid
  79. and cw_assetcard.clearflag = 1
  80. and cw_astclear.cleardate >= :ldt_firstdate
  81. and cw_astclear.cleardate <= :ldt_enddate;
  82. IF sqlca.SQLCode <> 0 THEN
  83. arg_msg = '反登帐时更新已清理固定资产累计折旧失败,'+sqlca.sqlerrtext
  84. rslt = 0
  85. GOTO ext
  86. END IF
  87. END IF
  88. ext:
  89. IF rslt = 0 THEN
  90. ROLLBACK;
  91. ELSEIF rslt = 1 AND arg_ifcommit THEN
  92. COMMIT;
  93. END IF
  94. RETURN rslt
  95. end function