uo_mtrl_change_rule.sru 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. $PBExportHeader$uo_mtrl_change_rule.sru
  2. forward
  3. global type uo_mtrl_change_rule from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_mtrl_change_rule from nonvisualobject
  7. end type
  8. global uo_mtrl_change_rule uo_mtrl_change_rule
  9. type variables
  10. long uo_ruleid
  11. end variables
  12. forward prototypes
  13. public function integer save (s_mtrl_change_rule arg_s_rule, ref string arg_msg, boolean arg_ifcommit)
  14. public function integer del (long arg_ruleid, ref string arg_msg, boolean arg_ifcommit)
  15. end prototypes
  16. public function integer save (s_mtrl_change_rule arg_s_rule, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  17. Long cnt = 0
  18. Long ll_newid
  19. DateTime server_dt
  20. Long it_mxbt,it_mxbt_mtrl
  21. Long i,j
  22. IF IsNull(arg_s_rule.ruleid) THEN arg_s_rule.ruleid = 0
  23. IF IsNull(arg_s_rule.rulename) THEN arg_s_rule.rulename = ''
  24. IF IsNull(arg_s_rule.rulestr) THEN arg_s_rule.rulestr = ''
  25. IF IsNull(arg_s_rule.dscrp) THEN arg_s_rule.dscrp = ''
  26. IF IsNull(arg_s_rule.Kind) THEN arg_s_rule.Kind = 0
  27. SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  28. IF sqlca.SQLCode <> 0 THEN
  29. rslt = 0
  30. arg_msg = "查询操作失败,日期 "
  31. GOTO ext
  32. END IF
  33. IF arg_s_rule.rulename = '' THEN
  34. rslt = 0
  35. arg_msg = '请输入换料策略名称'
  36. GOTO ext
  37. END IF
  38. IF arg_s_rule.rulestr = '' THEN
  39. rslt = 0
  40. arg_msg = '请填写换料策略规则'
  41. GOTO ext
  42. END IF
  43. it_mxbt = UpperBound(arg_s_rule.arg_s_mx)
  44. IF arg_s_rule.Kind = 0 THEN
  45. IF it_mxbt <= 0 THEN
  46. rslt = 0
  47. arg_msg = "没有正确规则明细内容"
  48. GOTO ext
  49. END IF
  50. END IF
  51. it_mxbt_mtrl = UpperBound(arg_s_rule.arg_s_mtrlmx)
  52. IF it_mxbt_mtrl <= 0 THEN
  53. rslt = 0
  54. arg_msg = "没有正确的生效产品或半成品列表"
  55. GOTO ext
  56. END IF
  57. IF arg_s_rule.ruleid = 0 THEN
  58. ll_newid = f_sys_scidentity(0,"u_mtrl_change_rule","ruleid",arg_msg,TRUE,id_sqlca)
  59. IF ll_newid <= 0 THEN
  60. rslt = 0
  61. GOTO ext
  62. END IF
  63. INSERT INTO u_mtrl_change_rule
  64. (ruleid,
  65. rulename,
  66. rulestr,
  67. dscrp,
  68. opemp,
  69. opdate,
  70. kind)
  71. VALUES
  72. (:ll_newid,
  73. :arg_s_rule.rulename,
  74. :arg_s_rule.rulestr,
  75. :arg_s_rule.dscrp,
  76. :publ_operator,
  77. getdate(),
  78. :arg_s_rule.Kind);
  79. IF sqlca.SQLCode <> 0 THEN
  80. rslt = 0
  81. arg_msg = '新增换料策略失败'+sqlca.SQLErrText
  82. GOTO ext
  83. END IF
  84. FOR i = 1 TO it_mxbt
  85. INSERT INTO u_mtrl_change_rule_mx
  86. (ruleid,
  87. printid,
  88. rule_if,
  89. rule_then,
  90. repeattype)
  91. VALUES
  92. (:ll_newid,
  93. :arg_s_rule.arg_s_mx[i].printid,
  94. :arg_s_rule.arg_s_mx[i].rule_if,
  95. :arg_s_rule.arg_s_mx[i].rule_then,
  96. :arg_s_rule.arg_s_mx[i].repeattype);
  97. IF sqlca.SQLCode <> 0 THEN
  98. rslt = 0
  99. arg_msg = '插入换料明细规则失败'+sqlca.SQLErrText
  100. GOTO ext
  101. END IF
  102. NEXT
  103. FOR j = 1 TO it_mxbt_mtrl
  104. INSERT INTO u_mtrl_change_rule_mtrlmx
  105. (ruleid,
  106. mtrlid)
  107. VALUES
  108. (:ll_newid,
  109. :arg_s_rule.arg_s_mtrlmx[j].mtrlid);
  110. IF sqlca.SQLCode <> 0 THEN
  111. rslt = 0
  112. arg_msg = '插入换料物料明细失败'+sqlca.SQLErrText
  113. GOTO ext
  114. END IF
  115. NEXT
  116. uo_ruleid = ll_newid
  117. ELSE
  118. UPDATE u_mtrl_change_rule
  119. SET rulename = :arg_s_rule.rulename,
  120. rulestr = :arg_s_rule.rulestr,
  121. dscrp = :arg_s_rule.dscrp,
  122. moddate = getdate(),
  123. modemp = :publ_operator
  124. Where ruleid = :arg_s_rule.ruleid;
  125. IF sqlca.SQLCode <> 0 THEN
  126. rslt = 0
  127. arg_msg = '更新换料策略失败'+sqlca.SQLErrText
  128. GOTO ext
  129. END IF
  130. DELETE FROM u_mtrl_change_rule_mx
  131. Where ruleid = :arg_s_rule.ruleid;
  132. IF sqlca.SQLCode <> 0 THEN
  133. rslt = 0
  134. arg_msg = "删除旧有规则明细操作失败"+"~n"+sqlca.SQLErrText
  135. GOTO ext
  136. END IF
  137. DELETE FROM u_mtrl_change_rule_mtrlmx
  138. Where ruleid = :arg_s_rule.ruleid;
  139. IF sqlca.SQLCode <> 0 THEN
  140. rslt = 0
  141. arg_msg = "删除旧有物料明细操作失败"+"~n"+sqlca.SQLErrText
  142. GOTO ext
  143. END IF
  144. FOR i = 1 TO it_mxbt
  145. INSERT INTO u_mtrl_change_rule_mx
  146. (ruleid,
  147. printid,
  148. rule_if,
  149. rule_then,
  150. repeattype)
  151. VALUES
  152. (:arg_s_rule.ruleid,
  153. :arg_s_rule.arg_s_mx[i].printid,
  154. :arg_s_rule.arg_s_mx[i].rule_if,
  155. :arg_s_rule.arg_s_mx[i].rule_then,
  156. :arg_s_rule.arg_s_mx[i].repeattype);
  157. IF sqlca.SQLCode <> 0 THEN
  158. rslt = 0
  159. arg_msg = '插入换料明细规则失败'+sqlca.SQLErrText
  160. GOTO ext
  161. END IF
  162. NEXT
  163. FOR j = 1 TO it_mxbt_mtrl
  164. INSERT INTO u_mtrl_change_rule_mtrlmx
  165. (ruleid,
  166. mtrlid)
  167. VALUES
  168. (:arg_s_rule.ruleid,
  169. :arg_s_rule.arg_s_mtrlmx[j].mtrlid);
  170. IF sqlca.SQLCode <> 0 THEN
  171. rslt = 0
  172. arg_msg = '插入换料物料明细失败'+sqlca.SQLErrText
  173. GOTO ext
  174. END IF
  175. NEXT
  176. uo_ruleid = arg_s_rule.ruleid
  177. END IF
  178. ext:
  179. IF rslt = 0 THEN
  180. ROLLBACK;
  181. ELSEIF arg_ifcommit AND rslt = 1 THEN
  182. COMMIT;
  183. END IF
  184. RETURN rslt
  185. end function
  186. public function integer del (long arg_ruleid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  187. IF arg_ruleid <= 0 THEN
  188. rslt = 0
  189. arg_msg = '错误单据唯一码'
  190. GOTO ext
  191. END IF
  192. DELETE FROM u_mtrl_change_rule_mx
  193. Where ruleid = :arg_ruleid;
  194. IF sqlca.SQLCode <> 0 THEN
  195. rslt = 0
  196. arg_msg = "删除换料规则明细操作失败"+"~n"+sqlca.SQLErrText
  197. GOTO ext
  198. END IF
  199. DELETE FROM u_mtrl_change_rule_mtrlmx
  200. Where ruleid = :arg_ruleid;
  201. IF sqlca.SQLCode <> 0 THEN
  202. rslt = 0
  203. arg_msg = "删除物料明细操作失败"+"~n"+sqlca.SQLErrText
  204. GOTO ext
  205. END IF
  206. DELETE FROM u_mtrl_change_rule
  207. Where ruleid = :arg_ruleid;
  208. IF sqlca.SQLCode <> 0 THEN
  209. rslt = 0
  210. arg_msg = "删除换料策略操作失败"+"~n"+sqlca.SQLErrText
  211. GOTO ext
  212. END IF
  213. ext:
  214. IF rslt = 0 THEN
  215. ROLLBACK;
  216. ELSEIF rslt = 1 AND arg_ifcommit THEN
  217. COMMIT;
  218. END IF
  219. RETURN rslt
  220. end function
  221. on uo_mtrl_change_rule.create
  222. call super::create
  223. TriggerEvent( this, "constructor" )
  224. end on
  225. on uo_mtrl_change_rule.destroy
  226. TriggerEvent( this, "destructor" )
  227. call super::destroy
  228. end on