uo_orderrqmtrl_tree_change.sru 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. $PBExportHeader$uo_orderrqmtrl_tree_change.sru
  2. forward
  3. global type uo_orderrqmtrl_tree_change from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_orderrqmtrl_tree_change from nonvisualobject
  7. end type
  8. global uo_orderrqmtrl_tree_change uo_orderrqmtrl_tree_change
  9. type variables
  10. Long uo_billid
  11. String uo_billcode
  12. end variables
  13. forward prototypes
  14. public function integer save (s_orderrqmtrl_tree_change arg_s_change, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  15. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg)
  16. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  17. public function integer updatebegin (long arg_billid, ref string arg_msg)
  18. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  20. end prototypes
  21. public function integer save (s_orderrqmtrl_tree_change arg_s_change, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  22. DateTime server_dt
  23. Long ll_billid
  24. String ls_sccode,ls_billcode
  25. Long cnt
  26. IF IsNull(arg_s_change.billid) THEN arg_s_change.billid = 0
  27. IF IsNull(arg_s_change.billemp) THEN arg_s_change.billemp = ''
  28. IF IsNull(arg_s_change.relcode) THEN arg_s_change.relcode = ''
  29. IF IsNull(arg_s_change.dscrp) THEN arg_s_change.dscrp = ''
  30. IF IsNull(arg_s_change.scid) THEN arg_s_change.scid = 0
  31. IF IsNull(arg_s_change.orderid) THEN arg_s_change.orderid = 0
  32. IF IsNull(arg_s_change.printid) THEN arg_s_change.printid = 0
  33. IF IsNull(arg_s_change.plantype_ori) THEN arg_s_change.plantype_ori = 0
  34. IF IsNull(arg_s_change.plantype_new) THEN arg_s_change.plantype_new = 0
  35. IF IsNull(arg_s_change.qty_ori) THEN arg_s_change.qty_ori = 0
  36. IF IsNull(arg_s_change.qty_new) THEN arg_s_change.qty_new = 0
  37. IF arg_s_change.orderid = 0 THEN
  38. arg_msg = '请选择生产计划运算结果'
  39. rslt = 0
  40. GOTO ext
  41. END IF
  42. IF arg_s_change.billemp = '' THEN
  43. arg_msg = '请输入经手人'
  44. rslt = 0
  45. GOTO ext
  46. END IF
  47. cnt = 0
  48. SELECT count(*) INTO :cnt
  49. FROM u_OrderRqMtrl_tree
  50. WHERE scid = :arg_s_change.scid
  51. AND orderid = :arg_s_change.orderid
  52. And printid = :arg_s_change.printid;
  53. IF sqlca.SQLCode <> 0 THEN
  54. rslt = 0
  55. arg_msg = '查询生产计划运算结果信息失败,'+sqlca.SQLErrText
  56. GOTO ext
  57. END IF
  58. IF cnt = 0 THEN
  59. rslt = 0
  60. arg_msg = '错误的生产计划运算结果'
  61. GOTO ext
  62. END IF
  63. IF arg_s_change.plantype_ori = arg_s_change.plantype_new THEN
  64. rslt = 0
  65. arg_msg = '新处理方式不能与旧处理方式相同,请检查'
  66. GOTO ext
  67. END IF
  68. IF arg_s_change.qty_new <= 0 THEN
  69. rslt = 0
  70. arg_msg = '请输入合理的新处理方式数量'
  71. GOTO ext
  72. END IF
  73. IF arg_s_change.qty_ori < arg_s_change.qty_new THEN
  74. rslt = 0
  75. arg_msg = '新处理方式数量不能大于旧处理方式数量,请检查'
  76. GOTO ext
  77. END IF
  78. SELECT Top 1 getdate() Into :server_dt From u_user;
  79. IF sqlca.SQLCode <> 0 THEN
  80. rslt = 0
  81. arg_msg = "查询操作失败,日期 "
  82. GOTO ext
  83. END IF
  84. IF arg_s_change.billid = 0 THEN
  85. ll_billid = f_sys_scidentity(0,"u_orderrqmtrl_tree_change","billid",arg_msg,True,id_sqlca)
  86. IF ll_billid <= 0 THEN
  87. rslt = 0
  88. GOTO ext
  89. END IF
  90. IF f_get_sccode(arg_s_change.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  91. rslt = 0
  92. GOTO ext
  93. END IF
  94. ls_billcode = getid(arg_s_change.scid,ls_sccode + 'TC',Date(server_dt),False,sqlca)
  95. INSERT INTO u_orderrqmtrl_tree_change
  96. (billid,
  97. billcode,
  98. billdate,
  99. billemp,
  100. relcode,
  101. dscrp,
  102. scid,
  103. orderid,
  104. printid,
  105. plantype_ori,
  106. plantype_new,
  107. qty_ori,
  108. qty_new,
  109. opdate,
  110. opemp)
  111. VALUES (:ll_billid,
  112. :ls_billcode,
  113. :arg_s_change.billdate,
  114. :arg_s_change.billemp,
  115. :arg_s_change.relcode,
  116. :arg_s_change.dscrp,
  117. :arg_s_change.scid,
  118. :arg_s_change.orderid,
  119. :arg_s_change.printid,
  120. :arg_s_change.plantype_ori,
  121. :arg_s_change.plantype_new,
  122. :arg_s_change.qty_ori,
  123. :arg_s_change.qty_new,
  124. :server_dt,
  125. :arg_opemp) ;
  126. IF sqlca.SQLCode <> 0 THEN
  127. rslt = 0
  128. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  129. GOTO ext
  130. END IF
  131. uo_billid = ll_billid
  132. uo_billcode = ls_billcode
  133. ELSE
  134. UPDATE u_orderrqmtrl_tree_change
  135. SET billdate = :arg_s_change.billdate,
  136. billemp = :arg_s_change.billemp,
  137. relcode = :arg_s_change.relcode,
  138. dscrp = :arg_s_change.dscrp,
  139. scid = :arg_s_change.scid,
  140. orderid = :arg_s_change.orderid,
  141. printid = :arg_s_change.printid,
  142. plantype_ori = :arg_s_change.plantype_ori,
  143. plantype_new = :arg_s_change.plantype_new,
  144. qty_ori = :arg_s_change.qty_ori,
  145. qty_new = :arg_s_change.qty_new,
  146. moddate = :server_dt,
  147. modemp = :arg_opemp
  148. Where billid = :arg_s_change.billid;
  149. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  150. rslt = 0
  151. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  152. GOTO ext
  153. END IF
  154. uo_billid = arg_s_change.billid
  155. END IF
  156. ext:
  157. IF rslt = 0 THEN
  158. ROLLBACK;
  159. ELSEIF arg_ifcommit And rslt = 1 THEN
  160. COMMIT;
  161. END IF
  162. RETURN rslt
  163. end function
  164. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
  165. SELECT flag
  166. INTO :arg_flag
  167. FROM u_orderrqmtrl_tree_change
  168. WHERE billid = :arg_billid;
  169. IF sqlca.SQLCode <> 0 THEN
  170. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  171. rslt = 0
  172. GOTO ext
  173. END IF
  174. ext:
  175. RETURN rslt
  176. end function
  177. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  178. Int li_flag
  179. IF arg_billid <= 0 THEN
  180. rslt = 0
  181. arg_msg = '错误单据唯一码'
  182. GOTO ext
  183. END IF
  184. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  185. rslt = 0
  186. GOTO ext
  187. END IF
  188. IF li_flag = 1 THEN
  189. rslt = 0
  190. arg_msg = '单据不是在待审状态,不可以删除'
  191. GOTO ext
  192. END IF
  193. DELETE FROM u_orderrqmtrl_tree_change
  194. WHERE billid = :arg_billid;
  195. IF sqlca.SQLCode <> 0 THEN
  196. rslt = 0
  197. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  198. GOTO ext
  199. END IF
  200. ext:
  201. IF rslt = 0 THEN
  202. ROLLBACK;
  203. ELSEIF rslt = 1 AND arg_ifcommit THEN
  204. COMMIT;
  205. END IF
  206. RETURN rslt
  207. end function
  208. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  209. Int li_flag
  210. Long cnt
  211. IF arg_billid <= 0 THEN
  212. rslt = 0
  213. arg_msg = '错误单据唯一码'
  214. GOTO ext
  215. END IF
  216. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  217. rslt = 0
  218. GOTO ext
  219. END IF
  220. IF li_flag = 1 THEN
  221. rslt = 0
  222. arg_msg = '单据已经审核,不可以再修改'
  223. GOTO ext
  224. END IF
  225. ext:
  226. RETURN rslt
  227. end function
  228. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  229. Int li_flag
  230. IF arg_newdescppart = '' THEN
  231. rslt = 0
  232. arG_MSG = "要添加内容为空,操作取消"
  233. GOTO ext
  234. END IF
  235. IF p_getflag(arg_billid,li_flag,arG_MSG) = 0 THEN
  236. rslt = 0
  237. GOTO ext
  238. END IF
  239. IF li_flag = 0 THEN
  240. rslt = 0
  241. arG_MSG = "待审核状态下不可用"
  242. GOTO ext
  243. END IF
  244. UPDATE u_orderrqmtrl_tree_change
  245. SET DSCRP = DSCRP+' '+:arg_newdescppart
  246. WHERE u_orderrqmtrl_tree_change.billid = :arg_billid;
  247. IF SQLCA.SQLCode <> 0 THEN
  248. rslt = 0
  249. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  250. GOTO ext
  251. END IF
  252. ext:
  253. IF rslt = 0 THEN
  254. ROLLBACK;
  255. ELSEIF rslt = 1 AND arg_ifcommit THEN
  256. COMMIT;
  257. END IF
  258. Return (rslt)
  259. end function
  260. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);int rslt = 1
  261. int li_flag
  262. IF arg_billid <= 0 THEN
  263. rslt = 0
  264. ARG_MSG = '错误单据唯一码'
  265. GOTO ext
  266. END IF
  267. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  268. rslt = 0
  269. GOTO ext
  270. END IF
  271. IF li_flag <> 0 THEN
  272. rslt = 0
  273. ARG_MSG = '单据不是在待审核状态,不可以再审'
  274. GOTO ext
  275. END IF
  276. UPDATE u_orderrqmtrl_tree_change
  277. SET auditemp = :arg_opemp,
  278. auditdate = getdate(),
  279. flag = 1
  280. WHERE billid = :arg_billid
  281. AND flag = 0;
  282. IF sqlca.SQLCode <> 0 THEN
  283. rslt = 0
  284. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  285. GOTO ext
  286. ELSEIF sqlca.SQLNRows = 0 THEN
  287. rslt = 0
  288. ARG_MSG = "单据正在审核,请稍后查询。"+"~n"+sqlca.SQLErrText
  289. GOTO ext
  290. END IF
  291. ext:
  292. IF rslt = 0 THEN
  293. ROLLBACK;
  294. ELSEIF rslt = 1 AND arg_ifcommit THEN
  295. COMMIT;
  296. END IF
  297. RETURN rslt
  298. end function
  299. on uo_orderrqmtrl_tree_change.create
  300. call super::create
  301. TriggerEvent( this, "constructor" )
  302. end on
  303. on uo_orderrqmtrl_tree_change.destroy
  304. TriggerEvent( this, "destructor" )
  305. call super::destroy
  306. end on