uo_inware_skl.sru 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. $PBExportHeader$uo_inware_skl.sru
  2. forward
  3. global type uo_inware_skl from uo_inware
  4. end type
  5. end forward
  6. global type uo_inware_skl from uo_inware
  7. end type
  8. global uo_inware_skl uo_inware_skl
  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);Long rslt = 1,cnt = 0,i
  16. Dec new_noallocqty = 0
  17. Long ls_newid
  18. uo_order_ml uo_order
  19. uo_order = CREATE uo_order_ml
  20. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  21. rslt = 0
  22. GOTO ext
  23. END IF
  24. IF inwareid = 0 THEN
  25. rslt = 0
  26. arg_msg = "没有审核对象"
  27. GOTO ext
  28. END IF
  29. IF billtype <> 9 THEN
  30. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  31. rslt = 0
  32. GOTO ext
  33. END IF
  34. END IF
  35. IF it_newbegin OR it_updatebegin THEN
  36. rslt = 0
  37. arg_msg = "编辑状态下不可以执行审核"
  38. GOTO ext
  39. END IF
  40. IF flag = 1 THEN
  41. rslt = 0
  42. arg_msg = "单据已经审核"
  43. GOTO ext
  44. END IF
  45. UPDATE u_inware
  46. SET auditingrep = :publ_operator,
  47. auditingdate = getdate(),
  48. flag = 1
  49. WHERE u_inware.inwareid = :inwareid
  50. AND flag = 0 AND scid = :scid USING commit_transaction;
  51. IF commit_transaction.SQLCode <> 0 THEN
  52. rslt = 0
  53. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  54. GOTO ext
  55. ELSEIF commit_transaction.SQLNRows = 0 THEN
  56. rslt = 0
  57. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  58. GOTO ext
  59. END IF
  60. FOR i = 1 TO it_mxbt
  61. IF f_power_ind(2203,sys_msg_pow) AND NOT sys_power_issuper THEN
  62. IF inwaremx[i].uprice = 0 THEN
  63. rslt = 0
  64. arg_msg = '行:'+String(i)+',没有单价,请检查'
  65. GOTO ext
  66. END IF
  67. END IF
  68. Long ll_sptid
  69. IF billtype = 1 OR billtype = 4 THEN
  70. ll_sptid = 0
  71. ELSE
  72. ll_sptid = inwaremx[i].sptid
  73. END IF
  74. IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
  75. storageid,inwaremx[i].plancode,inwaremx[i].status,&
  76. inwaremx[i].qty,inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
  77. ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
  78. inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
  79. arg_msg = '更新行:'+String(i)+','+arg_msg
  80. rslt = 0
  81. GOTO ext
  82. END IF
  83. IF inwaremx[i].relid > 0 THEN
  84. IF uo_order.addmxskl(scid,inwaremx[i].relid,inwaremx[i].qty,inwaremx[i].price * inwaremx[i].qty,arg_msg,FALSE) = 0 THEN
  85. arg_msg = '第'+string(i)+'行,'+arg_msg
  86. rslt = 0
  87. GOTO ext
  88. END IF
  89. END IF
  90. NEXT
  91. flag = 1
  92. ext:
  93. IF rslt = 0 THEN
  94. ROLLBACK USING commit_transaction;
  95. ELSEIF rslt = 1 AND arg_ifcommit THEN
  96. COMMIT USING commit_transaction;
  97. END IF
  98. DESTROY uo_order
  99. RETURN rslt
  100. end function
  101. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
  102. Dec new_noallocqty = 0
  103. Long ls_newid
  104. DateTime null_dt
  105. IF f_aps_mrp_cklock(scid,arg_msg) = 0 THEN
  106. rslt = 0
  107. GOTO ext
  108. END IF
  109. uo_order_ml uo_order
  110. uo_order = CREATE uo_order_ml
  111. SetNull(null_dt)
  112. IF inwareid = 0 THEN
  113. rslt = 0
  114. arg_msg = "没有审核对象"
  115. GOTO ext
  116. END IF
  117. IF billtype <> 9 THEN
  118. IF uof_check_warepdb_audit(storageid,arg_msg) = 0 THEN
  119. rslt = 0
  120. GOTO ext
  121. END IF
  122. END IF
  123. IF it_newbegin OR it_updatebegin THEN
  124. rslt = 0
  125. arg_msg = "编辑状态下不可以执行审核"
  126. GOTO ext
  127. END IF
  128. IF flag = 0 THEN
  129. rslt = 0
  130. arg_msg = "单据还未审核"
  131. GOTO ext
  132. END IF
  133. IF balcflag = 1 THEN
  134. rslt = 0
  135. arg_msg = "单据已经结存,不能撤审"
  136. GOTO ext
  137. END IF
  138. UPDATE u_inware
  139. SET auditingrep = '',
  140. auditingdate = :null_dt,
  141. flag = 0
  142. WHERE u_inware.inwareid = :inwareid
  143. AND flag = 1 AND scid = :scid USING commit_transaction;
  144. IF commit_transaction.SQLCode <> 0 THEN
  145. rslt = 0
  146. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  147. GOTO ext
  148. ELSEIF commit_transaction.SQLNRows = 0 THEN
  149. rslt = 0
  150. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  151. GOTO ext
  152. END IF
  153. FOR i = 1 TO it_mxbt
  154. Long ll_sptid
  155. IF billtype = 1 OR billtype = 4 THEN
  156. ll_sptid = 0
  157. ELSE
  158. ll_sptid = inwaremx[i].sptid
  159. END IF
  160. IF p_update_mtrlware(inwaremx[i].mtrlid,inwaremx[i].mtrlcode,&
  161. storageid,inwaremx[i].plancode,inwaremx[i].status,&
  162. 0 - inwaremx[i].qty,0 - inwaremx[i].uqty,inwaremx[i].cost,inwaremx[i].planprice,&
  163. ll_sptid,inwaremx[i].dxflag,inwaremx[i].woodcode,&
  164. inwaremx[i].pcode,inwaremx[i].mtrlcuscode,inwaremx[i].Location,inwaremx[i].mtrlwaredscrp,inwaremx[i].ifvqty,arg_msg) = 0 THEN
  165. arg_msg = '更新行:'+String(i)+','+arg_msg
  166. rslt = 0
  167. GOTO ext
  168. END IF
  169. IF inwaremx[i].relid > 0 THEN
  170. IF uo_order.addmxskl(scid,inwaremx[i].relid,0 - inwaremx[i].qty, 0 - (inwaremx[i].qty * inwaremx[i].price) ,arg_msg,FALSE) = 0 THEN
  171. rslt = 0
  172. GOTO ext
  173. END IF
  174. END IF
  175. NEXT
  176. flag = 0
  177. ext:
  178. IF rslt = 0 THEN
  179. ROLLBACK USING commit_transaction;
  180. ELSEIF rslt = 1 AND arg_ifcommit THEN
  181. COMMIT USING commit_transaction;
  182. END IF
  183. DESTROY uo_order
  184. RETURN rslt
  185. end function
  186. on uo_inware_skl.create
  187. call super::create
  188. end on
  189. on uo_inware_skl.destroy
  190. call super::destroy
  191. end on