f_init_astbalance.srf 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. $PBExportHeader$f_init_astbalance.srf
  2. $PBExportComments$初始化固定资产累计折旧
  3. global type f_init_astbalance from function_object
  4. end type
  5. forward prototypes
  6. global function integer f_init_astbalance (integer arg_inittype, long arg_yearmon, long arg_nextyearmon, ref string arg_msg, boolean arg_ifcommit)
  7. end prototypes
  8. global function integer f_init_astbalance (integer arg_inittype, long arg_yearmon, long arg_nextyearmon, ref string arg_msg, boolean arg_ifcommit);//初始化固定资产累计折旧
  9. //f_cmp_astbalance(arg_inittype,arg_yearmon,arg_nextyearmon,arg_msg,arg_ifcommit)
  10. //arg_inittype 1:初始化,0:反初始化
  11. //
  12. Int rslt = 1
  13. DateTime firstdate
  14. IF arg_inittype = 1 THEN
  15. IF arg_yearmon = arg_nextyearmon THEN //启用帐套
  16. firstdate = f_rst_mon_1st(1,arg_yearmon)
  17. INSERT INTO cw_astbalance(accsetid,assetcardid,yearmon,totalwl,currwl,usedvalue,
  18. deprrate,deprvalue,bastdebit,yastdebit,yastcredit,astdebit,astcredit,bdprcredit,
  19. ydprdebit,ydprcredit,dprdebit,dprcredit)
  20. SELECT :sys_accsetid,assetcardid,:arg_yearmon,usedall + 1,0,usedvalue,
  21. 0,0,rawvalue,0,0,0,0,usedvalue,
  22. 0,0,0,0 FROM cw_assetcard
  23. WHERE ( cw_assetcard.clearflag = 0 )
  24. AND ( cw_assetcard.startdate < :firstdate )
  25. AND ( cw_assetcard.accsetid = :sys_accsetid )
  26. And ( cw_assetcard.Initflag = 1 ) ;
  27. IF sqlca.SQLCode <> 0 THEN
  28. arg_msg = '初始化期初固定资产累计折旧失败 ~n'+sqlca.SQLErrText
  29. rslt = 0
  30. GOTO ext
  31. END IF
  32. ELSE //初始化下月
  33. IF Right(String(arg_yearmon),2) = '12' THEN
  34. INSERT INTO cw_astbalance
  35. (accsetid,
  36. assetcardid,
  37. yearmon,
  38. totalwl,
  39. currwl,
  40. usedvalue,
  41. deprrate,
  42. deprvalue,
  43. bastdebit,
  44. yastdebit,
  45. yastcredit,
  46. astdebit,
  47. astcredit,
  48. bdprcredit,
  49. ydprdebit,
  50. ydprcredit,
  51. dprdebit,
  52. dprcredit)
  53. SELECT
  54. :sys_accsetid,
  55. cw_astbalance.assetcardid,
  56. :arg_nextyearmon,
  57. cw_astbalance.totalwl + 1,
  58. 0,
  59. cw_astbalance.usedvalue + cw_astbalance.deprvalue,
  60. 0,
  61. 0,
  62. case cw_assetcard.clearflag when 0 then cw_assetcard.rawvalue
  63. else cw_astbalance.bastdebit + cw_astbalance.astdebit - cw_astbalance.astcredit end,
  64. 0,
  65. 0,
  66. 0,
  67. 0,
  68. cw_astbalance.bdprcredit - cw_astbalance.dprdebit + cw_astbalance.dprcredit,
  69. 0,
  70. 0,
  71. 0,
  72. 0
  73. FROM cw_astbalance,cw_assetcard
  74. WHERE ( cw_astbalance.accsetid = cw_assetcard.accsetid )
  75. and ( cw_astbalance.assetcardid = cw_assetcard.assetcardid )
  76. and ( cw_astbalance.yearmon = :arg_yearmon )
  77. And ( cw_astbalance.accsetid = :sys_accsetid );
  78. ELSE
  79. INSERT INTO cw_astbalance
  80. (accsetid,
  81. assetcardid,
  82. yearmon,
  83. totalwl,
  84. currwl,
  85. usedvalue,
  86. deprrate,
  87. deprvalue,
  88. bastdebit,
  89. yastdebit,
  90. yastcredit,
  91. astdebit,
  92. astcredit,
  93. bdprcredit,
  94. ydprdebit,
  95. ydprcredit,
  96. dprdebit,
  97. dprcredit)
  98. SELECT :sys_accsetid,
  99. cw_astbalance.assetcardid,
  100. :arg_nextyearmon,
  101. cw_astbalance.totalwl + 1,
  102. 0,
  103. cw_astbalance.usedvalue + cw_astbalance.deprvalue,
  104. 0,
  105. 0,
  106. case cw_assetcard.clearflag when 0 then cw_assetcard.rawvalue
  107. else cw_astbalance.bastdebit + cw_astbalance.astdebit - cw_astbalance.astcredit end ,
  108. cw_astbalance.yastdebit,
  109. cw_astbalance.yastcredit,
  110. 0,
  111. 0,
  112. cw_astbalance.bdprcredit - cw_astbalance.dprdebit + cw_astbalance.dprcredit,
  113. cw_astbalance.ydprdebit,
  114. cw_astbalance.ydprcredit,
  115. 0,
  116. 0
  117. FROM cw_astbalance,cw_assetcard
  118. WHERE ( cw_astbalance.accsetid = cw_assetcard.accsetid )
  119. and ( cw_astbalance.assetcardid = cw_assetcard.assetcardid )
  120. and ( cw_astbalance.yearmon = :arg_yearmon )
  121. And ( cw_astbalance.accsetid = :sys_accsetid );
  122. END IF
  123. IF sqlca.SQLCode <> 0 THEN
  124. arg_msg = '初始化下月:'+String(arg_nextyearmon)+'期初固定资产累计折旧失败 ~n'+sqlca.SQLErrText
  125. rslt = 0
  126. GOTO ext
  127. END IF
  128. END IF
  129. ELSE
  130. DELETE cw_astbalance Where accsetid = :sys_accsetid AND yearmon = :arg_yearmon;
  131. IF sqlca.SQLCode <> 0 THEN
  132. arg_msg = '删除固定资产本期累计折旧失败'
  133. rslt = 0
  134. GOTO ext
  135. END IF
  136. END IF
  137. ext:
  138. IF rslt = 0 THEN
  139. ROLLBACK;
  140. ELSEIF rslt = 1 AND arg_ifcommit THEN
  141. COMMIT;
  142. END IF
  143. RETURN rslt
  144. end function