uo_workprice_change.sru 15 KB

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