uo_mt.sru 24 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262
  1. $PBExportHeader$uo_mt.sru
  2. forward
  3. global type uo_mt from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_mt from nonvisualobject
  7. end type
  8. global uo_mt uo_mt
  9. type variables
  10. public protectedwrite datetime opdate //建立时间,自动
  11. public protectedwrite string opemp //建立操作员
  12. public protectedwrite datetime moddate //修改时间,自动
  13. public protectedwrite string modemp //修改操作员
  14. public protectedwrite int flag=0 //仓库审核标志
  15. public protectedwrite datetime auditingdate //审核时间
  16. public protectedwrite string auditingrep //审核操作员
  17. PUBLIC PROTECTEDWRITE Int secflag = 0 //财务审核标志
  18. PUBLIC PROTECTEDWRITE DateTime secauditingdate //二审核时间
  19. PUBLIC PROTECTEDWRITE String secauditingrep //二审核操作员
  20. datetime billdate
  21. string relcode
  22. LONG billid
  23. string billcode
  24. string ftxt
  25. string ttxt
  26. string dscrp
  27. string dscrp1
  28. string dscrp2
  29. string dscrp3
  30. string modelname
  31. string descriptionname
  32. string colorname
  33. string nwname
  34. string gwname
  35. string packingname
  36. string measname
  37. string enamename
  38. string pmodename
  39. string barcodename
  40. string qtyname
  41. string dscrpname
  42. blob fpic
  43. blob tpic
  44. long billtype=0
  45. long cusid=0
  46. string packsizename
  47. string packbulkname
  48. string descriptionsizename
  49. string glidename
  50. string prdcodename
  51. boolean if_getid_ture=false
  52. transaction commit_transaction //数据commit事务
  53. s_mtmx mtmx //明细结构数组
  54. long it_mxbt=0 //明细结构数组末指针
  55. boolean it_newbegin=false //新建标志
  56. boolean it_updatebegin=false //修改标志
  57. end variables
  58. forward prototypes
  59. public function integer p_reset ()
  60. public function integer p_clearmx ()
  61. public function integer newbegin (integer arg_billtype, ref string arg_msg)
  62. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  63. public function integer getinfo (long arg_billid, ref string arg_msg)
  64. public function integer save (boolean arg_ifcommit, ref string arg_msg)
  65. public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  66. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  67. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  68. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  69. public function integer acceptmx (s_mtmx arg_mx, ref string arg_msg)
  70. public function integer updatebegin (long arg_billid, ref string arg_msg)
  71. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  72. public function integer savepic (string arg_msg)
  73. end prototypes
  74. public function integer p_reset ();//int p_reset()
  75. //清除对象及其明细
  76. billid = 0
  77. billcode = ''
  78. ftxt = ''
  79. ttxt = ''
  80. dscrp = ''
  81. dscrp1 = ''
  82. dscrp2 = ''
  83. dscrp3 = ''
  84. modelname = ''
  85. descriptionname = ''
  86. colorname = ''
  87. nwname = ''
  88. gwname = ''
  89. packingname = ''
  90. measname = ''
  91. enamename = ''
  92. pmodename = ''
  93. barcodename = ''
  94. qtyname = ''
  95. dscrpname = ''
  96. cusid=0
  97. relcode = ''
  98. billtype = 0
  99. setnull(fpic)
  100. setnull(tpic)
  101. it_newbegin = FALSE
  102. it_updatebegin = FALSE
  103. //清除明细
  104. p_clearmx()
  105. RETURN 1
  106. end function
  107. public function integer p_clearmx ();//int p_clearmx()
  108. //清除明细
  109. it_mxbt=0
  110. return 1
  111. end function
  112. public function integer newbegin (integer arg_billtype, ref string arg_msg);//====================================================================
  113. // Function: newbegin(long arg_scid,int arg_billtype,ref string arg_msg)
  114. //--------------------------------------------------------------------
  115. // Description: 从置对象,设定业务类型,准备建立新进仓单
  116. //--------------------------------------------------------------------
  117. // Arguments:
  118. // value long arg_scid
  119. // value integer arg_billtype
  120. // reference string arg_msg
  121. //--------------------------------------------------------------------
  122. // Returns: integer
  123. //--------------------------------------------------------------------
  124. // Author: yyx Date: 2003.11.12
  125. //--------------------------------------------------------------------
  126. // Modify History:
  127. //
  128. //====================================================================
  129. int rslt=1
  130. p_reset()
  131. it_newbegin=true
  132. it_updatebegin=false
  133. if rslt=0 then p_reset()
  134. return rslt
  135. end function
  136. public function integer p_getinfo (long arg_billid, ref string arg_msg);//p_getinfo(arg_scid,arg_billid,arg_msg)
  137. //0 失败 1成功
  138. Int rslt = 1
  139. IF arg_billid <= 0 THEN
  140. rslt = 0
  141. arG_MSG = "非法进仓单唯一码"
  142. GOTO ext
  143. END IF
  144. SELECT billid,
  145. billcode,
  146. ftxt,
  147. ttxt,
  148. dscrp,
  149. modelname,
  150. descriptionname,
  151. colorname,
  152. nwname,
  153. gwname,
  154. packingname,
  155. measname,
  156. enamename,
  157. pmodename,
  158. barcodename,
  159. qtyname,
  160. dscrpname,
  161. flag,
  162. relcode,
  163. billtype,
  164. cusid,
  165. packsizename ,
  166. packbulkname ,
  167. descriptionsizename ,
  168. glidename ,
  169. prdcodename
  170. INTO
  171. :billid,
  172. :billcode,
  173. :ftxt,
  174. :ttxt,
  175. :dscrp,
  176. :modelname,
  177. :descriptionname,
  178. :colorname,
  179. :nwname,
  180. :gwname,
  181. :packingname,
  182. :measname,
  183. :enamename,
  184. :pmodename,
  185. :barcodename,
  186. :qtyname,
  187. :dscrpname,
  188. :flag,
  189. :relcode,
  190. :billtype,
  191. :cusid,
  192. :packsizename ,
  193. :packbulkname ,
  194. :descriptionsizename ,
  195. :glidename ,
  196. :prdcodename
  197. FROM u_mt
  198. WHERE u_mt.billid = :arg_billid
  199. USING commit_transaction;
  200. IF commit_transaction.SQLCode <> 0 THEN
  201. rslt = 0
  202. arG_MSG = "查询操作失败(错误进仓单唯一码),进仓单"+commit_transaction.SQLErrText
  203. GOTO ext
  204. END IF
  205. billid = arg_billid
  206. ext:
  207. IF rslt = 0 THEN
  208. p_reset()
  209. end if
  210. RETURN rslt
  211. end function
  212. public function integer getinfo (long arg_billid, ref string arg_msg);//getinfo(arg_scid,arg_billid,arg_msg)
  213. //0 失败 1成功
  214. Int rslt = 1,i = 1,no_mxcheck = 0
  215. IF arg_billid <= 0 THEN
  216. rslt = 0
  217. arg_msg = "非法进仓单唯一码"
  218. GOTO ext
  219. END IF
  220. rslt = p_getinfo(arg_billid,arg_msg) //读主表
  221. IF rslt = 0 THEN GOTO ext
  222. //用游标读取明细
  223. DECLARE cur_inwaermx CURSOR FOR
  224. SELECT
  225. u_mtmx.billid,
  226. u_mtrldef.mtrlcode,
  227. u_mtrldef.mtrlname,
  228. u_mtmx.dscrp,
  229. u_mtmx.model,
  230. u_mtmx.description,
  231. u_mtmx.color,
  232. u_mtmx.nw,
  233. u_mtmx.gw,
  234. u_mtmx.packing,
  235. u_mtmx.meas,
  236. u_mtmx.pmode,
  237. u_mtmx.barcode,
  238. u_mtmx.qty,
  239. u_mtmx.ename,
  240. u_mtmx.mtrlid,
  241. u_mtmx.reltaskid,
  242. u_mtmx.relprintid,
  243. u_mtmx.sptid,
  244. u_mtmx.reltaskcode,
  245. u_mtmx.relbillcode,
  246. u_mtmx.relid,
  247. u_mtmx.zxmtrlmode,
  248. u_mtmx.packsize ,
  249. u_mtmx.packbulk ,
  250. u_mtmx.descriptionsize ,
  251. u_mtmx.glide ,
  252. u_mtmx.prdcode
  253. FROM u_mtmx,u_mtrldef
  254. WHERE u_mtmx.billid = :arg_billid AND
  255. u_mtmx.mtrlid = u_mtrldef.mtrlid USING commit_transaction;
  256. OPEN cur_inwaermx;
  257. FETCH cur_inwaermx INTO
  258. :mtmx.billid[i],
  259. :mtmx.mtrlcode[i],
  260. :mtmx.mtrlname[i],
  261. :mtmx.dscrp[i],
  262. :mtmx.model[i],
  263. :mtmx.description[i],
  264. :mtmx.color[i],
  265. :mtmx.nw[i],
  266. :mtmx.gw[i],
  267. :mtmx.packing[i],
  268. :mtmx.meas[i],
  269. :mtmx.pmode[i],
  270. :mtmx.barcode[i],
  271. :mtmx.qty[i],
  272. :mtmx.ename[i],
  273. :mtmx.mtrlid[i],
  274. :mtmx.reltaskid[i],
  275. :mtmx.relprintid[i],
  276. :mtmx.sptid[i],
  277. :mtmx.reltaskcode[i],
  278. :mtmx.relbillcode[i],
  279. :mtmx.relid[i],
  280. :mtmx.zxmtrlmode[i],
  281. :mtmx.packsize[i] ,
  282. :mtmx.packbulk[i] ,
  283. :mtmx.descriptionsize[i] ,
  284. :mtmx.glide[i] ,
  285. :mtmx.prdcode[i];
  286. DO WHILE commit_transaction.SQLCode = 0
  287. i++
  288. FETCH cur_inwaermx INTO
  289. :mtmx.billid[i],
  290. :mtmx.mtrlcode[i],
  291. :mtmx.mtrlname[i],
  292. :mtmx.dscrp[i],
  293. :mtmx.model[i],
  294. :mtmx.description[i],
  295. :mtmx.color[i],
  296. :mtmx.nw[i],
  297. :mtmx.gw[i],
  298. :mtmx.packing[i],
  299. :mtmx.meas[i],
  300. :mtmx.pmode[i],
  301. :mtmx.barcode[i],
  302. :mtmx.qty[i],
  303. :mtmx.ename[i],
  304. :mtmx.mtrlid[i],
  305. :mtmx.reltaskid[i],
  306. :mtmx.relprintid[i],
  307. :mtmx.sptid[i],
  308. :mtmx.reltaskcode[i],
  309. :mtmx.relbillcode[i],
  310. :mtmx.relid[i],
  311. :mtmx.zxmtrlmode[i],
  312. :mtmx.packsize[i] ,
  313. :mtmx.packbulk[i] ,
  314. :mtmx.descriptionsize[i] ,
  315. :mtmx.glide[i] ,
  316. :mtmx.prdcode[i];
  317. LOOP
  318. CLOSE cur_inwaermx;
  319. //检验明细是否读入完整
  320. SELECT count(*) INTO :no_mxcheck
  321. FROM u_mtmx
  322. Where u_mtmx.billid = :arg_billid USING commit_transaction;
  323. IF commit_transaction.SQLCode <> 0 THEN
  324. rslt = 0
  325. arg_msg = "查询操作失败,进仓单明细数量"
  326. GOTO ext
  327. END IF
  328. IF i <> (no_mxcheck+1) THEN
  329. rslt = 0
  330. arg_msg = "查询操作失败,进仓单明细"
  331. GOTO ext
  332. END IF
  333. billid = arg_billid
  334. it_mxbt = i - 1
  335. it_newbegin = FALSE
  336. it_updatebegin = FALSE
  337. ext:
  338. IF rslt = 0 THEN p_reset()
  339. RETURN rslt
  340. end function
  341. public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
  342. DateTime server_dt
  343. Long ls_newid
  344. String ls_sccode
  345. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  346. rslt = 0
  347. arg_msg = "非编辑状态不可以提交"
  348. GOTO ext
  349. END IF
  350. SELECT Top 1 getdate() INTO :server_dt FROM u_user USING commit_transaction ;
  351. //取得系统时间,借用操作员表
  352. IF commit_transaction.SQLCode <> 0 THEN
  353. rslt = 0
  354. arg_msg = "查询操作失败,日期 "
  355. GOTO ext
  356. END IF
  357. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  358. rslt = 0
  359. arg_msg = "没有正确进仓内容"
  360. GOTO ext
  361. END IF
  362. IF Year(Date(billdate)) < 2000 OR IsNull(billdate) THEN
  363. rslt = 0
  364. arg_msg = "缺少进仓发生时间或不合理"
  365. GOTO ext
  366. END IF
  367. //====================================================================
  368. // Script - save ( boolean arg_ifcommit, ref string arg_msg )
  369. // Reason:
  370. //--------------------------------------------------------------------
  371. // Modified By: yyx Date: 2004.01.02
  372. //--------------------------------------------------------------------
  373. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  374. IF billid = 0 THEN //新建
  375. ls_newid = f_sys_scidentity(0,"u_mt","billid",arg_msg,if_getid_ture,commit_transaction)
  376. IF ls_newid <= 0 THEN
  377. rslt = 0
  378. GOTO ext
  379. END IF
  380. //取分部代号
  381. IF f_get_sccode(0,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  382. rslt = 0
  383. GOTO ext
  384. END IF
  385. IF billtype = 0 THEN
  386. billcode = getid(0,ls_sccode + 'MD',Date(server_dt),FALSE,commit_transaction)
  387. ELSE
  388. billcode = getid(0,ls_sccode + 'MT',Date(server_dt),FALSE,commit_transaction)
  389. END IF
  390. IF billcode = "err" THEN
  391. billcode = ''
  392. rslt = 0
  393. arg_msg = "无法获取进仓单编号"+"~n"+commit_transaction.SQLErrText
  394. GOTO ext
  395. END IF
  396. INSERT INTO u_mt (
  397. billid,
  398. billcode,
  399. billdate,
  400. ftxt,
  401. ttxt,
  402. dscrp,
  403. modelname,
  404. descriptionname,
  405. colorname,
  406. nwname,
  407. gwname,
  408. packingname,
  409. measname,
  410. enamename,
  411. pmodename,
  412. barcodename,
  413. qtyname,
  414. dscrpname,
  415. billtype,
  416. relcode,
  417. cusid,
  418. packsizename ,
  419. packbulkname ,
  420. descriptionsizename ,
  421. glidename ,
  422. prdcodename,
  423. opdate,
  424. opemp,
  425. dscrp1,
  426. dscrp2,
  427. dscrp3)
  428. VALUES (
  429. :ls_newid,
  430. :billcode,
  431. :billdate,
  432. :ftxt,
  433. :ttxt,
  434. :dscrp,
  435. :modelname,
  436. :descriptionname,
  437. :colorname,
  438. :nwname,
  439. :gwname,
  440. :packingname,
  441. :measname,
  442. :enamename,
  443. :pmodename,
  444. :barcodename,
  445. :qtyname,
  446. :dscrpname,
  447. :billtype,
  448. :relcode,
  449. :cusid,
  450. :packsizename ,
  451. :packbulkname ,
  452. :descriptionsizename ,
  453. :glidename ,
  454. :prdcodename,
  455. getdate(),
  456. :publ_operator,
  457. :dscrp1,
  458. :dscrp2,
  459. :dscrp3
  460. ) USING commit_transaction ;
  461. IF commit_transaction.SQLCode <> 0 THEN
  462. rslt = 0
  463. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
  464. GOTO ext
  465. END IF
  466. //读取新billid
  467. billid = ls_newid
  468. FOR i = 1 TO it_mxbt
  469. INSERT INTO u_mtmx
  470. (
  471. billid,
  472. dscrp,
  473. model,
  474. description,
  475. color,
  476. nw,
  477. gw,
  478. packing,
  479. meas,
  480. pmode,
  481. barcode,
  482. qty,
  483. ename,
  484. mtrlid,
  485. reltaskid,
  486. relprintid,
  487. sptid,
  488. reltaskcode,
  489. relbillcode,
  490. relid,
  491. zxmtrlmode,
  492. packsize ,
  493. packbulk ,
  494. descriptionsize ,
  495. glide ,
  496. prdcode,
  497. printid,
  498. dscrp1,
  499. dscrp2,
  500. dscrp3
  501. )
  502. VALUES (
  503. :ls_newid,
  504. :mtmx.dscrp[i],
  505. :mtmx.model[i],
  506. :mtmx.description[i],
  507. :mtmx.color[i],
  508. :mtmx.nw[i],
  509. :mtmx.gw[i],
  510. :mtmx.packing[i],
  511. :mtmx.meas[i],
  512. :mtmx.pmode[i],
  513. :mtmx.barcode[i],
  514. :mtmx.qty[i],
  515. :mtmx.ename[i],
  516. :mtmx.mtrlid[i],
  517. :mtmx.reltaskid[i],
  518. :mtmx.relprintid[i],
  519. :mtmx.sptid[i],
  520. :mtmx.reltaskcode[i],
  521. :mtmx.relbillcode[i],
  522. :mtmx.relid[i],
  523. :mtmx.zxmtrlmode[i],
  524. :mtmx.packsize[i] ,
  525. :mtmx.packbulk[i] ,
  526. :mtmx.descriptionsize[i] ,
  527. :mtmx.glide[i],
  528. :mtmx.prdcode[i],
  529. :mtmx.printid[i],
  530. :mtmx.dscrp1[i],
  531. :mtmx.dscrp2[i],
  532. :mtmx.dscrp3[i]
  533. ) USING commit_transaction;
  534. IF commit_transaction.SQLCode <> 0 THEN
  535. billid = 0 //还原billid
  536. rslt = 0
  537. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  538. GOTO ext
  539. END IF
  540. NEXT
  541. ELSE //////////////////////////////////////////////// //更新
  542. UPDATE u_mt
  543. SET
  544. ftxt = :ftxt,
  545. ttxt = :ttxt,
  546. dscrp = :dscrp,
  547. modelname = :modelname,
  548. descriptionname = :descriptionname,
  549. colorname = :colorname,
  550. nwname = :nwname,
  551. gwname = :gwname,
  552. packingname = :packingname,
  553. measname = :measname,
  554. enamename = :enamename,
  555. pmodename = :pmodename,
  556. barcodename = :barcodename,
  557. qtyname = :qtyname,
  558. dscrpname = :dscrpname,
  559. relcode = :relcode,
  560. billdate = :billdate,
  561. cusid = :cusid,
  562. packsizename = :packsizename ,
  563. packbulkname = :packbulkname ,
  564. descriptionsizename = :descriptionsizename ,
  565. glidename = :glidename ,
  566. prdcodename = :prdcodename,
  567. moddate=getdate(),
  568. modemp=:publ_operator,
  569. dscrp1 = :dscrp1,
  570. dscrp2 = :dscrp2,
  571. dscrp3 = :dscrp3
  572. WHERE u_mt.billid = :billid
  573. AND flag = 0 USING commit_transaction;
  574. IF commit_transaction.SQLCode <> 0 OR commit_transaction.SQLNRows <= 0 THEN
  575. rslt = 0
  576. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+commit_transaction.SQLErrText
  577. GOTO ext
  578. END IF
  579. //删除原有明细
  580. DELETE FROM u_mtmx
  581. Where u_mtmx.billid = :billid USING commit_transaction;
  582. IF commit_transaction.SQLCode <> 0 THEN
  583. rslt = 0
  584. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  585. GOTO ext
  586. END IF
  587. FOR i = 1 TO it_mxbt
  588. INSERT INTO u_mtmx
  589. (billid,
  590. dscrp,
  591. model,
  592. description,
  593. color,
  594. nw,
  595. gw,
  596. packing,
  597. meas,
  598. pmode,
  599. barcode,
  600. qty,
  601. ename,
  602. mtrlid,
  603. reltaskid,
  604. relprintid,
  605. sptid,
  606. reltaskcode,
  607. relbillcode,
  608. relid,
  609. zxmtrlmode,
  610. packsize,
  611. packbulk ,
  612. descriptionsize ,
  613. glide ,
  614. prdcode,
  615. printid,
  616. dscrp1,
  617. dscrp2,
  618. dscrp3)
  619. VALUES (
  620. :billid,
  621. :mtmx.dscrp[i],
  622. :mtmx.model[i],
  623. :mtmx.description[i],
  624. :mtmx.color[i],
  625. :mtmx.nw[i],
  626. :mtmx.gw[i],
  627. :mtmx.packing[i],
  628. :mtmx.meas[i],
  629. :mtmx.pmode[i],
  630. :mtmx.barcode[i],
  631. :mtmx.qty[i],
  632. :mtmx.ename[i],
  633. :mtmx.mtrlid[i],
  634. :mtmx.reltaskid[i],
  635. :mtmx.relprintid[i],
  636. :mtmx.sptid[i],
  637. :mtmx.reltaskcode[i],
  638. :mtmx.relbillcode[i],
  639. :mtmx.relid[i],
  640. :mtmx.zxmtrlmode[i],
  641. :mtmx.packsize[i] ,
  642. :mtmx.packbulk[i] ,
  643. :mtmx.descriptionsize[i] ,
  644. :mtmx.glide[i],
  645. :mtmx.prdcode[i],
  646. :mtmx.printid[i],
  647. :mtmx.dscrp1[i],
  648. :mtmx.dscrp2[i],
  649. :mtmx.dscrp3[i]) USING commit_transaction;
  650. IF commit_transaction.SQLCode <> 0 THEN
  651. rslt = 0
  652. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+commit_transaction.SQLErrText
  653. GOTO ext
  654. END IF
  655. NEXT
  656. END IF
  657. it_newbegin = FALSE
  658. it_updatebegin = FALSE
  659. ext:
  660. IF rslt = 0 THEN
  661. ROLLBACK USING commit_transaction;
  662. p_clearmx()
  663. ELSEIF rslt = 1 AND arg_ifcommit THEN
  664. COMMIT USING commit_transaction;
  665. savepic(arg_msg)
  666. END IF
  667. RETURN rslt
  668. end function
  669. public function integer auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  670. Int rslt = 1,i
  671. IF arg_billid <= 0 THEN
  672. rslt = 0
  673. arg_msg = '错误单据唯一码'
  674. GOTO ext
  675. END IF
  676. IF getinfo( arg_billid, arg_msg) = 0 THEN
  677. rslt = 0
  678. GOTO ext
  679. END IF
  680. IF flag = 1 THEN
  681. rslt = 0
  682. arg_msg = "计件工价计算还没有审核,请核对"
  683. GOTO ext
  684. END IF
  685. //更新审核标记
  686. UPDATE u_mt
  687. SET auditingrep = :publ_operator ,
  688. Auditingdate = getdate(),
  689. flag = 1
  690. WHERE billid = :arg_billid
  691. AND flag = 0;
  692. IF sqlca.SQLCode <> 0 THEN
  693. rslt = 0
  694. arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  695. GOTO ext
  696. END IF
  697. ext:
  698. IF rslt = 0 THEN
  699. ROLLBACK;
  700. ELSEIF rslt = 1 AND arg_ifcommit THEN
  701. COMMIT;
  702. END IF
  703. RETURN rslt
  704. end function
  705. public function integer c_auditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  706. Int rslt = 1,i
  707. DateTime ls_null
  708. SetNull(ls_null)
  709. IF arg_billid <= 0 THEN
  710. rslt = 0
  711. arg_msg = '错误单据唯一码'
  712. GOTO ext
  713. END IF
  714. IF getinfo( arg_billid, arg_msg) = 0 THEN
  715. rslt = 0
  716. GOTO ext
  717. END IF
  718. IF flag = 0 THEN
  719. rslt = 0
  720. arg_msg = "计件工价计算还没有审核,请核对"
  721. GOTO ext
  722. END IF
  723. //更新审核标记
  724. UPDATE u_mt
  725. SET auditingrep = '' ,
  726. Auditingdate = :ls_null,
  727. flag = 0
  728. WHERE billid = :arg_billid
  729. AND flag = 1;
  730. IF sqlca.SQLCode <> 0 THEN
  731. rslt = 0
  732. arg_msg = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  733. GOTO ext
  734. END IF
  735. ext:
  736. IF rslt = 0 THEN
  737. ROLLBACK;
  738. ELSEIF rslt = 1 AND arg_ifcommit THEN
  739. COMMIT;
  740. END IF
  741. RETURN rslt
  742. end function
  743. public function integer secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  744. Int rslt = 1,i
  745. IF arg_billid <= 0 THEN
  746. rslt = 0
  747. arg_msg = '错误单据唯一码'
  748. GOTO ext
  749. END IF
  750. IF getinfo( arg_billid, arg_msg) = 0 THEN
  751. rslt = 0
  752. GOTO ext
  753. END IF
  754. IF flag = 2 THEN
  755. rslt = 0
  756. arg_msg = "单据已高审,请核对"
  757. GOTO ext
  758. END IF
  759. //更新审核标记
  760. UPDATE u_mt
  761. SET secauditingrep = :publ_operator ,
  762. secauditingdate = getdate(),
  763. flag = 2
  764. WHERE billid = :arg_billid
  765. AND flag = 1;
  766. IF sqlca.SQLCode <> 0 THEN
  767. rslt = 0
  768. arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  769. GOTO ext
  770. END IF
  771. //FOR i = 1 TO it_mxbt
  772. //
  773. // UPDATE u_workprice SET
  774. // workprice = :s_mx.wrkprice[i],
  775. // dscrp = :s_mx.dscrp[i],
  776. // jgname=:s_mx.jgname[i],
  777. // wrkgrpid = :billid,
  778. // relcode = :billcode
  779. // WHERE mtrlid = :s_mx.mtrlid[i]
  780. // AND proid = :s_mx.proid[i]
  781. // and jgname = :s_mx.jgname[i];
  782. //
  783. // IF sqlca.SQLCode = 0 THEN
  784. // IF sqlca.SQLNRows = 0 THEN
  785. //
  786. // INSERT INTO u_workprice
  787. // (proid,mtrlid,workprice,dscrp,wrkgrpid,relcode,jgname)
  788. // VALUES
  789. // (:s_mx.proid[i],:s_mx.mtrlid[i],:s_mx.wrkprice[i],:s_mx.dscrp[i],:billid,:billcode, :s_mx.jgname[i]);
  790. // IF sqlca.SQLCode <> 0 THEN
  791. // rslt = 0
  792. // ARG_MSG = '更新单据失败'+sqlca.SQLErrText
  793. // GOTO ext
  794. // END IF
  795. //
  796. // END IF
  797. // ELSE
  798. // rslt = 0
  799. // ARG_MSG = '更新单据失败'+sqlca.SQLErrText
  800. // GOTO ext
  801. // END IF
  802. //
  803. //
  804. //NEXT
  805. //
  806. ext:
  807. IF rslt = 0 THEN
  808. ROLLBACK;
  809. ELSEIF rslt = 1 AND arg_ifcommit THEN
  810. COMMIT;
  811. END IF
  812. RETURN rslt
  813. end function
  814. public function integer c_secauditing (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  815. Int rslt = 1,i
  816. DateTime ls_null
  817. SetNull(ls_null)
  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_mt
  834. SET secauditingrep = '' ,
  835. secauditingdate = :ls_null,
  836. flag = 1
  837. WHERE billid = :arg_billid
  838. AND flag = 2;
  839. IF sqlca.SQLCode <> 0 THEN
  840. rslt = 0
  841. arg_msg = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  842. GOTO ext
  843. END IF
  844. //FOR i = 1 TO it_mxbt
  845. //
  846. //
  847. // UPDATE u_workprice SET
  848. // workprice = :s_mx.oldprice[i],
  849. // dscrp = :s_mx.olddscrp[i],
  850. // wrkgrpid = :s_mx.wrkgrpid[i],
  851. // relcode = :s_mx.relcode[i]
  852. // WHERE mtrlid = :s_mx.mtrlid[i]
  853. // AND proid = :s_mx.proid[i]
  854. // and jgname=:s_mx.jgname[i];
  855. //
  856. // IF sqlca.SQLCode <> 0 THEN
  857. // rslt = 0
  858. // ARG_MSG = '更新产品工价失败'+sqlca.SQLErrText
  859. // GOTO ext
  860. // END IF
  861. //
  862. //NEXT
  863. ext:
  864. IF rslt = 0 THEN
  865. ROLLBACK;
  866. ELSEIF rslt = 1 AND arg_ifcommit THEN
  867. COMMIT;
  868. END IF
  869. RETURN rslt
  870. end function
  871. public function integer acceptmx (s_mtmx arg_mx, ref string arg_msg);Long rslt = 1,cnt = 0,LS_i
  872. Long ll_sptid
  873. //写入内容
  874. FOR LS_i = 1 TO UpperBound(arg_mx.mtrlid)
  875. IF arg_mx.mtrlid[LS_i] = 0 THEN CONTINUE
  876. it_MXBT++
  877. mtmx.mtrlid[it_MXBT] = arg_mx.mtrlid[LS_i]
  878. mtmx.qty[it_MXBT] = arg_mx.qty[LS_i]
  879. mtmx.model[it_MXBT] = arg_mx.model[LS_i]
  880. mtmx.description[it_MXBT] = arg_mx.description[LS_i]
  881. mtmx.Color[it_MXBT] = arg_mx.Color[LS_i]
  882. mtmx.nw[it_MXBT] = arg_mx.nw[LS_i]
  883. mtmx.gw[it_MXBT] = arg_mx.gw[LS_i]
  884. mtmx.packing[it_MXBT] = arg_mx.packing[LS_i]
  885. mtmx.meas[it_MXBT] = arg_mx.meas[LS_i]
  886. mtmx.ename[it_MXBT] = arg_mx.ename[LS_i]
  887. mtmx.pmode[it_MXBT] = arg_mx.pmode[LS_i]
  888. mtmx.barcode[it_MXBT] = arg_mx.barcode[LS_i]
  889. mtmx.dscrp[it_MXBT] = arg_mx.dscrp[LS_i]
  890. mtmx.reltaskid[it_MXBT] = arg_mx.reltaskid[LS_i]
  891. mtmx.relprintid[it_MXBT] = arg_mx.relprintid[LS_i]
  892. mtmx.printid[it_MXBT] = it_MXBT
  893. mtmx.sptid[it_MXBT] = arg_mx.sptid[LS_i]
  894. mtmx.zxmtrlmode[it_MXBT] = '' //arg_mx.zxmtrlmode[LS_i]
  895. mtmx.reltaskcode[it_MXBT] = arg_mx.reltaskcode[LS_i]
  896. mtmx.relbillcode[it_MXBT] = arg_mx.relbillcode[LS_i]
  897. mtmx.relid[it_MXBT] = arg_mx.relid[LS_i]
  898. mtmx.packsize[it_MXBT] = arg_mx.packsize[LS_i]
  899. mtmx.packbulk[it_MXBT] = arg_mx.packbulk[LS_i]
  900. mtmx.descriptionsize[it_MXBT] = arg_mx.descriptionsize[LS_i]
  901. mtmx.glide[it_MXBT] = arg_mx.glide[LS_i]
  902. mtmx.prdcode[it_MXBT] = arg_mx.prdcode[LS_i]
  903. mtmx.dscrp1[it_MXBT] = arg_mx.dscrp1[LS_i]
  904. mtmx.dscrp2[it_MXBT] = arg_mx.dscrp2[LS_i]
  905. mtmx.dscrp3[it_MXBT] = arg_mx.dscrp3[LS_i]
  906. NEXT
  907. //ext:
  908. IF rslt = 0 THEN p_clearmx()
  909. Return(rslt)
  910. end function
  911. public function integer updatebegin (long arg_billid, ref string arg_msg);//====================================================================
  912. // Function: updatebegin(arg_scid,arg_billid,arg_billtype,arg_msg)
  913. //--------------------------------------------------------------------
  914. // Description: 从置对象,设定业务类型与关联ID,准备更新进仓单
  915. //--------------------------------------------------------------------
  916. // Arguments:
  917. // value long arg_scid
  918. // value long arg_billid
  919. // value integer arg_billtype
  920. // reference string arg_msg
  921. //--------------------------------------------------------------------
  922. // Returns: integer
  923. //--------------------------------------------------------------------
  924. // Author: yyx Date: 2003.11.12
  925. //--------------------------------------------------------------------
  926. // Modify History:
  927. //
  928. //====================================================================
  929. long rslt=1
  930. if arg_billid<=0 then
  931. rslt=0
  932. goto ext
  933. end if
  934. rslt=p_getinfo(arg_billid,arg_msg)
  935. if rslt=0 then goto ext
  936. if flag>0 then
  937. rslt=0
  938. arg_msg='单据已经审核,不可以修改'
  939. goto ext
  940. end if
  941. billid=arg_billid
  942. it_newbegin=false
  943. it_updatebegin=true
  944. p_clearmx() //清除明细
  945. ext:
  946. if rslt=0 then p_reset()
  947. return rslt
  948. end function
  949. public function integer cancel (long arg_billid, ref string arg_msg, boolean arg_ifcommit);
  950. //删除未审核的订单
  951. //0 FAIL, 1 SUCCESS
  952. Int rslt = 1
  953. IF arg_billid <= 0 THEN
  954. rslt = 0
  955. arg_msg = '错误唛头单唯一码'
  956. GOTO ext
  957. END IF
  958. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  959. rslt = 0
  960. GOTO ext
  961. END IF
  962. IF flag <> 0 THEN
  963. rslt = 0
  964. arg_msg = "唛头单已经审核,不可以删除"
  965. GOTO ext
  966. END IF
  967. Long cnt
  968. cnt = 0
  969. DELETE FROM u_mt
  970. Where u_mt.billid = :arg_billid USING commit_transaction;
  971. IF commit_transaction.SQLCode <> 0 THEN
  972. rslt = 0
  973. arg_msg = "删除唛头单操作失败"+"~n"+commit_transaction.SQLErrText
  974. ROLLBACK USING commit_transaction;
  975. GOTO ext
  976. END IF
  977. DELETE FROM u_mtmx
  978. Where u_mtmx.billid = :arg_billid USING commit_transaction;
  979. IF commit_transaction.SQLCode <> 0 THEN
  980. rslt = 0
  981. arg_msg = "删除唛头单明细操作失败"+"~n"+sqlca.SQLErrText
  982. ROLLBACK USING commit_transaction;
  983. GOTO ext
  984. END IF
  985. IT_NEWBEGIN = FALSE
  986. IT_UPDATEBEGIN = FALSE
  987. IF arg_ifcommit AND rslt = 1 THEN
  988. COMMIT USING commit_transaction;
  989. END IF
  990. ext:
  991. p_reset()
  992. Return (rslt)
  993. end function
  994. public function integer savepic (string arg_msg);int rslt=1
  995. UPDATEBLOB u_mt
  996. Set
  997. fpic = :fpic
  998. Where billid = :billid USING commit_transaction;
  999. IF commit_transaction.SQLCode <> 0 THEN
  1000. rslt = 0
  1001. arg_msg = "因网络或其它原因导致插入图片操作失败"+"~n"+commit_transaction.SQLErrText
  1002. GOTO ext
  1003. END IF
  1004. UPDATEBLOB u_mt
  1005. Set
  1006. tpic = :tpic
  1007. Where billid = :billid USING commit_transaction;
  1008. IF commit_transaction.SQLCode <> 0 THEN
  1009. rslt = 0
  1010. arg_msg = "因网络或其它原因导致插入图片操作失败"+"~n"+commit_transaction.SQLErrText
  1011. GOTO ext
  1012. END IF
  1013. ext:
  1014. IF rslt = 0 THEN
  1015. ROLLBACK USING commit_transaction;
  1016. ELSEIF rslt = 1 THEN
  1017. COMMIT USING commit_transaction;
  1018. END IF
  1019. RETURN rslt
  1020. end function
  1021. on uo_mt.create
  1022. call super::create
  1023. TriggerEvent( this, "constructor" )
  1024. end on
  1025. on uo_mt.destroy
  1026. TriggerEvent( this, "destructor" )
  1027. call super::destroy
  1028. end on