uo_buytask_adjust.sru 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  1. $PBExportHeader$uo_buytask_adjust.sru
  2. forward
  3. global type uo_buytask_adjust from nonvisualobject
  4. end type
  5. type s_buytaskmx from structure within uo_buytask_adjust
  6. end type
  7. end forward
  8. type s_buytaskmx from structure
  9. long requestbuyid
  10. string ordercode
  11. long mtrlid
  12. decimal { 5 } qty
  13. decimal { 4 } plprice
  14. decimal { 4 } acprice
  15. string dscrp
  16. string mtrlcode
  17. long printid
  18. decimal { 4 } fprice
  19. decimal { 4 } rebate
  20. decimal { 4 } price
  21. datetime requiredate
  22. datetime accomplishdate
  23. long storageid
  24. integer iforder
  25. string sptmtrlname
  26. string unit
  27. decimal { 5 } rate
  28. decimal { 5 } uqty
  29. decimal { 5 } uprice
  30. string papery
  31. long admtrlid
  32. long relprintid
  33. decimal { 5 } rebuyqty
  34. long orderid
  35. long buybargainid
  36. long buybargainprintid
  37. string buybargaincode
  38. decimal { 5 } consignedqty
  39. decimal { 5 } newadmtrlid
  40. end type
  41. global type uo_buytask_adjust from nonvisualobject
  42. end type
  43. global uo_buytask_adjust uo_buytask_adjust
  44. type variables
  45. PUBLIC PROTECTEDWRITE Long scid = 0
  46. PUBLIC PROTECTEDWRITE Long billid = 0
  47. PUBLIC PROTECTEDWRITE String billcode = ''
  48. PUBLIC PROTECTEDWRITE DateTime opdate
  49. PUBLIC PROTECTEDWRITE String operator = ''
  50. PUBLIC PROTECTEDWRITE Int status = 0
  51. PUBLIC PROTECTEDWRITE DateTime Accomplishdate
  52. PUBLIC PROTECTEDWRITE String Permit_emp = ''
  53. int billtype
  54. datetime billdate
  55. int flag,secflag
  56. Long relid = 0
  57. Int Kind = 0
  58. Long sptID = 0
  59. String dscrp
  60. string relcode
  61. Transaction commit_transaction
  62. PRIVATE:
  63. s_buytaskmx buytaskmx[] //明细结构数组
  64. s_buytask_mx_ch s_mx
  65. Long it_MXBT = 0 //明细结构数组末指针
  66. Boolean IT_NEWBEGIN = TRUE //新建标志
  67. Boolean IT_UPDATEBEGIN = FALSE//修改标志
  68. end variables
  69. forward prototypes
  70. public function integer p_reset ()
  71. public function integer p_clearmx ()
  72. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit)
  73. public function integer getinfo (long arg_taskid, ref string arg_msg)
  74. public function integer newbegin (long arg_scid, ref string arg_msg)
  75. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  76. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  77. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  78. public function integer updatebegin (long arg_billid, ref string arg_msg)
  79. public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  80. public function integer acceptmx (s_buytask_mx_ch arg_mx, ref string arg_msg)
  81. public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  82. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  83. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  84. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  85. end prototypes
  86. public function integer p_reset ();//INT p_RESET()
  87. //清除对象及其明细
  88. scid = 0
  89. billid = 0
  90. billcode = ''
  91. operator = ''
  92. relcode = ''
  93. status = 0
  94. SETNULL(opdate)
  95. SETNULL(Accomplishdate)
  96. Permit_emp = ''
  97. flag=0
  98. secflag=0
  99. it_newbegin = FALSE
  100. it_updatebegin = FALSE
  101. //清除明细
  102. P_CLEARMX()
  103. RETURN 1
  104. end function
  105. public function integer p_clearmx ();//INT p_clearmx()
  106. //清除明细
  107. it_mxbt=0
  108. RETURN 1
  109. end function
  110. public function integer savesubmit (string arg_operator, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1,cnt = 0,i
  111. Long LS_NEWbillid
  112. DateTime server_datetime
  113. String ls_sccode
  114. Long ll_billid
  115. IF IsNull(dscrp) THEN dscrp = ''
  116. IF IsNull(arg_operator) THEN arg_operator = ''
  117. //====================================================================
  118. // Script - save ( ref string arg_msg, boolean arg_ifcommit )
  119. // Reason:
  120. //--------------------------------------------------------------------
  121. // Modified By: yyx Date: 2004.02.20
  122. //--------------------------------------------------------------------
  123. IF Len(dscrp) > 0 THEN dscrp = ' ' + dscrp
  124. //====================================================================
  125. operator = arg_operator
  126. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  127. rslt = 0
  128. arg_msg = "非编辑状态不可以提交"
  129. GOTO ext
  130. END IF
  131. cnt = 0
  132. SELECT count(*) INTO :cnt
  133. FROM u_spt
  134. Where sptID = :sptID USING commit_transaction;
  135. IF commit_transaction.SQLCode <> 0 THEN
  136. rslt = 0
  137. arg_msg = "查询操作失败,客户资料"
  138. GOTO ext
  139. END IF
  140. IF cnt = 0 THEN
  141. rslt = 0
  142. arg_msg = "供应商未定义或错误"
  143. GOTO ext
  144. END IF
  145. IF cnt = 0 THEN
  146. arg_msg = '结算方式不存在'
  147. rslt = 0
  148. GOTO ext
  149. END IF
  150. SELECT Top 1 getdate() INTO :server_datetime FROM u_user USING commit_transaction;
  151. //取得系统时间,借用操作员表
  152. IF commit_transaction.SQLCode <> 0 THEN
  153. rslt = 0
  154. arg_msg = "查询操作失败,日期 "
  155. GOTO ext
  156. END IF
  157. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  158. rslt = 0
  159. arg_msg = "没有正确采购订单明细内容"
  160. GOTO ext
  161. END IF
  162. cnt = 0
  163. SELECT count(*) INTO :cnt
  164. FROM u_user
  165. Where username = :operator USING commit_transaction ;
  166. IF commit_transaction.SQLCode <> 0 THEN
  167. rslt = 0
  168. arg_msg = "查询操作失败,操作员!"
  169. GOTO ext
  170. END IF
  171. IF cnt = 0 THEN
  172. rslt = 0
  173. arg_msg = "操作员姓名未登记或已取消!"
  174. GOTO ext
  175. END IF
  176. opdate = server_datetime //填写单据建立时间(最近修改时间)
  177. ////////////////////////////////////////////////开始区分:新建/更新 处理
  178. IF billid = 0 THEN //新建
  179. ll_billid = f_sys_scidentity(0,"u_buytaskmx_adjust","billid",arg_msg,FALSE, commit_transaction) //数据commit事务)
  180. IF ll_billid <= 0 THEN
  181. rslt = 0
  182. GOTO ext
  183. END IF
  184. IF f_get_sccode(0,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  185. rslt = 0
  186. GOTO ext
  187. END IF
  188. billcode = getid(0,ls_sccode + 'CDT',Date(server_datetime),FALSE,commit_transaction)
  189. IF billcode = "err" THEN
  190. billcode = ''
  191. rslt = 0
  192. arg_msg = "无法获取采购订单编号"+"~n"+commit_transaction.SQLErrText
  193. GOTO ext
  194. END IF
  195. INSERT INTO u_buytaskmx_adjust
  196. (scid,
  197. billid,
  198. billcode,
  199. sptID,
  200. Status,
  201. Opemp,
  202. Dscrp,
  203. opdate,
  204. relcode,
  205. relid,
  206. billdate,
  207. billtype)
  208. VALUES (:scid,
  209. :ll_billid,
  210. :billcode,
  211. :sptID,
  212. :Status,
  213. :Operator,
  214. :Dscrp,
  215. :opdate,
  216. :relcode,
  217. :relid,
  218. :billdate,
  219. :billtype) USING commit_transaction ;
  220. IF commit_transaction.SQLCode <> 0 THEN
  221. rslt = 0
  222. arg_msg = "插入采购订单单价变更单操作失败"+"~n"+commit_transaction.SQLErrText
  223. //ROLLBACK USING commit_transaction;
  224. GOTO ext
  225. END IF
  226. //读取新billid
  227. billid = ll_billid
  228. ELSE //////////////////////////////////////////////////更新
  229. UPDATE u_buyTaskMx_adjust
  230. SET Opemp = :publ_operator ,
  231. Dscrp = :Dscrp,
  232. opdate = getdate(),
  233. relid=:relid,
  234. relcode = :relcode,
  235. billdate=:billdate,
  236. billtype=:billtype
  237. WHERE u_buyTaskMx_adjust.scid = :scid
  238. AND u_buyTaskMx_adjust.billid = :billid
  239. AND Status = 0 USING commit_transaction;
  240. IF commit_transaction.SQLCode <> 0 OR sqlca.SQLNRows <= 0 THEN
  241. rslt = 0
  242. arg_msg = "更新采购订单单价变更单操作失败"+"~n"+commit_transaction.SQLErrText
  243. //ROLLBACK USING commit_transaction;
  244. GOTO ext
  245. END IF
  246. //删除原有明细
  247. DELETE FROM u_buyTaskMx_adjustmx
  248. Where u_buyTaskMx_adjustmx.scid = :scid
  249. and u_buyTaskMx_adjustmx.billid = :billid USING commit_transaction;
  250. IF commit_transaction.SQLCode <> 0 THEN
  251. rslt = 0
  252. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  253. //ROLLBACK USING commit_transaction;
  254. GOTO ext
  255. END IF
  256. END IF
  257. FOR i = 1 TO it_mxbt
  258. INSERT INTO u_buyTaskMx_adjustmx
  259. (scid,
  260. billid,
  261. printid,
  262. TaskID,
  263. taskprintid,
  264. MtrlID,
  265. iforder,
  266. Qty,
  267. fprice,
  268. rebate,
  269. Price,
  270. AssignQty,
  271. dscrp,
  272. consignedqty,
  273. Requiredate,
  274. storageid,
  275. orderid,
  276. sptmtrlname,
  277. unit,
  278. rate,
  279. uqty,
  280. uprice,
  281. stopflag,
  282. stopemp,
  283. stopdate,
  284. stopreason,
  285. accomplishdate,
  286. jgdscrp,
  287. stopqty,
  288. requestbuyid,
  289. relprintid,
  290. rebuyqty,
  291. buybargainid,
  292. buybargainprintid,
  293. buybargaincode,
  294. newbuybargainid,
  295. newbuybargainprintid,
  296. newbuybargaincode,
  297. newprice,
  298. newjgdscrp)
  299. VALUES (:scid,
  300. :billid,
  301. :s_mx.printid[i],
  302. :s_mx.TaskID[i],
  303. :s_mx.taskprintid[i],
  304. :s_mx.MtrlID[i],
  305. :s_mx.iforder[i],
  306. :s_mx.Qty[i],
  307. :s_mx.fprice[i],
  308. :s_mx.rebate[i],
  309. :s_mx.Price[i],
  310. :s_mx.AssignQty[i],
  311. :s_mx.dscrp[i],
  312. :s_mx.consignedqty[i],
  313. :s_mx.Requiredate[i],
  314. :s_mx.storageid[i],
  315. :s_mx.orderid[i],
  316. :s_mx.sptmtrlname[i],
  317. :s_mx.unit[i],
  318. :s_mx.rate[i],
  319. :s_mx.uqty[i],
  320. :s_mx.uprice[i],
  321. :s_mx.stopflag[i],
  322. :s_mx.stopemp[i],
  323. :s_mx.stopdate[i],
  324. :s_mx.stopreason[i],
  325. :s_mx.accomplishdate[i],
  326. :s_mx.jgdscrp[i],
  327. :s_mx.stopqty[i],
  328. :s_mx.requestbuyid[i],
  329. :s_mx.relprintid[i],
  330. :s_mx.rebuyqty[i],
  331. :s_mx.buybargainid[i],
  332. :s_mx.buybargainprintid[i],
  333. :s_mx.buybargaincode[i],
  334. :s_mx.newbuybargainid[i],
  335. :s_mx.newbuybargainprintid[i],
  336. :s_mx.newbuybargaincode[i],
  337. :s_mx.newprice[i],
  338. :s_mx.newjgdscrp[i]) USING commit_transaction;
  339. IF commit_transaction.SQLCode <> 0 THEN
  340. if it_newbegin then billid = 0 //还原billid
  341. rslt = 0
  342. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  343. //ROLLBACK USING commit_transaction;
  344. GOTO ext
  345. END IF
  346. NEXT
  347. it_newbegin = FALSE
  348. it_updatebegin = FALSE
  349. ext:
  350. IF rslt = 0 THEN
  351. p_clearmx()
  352. ROLLBACK USING commit_transaction;
  353. ELSEIF arg_ifcommit AND rslt = 1 THEN
  354. COMMIT USING commit_transaction;
  355. END IF
  356. Return(rslt)
  357. end function
  358. public function integer getinfo (long arg_taskid, ref string arg_msg);//getinfo(long arg_taskid,string arg_msg)
  359. //0 失败 1成功
  360. Int rslt = 1,I = 1,NO_MXCHECK = 0
  361. IF arg_taskid <= 0 THEN
  362. rslt = 0
  363. ARG_MSG = '错误采购订单唯一码'
  364. GOTO ext
  365. END IF
  366. IF p_getinfo(arg_taskid,ARG_MSG) = 0 THEN
  367. rslt = 0
  368. GOTO ext
  369. END IF
  370. //用游标读取明细
  371. DECLARE CUR_INWAERMX CURSOR FOR
  372. SELECT u_buyTaskMx_adjustmx.mtrlid,
  373. u_buyTaskMx_adjustmx.qty,
  374. u_buyTaskMx_adjustmx.price,
  375. u_buyTaskMx_adjustmx.dscrp,
  376. u_mtrldef.mtrlcode,
  377. u_buyTaskMx_adjustmx.printid,
  378. u_buyTaskMx_adjustmx.fprice,
  379. u_buyTaskMx_adjustmx.rebate,
  380. u_buyTaskMx_adjustmx.requestbuyid,
  381. u_buyTaskMx_adjustmx.storageid,
  382. u_buyTaskMx_adjustmx.sptmtrlname,
  383. u_buyTaskMx_adjustmx.unit,
  384. u_buyTaskMx_adjustmx.rate,
  385. u_buyTaskMx_adjustmx.uqty,
  386. u_buyTaskMx_adjustmx.uprice,
  387. u_buyTaskMx_adjustmx.jgdscrp,
  388. u_buyTaskMx_adjustmx.relprintid,
  389. u_buyTaskMx_adjustmx.buybargainid,
  390. u_buyTaskMx_adjustmx.buybargainprintid,
  391. u_buyTaskMx_adjustmx.buybargaincode,
  392. u_buyTaskMx_adjustmx.consignedqty,
  393. u_buyTaskMx_adjustmx.newbuybargainid,
  394. u_buyTaskMx_adjustmx.newbuybargainprintid,
  395. u_buyTaskMx_adjustmx.newbuybargaincode,
  396. u_buyTaskMx_adjustmx.newprice,
  397. u_buyTaskMx_adjustmx.newjgdscrp,
  398. u_buyTaskMx_adjustmx.taskid,
  399. u_buyTaskMx_adjustmx.taskprintid
  400. FROM u_buyTaskMx_adjustmx,u_mtrldef
  401. WHERE u_buyTaskMx_adjustmx.billid = :arg_taskid AND
  402. u_buyTaskMx_adjustmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction;
  403. OPEN CUR_INWAERMX;
  404. FETCH CUR_INWAERMX INTO :s_mx.mtrlid[i],:s_mx.qty[i],:s_mx.price[i],
  405. :s_mx.dscrp[i],:s_mx.mtrlcode[i],
  406. :s_mx.printid[i],:s_mx.fprice[i],:s_mx.rebate[i],
  407. :s_mx.requestbuyid[i],:s_mx.storageid[i],
  408. :s_mx.sptmtrlname[i],:s_mx.unit[i],:s_mx.rate[i],
  409. :s_mx.uqty[i],:s_mx.uprice[i],:s_mx.jgdscrp[i],:s_mx.relprintid[i],
  410. :s_mx.buybargainid[i],
  411. :s_mx.buybargainprintid[i],
  412. :s_mx.buybargaincode[i],
  413. :s_mx.consignedqty[i],
  414. :s_mx.newbuybargainid[i],
  415. :s_mx.newbuybargainprintid[i],
  416. :s_mx.newbuybargaincode[i],
  417. :s_mx.newprice[i],
  418. :s_mx.newjgdscrp[i],
  419. :s_mx.taskid[i],
  420. :s_mx.taskprintid[i];
  421. DO WHILE commit_transaction.SQLCode = 0
  422. I++
  423. FETCH CUR_INWAERMX INTO :s_mx.mtrlid[i],:s_mx.qty[i],:s_mx.price[i],
  424. :s_mx.dscrp[i],:s_mx.mtrlcode[i],
  425. :s_mx.printid[i],:s_mx.fprice[i],:s_mx.rebate[i],
  426. :s_mx.requestbuyid[i],:s_mx.storageid[i],
  427. :s_mx.sptmtrlname[i],:s_mx.unit[i],:s_mx.rate[i],
  428. :s_mx.uqty[i],:s_mx.uprice[i],:s_mx.jgdscrp[i],:s_mx.relprintid[i],
  429. :s_mx.buybargainid[i],
  430. :s_mx.buybargainprintid[i],
  431. :s_mx.buybargaincode[i],
  432. :s_mx.consignedqty[i],
  433. :s_mx.newbuybargainid[i],
  434. :s_mx.newbuybargainprintid[i],
  435. :s_mx.newbuybargaincode[i],
  436. :s_mx.newprice[i],
  437. :s_mx.newjgdscrp[i],
  438. :s_mx.taskid[i],
  439. :s_mx.taskprintid[i];
  440. LOOP
  441. CLOSE CUR_INWAERMX;
  442. //检验明细是否读入完整
  443. SELECT COUNT(*) INTO :NO_MXCHECK
  444. FROM u_buyTaskMx_adjustmx
  445. Where u_buyTaskMx_adjustmx.billid = :arg_taskid USING commit_transaction;
  446. IF commit_transaction.SQLCode <> 0 THEN
  447. rslt = 0
  448. ARG_MSG = "查询操作失败,采购订单明细数量"
  449. GOTO ext
  450. END IF
  451. IF I <> (NO_MXCHECK+1) THEN
  452. rslt = 0
  453. ARG_MSG = "查询操作失败,采购订单明细"
  454. GOTO ext
  455. END IF
  456. it_mxbt = I - 1
  457. it_newbegin = FALSE
  458. it_updatebegin = FALSE
  459. ext:
  460. IF rslt = 0 THEN p_reset()
  461. RETURN rslt
  462. end function
  463. public function integer newbegin (long arg_scid, ref string arg_msg);//重置对象,设定业务类型与关联ID,准备建立新单
  464. //0 fail 1 success
  465. Long rslt = 1,CNT = 0
  466. IF arg_scid < 0 THEN
  467. arg_msg = '请选择分部'
  468. rslt = 0
  469. GOTO ext
  470. END IF
  471. p_reset()
  472. it_newbegin = TRUE
  473. it_updatebegin = FALSE
  474. scid = arg_scid
  475. ext:
  476. IF rslt = 0 THEN p_reset()
  477. RETURN rslt
  478. end function
  479. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  480. SELECT scid,
  481. billid,
  482. billCode,
  483. sptID,
  484. Status,
  485. Dscrp,
  486. relcode,
  487. flag,
  488. secflag
  489. INTO :scid,
  490. :billid,
  491. :billCode,
  492. :sptID,
  493. :Status,
  494. :Dscrp,
  495. :relcode,
  496. :flag,
  497. :secflag
  498. FROM u_buyTaskMx_adjust
  499. Where u_buyTaskMx_adjust.billid = :arg_billid USING commit_transaction;
  500. IF commit_transaction.SQLCode <> 0 THEN
  501. rslt = 0
  502. ARG_MSG = '查询订单内容失败(错误订单唯一码)'
  503. GOTO ext
  504. END IF
  505. ext:
  506. RETURN rslt
  507. end function
  508. public function integer add_dscrp (long arg_billid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);//add_dscrp(string arg_newdescppart)
  509. //0 fail 1 SUCCESS
  510. Int rslt = 1
  511. arg_newdescppart = Trim(arg_newdescppart)
  512. IF it_updatebegin Or it_newbegin THEN
  513. rslt = 0
  514. arG_MSG = "编辑状态下不可用"
  515. GOTO ext
  516. END IF
  517. IF arg_newdescppart = '' THEN
  518. rslt = 0
  519. arG_MSG = "要添加内容为空,操作取消"
  520. GOTO ext
  521. END IF
  522. IF p_getinfo(arg_billid,arG_MSG) = 0 THEN
  523. rslt = 0
  524. GOTO ext
  525. END IF
  526. IF status = 0 THEN
  527. rslt = 0
  528. arG_MSG = "待采购审核状态下不可用"
  529. GOTO ext
  530. END IF
  531. UPDATE u_buyTaskMx_adjust
  532. SET DSCRP = DSCRP+' '+:arg_newdescppart
  533. Where u_buyTaskMx_adjust.billid = :arg_billid Using commit_transaction;
  534. IF commit_transaction.SQLCode <> 0 THEN
  535. rslt = 0
  536. arG_MSG = "因网络或其它原因导致添加采购订单备注操作失败"+"~n"+commit_transaction.SQLErrText
  537. ROLLBACK Using commit_transaction;
  538. GOTO ext
  539. END IF
  540. DSCRP = DSCRP+' '+arg_newdescppart
  541. it_newbegin = False
  542. it_updatebegin = False
  543. ext:
  544. IF arg_ifcommit And rslt = 1 THEN
  545. COMMIT Using commit_transaction;
  546. END IF
  547. p_reset()
  548. Return (rslt)
  549. end function
  550. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);//删除未审核的订单
  551. //0 FAIL, 1 SUCCESS
  552. Int rslt = 1
  553. IF arg_billid <= 0 THEN
  554. rslt = 0
  555. ARG_MSG = '错误采购订单唯一码'
  556. GOTO ext
  557. END IF
  558. IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN
  559. rslt = 0
  560. GOTO ext
  561. END IF
  562. IF Status <> 0 THEN
  563. rslt = 0
  564. ARG_MSG = "订单已经审核,不可以删除"
  565. GOTO ext
  566. END IF
  567. Long cnt
  568. cnt = 0
  569. DELETE FROM u_buyTaskMx_adjust
  570. Where u_buyTaskMx_adjust.billid = :arg_billid USING commit_transaction;
  571. IF commit_transaction.SQLCode <> 0 THEN
  572. rslt = 0
  573. ARG_MSG = "删除采购订单操作失败"+"~n"+commit_transaction.SQLErrText
  574. ROLLBACK USING commit_transaction;
  575. GOTO ext
  576. END IF
  577. DELETE FROM u_buyTaskMx_adjustmx
  578. Where u_buyTaskMx_adjustmx.billid = :arg_billid USING commit_transaction;
  579. IF commit_transaction.SQLCode <> 0 THEN
  580. rslt = 0
  581. ARG_MSG = "删除采购订单明细操作失败"+"~n"+SQLCA.SQLErrText
  582. ROLLBACK USING commit_transaction;
  583. GOTO ext
  584. END IF
  585. it_newbegin = FALSE
  586. it_updatebegin = FALSE
  587. IF arg_ifcommit AND rslt = 1 THEN
  588. COMMIT USING commit_transaction;
  589. END IF
  590. ext:
  591. p_reset()
  592. Return (rslt)
  593. end function
  594. public function integer updatebegin (long arg_billid, ref string arg_msg);//UPDATEbegin(long arg_billid,ref string arg_msg)
  595. //从置对象,设定业务类型与关联ID,准备更新进仓单
  596. //0 fail 1 success
  597. Long rslt = 1,CNT = 0
  598. IF arg_billid <= 0 THEN
  599. rslt = 0
  600. ARG_MSG = '错误采购订单唯一码'
  601. GOTO ext
  602. END IF
  603. IF p_getinfo(arg_billid,ARG_MSG) = 0 THEN
  604. rslt = 0
  605. GOTO ext
  606. END IF
  607. IF flag <> 0 THEN
  608. rslt = 0
  609. ARG_MSG = '已经处于审核或完成等状态,不可以修改,如果订单未完成并要修改请先撤销审核'
  610. GOTO ext
  611. END IF
  612. it_newbegin = False
  613. it_updatebegin = True
  614. p_clearmx() //清除明细
  615. ext:
  616. IF rslt = 0 THEN p_reset()
  617. RETURN rslt
  618. end function
  619. public function integer cancelpermit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1,cnt = 0
  620. DateTime NULLDT
  621. SetNull(NULLDT)
  622. //uo_requestbuy uo_task
  623. //uo_task = CREATE uo_requestbuy
  624. //uo_task.commit_transaction = commit_transaction
  625. IF arg_billid <= 0 THEN
  626. rslt = 0
  627. ARG_MSG = '错误采购订单唯一码'
  628. GOTO ext
  629. END IF
  630. IF getinfo(arg_billid,ARG_MSG) = 0 THEN
  631. rslt = 0
  632. GOTO ext
  633. END IF
  634. IF Status <> 1 THEN
  635. rslt = 0
  636. ARG_MSG = "订单只有在已审核状态才可以执行撤消审核,请核对"
  637. GOTO ext
  638. END IF
  639. UPDATE u_buyTaskMx_adjust
  640. SET Status = 0,Permit_date = :NULLDT,
  641. Permit_Emp = ''
  642. Where billid = :arg_billid AND Status = 1 USING commit_transaction ;
  643. IF commit_transaction.SQLCode <> 0 THEN
  644. rslt = 0
  645. ARG_MSG = "因网络或其它原因导致采购订单撤消审核操作失败"+"~n"+commit_transaction.SQLErrText
  646. GOTO ext
  647. END IF
  648. it_newbegin = FALSE
  649. it_updatebegin = FALSE
  650. ext:
  651. IF rslt = 0 THEN
  652. ROLLBACK USING commit_transaction;
  653. ELSEIF arg_ifcommit AND rslt = 1 THEN
  654. COMMIT USING commit_transaction;
  655. END IF
  656. //DESTROY uo_task
  657. p_reset()
  658. Return (rslt)
  659. end function
  660. public function integer acceptmx (s_buytask_mx_ch arg_mx, ref string arg_msg);
  661. Long rslt = 1,cnt = 0,LS_i
  662. //写入内容
  663. FOR LS_i = 1 TO UpperBound(arg_mx.taskid)
  664. IF arg_mx.mtrlid[LS_i]=0 THEN CONTINUE
  665. it_mxbt++
  666. s_mx.taskid[it_mxbt] = arg_mx.taskid[LS_i]
  667. s_mx.taskcode[it_mxbt] = arg_mx.taskcode[LS_i]
  668. s_mx.requiredate[it_mxbt] = arg_mx.requiredate[LS_i]
  669. s_mx.dscrp[it_mxbt] = arg_mx.dscrp[LS_i]
  670. s_mx.mtrlid[it_mxbt] = arg_mx.mtrlid[LS_i]
  671. s_mx.fprice[it_mxbt] = arg_mx.fprice[LS_i]
  672. s_mx.rebate[it_mxbt] = arg_mx.rebate[LS_i]
  673. s_mx.qty[it_mxbt] = arg_mx.qty[LS_i]
  674. s_mx.jgdscrp[it_mxbt] = arg_mx.jgdscrp[LS_i]
  675. s_mx.relprintid[it_mxbt] = arg_mx.relprintid[LS_i]
  676. s_mx.uprice[it_mxbt] = arg_mx.uprice[LS_i]
  677. s_mx.mx_unit[it_mxbt] = arg_mx.unit[LS_i]
  678. s_mx.requestbuyid[it_mxbt] = arg_mx.requestbuyid[LS_i]
  679. s_mx.taskprintid[it_mxbt] = arg_mx.taskprintid[LS_i]
  680. s_mx.printid[it_mxbt] = it_mxbt
  681. s_mx.price[it_mxbt] = arg_mx.price[LS_i]
  682. s_mx.accomplishdate[it_mxbt] = arg_mx.accomplishdate[LS_i]
  683. s_mx.storageid[it_mxbt] = arg_mx.storageid[LS_i]
  684. s_mx.iforder[it_mxbt] = arg_mx.iforder[LS_i]
  685. s_mx.sptmtrlname[it_mxbt] = arg_mx.sptmtrlname[LS_i]
  686. s_mx.unit[it_mxbt] = arg_mx.unit[LS_i]
  687. s_mx.uqty[it_mxbt] = arg_mx.uqty[LS_i]
  688. s_mx.rebuyqty[it_mxbt] = arg_mx.rebuyqty[LS_i]
  689. s_mx.orderid[it_mxbt] = arg_mx.orderid[LS_i]
  690. s_mx.buybargainid[it_mxbt] = arg_mx.buybargainid[LS_i]
  691. s_mx.buybargainprintid[it_mxbt] = arg_mx.buybargainprintid[LS_i]
  692. s_mx.buybargaincode[it_mxbt] = arg_mx.buybargaincode[LS_i]
  693. s_mx.newbuybargainid[it_mxbt] = arg_mx.newbuybargainid[LS_i]
  694. s_mx.newbuybargainprintid[it_mxbt] = arg_mx.newbuybargainprintid[LS_i]
  695. s_mx.newbuybargaincode[it_mxbt] = arg_mx.newbuybargaincode[LS_i]
  696. s_mx.newjgdscrp[it_mxbt] = arg_mx.newjgdscrp[LS_i]
  697. s_mx.newprice[it_mxbt] = arg_mx.newprice[LS_i]
  698. s_mx.consignedqty[it_mxbt] = arg_mx.consignedqty[LS_i]
  699. NEXT
  700. //ext:
  701. IF rslt = 0 THEN p_clearmx()
  702. Return(rslt)
  703. end function
  704. public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  705. Int rslt = 1,i
  706. IF arg_billid <= 0 THEN
  707. rslt = 0
  708. ARG_MSG = '错误单据唯一码'
  709. GOTO ext
  710. END IF
  711. IF getinfo( arg_billid, ARG_MSG) = 0 THEN
  712. rslt = 0
  713. GOTO ext
  714. END IF
  715. IF flag = 1 THEN
  716. rslt = 0
  717. ARG_MSG = "调价单还没有审核,请核对"
  718. GOTO ext
  719. END IF
  720. //更新审核标记
  721. UPDATE u_buyTaskMx_adjust
  722. SET auditingrep = :publ_operator ,
  723. Auditingdate = getdate(),
  724. flag = 1
  725. WHERE billid = :arg_billid
  726. And flag = 0;
  727. IF sqlca.SQLCode <> 0 THEN
  728. rslt = 0
  729. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  730. GOTO ext
  731. END IF
  732. FOR i = 1 To it_mxbt
  733. UPDATE u_buytaskmx SET
  734. rebate = :s_mx.rebate[i],
  735. enprice = :s_mx.newprice[i],
  736. uprice = :s_mx.newprice[i] * u_buytask.mrate,
  737. fprice = Round((:s_mx.newprice[i] * u_buytaskmx.uqty * u_buytask.mrate)/(Round(u_buytaskmx.uqty * rate,:sys_option_unit_dec)),10),
  738. price = (Round((:s_mx.newprice[i] * u_buytaskmx.uqty * u_buytask.mrate)/(Round(u_buytaskmx.uqty * rate,:sys_option_unit_dec)),5)) * :s_mx.rebate[i],
  739. buybargaincode = :s_mx.newbuybargaincode[i],
  740. buybargainid = :s_mx.newbuybargainid[i],
  741. buybargainprintid = :s_mx.newbuybargainprintid[i],
  742. jgdscrp = :s_mx.newjgdscrp[i]
  743. FROM u_buyTaskMx INNER JOIN
  744. u_buyTask ON u_buyTaskMx.scid = u_buyTask.scid AND
  745. u_buyTaskMx.TaskID = u_buyTask.TaskID
  746. WHERE u_buyTaskMx.scid = :scid
  747. AND u_buyTaskMx.taskid = :s_mx.taskid[i]
  748. AND u_buyTaskMx.printid = :s_mx.taskprintid[i]
  749. And u_buyTaskMx.mtrlid = :s_mx.mtrlid[i];
  750. IF sqlca.SQLCode <> 0 THEN
  751. rslt = 0
  752. ARG_MSG = '更新采购订单单价失败'+sqlca.SQLErrText
  753. GOTO ext
  754. END IF
  755. NEXT
  756. ext:
  757. IF rslt = 0 THEN
  758. ROLLBACK;
  759. ELSEIF rslt = 1 And arg_ifcommit THEN
  760. COMMIT;
  761. END IF
  762. RETURN rslt
  763. end function
  764. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  765. Int rslt = 1,i
  766. datetime ls_null
  767. setnull(ls_null)
  768. IF arg_billid <= 0 THEN
  769. rslt = 0
  770. ARG_MSG = '错误单据唯一码'
  771. GOTO ext
  772. END IF
  773. IF getinfo( arg_billid, ARG_MSG) = 0 THEN
  774. rslt = 0
  775. GOTO ext
  776. END IF
  777. IF flag =0 THEN
  778. rslt = 0
  779. ARG_MSG = "调价单还没有审核,请核对"
  780. GOTO ext
  781. END IF
  782. //更新审核标记
  783. UPDATE u_buyTaskMx_adjust
  784. SET auditingrep = '' ,
  785. Auditingdate = :ls_null,
  786. flag = 0
  787. WHERE billid = :arg_billid
  788. AND flag = 1;
  789. IF sqlca.SQLCode <> 0 THEN
  790. rslt = 0
  791. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  792. GOTO ext
  793. END IF
  794. //FOR i = 1 TO it_mxbt
  795. //
  796. // UPDATE u_buytaskmx SET
  797. // uprice = s_mx.newprice[i],
  798. // fprice = Round((:s_mx.newprice[i] * uqty)/(Round(uqty * rate,:sys_option_unit_dec)),5),
  799. // acprice = (Round((:s_mx.newprice[i] * uqty)/(Round(uqty * rate,:sys_option_unit_dec)),5)) * arg_rebate
  800. // Where taskid = :s_mx.taskid[i] AND printid = :s_mx.taskprintid[i];
  801. // IF sqlca.SQLCode <> 0 THEN
  802. // rslt = 0
  803. // ARG_MSG = '更新采购单价失败'+sqlca.SQLErrText
  804. // GOTO ext
  805. // END IF
  806. //
  807. //NEXT
  808. ext:
  809. IF rslt = 0 THEN
  810. ROLLBACK;
  811. ELSEIF rslt = 1 AND arg_ifcommit THEN
  812. COMMIT;
  813. END IF
  814. RETURN rslt
  815. end function
  816. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  817. Int rslt = 1,i
  818. IF arg_billid <= 0 THEN
  819. rslt = 0
  820. ARG_MSG = '错误单据唯一码'
  821. GOTO ext
  822. END IF
  823. IF getinfo( arg_billid, ARG_MSG) = 0 THEN
  824. rslt = 0
  825. GOTO ext
  826. END IF
  827. IF flag = 2 THEN
  828. rslt = 0
  829. ARG_MSG = "调价单已高审,请核对"
  830. GOTO ext
  831. END IF
  832. //更新审核标记
  833. UPDATE u_buyTaskMx_adjust
  834. SET secauditingrep = :publ_operator ,
  835. secauditingdate = getdate(),
  836. flag = 2
  837. WHERE billid = :arg_billid
  838. AND flag = 1;
  839. IF sqlca.SQLCode <> 0 THEN
  840. rslt = 0
  841. ARG_MSG = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  842. GOTO ext
  843. END IF
  844. ext:
  845. IF rslt = 0 THEN
  846. ROLLBACK;
  847. ELSEIF rslt = 1 AND arg_ifcommit THEN
  848. COMMIT;
  849. END IF
  850. RETURN rslt
  851. end function
  852. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  853. Int rslt = 1,i
  854. datetime ls_null
  855. setnull(ls_null)
  856. IF arg_billid <= 0 THEN
  857. rslt = 0
  858. ARG_MSG = '错误单据唯一码'
  859. GOTO ext
  860. END IF
  861. IF getinfo( arg_billid, ARG_MSG) = 0 THEN
  862. rslt = 0
  863. GOTO ext
  864. END IF
  865. IF flag <> 2 THEN
  866. rslt = 0
  867. ARG_MSG = "调价单未高审,不能撤审,请核对"
  868. GOTO ext
  869. END IF
  870. //更新审核标记
  871. UPDATE u_buyTaskMx_adjust
  872. SET secauditingrep = '' ,
  873. secauditingdate = :ls_null,
  874. flag = 1
  875. WHERE billid = :arg_billid
  876. AND flag = 2;
  877. IF sqlca.SQLCode <> 0 THEN
  878. rslt = 0
  879. ARG_MSG = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  880. GOTO ext
  881. END IF
  882. ext:
  883. IF rslt = 0 THEN
  884. ROLLBACK;
  885. ELSEIF rslt = 1 AND arg_ifcommit THEN
  886. COMMIT;
  887. END IF
  888. RETURN rslt
  889. end function
  890. on uo_buytask_adjust.create
  891. call super::create
  892. TriggerEvent( this, "constructor" )
  893. end on
  894. on uo_buytask_adjust.destroy
  895. TriggerEvent( this, "destructor" )
  896. call super::destroy
  897. end on