uo_inware_ll.sru 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. $PBExportHeader$uo_inware_ll.sru
  2. forward
  3. global type uo_inware_ll from uo_inware
  4. end type
  5. end forward
  6. global type uo_inware_ll from uo_inware
  7. end type
  8. global uo_inware_ll uo_inware_ll
  9. type variables
  10. end variables
  11. forward prototypes
  12. public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
  13. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
  14. end prototypes
  15. public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  16. Long cnt = 0,i
  17. uo_saletask_ll uo_task
  18. uo_task = Create uo_saletask_ll
  19. uo_task.commit_transaction = commit_transaction
  20. uo_sqlpro uo_pro
  21. uo_pro = Create uo_sqlpro
  22. uo_pro.commit_transaction = commit_transaction
  23. IF storageid = 0 THEN
  24. rslt = 0
  25. arg_msg = '没有正确的仓库'
  26. GOTO ext
  27. END IF
  28. IF billtype <> 9 THEN
  29. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  30. rslt = 0
  31. GOTO ext
  32. END IF
  33. END IF
  34. String ls_storagename
  35. SELECT storagename
  36. INTO :ls_storagename
  37. FROM u_storage
  38. Where storageid = :storageid Using commit_transaction ;
  39. IF commit_transaction.SQLCode <> 0 THEN
  40. rslt = 0
  41. arg_msg = "查询操作失败,仓库"
  42. GOTO ext
  43. END IF
  44. //检查是否有该仓库的建立权限
  45. IF sys_user_storagestr_audit <> '0' THEN
  46. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  47. rslt = 0
  48. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许审核该仓库的单据'
  49. GOTO ext
  50. END IF
  51. END IF
  52. //
  53. IF inwareid = 0 THEN
  54. rslt = 0
  55. arg_msg = "没有进仓审核对象"
  56. GOTO ext
  57. END IF
  58. IF flag = 1 THEN
  59. rslt = 0
  60. arg_msg = "单据已经审核"
  61. GOTO ext
  62. END IF
  63. UPDATE u_inware
  64. SET auditingrep = :publ_operator,
  65. auditingdate = getdate(),
  66. flag = 1
  67. WHERE u_inware.inwareid = :inwareid
  68. AND flag = 0
  69. And scid = :scid Using commit_transaction;
  70. IF commit_transaction.SQLCode <> 0 THEN
  71. rslt = 0
  72. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  73. GOTO ext
  74. ELSEIF commit_transaction.SQLNRows = 0 THEN
  75. rslt = 0
  76. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  77. GOTO ext
  78. END IF
  79. FOR i = 1 To it_mxbt
  80. IF f_power_ind(2203,sys_msg_pow) And Not sys_power_issuper THEN
  81. IF inwaremx[i].cost = 0 THEN
  82. rslt = 0
  83. arg_msg = '行:'+String(i)+',没有单价,请检查'
  84. GOTO ext
  85. END IF
  86. END IF
  87. Long ll_sptid
  88. IF billtype = 1 Or billtype = 4 THEN
  89. ll_sptid = 0
  90. ELSE
  91. ll_sptid = inwaremx[i].sptid
  92. END IF
  93. IF sys_option_inout_procedure = 0 THEN
  94. IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
  95. storageid,inwaremx[i].plancode,inwaremx[i].status,&
  96. inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
  97. ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
  98. inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,&
  99. inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
  100. arg_msg = '更新行:'+String(i)+','+arg_msg
  101. rslt = 0
  102. GOTO ext
  103. END IF
  104. ELSE
  105. IF p_update_mtrlware_ws(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
  106. storageid,inwaremx[i].plancode,inwaremx[i].status,&
  107. inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
  108. ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
  109. inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
  110. arg_msg = '更新行:'+String(i)+','+arg_msg
  111. rslt = 0
  112. GOTO ext
  113. END IF
  114. END IF
  115. IF billtype = 5 And inwaremx[i].relid > 0 THEN
  116. IF uo_task.addmxcmpl_in(inwaremx[i].relid,inwaremx[i].relprintid,&
  117. inwaremx[i].uqty,arg_msg,False) <> 1 THEN
  118. rslt = 0
  119. GOTO ext
  120. END IF
  121. END IF
  122. NEXT
  123. flag = 1
  124. ext:
  125. IF rslt = 0 THEN
  126. ROLLBACK Using commit_transaction;
  127. ELSEIF rslt = 1 And arg_ifcommit THEN
  128. COMMIT Using commit_transaction;
  129. END IF
  130. Destroy uo_task
  131. Destroy uo_pro
  132. RETURN rslt
  133. end function
  134. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  135. Long cnt = 0,i
  136. uo_sqlpro uo_pro
  137. uo_pro = Create uo_sqlpro
  138. uo_pro.commit_transaction = commit_transaction
  139. uo_saletask_ll uo_task
  140. uo_task = Create uo_saletask_ll
  141. uo_task.commit_transaction = commit_transaction
  142. DateTime null_dt
  143. SetNull(null_dt)
  144. IF storageid = 0 THEN
  145. rslt = 0
  146. arg_msg = '没有正确的仓库'
  147. GOTO ext
  148. END IF
  149. IF billtype <> 9 THEN
  150. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  151. rslt = 0
  152. GOTO ext
  153. END IF
  154. END IF
  155. String ls_storagename
  156. SELECT storagename
  157. INTO :ls_storagename
  158. FROM u_storage
  159. Where storageid = :storageid Using commit_transaction ;
  160. IF commit_transaction.SQLCode <> 0 THEN
  161. rslt = 0
  162. arg_msg = "查询操作失败,仓库"
  163. GOTO ext
  164. END IF
  165. //检查是否有该仓库的建立权限
  166. IF sys_user_storagestr_audit <> '0' THEN
  167. IF Pos(sys_user_storagestr_audit,','+String(storageid)+',') <= 0 THEN
  168. rslt = 0
  169. arg_msg = '没有仓库: '+ls_storagename+' 的审核权限,不允许撤审该仓库的单据'
  170. GOTO ext
  171. END IF
  172. END IF
  173. //
  174. IF inwareid = 0 THEN
  175. rslt = 0
  176. arg_msg = "没有出仓撤审对象"
  177. GOTO ext
  178. END IF
  179. IF ctmint > 0 THEN
  180. arg_msg = '单据已截数,不能操作'
  181. rslt = 0
  182. GOTO ext
  183. END IF
  184. IF flag = 0 THEN
  185. rslt = 0
  186. arg_msg = "单据还未审核"
  187. GOTO ext
  188. END IF
  189. IF balcflag = 1 THEN
  190. rslt = 0
  191. arg_msg = "单据已经结存,不能撤审"
  192. GOTO ext
  193. END IF
  194. UPDATE u_inware
  195. SET auditingrep = '',
  196. auditingdate = :null_dt,
  197. flag = 0
  198. WHERE u_inware.inwareid = :inwareid
  199. And flag = 1 And scid = :scid Using commit_transaction;
  200. IF commit_transaction.SQLCode <> 0 THEN
  201. rslt = 0
  202. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  203. GOTO ext
  204. ELSEIF commit_transaction.SQLNRows = 0 THEN
  205. rslt = 0
  206. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  207. GOTO ext
  208. END IF
  209. FOR i = 1 To it_mxbt
  210. Long ll_sptid
  211. IF billtype = 1 Or billtype = 4 THEN
  212. ll_sptid = 0
  213. ELSE
  214. ll_sptid = inwaremx[i].sptid
  215. END IF
  216. IF sys_option_inout_procedure = 0 THEN
  217. IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
  218. storageid,inwaremx[i].plancode,inwaremx[i].status,&
  219. 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
  220. ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
  221. inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,&
  222. inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
  223. arg_msg = '更新行:'+String(i)+','+arg_msg
  224. rslt = 0
  225. GOTO ext
  226. END IF
  227. ELSE
  228. IF uo_pro.p_inware_update_mtrlware(scid,inwareid,inwaremx[i].printid,inwaremx[i].mtrlid,&
  229. inwaremx[i].mtrlcode,storageid,inwaremx[i].plancode,inwaremx[i].status,0 - inwaremx[i].qty,&
  230. 0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,ll_sptid,inwaremx[i].dxflag,&
  231. inwaremx[i].woodcode,inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,arg_msg) = 0 THEN
  232. arg_msg = '更新行:'+String(i)+','+arg_msg
  233. rslt = 0
  234. GOTO ext
  235. END IF
  236. END IF
  237. IF billtype = 5 And inwaremx[i].relid > 0 THEN
  238. IF uo_task.addmxcmpl_in(inwaremx[i].relid,inwaremx[i].relprintid,&
  239. 0 - inwaremx[i].uqty,arg_msg,False) <> 1 THEN
  240. rslt = 0
  241. GOTO ext
  242. END IF
  243. END IF
  244. NEXT
  245. flag = 0
  246. ext:
  247. IF rslt = 0 THEN
  248. ROLLBACK Using commit_transaction;
  249. ELSEIF rslt = 1 And arg_ifcommit THEN
  250. COMMIT Using commit_transaction;
  251. END IF
  252. Destroy uo_task
  253. Destroy uo_pro
  254. RETURN rslt
  255. end function
  256. on uo_inware_ll.create
  257. call super::create
  258. end on
  259. on uo_inware_ll.destroy
  260. call super::destroy
  261. end on