uo_orderrqwp_change.sru 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680
  1. $PBExportHeader$uo_orderrqwp_change.sru
  2. forward
  3. global type uo_orderrqwp_change from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_orderrqwp_change from nonvisualobject
  7. end type
  8. global uo_orderrqwp_change uo_orderrqwp_change
  9. type variables
  10. long uo_billid
  11. string uo_billcode
  12. end variables
  13. forward prototypes
  14. public function integer save (s_orderrqwp_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 updatebegin (long arg_billid, ref string arg_msg)
  17. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  18. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer getinfo (long arg_billid, ref s_orderrqwp_change_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg)
  20. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  21. end prototypes
  22. public function integer save (s_orderrqwp_change arg_s_change, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0
  23. DateTime server_dt
  24. Long ll_billid,it_mxbt,i
  25. String ls_sccode,ls_billcode
  26. IF IsNull(arg_s_change.scid) THEN arg_s_change.scid = 0
  27. IF IsNull(arg_s_change.billid) THEN arg_s_change.billid = 0
  28. IF IsNull(arg_s_change.relcode) THEN arg_s_change.relcode = ''
  29. IF IsNull(arg_s_change.rep) THEN arg_s_change.rep = ''
  30. IF IsNull(arg_s_change.dscrp) THEN arg_s_change.dscrp = ''
  31. IF arg_s_change.rep = '' THEN
  32. arg_msg = '请输入经手人'
  33. rslt = 0
  34. GOTO ext
  35. END IF
  36. SELECT Top 1 getdate() Into :server_dt From u_user;
  37. IF sqlca.SQLCode <> 0 THEN
  38. rslt = 0
  39. arg_msg = "查询操作失败,日期 "
  40. GOTO ext
  41. END IF
  42. it_mxbt = UpperBound(arg_s_change.arg_s_mx)
  43. IF it_mxbt <= 0 THEN
  44. rslt = 0
  45. arg_msg = "没有正确明细内容"
  46. GOTO ext
  47. END IF
  48. IF arg_s_change.billid = 0 THEN
  49. ll_billid = f_sys_scidentity(0,"u_orderrqwp_change","billid",arg_msg,True,id_sqlca)
  50. IF ll_billid <= 0 THEN
  51. rslt = 0
  52. GOTO ext
  53. END IF
  54. IF f_get_sccode(0,sqlca,ls_sccode,arg_msg) = 0 THEN
  55. rslt = 0
  56. GOTO ext
  57. END IF
  58. ls_billcode = getid(0,ls_sccode + 'RC',Date(server_dt),False,sqlca)
  59. IF ls_billcode = "err" THEN
  60. rslt = 0
  61. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  62. GOTO ext
  63. END IF
  64. INSERT INTO u_orderrqwp_change
  65. (scid,
  66. billid,
  67. billcode,
  68. billdate,
  69. relcode,
  70. rep,
  71. dscrp,
  72. opdate,
  73. opemp)
  74. VALUES (:arg_s_change.scid,
  75. :ll_billid,
  76. :ls_billcode,
  77. :arg_s_change.billdate,
  78. :arg_s_change.relcode,
  79. :arg_s_change.rep,
  80. :arg_s_change.dscrp,
  81. getdate(),
  82. :arg_opemp);
  83. IF sqlca.SQLCode <> 0 THEN
  84. rslt = 0
  85. arg_msg = "因网络或其它原因导致建立单据操作失败"+"~n"+sqlca.SQLErrText
  86. GOTO ext
  87. END IF
  88. FOR i = 1 To it_mxbt
  89. INSERT INTO u_orderrqwp_change_mx
  90. (scid,
  91. billid,
  92. printid,
  93. orderid,
  94. mtrlid,
  95. procode,
  96. proname,
  97. proorder,
  98. proqty,
  99. proqty_ori,
  100. workprice,
  101. workprice_ori,
  102. wrkgrpid,
  103. ifjd,
  104. lastflag,
  105. editflag,
  106. status,
  107. dscrp)
  108. VALUES (:arg_s_change.scid,
  109. :ll_billid,
  110. :arg_s_change.arg_s_mx[i].printid,
  111. :arg_s_change.arg_s_mx[i].orderid,
  112. :arg_s_change.arg_s_mx[i].mtrlid,
  113. :arg_s_change.arg_s_mx[i].procode,
  114. :arg_s_change.arg_s_mx[i].proname,
  115. :arg_s_change.arg_s_mx[i].proorder,
  116. :arg_s_change.arg_s_mx[i].proqty,
  117. :arg_s_change.arg_s_mx[i].proqty_ori,
  118. :arg_s_change.arg_s_mx[i].workprice,
  119. :arg_s_change.arg_s_mx[i].workprice_ori,
  120. :arg_s_change.arg_s_mx[i].wrkgrpid,
  121. :arg_s_change.arg_s_mx[i].ifjd,
  122. :arg_s_change.arg_s_mx[i].lastflag,
  123. :arg_s_change.arg_s_mx[i].editflag,
  124. :arg_s_change.arg_s_mx[i].status,
  125. :arg_s_change.arg_s_mx[i].dscrp);
  126. IF sqlca.SQLCode <> 0 THEN
  127. rslt = 0
  128. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  129. GOTO ext
  130. END IF
  131. NEXT
  132. uo_billid = ll_billid
  133. uo_billcode = ls_billcode
  134. ELSE
  135. UPDATE u_orderrqwp_change
  136. SET billdate = :arg_s_change.billdate,
  137. relcode = :arg_s_change.relcode,
  138. rep = :arg_s_change.rep,
  139. dscrp = :arg_s_change.dscrp,
  140. moddate = getdate(),
  141. modemp = :arg_opemp
  142. WHERE billid = :arg_s_change.billid
  143. And flag = 0 ;
  144. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows <= 0 THEN
  145. rslt = 0
  146. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  147. GOTO ext
  148. END IF
  149. DELETE FROM u_orderrqwp_change_mx
  150. Where billid = :arg_s_change.billid;
  151. IF sqlca.SQLCode <> 0 THEN
  152. rslt = 0
  153. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  154. GOTO ext
  155. END IF
  156. FOR i = 1 To it_mxbt
  157. INSERT INTO u_orderrqwp_change_mx
  158. (scid,
  159. billid,
  160. printid,
  161. orderid,
  162. mtrlid,
  163. procode,
  164. proname,
  165. proorder,
  166. proqty,
  167. proqty_ori,
  168. workprice,
  169. workprice_ori,
  170. wrkgrpid,
  171. ifjd,
  172. lastflag,
  173. editflag,
  174. status,
  175. dscrp)
  176. VALUES (:arg_s_change.scid,
  177. :arg_s_change.billid,
  178. :arg_s_change.arg_s_mx[i].printid,
  179. :arg_s_change.arg_s_mx[i].orderid,
  180. :arg_s_change.arg_s_mx[i].mtrlid,
  181. :arg_s_change.arg_s_mx[i].procode,
  182. :arg_s_change.arg_s_mx[i].proname,
  183. :arg_s_change.arg_s_mx[i].proorder,
  184. :arg_s_change.arg_s_mx[i].proqty,
  185. :arg_s_change.arg_s_mx[i].proqty_ori,
  186. :arg_s_change.arg_s_mx[i].workprice,
  187. :arg_s_change.arg_s_mx[i].workprice_ori,
  188. :arg_s_change.arg_s_mx[i].wrkgrpid,
  189. :arg_s_change.arg_s_mx[i].ifjd,
  190. :arg_s_change.arg_s_mx[i].lastflag,
  191. :arg_s_change.arg_s_mx[i].editflag,
  192. :arg_s_change.arg_s_mx[i].status,
  193. :arg_s_change.arg_s_mx[i].dscrp);
  194. IF sqlca.SQLCode <> 0 THEN
  195. rslt = 0
  196. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  197. GOTO ext
  198. END IF
  199. NEXT
  200. uo_billid = arg_s_change.billid
  201. END IF
  202. ext:
  203. IF rslt = 0 THEN
  204. ROLLBACK;
  205. ELSEIF arg_ifcommit And rslt = 1 THEN
  206. COMMIT;
  207. END IF
  208. RETURN rslt
  209. end function
  210. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
  211. SELECT flag
  212. INTO :arg_flag
  213. FROM u_orderrqwp_change
  214. Where billid = :arg_billid;
  215. IF sqlca.SQLCode <> 0 THEN
  216. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  217. rslt = 0
  218. GOTO ext
  219. END IF
  220. ext:
  221. RETURN rslt
  222. end function
  223. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  224. Int li_flag
  225. Long cnt
  226. IF arg_billid <= 0 THEN
  227. rslt = 0
  228. arg_msg = '错误单据唯一码'
  229. GOTO ext
  230. END IF
  231. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  232. rslt = 0
  233. GOTO ext
  234. END IF
  235. IF li_flag = 1 THEN
  236. rslt = 0
  237. arg_msg = '单据已经审核,不可以再修改'
  238. GOTO ext
  239. END IF
  240. ext:
  241. RETURN rslt
  242. end function
  243. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  244. Int li_flag
  245. IF arg_billid <= 0 THEN
  246. rslt = 0
  247. arg_msg = '错误单据唯一码'
  248. GOTO ext
  249. END IF
  250. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  251. rslt = 0
  252. GOTO ext
  253. END IF
  254. IF li_flag = 1 THEN
  255. rslt = 0
  256. arg_msg = '单据不是在待审状态,不可以删除'
  257. GOTO ext
  258. END IF
  259. DELETE FROM u_orderrqwp_change
  260. WHERE billid = :arg_billid;
  261. IF sqlca.SQLCode <> 0 THEN
  262. rslt = 0
  263. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  264. GOTO ext
  265. END IF
  266. DELETE FROM u_orderrqwp_change_mx
  267. WHERE billid = :arg_billid;
  268. IF sqlca.SQLCode <> 0 THEN
  269. rslt = 0
  270. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  271. GOTO ext
  272. END IF
  273. ext:
  274. IF rslt = 0 THEN
  275. ROLLBACK;
  276. ELSEIF rslt = 1 AND arg_ifcommit THEN
  277. COMMIT;
  278. END IF
  279. RETURN rslt
  280. end function
  281. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  282. Int li_flag
  283. IF arg_newdescppart = '' THEN
  284. rslt = 0
  285. arG_MSG = "要添加内容为空,操作取消"
  286. GOTO ext
  287. END IF
  288. IF p_getflag(arg_billid,li_flag,arG_MSG) = 0 THEN
  289. rslt = 0
  290. GOTO ext
  291. END IF
  292. IF li_flag = 0 THEN
  293. rslt = 0
  294. arG_MSG = "待审核状态下不可用"
  295. GOTO ext
  296. END IF
  297. UPDATE u_orderrqwp_change
  298. SET DSCRP = DSCRP+' '+:arg_newdescppart
  299. WHERE u_orderrqwp_change.billid = :arg_billid;
  300. IF SQLCA.SQLCode <> 0 THEN
  301. rslt = 0
  302. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  303. GOTO ext
  304. END IF
  305. ext:
  306. IF rslt = 0 THEN
  307. ROLLBACK;
  308. ELSEIF rslt = 1 AND arg_ifcommit THEN
  309. COMMIT;
  310. END IF
  311. Return (rslt)
  312. end function
  313. public function integer getinfo (long arg_billid, ref s_orderrqwp_change_mx arg_ref_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
  314. Long i = 1,no_mxcheck = 0
  315. IF arg_billid <= 0 THEN
  316. rslt = 0
  317. arg_msg = '错误单据唯一码'
  318. GOTO ext
  319. END IF
  320. DECLARE cur_mx CURSOR FOR
  321. SELECT scid,
  322. billid,
  323. printid,
  324. orderid,
  325. mtrlid,
  326. procode,
  327. proname,
  328. proorder,
  329. proqty,
  330. proqty_ori,
  331. workprice,
  332. workprice_ori,
  333. wrkgrpid,
  334. ifjd,
  335. lastflag,
  336. editflag,
  337. status,
  338. dscrp
  339. FROM u_orderrqwp_change_mx
  340. WHERE billid = :arg_billid
  341. Order By printid;
  342. OPEN cur_mx;
  343. FETCH cur_mx INTO :arg_ref_mx[i].scid,
  344. :arg_ref_mx[i].billid,
  345. :arg_ref_mx[i].printid,
  346. :arg_ref_mx[i].orderid,
  347. :arg_ref_mx[i].mtrlid,
  348. :arg_ref_mx[i].procode,
  349. :arg_ref_mx[i].proname,
  350. :arg_ref_mx[i].proorder,
  351. :arg_ref_mx[i].proqty,
  352. :arg_ref_mx[i].proqty_ori,
  353. :arg_ref_mx[i].workprice,
  354. :arg_ref_mx[i].workprice_ori,
  355. :arg_ref_mx[i].wrkgrpid,
  356. :arg_ref_mx[i].ifjd,
  357. :arg_ref_mx[i].lastflag,
  358. :arg_ref_mx[i].editflag,
  359. :arg_ref_mx[i].status,
  360. :arg_ref_mx[i].dscrp;
  361. DO WHILE sqlca.SQLCode = 0
  362. i++
  363. FETCH cur_mx INTO :arg_ref_mx[i].scid,
  364. :arg_ref_mx[i].billid,
  365. :arg_ref_mx[i].printid,
  366. :arg_ref_mx[i].orderid,
  367. :arg_ref_mx[i].mtrlid,
  368. :arg_ref_mx[i].procode,
  369. :arg_ref_mx[i].proname,
  370. :arg_ref_mx[i].proorder,
  371. :arg_ref_mx[i].proqty,
  372. :arg_ref_mx[i].proqty_ori,
  373. :arg_ref_mx[i].workprice,
  374. :arg_ref_mx[i].workprice_ori,
  375. :arg_ref_mx[i].wrkgrpid,
  376. :arg_ref_mx[i].ifjd,
  377. :arg_ref_mx[i].lastflag,
  378. :arg_ref_mx[i].editflag,
  379. :arg_ref_mx[i].status,
  380. :arg_ref_mx[i].dscrp;
  381. LOOP
  382. CLOSE cur_mx;
  383. SELECT count(*) INTO :no_mxcheck
  384. FROM u_orderrqwp_change_mx
  385. Where billid = :arg_billid;
  386. IF sqlca.SQLCode <> 0 THEN
  387. rslt = 0
  388. arg_msg = "查询操作失败,单据明细数量"
  389. GOTO ext
  390. END IF
  391. IF i <> (no_mxcheck + 1) THEN
  392. rslt = 0
  393. arg_msg = "查询操作失败,单据明细"
  394. GOTO ext
  395. END IF
  396. arg_arr_cnt = i - 1
  397. ext:
  398. RETURN rslt
  399. end function
  400. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  401. Int li_flag
  402. IF arg_billid <= 0 THEN
  403. rslt = 0
  404. ARG_MSG = '错误单据唯一码'
  405. GOTO ext
  406. END IF
  407. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  408. rslt = 0
  409. GOTO ext
  410. END IF
  411. IF li_flag <> 0 THEN
  412. rslt = 0
  413. ARG_MSG = '单据不是在待审核状态,不可以审核'
  414. GOTO ext
  415. END IF
  416. DateTime serdate
  417. s_orderrqwp_change_mx s_change_mx[]
  418. Long ll_arr_cnt,ll_i
  419. Long cnt
  420. Decimal ld_finishqty
  421. SELECT Top 1 getdate() Into :serdate From u_user;
  422. IF sqlca.SQLCode <> 0 THEN
  423. ARG_MSG = '查询服务器时间失败'
  424. rslt = 0
  425. GOTO ext
  426. END IF
  427. IF getinfo(arg_billid,s_change_mx,ll_arr_cnt,ARG_MSG) = 0 THEN
  428. rslt = 0
  429. GOTO ext
  430. END IF
  431. FOR ll_i = 1 To ll_arr_cnt
  432. IF s_change_mx[ll_i].editflag = 0 THEN //变更
  433. SELECT finishqty INTO :ld_finishqty
  434. FROM U_OrderRqwp
  435. WHERE scid = :s_change_mx[ll_i].scid
  436. AND orderid = :s_change_mx[ll_i].orderid
  437. AND mtrlid = :s_change_mx[ll_i].mtrlid
  438. And procode = :s_change_mx[ll_i].procode;
  439. IF sqlca.SQLCode <> 0 THEN
  440. rslt = 0
  441. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度已完成数失败,'+sqlca.SQLErrText
  442. GOTO ext
  443. END IF
  444. IF s_change_mx[ll_i].proqty > 0 THEN
  445. IF ld_finishqty > s_change_mx[ll_i].proqty THEN
  446. rslt = 0
  447. ARG_MSG = '第'+String(ll_i)+'行,工序进度已完成数为:'+String(ld_finishqty,'#,##0.##########')+',不能把计划数变更为:'+String(s_change_mx[ll_i].proqty,'#,##0.##########')
  448. GOTO ext
  449. END IF
  450. UPDATE U_OrderRqwp
  451. SET proqty = :s_change_mx[ll_i].proqty,
  452. proorder = :s_change_mx[ll_i].proorder,
  453. workprice = :s_change_mx[ll_i].workprice,
  454. wrkgrpid = :s_change_mx[ll_i].wrkgrpid,
  455. ifjd = :s_change_mx[ll_i].ifjd,
  456. lastflag = :s_change_mx[ll_i].lastflag
  457. WHERE scid = :s_change_mx[ll_i].scid
  458. AND orderid = :s_change_mx[ll_i].orderid
  459. AND mtrlid = :s_change_mx[ll_i].mtrlid
  460. And procode = :s_change_mx[ll_i].procode;
  461. IF sqlca.SQLCode <> 0 THEN
  462. rslt = 0
  463. ARG_MSG = '第'+String(ll_i)+'行,更新工序进度失败,'+sqlca.SQLErrText
  464. GOTO ext
  465. END IF
  466. SELECT count(*)
  467. INTO :cnt
  468. FROM U_OrderRqwp
  469. WHERE scid = :s_change_mx[ll_i].scid
  470. AND orderid = :s_change_mx[ll_i].orderid
  471. And lastflag = 1;
  472. IF sqlca.SQLCode <> 0 THEN
  473. rslt = 0
  474. ARG_MSG = '第'+String(ll_i)+'行,查询指令单工序进度最后工序信息失败,'+sqlca.SQLErrText
  475. GOTO ext
  476. END IF
  477. IF cnt > 1 THEN
  478. rslt = 0
  479. ARG_MSG = '第'+String(ll_i)+'行,相关指令单工序进度有多个最后工序,更新失败,请检查'+sqlca.SQLErrText
  480. GOTO ext
  481. END IF
  482. ELSEIF s_change_mx[ll_i].proqty = 0 THEN
  483. IF ld_finishqty > 0 THEN
  484. rslt = 0
  485. ARG_MSG = '第'+String(ll_i)+'行,工序进度已完成数:'+String(ld_finishqty,'#,##0.##########')+',不能删除工序进度'
  486. GOTO ext
  487. END IF
  488. DELETE FROM U_OrderRqwp
  489. WHERE scid = :s_change_mx[ll_i].scid
  490. AND orderid = :s_change_mx[ll_i].orderid
  491. AND mtrlid = :s_change_mx[ll_i].mtrlid
  492. And procode = :s_change_mx[ll_i].procode;
  493. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
  494. rslt = 0
  495. ARG_MSG = '更新工序进度失败,第 '+String(ll_i)+' 行'+'~n'+sqlca.SQLErrText
  496. GOTO ext
  497. END IF
  498. END IF
  499. ELSE
  500. SELECT count(*) INTO :cnt
  501. FROM U_OrderRqwp
  502. WHERE scid = :s_change_mx[ll_i].scid
  503. AND orderid = :s_change_mx[ll_i].orderid
  504. AND mtrlid = :s_change_mx[ll_i].mtrlid
  505. And procode = :s_change_mx[ll_i].procode;
  506. IF sqlca.SQLCode <> 0 THEN
  507. rslt = 0
  508. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度失败,'+sqlca.SQLErrText
  509. GOTO ext
  510. END IF
  511. IF cnt > 0 THEN
  512. rslt = 0
  513. ARG_MSG = '工序进度已存在相同信息,不能插入重复内容,第 '+String(ll_i)+' 行'
  514. GOTO ext
  515. END IF
  516. INSERT INTO U_OrderRqwp
  517. (scid,
  518. orderid,
  519. Mtrlid,
  520. Procode,
  521. Proname,
  522. Proorder,
  523. proqty,
  524. wrkGrpid,
  525. lsxtype,
  526. workPrice,
  527. ifjd,
  528. lastflag,
  529. status)
  530. VALUES (:s_change_mx[ll_i].scid,
  531. :s_change_mx[ll_i].orderid,
  532. :s_change_mx[ll_i].mtrlid,
  533. :s_change_mx[ll_i].procode,
  534. :s_change_mx[ll_i].proname,
  535. :s_change_mx[ll_i].proorder,
  536. :s_change_mx[ll_i].proqty,
  537. :s_change_mx[ll_i].wrkgrpid,
  538. 1,
  539. :s_change_mx[ll_i].workprice,
  540. :s_change_mx[ll_i].ifjd,
  541. :s_change_mx[ll_i].lastflag,
  542. :s_change_mx[ll_i].status);
  543. IF sqlca.SQLCode <> 0 THEN
  544. rslt = 0
  545. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度失败,'+sqlca.SQLErrText
  546. GOTO ext
  547. END IF
  548. END IF
  549. NEXT
  550. UPDATE u_orderrqwp_change
  551. SET flag = 1,
  552. auditdate = getdate(),
  553. auditemp = :arg_opemp
  554. Where billid = :arg_billid;
  555. IF sqlca.SQLCode <> 0 THEN
  556. rslt = 0
  557. ARG_MSG = '更新单据状态失败,'+sqlca.SQLErrText
  558. GOTO ext
  559. END IF
  560. ext:
  561. IF rslt = 0 THEN
  562. ROLLBACK;
  563. ELSEIF rslt = 1 And arg_ifcommit THEN
  564. COMMIT;
  565. END IF
  566. RETURN rslt
  567. end function
  568. on uo_orderrqwp_change.create
  569. call super::create
  570. TriggerEvent( this, "constructor" )
  571. end on
  572. on uo_orderrqwp_change.destroy
  573. TriggerEvent( this, "destructor" )
  574. call super::destroy
  575. end on