uo_checkback.sru 16 KB

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