uf_warebalc_spt.srf 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. $PBExportHeader$uf_warebalc_spt.srf
  2. global type uf_warebalc_spt from function_object
  3. end type
  4. forward prototypes
  5. global function integer uf_warebalc_spt (integer arg_balctype, long arg_balcdateint, long arg_scid, long arg_sptid, datetime arg_balcdate, ref string arg_msg)
  6. end prototypes
  7. global function integer uf_warebalc_spt (integer arg_balctype, long arg_balcdateint, long arg_scid, long arg_sptid, datetime arg_balcdate, ref string arg_msg);Long rslt = 1,cnt
  8. DateTime balc_date,null_dt
  9. Long ls_balcdateint
  10. IF arg_balctype = 1 THEN
  11. ls_balcdateint = Year(Date(arg_balcdate)) * 10000 + Month(Date(arg_balcdate)) * 100 + Day(Date(arg_balcdate))
  12. balc_date = DateTime(Date(arg_balcdate),Time('23:59:59'))
  13. SELECT count(*) INTO :cnt
  14. FROM ow_wfjgbalc
  15. WHERE balcdate = :balc_date
  16. AND sptid = :arg_sptid
  17. AND scid = :arg_scid;
  18. IF cnt <> 0 THEN
  19. rslt = 0
  20. arg_msg = "外协商指定日期已进行过结存操作"
  21. GOTO ext
  22. END IF
  23. IF uf_spt_warebalc_check_inoutflag(arg_scid,arg_sptid,arg_balcdate,arg_msg) = 0 THEN
  24. rslt = 0
  25. GOTO ext
  26. END IF
  27. UPDATE ow_wfjgbalc
  28. SET balcdateint = :ls_balcdateint,
  29. balcdate = :arg_balcdate
  30. WHERE balcdateint = 0
  31. AND sptid = :arg_sptid
  32. AND scid = :arg_scid;
  33. IF sqlca.SQLCode <> 0 THEN
  34. rslt = 0
  35. arg_msg = "更新外协商结存标记失败. ~n 原因:"+sqlca.SQLErrText
  36. GOTO ext
  37. END IF
  38. INSERT INTO ow_wfjgbalc
  39. (balcdateint,
  40. sptid,
  41. mtrlid,
  42. bgqty,
  43. bgamt,
  44. inqty,
  45. inamt,
  46. thqty,
  47. thamt,
  48. outqty,
  49. outamt,
  50. reoutqty,
  51. reoutamt,
  52. balcqty,
  53. balcamt,
  54. status,
  55. woodcode,
  56. pcode,
  57. scid )
  58. SELECT 0,
  59. ow_wfjgbalc.sptid,
  60. ow_wfjgbalc.mtrlid,
  61. ow_wfjgbalc.balcqty,
  62. ow_wfjgbalc.balcamt,
  63. 0,
  64. 0,
  65. 0,
  66. 0,
  67. 0,
  68. 0,
  69. 0,
  70. 0,
  71. ow_wfjgbalc.balcqty,
  72. ow_wfjgbalc.balcamt,
  73. ow_wfjgbalc.status,
  74. ow_wfjgbalc.woodcode,
  75. ow_wfjgbalc.pcode,
  76. :arg_scid
  77. FROM ow_wfjgbalc
  78. WHERE ( (abs(ow_wfjgbalc.bgqty)+abs(ow_wfjgbalc.outqty)+abs(ow_wfjgbalc.inqty)+abs(ow_wfjgbalc.thqty)+abs(ow_wfjgbalc.reoutqty)+abs(ow_wfjgbalc.balcqty) <> 0) OR
  79. (abs(ow_wfjgbalc.bgamt)+ abs(ow_wfjgbalc.inamt)+abs(ow_wfjgbalc.thamt)+abs(ow_wfjgbalc.outamt)+abs(ow_wfjgbalc.reoutamt)+abs(ow_wfjgbalc.balcamt) <> 0) )
  80. AND ( ow_wfjgbalc.sptid = :arg_sptid )
  81. AND ( ow_wfjgbalc.balcdateint = :ls_balcdateint )
  82. And ( ow_wfjgbalc.scid = :arg_scid);
  83. IF sqlca.SQLCode <> 0 THEN
  84. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  85. rslt = 0
  86. GOTO ext
  87. END IF
  88. // 写入日表 upartbalc
  89. UPDATE ow_wfjg_out
  90. SET balcflag = 1 ,
  91. ow_wfjg_out.balcdateint = :ls_balcdateint
  92. WHERE ( ow_wfjg_out.flag = 1 ) AND
  93. ( ow_wfjg_out.balcflag = 0 ) AND
  94. ( ow_wfjg_out.sptid = :arg_sptid) AND
  95. ( ow_wfjg_out.balcdateint = 0 ) AND
  96. ( ow_wfjg_out.scid = :arg_scid);
  97. IF sqlca.SQLCode <> 0 THEN
  98. rslt = 0
  99. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  100. GOTO ext
  101. END IF
  102. UPDATE ow_wfjg_in
  103. SET balcflag = 1 ,
  104. ow_wfjg_in.balcdateint = :ls_balcdateint
  105. WHERE ( ow_wfjg_in.flag = 1 ) AND
  106. ( ow_wfjg_in.balcflag = 0 ) AND
  107. ( ow_wfjg_in.sptid = :arg_sptid ) AND
  108. ( ow_wfjg_in.balcdateint = 0 ) AND
  109. ( ow_wfjg_in.scid = :arg_scid);
  110. IF sqlca.SQLCode <> 0 THEN
  111. rslt = 0
  112. arg_msg = "结存操作失败 ~n原因:"+sqlca.SQLErrText
  113. GOTO ext
  114. END IF
  115. ELSE
  116. SELECT count(*) INTO :cnt FROM ow_wfjg_in
  117. WHERE flag = 1
  118. AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
  119. AND ( sptid = :arg_sptid )
  120. And ( scid = :arg_scid );
  121. IF sqlca.SQLCode <> 0 THEN
  122. rslt = 0
  123. arg_msg = '外协商反结存失败,查询进仓单结存日期后是否有单失败'
  124. GOTO ext
  125. END IF
  126. IF cnt > 0 THEN
  127. rslt = 0
  128. arg_msg = '外协商反结存失败,进仓单结存日期后已经有单审核,如果要反结存请将进仓单反审核'
  129. GOTO ext
  130. END IF
  131. cnt = 0
  132. SELECT count(*) INTO :cnt FROM ow_wfjg_out
  133. WHERE flag = 1
  134. AND ( balcdateint > :arg_balcdateint OR balcdateint = 0 )
  135. AND ( sptid = :arg_sptid )
  136. And ( scid = :arg_scid );
  137. IF sqlca.SQLCode <> 0 THEN
  138. rslt = 0
  139. arg_msg = '外协商反结存失败,查询出仓单结存日期后是否有单失败'
  140. GOTO ext
  141. END IF
  142. IF cnt > 0 THEN
  143. rslt = 0
  144. arg_msg = '外协商反结存失败,出仓单结存日期后已经有单审核,如果要反结存请将出仓单反审核'
  145. GOTO ext
  146. END IF
  147. // 写入日表 upartbalc
  148. UPDATE ow_wfjg_in
  149. SET balcflag = 0 ,
  150. ow_wfjg_in.balcdateint = 0
  151. WHERE ( ow_wfjg_in.flag = 1 ) AND
  152. ( ow_wfjg_in.balcflag = 1 ) AND
  153. ( ow_wfjg_in.sptid = :arg_sptid ) AND
  154. ( ow_wfjg_in.balcdateint = :arg_balcdateint ) AND
  155. ( ow_wfjg_in.scid = :arg_scid );
  156. IF sqlca.SQLCode <> 0 THEN
  157. rslt = 0
  158. arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
  159. GOTO ext
  160. END IF
  161. UPDATE ow_wfjg_out
  162. SET balcflag = 0 ,
  163. ow_wfjg_out.balcdateint = 0
  164. WHERE ( ow_wfjg_out.flag = 1 ) AND
  165. ( ow_wfjg_out.balcflag = 1 ) AND
  166. ( ow_wfjg_out.sptid = :arg_sptid ) AND
  167. ( ow_wfjg_out.balcdateint = :arg_balcdateint ) AND
  168. ( ow_wfjg_out.scid = :arg_scid );
  169. IF sqlca.SQLCode <> 0 THEN
  170. rslt = 0
  171. arg_msg = "反结存操作失败 ~n原因:"+sqlca.SQLErrText
  172. GOTO ext
  173. END IF
  174. //-----------------------------------------
  175. DELETE FROM ow_wfjgbalc
  176. WHERE balcdateint = 0
  177. AND sptid = :arg_sptid
  178. AND scid = :arg_scid;
  179. IF sqlca.SQLCode <> 0 THEN
  180. arg_msg = '反结存操作 ~n原因:'+sqlca.SQLErrText
  181. rslt = 0
  182. GOTO ext
  183. END IF
  184. SetNull(null_dt)
  185. UPDATE ow_wfjgbalc
  186. SET balcdateint = 0,
  187. balcdate = :null_dt
  188. WHERE balcdateint = :arg_balcdateint
  189. AND sptid = :arg_sptid
  190. AND scid = :arg_scid ;
  191. IF sqlca.SQLCode <> 0 THEN
  192. rslt = 0
  193. arg_msg = "更新外协商结存标记失败. ~n 原因:"+sqlca.SQLErrText
  194. GOTO ext
  195. END IF
  196. END IF
  197. ext:
  198. IF rslt = 0 THEN
  199. ROLLBACK;
  200. ELSE
  201. COMMIT;
  202. END IF
  203. RETURN rslt
  204. end function