uo_orderrqwp_change.sru 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693
  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. uo_billid = arg_s_change.billid
  157. END IF
  158. FOR i = 1 To it_mxbt
  159. INSERT INTO u_orderrqwp_change_mx
  160. (scid,
  161. billid,
  162. printid,
  163. relid,
  164. relprintid,
  165. mtrlid,
  166. procode,
  167. proname,
  168. proorder,
  169. proqty,
  170. proqty_ori,
  171. workprice,
  172. workprice_ori,
  173. wrkgrpid,
  174. ifjd,
  175. lastflag,
  176. editflag,
  177. status,
  178. dscrp)
  179. VALUES (:arg_s_change.scid,
  180. :uo_billid,
  181. :arg_s_change.arg_s_mx[i].printid,
  182. :arg_s_change.arg_s_mx[i].relid,
  183. :arg_s_change.arg_s_mx[i].relprintid,
  184. :arg_s_change.arg_s_mx[i].mtrlid,
  185. :arg_s_change.arg_s_mx[i].procode,
  186. :arg_s_change.arg_s_mx[i].proname,
  187. :arg_s_change.arg_s_mx[i].proorder,
  188. :arg_s_change.arg_s_mx[i].proqty,
  189. :arg_s_change.arg_s_mx[i].proqty_ori,
  190. :arg_s_change.arg_s_mx[i].workprice,
  191. :arg_s_change.arg_s_mx[i].workprice_ori,
  192. :arg_s_change.arg_s_mx[i].wrkgrpid,
  193. :arg_s_change.arg_s_mx[i].ifjd,
  194. :arg_s_change.arg_s_mx[i].lastflag,
  195. :arg_s_change.arg_s_mx[i].editflag,
  196. :arg_s_change.arg_s_mx[i].status,
  197. :arg_s_change.arg_s_mx[i].dscrp);
  198. IF sqlca.SQLCode <> 0 THEN
  199. if arg_s_change.billid = 0 then uo_billid = 0 //还原uo_billid
  200. rslt = 0
  201. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  202. GOTO ext
  203. END IF
  204. NEXT
  205. ext:
  206. IF rslt = 0 THEN
  207. ROLLBACK;
  208. ELSEIF arg_ifcommit And rslt = 1 THEN
  209. COMMIT;
  210. END IF
  211. RETURN rslt
  212. end function
  213. public function integer p_getflag (long arg_billid, ref integer arg_flag, ref string arg_msg);Int rslt = 1
  214. SELECT flag
  215. INTO :arg_flag
  216. FROM u_orderrqwp_change
  217. Where billid = :arg_billid;
  218. IF sqlca.SQLCode <> 0 THEN
  219. ARG_MSG = '查询单据审核标记失败,'+sqlca.SQLErrText
  220. rslt = 0
  221. GOTO ext
  222. END IF
  223. ext:
  224. RETURN rslt
  225. end function
  226. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  227. Int li_flag
  228. Long cnt
  229. IF arg_billid <= 0 THEN
  230. rslt = 0
  231. arg_msg = '错误单据唯一码'
  232. GOTO ext
  233. END IF
  234. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  235. rslt = 0
  236. GOTO ext
  237. END IF
  238. IF li_flag = 1 THEN
  239. rslt = 0
  240. arg_msg = '单据已经审核,不可以再修改'
  241. GOTO ext
  242. END IF
  243. ext:
  244. RETURN rslt
  245. end function
  246. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  247. Int li_flag
  248. IF arg_billid <= 0 THEN
  249. rslt = 0
  250. arg_msg = '错误单据唯一码'
  251. GOTO ext
  252. END IF
  253. IF p_getflag(arg_billid,li_flag,arg_msg) = 0 THEN
  254. rslt = 0
  255. GOTO ext
  256. END IF
  257. IF li_flag = 1 THEN
  258. rslt = 0
  259. arg_msg = '单据不是在待审状态,不可以删除'
  260. GOTO ext
  261. END IF
  262. DELETE FROM u_orderrqwp_change
  263. WHERE billid = :arg_billid;
  264. IF sqlca.SQLCode <> 0 THEN
  265. rslt = 0
  266. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  267. GOTO ext
  268. END IF
  269. DELETE FROM u_orderrqwp_change_mx
  270. WHERE billid = :arg_billid;
  271. IF sqlca.SQLCode <> 0 THEN
  272. rslt = 0
  273. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  274. GOTO ext
  275. END IF
  276. ext:
  277. IF rslt = 0 THEN
  278. ROLLBACK;
  279. ELSEIF rslt = 1 AND arg_ifcommit THEN
  280. COMMIT;
  281. END IF
  282. RETURN rslt
  283. end function
  284. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  285. Int li_flag
  286. IF arg_newdescppart = '' THEN
  287. rslt = 0
  288. arG_MSG = "要添加内容为空,操作取消"
  289. GOTO ext
  290. END IF
  291. IF p_getflag(arg_billid,li_flag,arG_MSG) = 0 THEN
  292. rslt = 0
  293. GOTO ext
  294. END IF
  295. IF li_flag = 0 THEN
  296. rslt = 0
  297. arG_MSG = "待审核状态下不可用"
  298. GOTO ext
  299. END IF
  300. UPDATE u_orderrqwp_change
  301. SET DSCRP = DSCRP+' '+:arg_newdescppart
  302. WHERE u_orderrqwp_change.billid = :arg_billid;
  303. IF SQLCA.SQLCode <> 0 THEN
  304. rslt = 0
  305. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  306. GOTO ext
  307. END IF
  308. ext:
  309. IF rslt = 0 THEN
  310. ROLLBACK;
  311. ELSEIF rslt = 1 AND arg_ifcommit THEN
  312. COMMIT;
  313. END IF
  314. Return (rslt)
  315. end function
  316. 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
  317. Long i = 1,no_mxcheck = 0
  318. IF arg_billid <= 0 THEN
  319. rslt = 0
  320. arg_msg = '错误单据唯一码'
  321. GOTO ext
  322. END IF
  323. DECLARE cur_mx CURSOR FOR
  324. SELECT scid,
  325. billid,
  326. printid,
  327. relid,
  328. relprintid,
  329. mtrlid,
  330. procode,
  331. proname,
  332. proorder,
  333. proqty,
  334. proqty_ori,
  335. workprice,
  336. workprice_ori,
  337. wrkgrpid,
  338. ifjd,
  339. lastflag,
  340. editflag,
  341. status,
  342. dscrp
  343. FROM u_orderrqwp_change_mx
  344. WHERE billid = :arg_billid
  345. Order By printid;
  346. OPEN cur_mx;
  347. FETCH cur_mx INTO :arg_ref_mx[i].scid,
  348. :arg_ref_mx[i].billid,
  349. :arg_ref_mx[i].printid,
  350. :arg_ref_mx[i].relid,
  351. :arg_ref_mx[i].relprintid,
  352. :arg_ref_mx[i].mtrlid,
  353. :arg_ref_mx[i].procode,
  354. :arg_ref_mx[i].proname,
  355. :arg_ref_mx[i].proorder,
  356. :arg_ref_mx[i].proqty,
  357. :arg_ref_mx[i].proqty_ori,
  358. :arg_ref_mx[i].workprice,
  359. :arg_ref_mx[i].workprice_ori,
  360. :arg_ref_mx[i].wrkgrpid,
  361. :arg_ref_mx[i].ifjd,
  362. :arg_ref_mx[i].lastflag,
  363. :arg_ref_mx[i].editflag,
  364. :arg_ref_mx[i].status,
  365. :arg_ref_mx[i].dscrp;
  366. DO WHILE sqlca.SQLCode = 0
  367. i++
  368. FETCH cur_mx INTO :arg_ref_mx[i].scid,
  369. :arg_ref_mx[i].billid,
  370. :arg_ref_mx[i].printid,
  371. :arg_ref_mx[i].relid,
  372. :arg_ref_mx[i].relprintid,
  373. :arg_ref_mx[i].mtrlid,
  374. :arg_ref_mx[i].procode,
  375. :arg_ref_mx[i].proname,
  376. :arg_ref_mx[i].proorder,
  377. :arg_ref_mx[i].proqty,
  378. :arg_ref_mx[i].proqty_ori,
  379. :arg_ref_mx[i].workprice,
  380. :arg_ref_mx[i].workprice_ori,
  381. :arg_ref_mx[i].wrkgrpid,
  382. :arg_ref_mx[i].ifjd,
  383. :arg_ref_mx[i].lastflag,
  384. :arg_ref_mx[i].editflag,
  385. :arg_ref_mx[i].status,
  386. :arg_ref_mx[i].dscrp;
  387. LOOP
  388. CLOSE cur_mx;
  389. SELECT count(*) INTO :no_mxcheck
  390. FROM u_orderrqwp_change_mx
  391. Where billid = :arg_billid;
  392. IF sqlca.SQLCode <> 0 THEN
  393. rslt = 0
  394. arg_msg = "查询操作失败,单据明细数量"
  395. GOTO ext
  396. END IF
  397. IF i <> (no_mxcheck + 1) THEN
  398. rslt = 0
  399. arg_msg = "查询操作失败,单据明细"
  400. GOTO ext
  401. END IF
  402. arg_arr_cnt = i - 1
  403. ext:
  404. RETURN rslt
  405. end function
  406. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  407. Int li_flag
  408. IF arg_billid <= 0 THEN
  409. rslt = 0
  410. ARG_MSG = '错误单据唯一码'
  411. GOTO ext
  412. END IF
  413. IF p_getflag(arg_billid,li_flag,ARG_MSG) = 0 THEN
  414. rslt = 0
  415. GOTO ext
  416. END IF
  417. IF li_flag <> 0 THEN
  418. rslt = 0
  419. ARG_MSG = '单据不是在待审核状态,不可以审核'
  420. GOTO ext
  421. END IF
  422. DateTime serdate
  423. s_orderrqwp_change_mx s_change_mx[]
  424. Long ll_arr_cnt,ll_i
  425. Long cnt
  426. Decimal ld_finishqty
  427. SELECT Top 1 getdate() Into :serdate From u_user;
  428. IF sqlca.SQLCode <> 0 THEN
  429. ARG_MSG = '查询服务器时间失败'
  430. rslt = 0
  431. GOTO ext
  432. END IF
  433. IF getinfo(arg_billid,s_change_mx,ll_arr_cnt,ARG_MSG) = 0 THEN
  434. rslt = 0
  435. GOTO ext
  436. END IF
  437. FOR ll_i = 1 To ll_arr_cnt
  438. IF s_change_mx[ll_i].editflag = 0 THEN //变更
  439. SELECT finishqty INTO :ld_finishqty
  440. FROM U_OrderRqwp
  441. WHERE scid = :s_change_mx[ll_i].scid
  442. AND taskid = :s_change_mx[ll_i].relid
  443. AND printid = :s_change_mx[ll_i].relprintid
  444. AND mtrlid = :s_change_mx[ll_i].mtrlid
  445. And procode = :s_change_mx[ll_i].procode;
  446. IF sqlca.SQLCode <> 0 THEN
  447. rslt = 0
  448. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度已完成数失败,'+sqlca.SQLErrText
  449. GOTO ext
  450. END IF
  451. IF s_change_mx[ll_i].proqty > 0 THEN
  452. IF ld_finishqty > s_change_mx[ll_i].proqty THEN
  453. rslt = 0
  454. ARG_MSG = '第'+String(ll_i)+'行,工序进度已完成数为:'+String(ld_finishqty,'#,##0.##########')+',不能把计划数变更为:'+String(s_change_mx[ll_i].proqty,'#,##0.##########')
  455. GOTO ext
  456. END IF
  457. UPDATE U_OrderRqwp
  458. SET proqty = :s_change_mx[ll_i].proqty,
  459. proorder = :s_change_mx[ll_i].proorder,
  460. workprice = :s_change_mx[ll_i].workprice,
  461. wrkgrpid = :s_change_mx[ll_i].wrkgrpid,
  462. ifjd = :s_change_mx[ll_i].ifjd,
  463. lastflag = :s_change_mx[ll_i].lastflag
  464. WHERE scid = :s_change_mx[ll_i].scid
  465. AND taskid = :s_change_mx[ll_i].relid
  466. AND printid = :s_change_mx[ll_i].relprintid
  467. AND mtrlid = :s_change_mx[ll_i].mtrlid
  468. And procode = :s_change_mx[ll_i].procode;
  469. IF sqlca.SQLCode <> 0 THEN
  470. rslt = 0
  471. ARG_MSG = '第'+String(ll_i)+'行,更新工序进度失败,'+sqlca.SQLErrText
  472. GOTO ext
  473. END IF
  474. SELECT count(*)
  475. INTO :cnt
  476. FROM U_OrderRqwp
  477. WHERE scid = :s_change_mx[ll_i].scid
  478. AND taskid = :s_change_mx[ll_i].relid
  479. AND printid = :s_change_mx[ll_i].relprintid
  480. And lastflag = 1;
  481. IF sqlca.SQLCode <> 0 THEN
  482. rslt = 0
  483. ARG_MSG = '第'+String(ll_i)+'行,查询指令单工序进度最后工序信息失败,'+sqlca.SQLErrText
  484. GOTO ext
  485. END IF
  486. IF cnt > 1 THEN
  487. rslt = 0
  488. ARG_MSG = '第'+String(ll_i)+'行,相关指令单工序进度有多个最后工序,更新失败,请检查'+sqlca.SQLErrText
  489. GOTO ext
  490. END IF
  491. ELSEIF s_change_mx[ll_i].proqty = 0 THEN
  492. IF ld_finishqty > 0 THEN
  493. rslt = 0
  494. ARG_MSG = '第'+String(ll_i)+'行,工序进度已完成数:'+String(ld_finishqty,'#,##0.##########')+',不能删除工序进度'
  495. GOTO ext
  496. END IF
  497. DELETE FROM U_OrderRqwp
  498. WHERE scid = :s_change_mx[ll_i].scid
  499. AND taskid = :s_change_mx[ll_i].relid
  500. AND printid = :s_change_mx[ll_i].relprintid
  501. AND mtrlid = :s_change_mx[ll_i].mtrlid
  502. And procode = :s_change_mx[ll_i].procode;
  503. IF sqlca.SQLCode <> 0 Or sqlca.SQLNRows = 0 THEN
  504. rslt = 0
  505. ARG_MSG = '更新工序进度失败,第 '+String(ll_i)+' 行'+'~n'+sqlca.SQLErrText
  506. GOTO ext
  507. END IF
  508. END IF
  509. ELSE
  510. SELECT count(*) INTO :cnt
  511. FROM U_OrderRqwp
  512. WHERE scid = :s_change_mx[ll_i].scid
  513. AND taskid = :s_change_mx[ll_i].relid
  514. AND printid = :s_change_mx[ll_i].relprintid
  515. AND mtrlid = :s_change_mx[ll_i].mtrlid
  516. And procode = :s_change_mx[ll_i].procode;
  517. IF sqlca.SQLCode <> 0 THEN
  518. rslt = 0
  519. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度失败,'+sqlca.SQLErrText
  520. GOTO ext
  521. END IF
  522. IF cnt > 0 THEN
  523. rslt = 0
  524. ARG_MSG = '工序进度已存在相同信息,不能插入重复内容,第 '+String(ll_i)+' 行'
  525. GOTO ext
  526. END IF
  527. INSERT INTO U_OrderRqwp
  528. (scid,
  529. taskid,
  530. printid,
  531. Mtrlid,
  532. Procode,
  533. Proname,
  534. Proorder,
  535. proqty,
  536. wrkGrpid,
  537. lsxtype,
  538. workPrice,
  539. ifjd,
  540. lastflag,
  541. status)
  542. VALUES (:s_change_mx[ll_i].scid,
  543. :s_change_mx[ll_i].relid,
  544. :s_change_mx[ll_i].relprintid,
  545. :s_change_mx[ll_i].mtrlid,
  546. :s_change_mx[ll_i].procode,
  547. :s_change_mx[ll_i].proname,
  548. :s_change_mx[ll_i].proorder,
  549. :s_change_mx[ll_i].proqty,
  550. :s_change_mx[ll_i].wrkgrpid,
  551. 1,
  552. :s_change_mx[ll_i].workprice,
  553. :s_change_mx[ll_i].ifjd,
  554. :s_change_mx[ll_i].lastflag,
  555. :s_change_mx[ll_i].status);
  556. IF sqlca.SQLCode <> 0 THEN
  557. rslt = 0
  558. ARG_MSG = '第'+String(ll_i)+'行,查询工序进度失败,'+sqlca.SQLErrText
  559. GOTO ext
  560. END IF
  561. END IF
  562. NEXT
  563. UPDATE u_orderrqwp_change
  564. SET flag = 1,
  565. auditdate = getdate(),
  566. auditemp = :arg_opemp
  567. Where billid = :arg_billid;
  568. IF sqlca.SQLCode <> 0 THEN
  569. rslt = 0
  570. ARG_MSG = '更新单据状态失败,'+sqlca.SQLErrText
  571. GOTO ext
  572. END IF
  573. ext:
  574. IF rslt = 0 THEN
  575. ROLLBACK;
  576. ELSEIF rslt = 1 And arg_ifcommit THEN
  577. COMMIT;
  578. END IF
  579. RETURN rslt
  580. end function
  581. on uo_orderrqwp_change.create
  582. call super::create
  583. TriggerEvent( this, "constructor" )
  584. end on
  585. on uo_orderrqwp_change.destroy
  586. TriggerEvent( this, "destructor" )
  587. call super::destroy
  588. end on