uo_ws_pd.sru 15 KB

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