uo_getbar.sru 50 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273
  1. $PBExportHeader$uo_getbar.sru
  2. forward
  3. global type uo_getbar from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_getbar from nonvisualobject
  7. end type
  8. global uo_getbar uo_getbar
  9. type variables
  10. Long uo_getbarid
  11. String uo_getbarcode
  12. end variables
  13. forward prototypes
  14. public function integer updatebegin (long arg_getbarid, ref string arg_msg)
  15. public function integer p_change_barcode (long arg_getbarid, boolean arg_ifcommit, ref string arg_msg)
  16. public function integer p_c_change_barcode (long arg_getbarid, boolean arg_ifcommit, ref string arg_msg)
  17. public function integer p_getinfo (long arg_getbarid, ref s_getbar arg_s_gb, ref string arg_msg)
  18. public function integer auditing (long arg_getbarid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  19. public function integer save (s_getbar arg_s_gb, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  20. public function integer uof_barcode_inuse (string arg_barcode, integer arg_isuse, boolean arg_ifcommit, ref string arg_msg)
  21. public function integer uof_barcode_out (string arg_barcode, integer arg_outflag, boolean arg_ifcommit, ref string arg_msg)
  22. public function integer uof_barcode_mtrlwareid (string arg_barcode, long arg_scid, long arg_mtrlwareid, boolean arg_ifcommit, ref string arg_msg)
  23. public function integer getinfo (long arg_getbarid, ref s_mtrlware_mx arg_gbmx[], ref string arg_msg)
  24. public function integer add_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  25. public function integer mod_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  26. public function integer del (long arg_getbarid, ref string arg_msg, boolean arg_ifcommit)
  27. public function integer c_auditing (long arg_getbarid, boolean arg_ifauto, ref string arg_msg, boolean arg_ifcommit)
  28. public function integer uof_barcode_in (string arg_barcode, long arg_scid, long arg_mtrlwareid, string arg_relbillcode, long arg_relbillid, long arg_relprintid, integer arg_inflag, integer arg_ifth, boolean arg_ifcommit, ref string arg_msg)
  29. public function integer uof_barcode_fp (string arg_barcode, string arg_relbillcode, long arg_relbillid, long arg_relprintid, ref string arg_msg, boolean arg_ifcommit)
  30. public function integer mod_dscrp2 (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit)
  31. end prototypes
  32. public function integer updatebegin (long arg_getbarid, ref string arg_msg);Int rslt = 1
  33. Long cnt = 0
  34. s_getbar arg_s_gb
  35. IF arg_getbarid <= 0 THEN
  36. rslt = 0
  37. arg_msg = '错误条码生成单唯一码'
  38. GOTO ext
  39. END IF
  40. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  41. rslt = 0
  42. GOTO ext
  43. END IF
  44. IF arg_s_gb.flag = 1 THEN
  45. rslt = 0
  46. arg_msg = "条码生成单已经审核,操作取消"
  47. GOTO ext
  48. END IF
  49. //检查明细条码是否已被打印
  50. cnt = 0
  51. SELECT count(*) INTO :cnt
  52. FROM u_mtrlware_mx
  53. WHERE u_mtrlware_mx.getbarid = :arg_getbarid
  54. And u_mtrlware_mx.printnum > 0;
  55. IF sqlca.SQLCode <> 0 THEN cnt = 0
  56. IF cnt > 0 THEN
  57. arg_msg = '单据对应条码已打印,不能修改,请检查!'
  58. rslt = 0
  59. GOTO ext
  60. END IF
  61. //检查明细条码是否已被扫描
  62. cnt = 0
  63. SELECT count(*) INTO :cnt
  64. FROM u_getbar,u_mtrlware_mx
  65. WHERE u_getbar.getbarid = u_mtrlware_mx.getbarid
  66. AND u_getbar.getbarid = :arg_getbarid
  67. AND u_mtrlware_mx.barcode IN
  68. (SELECT barcode From U_inwaremx_mx_barcode);
  69. IF sqlca.SQLCode <> 0 THEN cnt = 0
  70. IF cnt > 0 THEN
  71. arg_msg = '单据对应条码已扫描进仓,不能修改,请检查!'
  72. rslt = 0
  73. GOTO ext
  74. END IF
  75. ext:
  76. RETURN rslt
  77. end function
  78. public function integer p_change_barcode (long arg_getbarid, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  79. Int rslt = 1
  80. //Long chc
  81. //Long rst_outwareid //出仓id
  82. //Long rst_inwareid //进仓id
  83. //Long s_scid
  84. //Long o_scid
  85. //Long lay_storageid[]
  86. //
  87. //datetime server_dt
  88. //SELECT Top 1 getdate() INTO :server_dt FROM u_user;
  89. ////取得系统时间,借用操作员表
  90. //IF sqlca.SQLCode <> 0 THEN
  91. // rslt = 0
  92. // arg_msg = "查询操作失败,日期 "
  93. // GOTO ext
  94. //END IF
  95. //uo_inware uo_in
  96. //uo_outware uo_out
  97. //
  98. //uo_in = CREATE uo_inware
  99. //uo_in.commit_transaction = sqlca
  100. //uo_in.if_getid_ture = FALSE
  101. //
  102. //uo_out = CREATE uo_outware
  103. //uo_out.commit_transaction = sqlca
  104. //uo_out.if_getid_ture = FALSE
  105. //
  106. //IF getbarid = 0 THEN
  107. // rslt = 0
  108. // arg_msg = "没有转换对象"
  109. // GOTO ext
  110. //END IF
  111. //
  112. //if getinfo(arg_getbarid,arg_msg) = 0 then
  113. // rslt = 0
  114. // GOTO ext
  115. //END IF
  116. //
  117. //IF it_newbegin OR it_updatebegin THEN
  118. // rslt = 0
  119. // arg_msg = "编辑状态下不可以执行审核"
  120. // GOTO ext
  121. //END IF
  122. //
  123. //IF flag = 0 THEN
  124. // rslt = 0
  125. // arg_msg = "单据还未审核,不能进行转换!"
  126. // GOTO ext
  127. //END IF
  128. //
  129. ////1.原事务生成出仓单
  130. //SELECT scid INTO :s_scid
  131. // FROM u_storage
  132. // Where storageid = :storageid;
  133. //IF sqlca.SQLCode <> 0 THEN
  134. // arg_msg = '查询调出仓库所属分部资料失败'
  135. // rslt = 0
  136. // GOTO ext
  137. //END IF
  138. //
  139. //IF uo_out.newbegin(s_scid,8,arg_msg) = 0 THEN
  140. // rslt = 0
  141. // GOTO ext
  142. //END IF
  143. //
  144. //uo_out.relid = getbarid
  145. //uo_out.outdate = server_dt
  146. //uo_out.outrep = ''
  147. //uo_out.part = getbarcode
  148. //uo_out.dscrp = dscrp
  149. //uo_out.cusname = '条码转换出仓'
  150. //uo_out.storageid = storageid
  151. //
  152. //long ll_mtrlwareid
  153. //SELECT mtrlwareid
  154. //into :ll_mtrlwareid
  155. //FROM u_mtrlware
  156. //where mtrlid = :mtrlid and
  157. // storageid = :storageid and
  158. // plancode=:plancode and
  159. // Status=:status and
  160. // woodcode=:woodcode and
  161. // pcode = :pcode and
  162. // scid = :s_scid;
  163. //IF sqlca.SQLCode <> 0 THEN
  164. // arg_msg = '查询库存唯一码失败》'+sqlca.sqlerrtext
  165. // rslt = 0
  166. // GOTO ext
  167. //END IF
  168. //
  169. //IF uo_out.acceptmx(ll_mtrlwareid,&
  170. // qty,0,1,&
  171. // dscrp,1,arg_msg,0,0,0,0,0,'','',0) = 0 THEN
  172. // rslt = 0
  173. // GOTO ext
  174. //END IF
  175. //
  176. //IF uo_out.Save(FALSE,arg_msg) = 0 THEN
  177. // rslt = 0
  178. // GOTO ext
  179. //END IF
  180. //
  181. //rst_outwareid = uo_out.outwareid
  182. //
  183. ////2.原事务审核出仓单
  184. //IF uo_out.getinfo(s_scid,rst_outwareid,arg_msg) = 0 THEN
  185. // rslt = 0
  186. // GOTO ext
  187. //END IF
  188. //
  189. //IF uo_out.auditing(FALSE,arg_msg) = 0 THEN
  190. // rslt = 0
  191. // GOTO ext
  192. //eND IF
  193. //
  194. //SELECT scid INTO :o_scid
  195. // FROM u_storage
  196. // Where storageid = :storageid;
  197. //IF sqlca.SQLCode <> 0 THEN
  198. // arg_msg = '查询调进仓库所属分部资料失败'
  199. // rslt = 0
  200. // GOTO ext
  201. //END IF
  202. //
  203. //IF uo_in.newbegin(o_scid,8,arg_msg) = 0 THEN
  204. // rslt = 0
  205. // GOTO ext
  206. //END IF
  207. //
  208. //uo_in.relid = getbarid
  209. //uo_in.indate = server_dt
  210. //uo_in.inrep = ''
  211. //uo_in.part = getbarcode
  212. //uo_in.dscrp = dscrp
  213. //uo_in.storageid = storageid
  214. //uo_in.sptname = '条码包装转换进仓'
  215. //
  216. //
  217. //FOR i = 1 TO it_mxbt
  218. // IF uo_in.acceptmx(i,&
  219. // mtrlid,&
  220. // mtrlcode,&
  221. // getbarmx[i].barcode,&
  222. // status,&
  223. // 1,&
  224. // 0,&
  225. // 1,&
  226. // getbarmx[i].dscrpmx,&
  227. // arg_msg,&
  228. // 0,0,0,woodcode,pcode,0,'',1) = 0 THEN
  229. // rslt = 0
  230. // GOTO ext
  231. // END IF
  232. //NEXT
  233. //
  234. //IF uo_in.Save(FALSE,arg_msg) = 0 THEN
  235. // rslt = 0
  236. // GOTO ext
  237. //END IF
  238. //
  239. //rst_inwareid = uo_in.inwareid
  240. //
  241. ////4.原事务审核进仓单
  242. //IF uo_in.getinfo(o_scid,rst_inwareid,arg_msg) = 0 THEN
  243. // rslt = 0
  244. // GOTO ext
  245. //END IF
  246. //
  247. //IF uo_in.auditing(FALSE,arg_msg) = 0 THEN
  248. // rslt = 0
  249. // GOTO ext
  250. //END IF
  251. //
  252. //ext:
  253. //IF rslt = 0 THEN
  254. // ROLLBACK;
  255. //ELSEIF arg_ifcommit AND rslt = 1 THEN
  256. // COMMIT;
  257. //END IF
  258. //
  259. //DESTROY uo_in
  260. //DESTROY uo_out
  261. RETURN rslt
  262. end function
  263. public function integer p_c_change_barcode (long arg_getbarid, boolean arg_ifcommit, ref string arg_msg);Long cnt = 0,i
  264. Int rslt = 1
  265. //Long chc
  266. //Long in_out
  267. //Long rst_outwareid[],out_i = 1 //出仓id
  268. //Long rst_inwareid[],in_i = 1 //进仓id
  269. //Long s_scid
  270. //Long o_scid
  271. //
  272. //DateTime null_dt
  273. //
  274. //SetNull(null_dt)
  275. //
  276. //uo_inware uo_in
  277. //uo_outware uo_out
  278. //
  279. //uo_in = CREATE uo_inware
  280. //uo_in.commit_transaction = sqlca
  281. //uo_in.if_getid_ture = FALSE
  282. //
  283. //uo_out = CREATE uo_outware
  284. //uo_out.commit_transaction = sqlca
  285. //uo_out.if_getid_ture = FALSE
  286. //
  287. //IF getbarid = 0 THEN
  288. // rslt = 0
  289. // arg_msg = "没有反转换单据"
  290. // GOTO ext
  291. //END IF
  292. //
  293. //if getinfo(arg_getbarid,arg_msg) = 0 then
  294. // rslt = 0
  295. // GOTO ext
  296. //END IF
  297. //
  298. //IF it_newbegin OR it_updatebegin THEN
  299. // rslt = 0
  300. // arg_msg = "编辑状态下不可以执行审核"
  301. // GOTO ext
  302. //END IF
  303. //
  304. //IF flag = 0 THEN
  305. // rslt = 0
  306. // arg_msg = "单据未审核"
  307. // GOTO ext
  308. //END IF
  309. //
  310. ////1.查询单相关的出仓单,撤审,删除
  311. //SELECT scid INTO :s_scid
  312. // FROM u_storage
  313. // Where storageid = :storageid;
  314. //IF sqlca.SQLCode <> 0 THEN
  315. // arg_msg = '查询调出仓库所属分部资料失败'
  316. // rslt = 0
  317. // GOTO ext
  318. //END IF
  319. //
  320. //DECLARE cur_out_2 CURSOR FOR
  321. // SELECT outwareid
  322. // FROM u_outware
  323. //WHERE scid = :s_scid
  324. //AND relid = :getbarid
  325. //AND billtype = 8;
  326. //
  327. //OPEN cur_out_2;
  328. //FETCH cur_out_2 INTO :rst_outwareid[out_i];
  329. //DO WHILE sqlca.SQLCode = 0
  330. // out_i++
  331. // FETCH cur_out_2 INTO :rst_outwareid[out_i];
  332. //LOOP
  333. //out_i = out_i - 1
  334. //CLOSE cur_out_2;
  335. //
  336. //IF out_i = 0 THEN
  337. // arg_msg = '查询该转换单相关出仓单失败,'+sqlca.SQLErrText
  338. // rslt = 0
  339. // GOTO ext
  340. //END IF
  341. //
  342. //FOR in_out = 1 TO out_i
  343. // //撤审出仓单,再删除
  344. // IF uo_out.getinfo(s_scid,rst_outwareid[in_out],arg_msg) = 0 THEN
  345. // rslt = 0
  346. // GOTO ext
  347. // END IF
  348. //
  349. // IF uo_out.c_auditing(FALSE,arg_msg) = 0 THEN
  350. // rslt = 0
  351. // GOTO ext
  352. // END IF
  353. //
  354. // IF uo_out.del(s_scid,rst_outwareid[in_out],arg_msg,FALSE) = 0 THEN
  355. // rslt = 0
  356. // GOTO ext
  357. // END IF
  358. //NEXT
  359. //
  360. //SELECT scid INTO :o_scid
  361. // FROM u_storage
  362. // Where storageid = :storageid;
  363. //IF sqlca.SQLCode <> 0 THEN
  364. // arg_msg = '查询调出仓库所属分部资料失败'
  365. // rslt = 0
  366. // GOTO ext
  367. //END IF
  368. //
  369. //DECLARE cur_in_2 CURSOR FOR
  370. // SELECT inwareid
  371. // FROM u_inware
  372. // WHERE scid = :o_scid
  373. // AND relid = :getbarid
  374. // AND billtype = 8;
  375. //
  376. //OPEN cur_in_2;
  377. //FETCH cur_in_2 INTO :rst_inwareid[in_i];
  378. //DO WHILE sqlca.SQLCode = 0
  379. // in_i++
  380. // FETCH cur_in_2 INTO :rst_inwareid[in_i];
  381. //LOOP
  382. //in_i = in_i - 1
  383. //CLOSE cur_in_2;
  384. //
  385. //IF in_i = 0 THEN
  386. // arg_msg = '查询该转换单相关入仓单失败,'+sqlca.SQLErrText
  387. // rslt = 0
  388. // GOTO ext
  389. //END IF
  390. //
  391. //FOR in_out = 1 TO in_i
  392. // //撤审入仓单,再删除
  393. // IF uo_in.getinfo(o_scid,rst_inwareid[in_out],arg_msg) = 0 THEN
  394. // rslt = 0
  395. // GOTO ext
  396. // END IF
  397. //
  398. // IF uo_in.c_auditing(FALSE,arg_msg) = 0 THEN
  399. // rslt = 0
  400. // GOTO ext
  401. // END IF
  402. //
  403. // IF uo_in.del(o_scid,rst_inwareid[in_out],arg_msg,FALSE) = 0 THEN
  404. // rslt = 0
  405. // GOTO ext
  406. // END IF
  407. //NEXT
  408. //
  409. //ext:
  410. //
  411. //IF rslt = 0 THEN
  412. // ROLLBACK;
  413. //ELSEIF arg_ifcommit AND rslt = 1 THEN
  414. // COMMIT;
  415. //END IF
  416. //
  417. //DESTROY uo_in
  418. //DESTROY uo_out
  419. RETURN rslt
  420. end function
  421. public function integer p_getinfo (long arg_getbarid, ref s_getbar arg_s_gb, ref string arg_msg);Int rslt = 1
  422. SELECT u_getbar.getbarcode,
  423. u_getbar.mtrlid,
  424. u_getbar.status,
  425. u_getbar.plancode,
  426. u_getbar.woodcode,
  427. u_getbar.pcode,
  428. u_getbar.qty,
  429. u_getbar.ifrel,
  430. u_getbar.orderid,
  431. u_getbar.dscrp,
  432. u_getbar.mtrlcuscode,
  433. u_getbar.location,
  434. u_getbar.flag,
  435. u_getbar.getbardate,
  436. u_getbar.storageid,
  437. u_getbar.cusid,
  438. u_mtrldef.mtrlcode,
  439. u_mtrldef.unit,
  440. u_getbar.relbillid,
  441. u_getbar.scid
  442. INTO :arg_s_gb.getbarcode,
  443. :arg_s_gb.mtrlid,
  444. :arg_s_gb.status,
  445. :arg_s_gb.plancode,
  446. :arg_s_gb.woodcode,
  447. :arg_s_gb.pcode,
  448. :arg_s_gb.qty,
  449. :arg_s_gb.ifrel,
  450. :arg_s_gb.orderid,
  451. :arg_s_gb.dscrp,
  452. :arg_s_gb.mtrlcuscode,
  453. :arg_s_gb.location,
  454. :arg_s_gb.flag,
  455. :arg_s_gb.getbardate,
  456. :arg_s_gb.storageid,
  457. :arg_s_gb.cusid,
  458. :arg_s_gb.mtrlcode,
  459. :arg_s_gb.unit,
  460. :arg_s_gb.relbillid,
  461. :arg_s_gb.scid
  462. FROM u_getbar,u_mtrldef
  463. WHERE u_getbar.mtrlid = u_mtrldef.mtrlid AND
  464. u_getbar.getbarid = :arg_getbarid USING sqlca;
  465. IF sqlca.SQLCode <> 0 THEN
  466. rslt = 0
  467. ARG_MSG = '查询条码成生单内容失败(错误条码生成单唯一码)'+sqlca.SQLErrText
  468. GOTO ext
  469. END IF
  470. ext:
  471. RETURN rslt
  472. end function
  473. public function integer auditing (long arg_getbarid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  474. Long j
  475. s_getbar arg_s_gb
  476. s_mtrlware_mx arg_s_gbmx[]
  477. uo_inware_py uo_gb_py
  478. uo_gb_py = Create uo_inware_py
  479. uo_gb_py.commit_transaction = sqlca
  480. uo_gb_py.if_getid_ture = False
  481. uo_gb_py.if_py_check_barcode = False
  482. uo_gb_py.if_py_update_barcode = True
  483. uo_inware_buy uo_in_buy
  484. uo_in_buy = Create uo_inware_buy
  485. uo_in_buy.commit_transaction = sqlca
  486. IF arg_getbarid <= 0 THEN
  487. rslt = 0
  488. arg_msg = '错误条码生成单唯一码'
  489. GOTO ext
  490. END IF
  491. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  492. rslt = 0
  493. GOTO ext
  494. END IF
  495. IF getinfo(arg_getbarid,arg_s_gbmx,arg_msg) = 0 THEN
  496. rslt = 0
  497. GOTO ext
  498. END IF
  499. IF arg_s_gb.flag = 1 THEN
  500. rslt = 0
  501. arg_msg = "条码生成单已经审核,操作取消"
  502. GOTO ext
  503. END IF
  504. UPDATE u_getbar
  505. SET flag = 1,
  506. auditingrep = :arg_opemp,
  507. auditingdate = getdate()
  508. Where u_getbar.getbarid = :arg_getbarid;
  509. IF sqlca.SQLCode <> 0 THEN
  510. arg_msg = '更新条码生成单审核状态失败,原因>>'+sqlca.SQLErrText
  511. rslt = 0
  512. GOTO ext
  513. ELSEIF sqlca.SQLNRows = 0 THEN
  514. rslt = 0
  515. arg_msg = '单据正在审核,请稍后重试'
  516. GOTO ext
  517. END IF
  518. IF arg_s_gb.ifrel = 7 THEN
  519. IF uo_gb_py.newbegin(arg_s_gb.scid,9,arg_msg) = 0 THEN
  520. arg_msg = 'error!/盘盈单'+arg_msg
  521. rslt = 0
  522. GOTO ext
  523. END IF
  524. uo_gb_py.indate = DateTime(Date(Today()),Time(0))
  525. uo_gb_py.inrep = arg_opemp
  526. uo_gb_py.part = arg_s_gb.getbarcode
  527. uo_gb_py.dscrp = '条码单生成的'+arg_s_gb.getbarcode+'的盘盈单'
  528. uo_gb_py.storageid = arg_s_gb.storageid
  529. uo_gb_py.relid = arg_getbarid
  530. IF uo_gb_py.acceptmx(1,&
  531. arg_s_gb.mtrlid,&
  532. arg_s_gb.mtrlcode,&
  533. arg_s_gb.plancode,&
  534. arg_s_gb.status,&
  535. 0,&
  536. 0,&
  537. 1,&
  538. '',&
  539. arg_msg,0,0,0,&
  540. arg_s_gb.woodcode,&
  541. arg_s_gb.pcode,&
  542. arg_s_gb.cusid,&
  543. arg_s_gb.unit,&
  544. 1,&
  545. 0,&
  546. 0,0,'','',0,0,&
  547. arg_s_gb.mtrlcuscode,&
  548. arg_s_gb.Location,&
  549. 0,&
  550. 0) = 0 THEN
  551. arg_msg = 'error!/盘盈单'+arg_msg
  552. rslt = 0
  553. GOTO ext
  554. END IF
  555. IF uo_gb_py.Save(False,arg_msg) = 0 THEN
  556. arg_msg = 'error!/盘盈单'+arg_msg
  557. rslt = 0
  558. GOTO ext
  559. END IF
  560. FOR j = 1 To UpperBound(arg_s_gbmx) - 1
  561. IF uo_gb_py.uof_inbarcode_add(9,arg_s_gb.scid,uo_gb_py.inwareid,0,&
  562. arg_s_gbmx[j].barcode,arg_s_gbmx[j].qty,arg_msg,False) = 0 THEN
  563. arg_msg = 'error!/盘盈单'+arg_msg
  564. rslt = 0
  565. GOTO ext
  566. END IF
  567. NEXT
  568. IF uo_gb_py.getinfo(arg_s_gb.scid,uo_gb_py.inwareid,arg_msg) = 0 THEN
  569. arg_msg = 'error!/盘盈单'+arg_msg
  570. rslt = 0
  571. GOTO ext
  572. END IF
  573. IF uo_gb_py.auditing(False,arg_msg) = 0 THEN
  574. arg_msg = 'error!/盘盈单'+arg_msg
  575. rslt = 0
  576. GOTO ext
  577. END IF
  578. ELSEIF arg_s_gb.ifrel = 8 THEN
  579. FOR j = 1 To UpperBound(arg_s_gbmx) - 1
  580. IF uo_in_buy.uof_inbarcode_add(1,arg_s_gb.scid,arg_s_gb.orderid,0,&
  581. arg_s_gbmx[j].barcode,arg_s_gbmx[j].qty,arg_msg,False) = 0 THEN
  582. arg_msg = 'error!/采购收货单'+arg_msg
  583. rslt = 0
  584. GOTO ext
  585. END IF
  586. NEXT
  587. END IF
  588. ext:
  589. IF rslt = 0 THEN
  590. ROLLBACK;
  591. ELSEIF rslt = 1 And arg_ifcommit THEN
  592. COMMIT;
  593. END IF
  594. Destroy uo_gb_py
  595. Destroy uo_in_buy
  596. RETURN rslt
  597. end function
  598. public function integer save (s_getbar arg_s_gb, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Integer rslt = 1
  599. Int li_ifpackpro,li_ifpackpro_uc,li_ifpack_uc
  600. Decimal ld_Sonscale
  601. Long cnt = 0,i
  602. DateTime server_dt
  603. Long ll_newid,ll_it_mxbt,ll_mtrlid_buytask
  604. String ls_sccode,ls_getbarcode
  605. Decimal ld_sum_mxqty,ld_otherqty,ld_orderqty
  606. IF IsNull(arg_s_gb.scid) THEN arg_s_gb.scid = 0
  607. IF IsNull(arg_s_gb.getbarid) THEN arg_s_gb.getbarid = 0
  608. IF IsNull(arg_s_gb.ifrel) THEN arg_s_gb.ifrel = 0
  609. IF IsNull(arg_s_gb.orderid) THEN arg_s_gb.orderid = 0
  610. IF IsNull(arg_s_gb.storageid) THEN arg_s_gb.storageid = 0
  611. IF IsNull(arg_s_gb.mtrlid) THEN arg_s_gb.mtrlid = 0
  612. IF IsNull(arg_s_gb.cusid) THEN arg_s_gb.cusid = 0
  613. IF IsNull(arg_s_gb.plancode) THEN arg_s_gb.plancode = ''
  614. IF IsNull(arg_s_gb.status) THEN arg_s_gb.status = ''
  615. IF IsNull(arg_s_gb.woodcode) THEN arg_s_gb.woodcode = ''
  616. IF IsNull(arg_s_gb.pcode) THEN arg_s_gb.pcode = ''
  617. IF IsNull(arg_s_gb.mtrlcuscode) THEN arg_s_gb.mtrlcuscode = ''
  618. IF IsNull(arg_s_gb.Location) THEN arg_s_gb.Location = ''
  619. IF IsNull(arg_s_gb.qty) THEN arg_s_gb.qty = 0
  620. IF IsNull(arg_s_gb.dscrp) THEN arg_s_gb.dscrp = ''
  621. IF IsNull(arg_s_gb.dscrp2) THEN arg_s_gb.dscrp2 = ''
  622. IF IsNull(arg_s_gb.reason) THEN arg_s_gb.reason = ''
  623. IF IsNull(arg_s_gb.relbillid) THEN arg_s_gb.relbillid = 0
  624. IF IsNull(arg_s_gb.relbillprintid) THEN arg_s_gb.relbillprintid = 0
  625. IF IsNull(arg_s_gb.uqty) THEN arg_s_gb.uqty = 0
  626. IF IsNull(arg_s_gb.packuqty) THEN arg_s_gb.packuqty = 0
  627. IF IsNull(arg_s_gb.rate) THEN arg_s_gb.rate = 0
  628. SELECT Top 1 getdate() Into :server_dt From u_user;
  629. IF sqlca.SQLCode <> 0 THEN
  630. rslt = 0
  631. arg_msg = "查询操作失败,日期 "
  632. GOTO ext
  633. END IF
  634. //检查物料
  635. IF arg_s_gb.mtrlid = 0 THEN
  636. arg_msg = '请选择物料'
  637. rslt = 0
  638. GOTO ext
  639. ELSE
  640. SELECT ifpackpro,ifpack INTO :li_ifpackpro_uc,:li_ifpack_uc
  641. FROM u_mtrldef
  642. Where mtrlid = :arg_s_gb.mtrlid;
  643. IF sqlca.SQLCode <> 0 THEN
  644. arg_msg = '查询物料资料是否包件产品失败,请检查物料资料,'+sqlca.SQLErrText
  645. rslt = 0
  646. GOTO ext
  647. END IF
  648. IF li_ifpackpro_uc = 1 THEN
  649. arg_msg = '通用包件产品不能开条码生成单,请检查物料资料'
  650. rslt = 0
  651. GOTO ext
  652. END IF
  653. IF li_ifpackpro_uc = 2 THEN
  654. arg_msg = "物料为个性包件产品,不能开条码生成单,请检查"
  655. rslt = 0
  656. GOTO ext
  657. END IF
  658. IF li_ifpack_uc = 2 And Trim(arg_s_gb.mtrlcuscode) = '' THEN
  659. arg_msg = "物料为个性包件,但没有产品批号,请检查"
  660. rslt = 0
  661. GOTO ext
  662. END IF
  663. IF li_ifpackpro_uc = 4 And Trim(arg_s_gb.mtrlcuscode) = '' THEN
  664. arg_msg = "物料为组合配置整排散进包件产品,但没有产品批号,请检查"
  665. rslt = 0
  666. GOTO ext
  667. END IF
  668. END IF
  669. //检查仓库
  670. IF arg_s_gb.storageid = 0 THEN
  671. arg_msg = '请选择仓库'
  672. rslt = 0
  673. GOTO ext
  674. ELSE
  675. cnt = 0
  676. SELECT count(*) INTO :cnt
  677. FROM u_storage
  678. Where storageid = :arg_s_gb.storageid;
  679. IF sqlca.SQLCode <> 0 THEN
  680. arg_msg = '查询仓库资料失败,请检查仓库资料'
  681. rslt = 0
  682. GOTO ext
  683. END IF
  684. IF cnt = 0 THEN
  685. arg_msg = '仓库资料不存在,请检查'
  686. rslt = 0
  687. GOTO ext
  688. END IF
  689. IF cnt > 1 THEN
  690. arg_msg = '仓库资料重复,请检查'
  691. rslt = 0
  692. GOTO ext
  693. END IF
  694. END IF
  695. //检查指令
  696. IF arg_s_gb.ifrel = 1 THEN
  697. IF arg_s_gb.orderid = 0 THEN
  698. arg_msg = '请选择计划'
  699. rslt = 0
  700. GOTO ext
  701. END IF
  702. SELECT orderqty - stopqty INTO :ld_orderqty
  703. FROM u_order_ml
  704. WHERE scid = :arg_s_gb.scid
  705. And orderid = :arg_s_gb.orderid;
  706. IF sqlca.SQLCode <> 0 THEN
  707. arg_msg = '查询指令数量失败,请检查指令资料,'+sqlca.SQLErrText
  708. rslt = 0
  709. GOTO ext
  710. END IF
  711. SELECT isnull(sum(u_mtrlware_mx.packqty * u_mtrlware_mx.qty),0)
  712. INTO :ld_otherqty
  713. FROM u_getbar INNER JOIN
  714. u_mtrlware_mx ON u_getbar.getbarid = u_mtrlware_mx.getbarid
  715. WHERE u_getbar.scid = :arg_s_gb.scid
  716. AND u_getbar.orderid = :arg_s_gb.orderid
  717. AND u_getbar.getbarid <> :arg_s_gb.getbarid
  718. AND u_getbar.ifrel = 1
  719. And u_mtrlware_mx.isuse = 1;
  720. IF sqlca.SQLCode <> 0 THEN
  721. arg_msg = '查询相关指令其它已开单数失败,'+sqlca.SQLErrText
  722. rslt = 0
  723. GOTO ext
  724. END IF
  725. IF ld_otherqty + arg_s_gb.qty > ld_orderqty THEN
  726. arg_msg = '超指令开单,指令未安排数:' + String(ld_orderqty,'##,#0.##########') + ',已开单数:'+String(ld_otherqty,'##,#0.##########') + ',本次开单数:'+String(arg_s_gb.qty,'##,#0.##########')
  727. rslt = 0
  728. GOTO ext
  729. END IF
  730. ELSEIF arg_s_gb.ifrel = 2 THEN
  731. cnt = 0
  732. SELECT count(*) INTO :cnt
  733. FROM u_getbar
  734. WHERE u_getbar.scid = :arg_s_gb.scid
  735. AND u_getbar.getbarid <> :arg_s_gb.getbarid
  736. And u_getbar.ifrel = 8;
  737. IF sqlca.SQLCode <> 0 THEN
  738. arg_msg = '查询是否有使用<采购进仓|按采购收货单>的条码生成单失败,'+sqlca.SQLErrText
  739. rslt = 0
  740. GOTO ext
  741. END IF
  742. IF cnt > 0 THEN
  743. arg_msg = '系统有使用<采购进仓|按采购收货单>的条码生成单,不能使用本类型建立条码生成单'
  744. rslt = 0
  745. GOTO ext
  746. END IF
  747. IF arg_s_gb.orderid = 0 THEN
  748. arg_msg = '请选择采购订单'
  749. rslt = 0
  750. GOTO ext
  751. END IF
  752. SELECT u_buytaskmx.qty,u_mtrldef.ifpackpro,u_buytaskmx.mtrlid
  753. INTO :ld_orderqty,:li_ifpackpro,:ll_mtrlid_buytask
  754. FROM u_buytaskmx,u_mtrldef
  755. WHERE u_buytaskmx.mtrlid = u_mtrldef.mtrlid
  756. AND u_buytaskmx.scid = :arg_s_gb.scid
  757. AND u_buytaskmx.taskid = :arg_s_gb.orderid
  758. And u_buytaskmx.printid = :arg_s_gb.buytaskprintid;
  759. IF sqlca.SQLCode <> 0 THEN
  760. arg_msg = '查询订单数量失败,请检查订单资料,'+sqlca.SQLErrText
  761. rslt = 0
  762. GOTO ext
  763. END IF
  764. IF li_ifpackpro = 1 THEN
  765. SELECT u_PrdPF.Sonscale INTO :ld_Sonscale
  766. FROM u_PrdPF,u_mtrl_pf
  767. WHERE u_PrdPF.mtrlid = u_mtrl_pf.mtrlid
  768. AND u_PrdPF.pfcode = u_mtrl_pf.pfcode
  769. AND u_mtrl_pf.ifdft = 1
  770. AND u_PrdPF.mtrlid = :ll_mtrlid_buytask
  771. And u_PrdPF.sonmtrlid = :arg_s_gb.mtrlid;
  772. IF sqlca.SQLCode <> 0 THEN
  773. arg_msg = '查询相关订单包件明细组成数失败,'+sqlca.SQLErrText
  774. rslt = 0
  775. GOTO ext
  776. END IF
  777. ELSE
  778. ld_Sonscale = 1
  779. END IF
  780. ld_orderqty = ld_orderqty * ld_Sonscale
  781. SELECT isnull(sum(u_mtrlware_mx.packqty * u_mtrlware_mx.qty),0) INTO :ld_otherqty
  782. FROM u_getbar INNER JOIN
  783. u_mtrlware_mx ON u_getbar.getbarid = u_mtrlware_mx.getbarid
  784. WHERE u_getbar.scid = :arg_s_gb.scid
  785. AND u_getbar.orderid = :arg_s_gb.orderid
  786. AND u_getbar.buytaskprintid = :arg_s_gb.buytaskprintid
  787. AND u_getbar.mtrlid = :arg_s_gb.mtrlid
  788. AND u_getbar.getbarid <> :arg_s_gb.getbarid
  789. AND u_getbar.ifrel = 2
  790. And u_mtrlware_mx.isuse = 1;
  791. IF sqlca.SQLCode <> 0 THEN
  792. arg_msg = '查询相关订单其它已开单数失败,'+sqlca.SQLErrText
  793. rslt = 0
  794. GOTO ext
  795. END IF
  796. IF ld_otherqty + arg_s_gb.qty > ld_orderqty THEN
  797. arg_msg = '超订单开单,订货数:' + String(ld_orderqty,'##,#0.##########') + ',已开单数:'+String(ld_otherqty,'##,#0.##########') + ',本次开单数:'+String(arg_s_gb.qty,'##,#0.##########')
  798. rslt = 0
  799. GOTO ext
  800. END IF
  801. ELSEIF arg_s_gb.ifrel = 8 THEN
  802. cnt = 0
  803. SELECT count(*) INTO :cnt
  804. FROM u_getbar
  805. WHERE u_getbar.scid = :arg_s_gb.scid
  806. AND u_getbar.getbarid <> :arg_s_gb.getbarid
  807. And (u_getbar.ifrel = 2 Or u_getbar.ifrel = 3);
  808. IF sqlca.SQLCode <> 0 THEN
  809. arg_msg = '查询是否有使用<采购进仓|按采购订单>或<采购进仓|非采购订单>的条码生成单失败,'+sqlca.SQLErrText
  810. rslt = 0
  811. GOTO ext
  812. END IF
  813. IF cnt > 0 THEN
  814. arg_msg = '系统有使用<采购进仓|按采购订单>或<采购进仓|非采购订单>的条码生成单,不能使用本类型建立条码生成单'
  815. rslt = 0
  816. GOTO ext
  817. END IF
  818. IF arg_s_gb.orderid = 0 THEN
  819. arg_msg = '请选择采购收货单'
  820. rslt = 0
  821. GOTO ext
  822. END IF
  823. SELECT u_inwaremx_mx.qty
  824. INTO :ld_orderqty
  825. FROM u_inwaremx_mx
  826. WHERE u_inwaremx_mx.scid = :arg_s_gb.scid
  827. AND u_inwaremx_mx.inwareid = :arg_s_gb.orderid
  828. And u_inwaremx_mx.mxprintid = :arg_s_gb.buytaskprintid;
  829. IF sqlca.SQLCode <> 0 THEN
  830. arg_msg = '查询采购收货单包件明细数量失败,请检查采购收货单资料,'+sqlca.SQLErrText
  831. rslt = 0
  832. GOTO ext
  833. END IF
  834. SELECT isnull(sum(u_mtrlware_mx.packqty * u_mtrlware_mx.qty),0) INTO :ld_otherqty
  835. FROM u_getbar INNER JOIN
  836. u_mtrlware_mx ON u_getbar.getbarid = u_mtrlware_mx.getbarid
  837. WHERE u_getbar.scid = :arg_s_gb.scid
  838. AND u_getbar.orderid = :arg_s_gb.orderid
  839. AND u_getbar.buytaskprintid = :arg_s_gb.buytaskprintid
  840. AND u_getbar.getbarid <> :arg_s_gb.getbarid
  841. AND u_getbar.ifrel = 8
  842. And u_mtrlware_mx.isuse = 1;
  843. IF sqlca.SQLCode <> 0 THEN
  844. arg_msg = '查询相关收货单其它已开单数失败,'+sqlca.SQLErrText
  845. rslt = 0
  846. GOTO ext
  847. END IF
  848. IF ld_otherqty + arg_s_gb.qty > ld_orderqty THEN
  849. arg_msg = '超收货单开单,收货数:' + String(ld_orderqty,'##,#0.##########') + ',已开单数:'+String(ld_otherqty,'##,#0.##########') + ',本次开单数:'+String(arg_s_gb.qty,'##,#0.##########')
  850. rslt = 0
  851. GOTO ext
  852. END IF
  853. END IF
  854. //检查客户
  855. IF arg_s_gb.cusid > 0 THEN
  856. cnt = 0
  857. SELECT count(*) INTO :cnt
  858. FROM u_cust
  859. Where cusid = :arg_s_gb.cusid;
  860. IF sqlca.SQLCode <> 0 THEN
  861. arg_msg = '查询客户资料失败,请检查客户资料'
  862. rslt = 0
  863. GOTO ext
  864. END IF
  865. IF cnt = 0 THEN
  866. arg_msg = '客户资料不存在,请检查'
  867. rslt = 0
  868. GOTO ext
  869. END IF
  870. IF cnt > 1 THEN
  871. arg_msg = '客户资料重复,请检查'
  872. rslt = 0
  873. GOTO ext
  874. END IF
  875. END IF
  876. //检查数量
  877. IF arg_s_gb.qty <= 0 THEN
  878. arg_msg = '错误的物料数量,请检查'
  879. rslt = 0
  880. GOTO ext
  881. END IF
  882. //检查明细
  883. ll_it_mxbt = UpperBound(arg_s_gb.arg_s_mx)
  884. IF ll_it_mxbt = 0 THEN
  885. rslt = 0
  886. arg_msg = "没有正确条码生成单明细内容"
  887. GOTO ext
  888. END IF
  889. FOR i = 1 To ll_it_mxbt
  890. IF Trim(arg_s_gb.arg_s_mx[i].barcode) = '' THEN
  891. arg_msg = '行:'+String(i)+',没有条码,请检查'
  892. rslt = 0
  893. GOTO ext
  894. END IF
  895. IF arg_s_gb.arg_s_mx[i].packqty <= 0 THEN
  896. arg_msg = '行:'+String(i)+',错误的包装基数,请检查'
  897. rslt = 0
  898. GOTO ext
  899. END IF
  900. IF arg_s_gb.arg_s_mx[i].qty <= 0 THEN
  901. arg_msg = '行:'+String(i)+',错误的条码数,请检查'
  902. rslt = 0
  903. GOTO ext
  904. END IF
  905. ld_sum_mxqty += arg_s_gb.arg_s_mx[i].packqty * arg_s_gb.arg_s_mx[i].qty
  906. NEXT
  907. IF ld_sum_mxqty <> arg_s_gb.qty THEN
  908. arg_msg = '单据数量:'+string(arg_s_gb.qty,'#,##0.00########')+',与明细数量:'+string(ld_sum_mxqty,'#,##0.00########')+',不相符,请检查'
  909. rslt = 0
  910. GOTO ext
  911. END IF
  912. IF arg_s_gb.getbarid = 0 THEN
  913. ll_newid = f_sys_scidentity(0,"u_getbar","getbarid",arg_msg,True,id_sqlca)
  914. IF ll_newid <= 0 THEN
  915. rslt = 0
  916. GOTO ext
  917. END IF
  918. IF f_get_sccode(arg_s_gb.scid,sqlca,ls_sccode,arg_msg) = 0 THEN
  919. rslt = 0
  920. GOTO ext
  921. END IF
  922. ls_getbarcode = getid(0,ls_sccode + "TM",Date(server_dt),False,sqlca) //取得新单据编号
  923. IF ls_getbarcode = "err" THEN
  924. rslt = 0
  925. arg_msg = "无法获取条码生成单编号"
  926. GOTO ext
  927. END IF
  928. INSERT INTO u_getbar(
  929. scid,
  930. getbarid,
  931. getbarcode,
  932. mtrlid,
  933. status,
  934. plancode,
  935. woodcode,
  936. pcode,
  937. qty,
  938. ifrel,
  939. orderid,
  940. dscrp,
  941. dscrp2,
  942. flag,
  943. opemp,
  944. opdate,
  945. getbardate,
  946. mtrlcuscode,
  947. location,
  948. storageid,
  949. cusid,
  950. reason,
  951. buytaskprintid,
  952. packqty,
  953. relbillid,
  954. relbillprintid,
  955. uqty,
  956. packuqty,
  957. rate)
  958. VALUES (
  959. :arg_s_gb.scid,
  960. :ll_newid,
  961. :ls_getbarcode,
  962. :arg_s_gb.mtrlid,
  963. :arg_s_gb.status,
  964. :arg_s_gb.plancode,
  965. :arg_s_gb.woodcode,
  966. :arg_s_gb.pcode,
  967. :arg_s_gb.qty,
  968. :arg_s_gb.ifrel,
  969. :arg_s_gb.orderid,
  970. :arg_s_gb.dscrp,
  971. :arg_s_gb.dscrp2,
  972. 0,
  973. :arg_opemp,
  974. :server_dt,
  975. :arg_s_gb.getbardate,
  976. :arg_s_gb.mtrlcuscode,
  977. :arg_s_gb.location,
  978. :arg_s_gb.storageid,
  979. :arg_s_gb.cusid,
  980. :arg_s_gb.reason,
  981. :arg_s_gb.buytaskprintid,
  982. :arg_s_gb.packqty,
  983. :arg_s_gb.relbillid,
  984. :arg_s_gb.relbillprintid,
  985. :arg_s_gb.uqty,
  986. :arg_s_gb.packuqty,
  987. :arg_s_gb.rate);
  988. IF sqlca.SQLCode <> 0 THEN
  989. rslt = 0
  990. arg_msg = "因网络或其它原因导致插入操作失败>>"+"~n"+sqlca.SQLErrText
  991. GOTO ext
  992. END IF
  993. FOR i = 1 To ll_it_mxbt
  994. INSERT INTO u_mtrlware_mx
  995. (getbarid,
  996. barcode,
  997. mxdscrp,
  998. mxdscrp2,
  999. mxdscrp3,
  1000. mxdscrp4,
  1001. inflag,
  1002. outflag,
  1003. qty,
  1004. packqty,
  1005. isuse,
  1006. scid,
  1007. storageid,
  1008. mtrlid,
  1009. sptid,
  1010. status,
  1011. woodcode,
  1012. pcode,
  1013. plancode,
  1014. mtrlcuscode,
  1015. location,
  1016. ifrel,
  1017. orderid,
  1018. buytaskprintid,
  1019. packuqty,
  1020. rate)
  1021. VALUES (:ll_newid,
  1022. :arg_s_gb.arg_s_mx[i].barcode,
  1023. :arg_s_gb.arg_s_mx[i].mxdscrp,
  1024. :arg_s_gb.arg_s_mx[i].mxdscrp2,
  1025. :arg_s_gb.arg_s_mx[i].mxdscrp3,
  1026. :arg_s_gb.arg_s_mx[i].mxdscrp4,
  1027. 0,
  1028. 0,
  1029. :arg_s_gb.arg_s_mx[i].qty,
  1030. :arg_s_gb.arg_s_mx[i].packqty,
  1031. 1,
  1032. :arg_s_gb.scid,
  1033. :arg_s_gb.storageid,
  1034. :arg_s_gb.mtrlid,
  1035. :arg_s_gb.cusid,
  1036. :arg_s_gb.status,
  1037. :arg_s_gb.woodcode,
  1038. :arg_s_gb.pcode,
  1039. :arg_s_gb.plancode,
  1040. :arg_s_gb.mtrlcuscode,
  1041. :arg_s_gb.Location,
  1042. :arg_s_gb.ifrel,
  1043. :arg_s_gb.orderid,
  1044. :arg_s_gb.buytaskprintid,
  1045. :arg_s_gb.arg_s_mx[i].packuqty,
  1046. :arg_s_gb.arg_s_mx[i].rate) Using sqlca;
  1047. IF sqlca.SQLCode <> 0 THEN
  1048. rslt = 0
  1049. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  1050. GOTO ext
  1051. END IF
  1052. NEXT
  1053. uo_getbarid = ll_newid
  1054. uo_getbarcode = ls_getbarcode
  1055. ELSE
  1056. UPDATE u_getbar
  1057. SET mtrlid = :arg_s_gb.mtrlid,
  1058. status = :arg_s_gb.status,
  1059. plancode = :arg_s_gb.plancode,
  1060. woodcode = :arg_s_gb.woodcode,
  1061. pcode = :arg_s_gb.pcode,
  1062. qty = :arg_s_gb.qty,
  1063. ifrel = :arg_s_gb.ifrel,
  1064. orderid = :arg_s_gb.orderid,
  1065. dscrp = :arg_s_gb.dscrp,
  1066. dscrp2 = :arg_s_gb.dscrp2,
  1067. getbardate = :arg_s_gb.getbardate,
  1068. mtrlcuscode = :arg_s_gb.mtrlcuscode,
  1069. location = :arg_s_gb.location,
  1070. storageid = :arg_s_gb.storageid,
  1071. cusid = :arg_s_gb.cusid,
  1072. reason = :arg_s_gb.reason,
  1073. buytaskprintid = :arg_s_gb.buytaskprintid,
  1074. packqty = :arg_s_gb.packqty,
  1075. moddate = getdate(),
  1076. Modemp = :arg_opemp,
  1077. relbillid = :arg_s_gb.relbillid,
  1078. relbillprintid = :arg_s_gb.relbillprintid,
  1079. uqty = :arg_s_gb.uqty,
  1080. packuqty = :arg_s_gb.packuqty,
  1081. rate = :arg_s_gb.rate
  1082. WHERE u_getbar.getbarid = :arg_s_gb.getbarid
  1083. And flag = 0;
  1084. IF sqlca.SQLCode <> 0 THEN
  1085. rslt = 0
  1086. arg_msg = "因网络或其它原因导致更新单据操作失败"+"~n"+sqlca.SQLErrText
  1087. GOTO ext
  1088. ELSEIF sqlca.SQLNRows = 0 THEN
  1089. arg_msg = '单据正在更新,请稍后重试'
  1090. rslt = 0
  1091. GOTO ext
  1092. END IF
  1093. //删除原有明细
  1094. DELETE FROM u_mtrlware_mx
  1095. Where u_mtrlware_mx.getbarid = :arg_s_gb.getbarid;
  1096. IF sqlca.SQLCode <> 0 THEN
  1097. rslt = 0
  1098. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  1099. GOTO ext
  1100. END IF
  1101. FOR i = 1 To ll_it_mxbt
  1102. INSERT INTO u_mtrlware_mx
  1103. (getbarid,
  1104. barcode,
  1105. mxdscrp,
  1106. mxdscrp2,
  1107. mxdscrp3,
  1108. mxdscrp4,
  1109. inflag,
  1110. outflag,
  1111. qty,
  1112. packqty,
  1113. isuse,
  1114. scid,
  1115. storageid,
  1116. mtrlid,
  1117. sptid,
  1118. status,
  1119. woodcode,
  1120. pcode,
  1121. plancode,
  1122. mtrlcuscode,
  1123. location,
  1124. ifrel,
  1125. orderid,
  1126. buytaskprintid,
  1127. packuqty,
  1128. rate)
  1129. VALUES (:arg_s_gb.getbarid,
  1130. :arg_s_gb.arg_s_mx[i].barcode,
  1131. :arg_s_gb.arg_s_mx[i].mxdscrp,
  1132. :arg_s_gb.arg_s_mx[i].mxdscrp2,
  1133. :arg_s_gb.arg_s_mx[i].mxdscrp3,
  1134. :arg_s_gb.arg_s_mx[i].mxdscrp4,
  1135. 0,
  1136. 0,
  1137. :arg_s_gb.arg_s_mx[i].qty,
  1138. :arg_s_gb.arg_s_mx[i].packqty,
  1139. 1,
  1140. :arg_s_gb.scid,
  1141. :arg_s_gb.storageid,
  1142. :arg_s_gb.mtrlid,
  1143. :arg_s_gb.cusid,
  1144. :arg_s_gb.status,
  1145. :arg_s_gb.woodcode,
  1146. :arg_s_gb.pcode,
  1147. :arg_s_gb.plancode,
  1148. :arg_s_gb.mtrlcuscode,
  1149. :arg_s_gb.Location,
  1150. :arg_s_gb.ifrel,
  1151. :arg_s_gb.orderid,
  1152. :arg_s_gb.buytaskprintid,
  1153. :arg_s_gb.arg_s_mx[i].packuqty,
  1154. :arg_s_gb.arg_s_mx[i].rate) Using sqlca;
  1155. IF sqlca.SQLCode <> 0 THEN
  1156. rslt = 0
  1157. arg_msg = "因网络或其它原因导致插入明细操作失败"+"~n"+sqlca.SQLErrText
  1158. GOTO ext
  1159. END IF
  1160. NEXT
  1161. uo_getbarid = arg_s_gb.getbarid
  1162. END IF
  1163. ext:
  1164. IF rslt = 0 THEN
  1165. ROLLBACK;
  1166. ELSEIF rslt = 1 And arg_ifcommit THEN
  1167. COMMIT;
  1168. END IF
  1169. RETURN rslt
  1170. end function
  1171. public function integer uof_barcode_inuse (string arg_barcode, integer arg_isuse, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1172. Int li_isuse
  1173. Int li_inflag,li_outflag
  1174. Long ll_getbarid
  1175. Int li_flag
  1176. SELECT getbarid,
  1177. isuse,
  1178. inflag,
  1179. outflag
  1180. INTO :ll_getbarid,
  1181. :li_isuse,
  1182. :li_inflag,
  1183. :li_outflag
  1184. FROM u_mtrlware_mx
  1185. Where barcode = :arg_barcode;
  1186. IF sqlca.SQLCode <> 0 THEN
  1187. arg_msg = '查询条码:'+arg_barcode+',状态失败,'+sqlca.SQLErrText
  1188. rslt = 0
  1189. GOTO ext
  1190. END IF
  1191. IF ll_getbarid <= 0 THEN
  1192. rslt = 0
  1193. arg_msg = '错误的条形码单唯一码'
  1194. GOTO ext
  1195. END IF
  1196. SELECT flag INTO :li_flag
  1197. FROM u_getbar
  1198. Where getbarid = :ll_getbarid;
  1199. IF sqlca.SQLCode <> 0 THEN
  1200. arg_msg = '查询条码单审核标记失败,'+sqlca.SQLErrText
  1201. rslt = 0
  1202. GOTO ext
  1203. END IF
  1204. IF li_flag = 0 THEN
  1205. rslt = 0
  1206. arg_msg = "条码单未审核,不能操作,请检查"
  1207. GOTO ext
  1208. END IF
  1209. IF li_isuse = 0 AND arg_isuse = 0 THEN
  1210. rslt = 0
  1211. arg_msg = '条码:'+arg_barcode+',已经作废,请检查'
  1212. GOTO ext
  1213. END IF
  1214. IF li_isuse = 1 AND arg_isuse = 1 THEN
  1215. rslt = 0
  1216. arg_msg = '条码:'+arg_barcode+',已经有效,不能取消作废,请检查'
  1217. GOTO ext
  1218. END IF
  1219. IF li_inflag = 1 OR li_outflag = 1 THEN
  1220. rslt = 0
  1221. arg_msg = '操作失败,条码:'+arg_barcode+',已经进仓或出仓'
  1222. GOTO ext
  1223. END IF
  1224. UPDATE u_mtrlware_mx
  1225. SET isuse = :arg_isuse
  1226. Where barcode = :arg_barcode;
  1227. IF sqlca.SQLCode <> 0 THEN
  1228. rslt = 0
  1229. arg_msg = '更新条码:'+arg_barcode+',状态操作失败,'+sqlca.SQLErrText
  1230. GOTO ext
  1231. END IF
  1232. ext:
  1233. IF rslt = 0 THEN
  1234. ROLLBACK;
  1235. ELSEIF rslt = 0 AND arg_ifcommit THEN
  1236. COMMIT;
  1237. END IF
  1238. RETURN rslt
  1239. end function
  1240. public function integer uof_barcode_out (string arg_barcode, integer arg_outflag, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1241. Int li_isuse
  1242. Int li_inflag,li_outflag
  1243. Long ll_getbarid
  1244. Int li_flag
  1245. Int li_outflag_update
  1246. SELECT getbarid,
  1247. isuse,
  1248. inflag,
  1249. outflag
  1250. INTO :ll_getbarid,
  1251. :li_isuse,
  1252. :li_inflag,
  1253. :li_outflag
  1254. FROM u_mtrlware_mx
  1255. Where barcode = :arg_barcode;
  1256. IF sqlca.SQLCode <> 0 THEN
  1257. arg_msg = '查询条码:'+arg_barcode+',状态失败,'+sqlca.SQLErrText
  1258. rslt = 0
  1259. GOTO ext
  1260. END IF
  1261. IF ll_getbarid <= 0 THEN
  1262. rslt = 0
  1263. arg_msg = '错误的条形码单唯一码'
  1264. GOTO ext
  1265. END IF
  1266. SELECT flag INTO :li_flag
  1267. FROM u_getbar
  1268. Where getbarid = :ll_getbarid;
  1269. IF sqlca.SQLCode <> 0 THEN
  1270. arg_msg = '查询条码单审核标记失败,'+sqlca.SQLErrText
  1271. rslt = 0
  1272. GOTO ext
  1273. END IF
  1274. IF li_flag = 0 THEN
  1275. rslt = 0
  1276. arg_msg = "条码单未审核,不能操作,请检查"
  1277. GOTO ext
  1278. END IF
  1279. IF li_isuse = 0 THEN
  1280. rslt = 0
  1281. arg_msg = '条码:'+arg_barcode+',已经作废,不能操作,请检查'
  1282. GOTO ext
  1283. END IF
  1284. IF arg_outflag = 1 THEN
  1285. IF li_inflag = 0 THEN
  1286. rslt = 0
  1287. arg_msg = '操作失败,条码:'+arg_barcode+',未进仓'
  1288. GOTO ext
  1289. END IF
  1290. IF li_inflag - li_outflag = 0 THEN
  1291. rslt = 0
  1292. arg_msg = '操作失败,条码:'+arg_barcode+',已经出仓'
  1293. GOTO ext
  1294. END IF
  1295. li_outflag_update = 1
  1296. ELSE
  1297. IF li_inflag - li_outflag = 1 THEN
  1298. rslt = 0
  1299. arg_msg = '操作失败,条码:'+arg_barcode+',未出仓,不能取消出仓'
  1300. GOTO ext
  1301. END IF
  1302. li_outflag_update = -1
  1303. END IF
  1304. UPDATE u_mtrlware_mx
  1305. SET outflag = outflag + :li_outflag_update
  1306. Where barcode = :arg_barcode;
  1307. IF sqlca.SQLCode <> 0 THEN
  1308. rslt = 0
  1309. arg_msg = '更新条码:'+arg_barcode+',出仓标记操作失败,'+sqlca.SQLErrText
  1310. GOTO ext
  1311. END IF
  1312. ext:
  1313. IF rslt = 0 THEN
  1314. ROLLBACK;
  1315. ELSEIF rslt = 0 AND arg_ifcommit THEN
  1316. COMMIT;
  1317. END IF
  1318. RETURN rslt
  1319. end function
  1320. public function integer uof_barcode_mtrlwareid (string arg_barcode, long arg_scid, long arg_mtrlwareid, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1321. Int li_isuse
  1322. Int li_inflag,li_outflag
  1323. Long ll_getbarid
  1324. Int li_flag
  1325. SELECT getbarid,
  1326. isuse,
  1327. inflag,
  1328. outflag
  1329. INTO :ll_getbarid,
  1330. :li_isuse,
  1331. :li_inflag,
  1332. :li_outflag
  1333. FROM u_mtrlware_mx
  1334. Where barcode = :arg_barcode;
  1335. IF sqlca.SQLCode <> 0 THEN
  1336. arg_msg = '查询条码:'+arg_barcode+',状态失败,'+sqlca.SQLErrText
  1337. rslt = 0
  1338. GOTO ext
  1339. END IF
  1340. IF ll_getbarid <= 0 THEN
  1341. rslt = 0
  1342. arg_msg = '错误的条形码单唯一码'
  1343. GOTO ext
  1344. END IF
  1345. SELECT flag INTO :li_flag
  1346. FROM u_getbar
  1347. Where getbarid = :ll_getbarid;
  1348. IF sqlca.SQLCode <> 0 THEN
  1349. arg_msg = '查询条码单审核标记失败,'+sqlca.SQLErrText
  1350. rslt = 0
  1351. GOTO ext
  1352. END IF
  1353. IF li_flag = 0 THEN
  1354. rslt = 0
  1355. arg_msg = "条码单未审核,不能操作,请检查"
  1356. GOTO ext
  1357. END IF
  1358. IF li_isuse = 0 THEN
  1359. rslt = 0
  1360. arg_msg = '条码:'+arg_barcode+',已经作废,不能操作,请检查'
  1361. GOTO ext
  1362. END IF
  1363. IF li_inflag = 0 THEN
  1364. rslt = 0
  1365. arg_msg = '操作失败,条码:'+arg_barcode+',未进仓,不能操作'
  1366. GOTO ext
  1367. END IF
  1368. IF li_inflag - li_outflag = 0 THEN
  1369. rslt = 0
  1370. arg_msg = '操作失败,条码:'+arg_barcode+',已经出仓,不能操作'
  1371. GOTO ext
  1372. END IF
  1373. UPDATE u_mtrlware_mx
  1374. SET u_mtrlware_mx.scid = :arg_scid,
  1375. u_mtrlware_mx.mtrlwareid = :arg_mtrlwareid,
  1376. u_mtrlware_mx.storageid = u_mtrlware.storageid,
  1377. u_mtrlware_mx.mtrlid = u_mtrlware.mtrlid,
  1378. u_mtrlware_mx.sptid = u_mtrlware.sptid,
  1379. u_mtrlware_mx.status = u_mtrlware.status,
  1380. u_mtrlware_mx.woodcode = u_mtrlware.woodcode,
  1381. u_mtrlware_mx.pcode = u_mtrlware.pcode,
  1382. u_mtrlware_mx.plancode = u_mtrlware.plancode,
  1383. u_mtrlware_mx.mtrlcuscode = u_mtrlware.mtrlcuscode,
  1384. u_mtrlware_mx.location = u_mtrlware.location
  1385. FROM u_mtrlware_mx,u_mtrlware
  1386. WHERE u_mtrlware.scid = :arg_scid
  1387. AND u_mtrlware.mtrlwareid = :arg_mtrlwareid
  1388. And u_mtrlware_mx.barcode = :arg_barcode;
  1389. IF sqlca.SQLCode <> 0 THEN
  1390. rslt = 0
  1391. arg_msg = '更新条码:'+arg_barcode+',库存信息操作失败,'+sqlca.SQLErrText
  1392. GOTO ext
  1393. END IF
  1394. //UPDATE u_mtrlware_mx
  1395. // SET scid = :arg_scid,
  1396. // mtrlwareid = :arg_mtrlwareid
  1397. // Where barcode = :arg_barcode;
  1398. //IF sqlca.SQLCode <> 0 THEN
  1399. // rslt = 0
  1400. // arg_msg = '更新条码:'+arg_barcode+',进仓标记操作失败,'+sqlca.SQLErrText
  1401. // GOTO ext
  1402. //END IF
  1403. ext:
  1404. IF rslt = 0 THEN
  1405. ROLLBACK;
  1406. ELSEIF rslt = 0 And arg_ifcommit THEN
  1407. COMMIT;
  1408. END IF
  1409. RETURN rslt
  1410. end function
  1411. public function integer getinfo (long arg_getbarid, ref s_mtrlware_mx arg_gbmx[], ref string arg_msg);Int rslt = 1
  1412. Long i = 1,NO_MXCHECK = 0
  1413. IF arg_getbarid <= 0 THEN
  1414. rslt = 0
  1415. ARG_MSG = '错误的条码生成单唯一码'
  1416. GOTO ext
  1417. END IF
  1418. //用游标读取明细
  1419. DECLARE cur_getbarmx CURSOR FOR
  1420. SELECT barcode,qty
  1421. FROM u_mtrlware_mx
  1422. WHERE u_mtrlware_mx.getbarid = :arg_getbarid
  1423. Order By barcode;
  1424. OPEN cur_getbarmx;
  1425. FETCH cur_getbarmx Into :arg_gbmx[i].barcode,:arg_gbmx[i].qty;
  1426. DO WHILE SQLCA.SQLCode = 0
  1427. i++
  1428. FETCH cur_getbarmx Into :arg_gbmx[i].barcode,:arg_gbmx[i].qty;
  1429. LOOP
  1430. CLOSE cur_getbarmx;
  1431. //检验明细是否读入完整
  1432. SELECT COUNT(*) INTO :NO_MXCHECK
  1433. FROM u_mtrlware_mx
  1434. Where u_mtrlware_mx.getbarid = :arg_getbarid;
  1435. IF SQLCA.SQLCode <> 0 THEN
  1436. rslt = 0
  1437. ARG_MSG = "查询操作失败,条码生成单明细数量"
  1438. GOTO ext
  1439. END IF
  1440. IF i <> (NO_MXCHECK+1) THEN
  1441. rslt = 0
  1442. ARG_MSG = "查询操作失败,条码生成单明细数量不相符"
  1443. GOTO ext
  1444. END IF
  1445. ext:
  1446. RETURN rslt
  1447. end function
  1448. public function integer add_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1449. s_getbar arg_s_gb
  1450. IF arg_getbarid <= 0 THEN
  1451. rslt = 0
  1452. arg_msg = '错误条码生成单唯一码'
  1453. GOTO ext
  1454. END IF
  1455. IF arg_newdescppart = '' THEN
  1456. rslt = 0
  1457. arG_MSG = "要添加内容为空,操作取消"
  1458. GOTO ext
  1459. END IF
  1460. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  1461. rslt = 0
  1462. GOTO ext
  1463. END IF
  1464. IF arg_s_gb.flag = 0 THEN
  1465. rslt = 0
  1466. arg_msg = "条码生成单未审核,操作取消"
  1467. GOTO ext
  1468. END IF
  1469. UPDATE u_getbar
  1470. SET DSCRP = DSCRP+' '+:arg_newdescppart
  1471. WHERE getbarid = :arg_getbarid;
  1472. IF SQLCA.SQLCode <> 0 THEN
  1473. rslt = 0
  1474. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  1475. GOTO ext
  1476. END IF
  1477. ext:
  1478. IF rslt = 0 THEN
  1479. ROLLBACK;
  1480. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1481. COMMIT;
  1482. END IF
  1483. Return (rslt)
  1484. end function
  1485. public function integer mod_dscrp (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1486. s_getbar arg_s_gb
  1487. IF arg_getbarid <= 0 THEN
  1488. rslt = 0
  1489. arg_msg = '错误条码生成单唯一码'
  1490. GOTO ext
  1491. END IF
  1492. IF arg_newdescppart = '' THEN
  1493. rslt = 0
  1494. arG_MSG = "备注内容为空,操作取消"
  1495. GOTO ext
  1496. END IF
  1497. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  1498. rslt = 0
  1499. GOTO ext
  1500. END IF
  1501. IF arg_s_gb.flag = 0 THEN
  1502. rslt = 0
  1503. arg_msg = "条码生成单未审核,操作取消"
  1504. GOTO ext
  1505. END IF
  1506. UPDATE u_getbar
  1507. SET DSCRP = :arg_newdescppart
  1508. WHERE getbarid = :arg_getbarid;
  1509. IF SQLCA.SQLCode <> 0 THEN
  1510. rslt = 0
  1511. arG_MSG = "因网络或其它原因导致添加备注操作失败"+"~n"+SQLCA.SQLErrText
  1512. GOTO ext
  1513. END IF
  1514. ext:
  1515. IF rslt = 0 THEN
  1516. ROLLBACK;
  1517. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1518. COMMIT;
  1519. END IF
  1520. Return (rslt)
  1521. end function
  1522. public function integer del (long arg_getbarid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1523. Long cnt = 0
  1524. s_getbar arg_s_gb
  1525. IF arg_getbarid <= 0 THEN
  1526. rslt = 0
  1527. arg_msg = "没有删除对象,操作取消"
  1528. GOTO ext
  1529. END IF
  1530. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  1531. rslt = 0
  1532. GOTO ext
  1533. END IF
  1534. IF arg_s_gb.flag = 1 THEN
  1535. rslt = 0
  1536. arg_msg = "条码生成单已经审核,操作取消"
  1537. GOTO ext
  1538. END IF
  1539. //检查明细条码是否已被打印
  1540. cnt = 0
  1541. SELECT count(*) INTO :cnt
  1542. FROM u_mtrlware_mx
  1543. WHERE u_mtrlware_mx.getbarid = :arg_getbarid
  1544. And u_mtrlware_mx.printnum > 0;
  1545. IF sqlca.SQLCode <> 0 THEN cnt = 0
  1546. IF cnt > 0 THEN
  1547. arg_msg = '单据对应条码已打印,不能删除,请检查!'
  1548. rslt = 0
  1549. GOTO ext
  1550. END IF
  1551. //检查明细条码是否已被扫描
  1552. cnt = 0
  1553. SELECT count(*) INTO :cnt
  1554. FROM u_getbar,u_mtrlware_mx
  1555. WHERE u_getbar.getbarid = u_mtrlware_mx.getbarid
  1556. AND u_getbar.getbarid = :arg_getbarid
  1557. AND u_mtrlware_mx.barcode IN
  1558. (SELECT barcode From U_inwaremx_mx_barcode);
  1559. IF sqlca.SQLCode <> 0 THEN cnt = 0
  1560. IF cnt > 0 THEN
  1561. arg_msg = '单据对应条码已扫描进仓,不能删除,请检查!'
  1562. rslt = 0
  1563. GOTO ext
  1564. END IF
  1565. DELETE From u_mtrlware_mx Where u_mtrlware_mx.getbarid = :arg_getbarid;
  1566. IF sqlca.SQLCode <> 0 THEN
  1567. rslt = 0
  1568. arg_msg = "删除条码生成单明细操作失败"+"~n"+sqlca.SQLErrText
  1569. GOTO ext
  1570. END IF
  1571. DELETE From u_getbar Where u_getbar.getbarid = :arg_getbarid;
  1572. IF sqlca.SQLCode <> 0 THEN
  1573. rslt = 0
  1574. arg_msg = "删除条码生成单操作失败"+"~n"+sqlca.SQLErrText
  1575. GOTO ext
  1576. END IF
  1577. ext:
  1578. IF rslt = 0 THEN
  1579. ROLLBACK;
  1580. ELSEIF rslt = 1 and arg_ifcommit THEN
  1581. COMMIT;
  1582. END IF
  1583. RETURN rslt
  1584. end function
  1585. public function integer c_auditing (long arg_getbarid, boolean arg_ifauto, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1586. Long cnt = 0,j
  1587. DateTime null_dt
  1588. SetNull(null_dt)
  1589. s_getbar arg_s_gb
  1590. s_mtrlware_mx arg_s_gbmx[]
  1591. uo_inware_py uo_gb_py
  1592. uo_gb_py = Create uo_inware_py
  1593. uo_gb_py.commit_transaction = sqlca
  1594. uo_gb_py.if_getid_ture = False
  1595. uo_gb_py.if_py_check_barcode = False
  1596. uo_gb_py.if_py_update_barcode = True
  1597. If arg_getbarid <= 0 Then
  1598. rslt = 0
  1599. arg_msg = '错误条码生成单唯一码'
  1600. Goto ext
  1601. End If
  1602. If p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 Then
  1603. rslt = 0
  1604. Goto ext
  1605. End If
  1606. If arg_s_gb.flag = 0 Then
  1607. rslt = 0
  1608. arg_msg = "条码生成单还未审核,操作取消"
  1609. Goto ext
  1610. End If
  1611. If arg_ifauto = False Then
  1612. If arg_s_gb.relbillid > 0 Then
  1613. rslt = 0
  1614. arg_msg = '生产计划包件变更单生成的单据,不能撤审,如需要操作请到生产计划包件变更单处理'
  1615. Goto ext
  1616. End If
  1617. End If
  1618. If getinfo(arg_getbarid,arg_s_gbmx,arg_msg) = 0 Then
  1619. rslt = 0
  1620. Goto ext
  1621. End If
  1622. Long ll_scid,ll_inwareid
  1623. If arg_s_gb.ifrel = 7 Then
  1624. Select scid,inwareid
  1625. Into :ll_scid,:ll_inwareid
  1626. From u_inware
  1627. Where u_inware.billtype = 9
  1628. And u_inware.part = :arg_s_gb.getbarcode;
  1629. If sqlca.SQLCode = -1 Then
  1630. arg_msg = '查询相关盘盈单失败,'+sqlca.SQLErrText
  1631. rslt = 0
  1632. Goto ext
  1633. ElseIf sqlca.SQLCode = 100 Then
  1634. ll_inwareid = 0
  1635. End If
  1636. If ll_inwareid > 0 Then
  1637. If uo_gb_py.getinfo(ll_scid,ll_inwareid,arg_msg) = 0 Then
  1638. arg_msg = 'error!/盘盈单'+arg_msg
  1639. rslt = 0
  1640. Goto ext
  1641. End If
  1642. If uo_gb_py.c_auditing(False,arg_msg) = 0 Then
  1643. arg_msg = 'error!/盘盈单'+arg_msg
  1644. rslt = 0
  1645. Goto ext
  1646. End If
  1647. If uo_gb_py.del(ll_scid,ll_inwareid,arg_msg,False) = 0 Then
  1648. arg_msg = 'error!/盘盈单'+arg_msg
  1649. rslt = 0
  1650. Goto ext
  1651. End If
  1652. End If
  1653. End If
  1654. cnt = 0
  1655. Select count(*)
  1656. Into :cnt
  1657. From u_mtrlware_mx
  1658. Where u_mtrlware_mx.getbarid = :arg_getbarid
  1659. And u_mtrlware_mx.isuse = 0;
  1660. If sqlca.SQLCode <> 0 Then
  1661. rslt = 0
  1662. arg_msg = '查询操作失败,单据明细是否有作废条码,'+sqlca.SQLErrText
  1663. Goto ext
  1664. End If
  1665. If cnt > 0 Then
  1666. rslt = 0
  1667. arg_msg = '单据已有作废条码,不能撤审'
  1668. Goto ext
  1669. End If
  1670. cnt = 0
  1671. Select count(*)
  1672. Into :cnt
  1673. From u_mtrlware_mx
  1674. Where u_mtrlware_mx.getbarid = :arg_getbarid
  1675. And u_mtrlware_mx.inflag = 1;
  1676. If sqlca.SQLCode <> 0 Then
  1677. rslt = 0
  1678. arg_msg = '查询操作失败!单据明细是否有条码已进仓,'+sqlca.SQLErrText
  1679. Goto ext
  1680. End If
  1681. If cnt > 0 Then
  1682. rslt = 0
  1683. arg_msg = '已有部分条码进仓,不能撤审'
  1684. Goto ext
  1685. End If
  1686. //检查明细条码是否已被打印
  1687. cnt = 0
  1688. Select count(*) Into :cnt
  1689. From u_mtrlware_mx
  1690. Where u_mtrlware_mx.getbarid = :arg_getbarid
  1691. And u_mtrlware_mx.printnum > 0;
  1692. If sqlca.SQLCode <> 0 Then cnt = 0
  1693. If cnt > 0 Then
  1694. arg_msg = '单据对应条码已打印,不能撤审,请检查!'
  1695. rslt = 0
  1696. Goto ext
  1697. End If
  1698. If arg_s_gb.ifrel = 8 Then
  1699. For j = 1 To UpperBound(arg_s_gbmx) - 1
  1700. Delete From U_inwaremx_mx_barcode
  1701. Where U_inwaremx_mx_barcode.scid = :arg_s_gb.scid
  1702. And U_inwaremx_mx_barcode.inwareid = :arg_s_gb.orderid
  1703. And U_inwaremx_mx_barcode.barcode = :arg_s_gbmx[j].barcode
  1704. And U_inwaremx_mx_barcode.billtype = 1;
  1705. If sqlca.SQLCode <> 0 Then
  1706. arg_msg = '删除采购收货单条码明细失败,条码:'+arg_s_gbmx[j].barcode+','+sqlca.SQLErrText
  1707. rslt = 0
  1708. Goto ext
  1709. End If
  1710. Next
  1711. End If
  1712. //检查明细条码是否已被扫描
  1713. cnt = 0
  1714. Select count(*) Into :cnt
  1715. From u_getbar,u_mtrlware_mx
  1716. Where u_getbar.getbarid = u_mtrlware_mx.getbarid
  1717. And u_getbar.getbarid = :arg_getbarid
  1718. And u_mtrlware_mx.barcode In
  1719. (Select barcode From U_inwaremx_mx_barcode);
  1720. If sqlca.SQLCode <> 0 Then cnt = 0
  1721. If cnt > 0 Then
  1722. arg_msg = '单据对应条码已扫描进仓,不能修改,请检查!'
  1723. rslt = 0
  1724. Goto ext
  1725. End If
  1726. Update u_getbar
  1727. Set flag = 0 ,
  1728. auditingrep = '',
  1729. auditingdate = :null_dt
  1730. Where u_getbar.getbarid = :arg_getbarid
  1731. And u_getbar.flag = 1 ;
  1732. If sqlca.SQLCode <> 0 Then
  1733. rslt = 0
  1734. arg_msg = '更新条码生成单状态失败,原因:'+sqlca.SQLErrText
  1735. Goto ext
  1736. ElseIf sqlca.SQLNRows = 0 Then
  1737. rslt = 0
  1738. arg_msg = '单据正在撤审,请稍后重试'
  1739. Goto ext
  1740. End If
  1741. ext:
  1742. If rslt = 0 Then
  1743. Rollback;
  1744. ElseIf rslt = 1 And arg_ifcommit Then
  1745. Commit;
  1746. End If
  1747. Destroy uo_gb_py
  1748. Return rslt
  1749. end function
  1750. public function integer uof_barcode_in (string arg_barcode, long arg_scid, long arg_mtrlwareid, string arg_relbillcode, long arg_relbillid, long arg_relprintid, integer arg_inflag, integer arg_ifth, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1751. Int li_isuse
  1752. Int li_inflag,li_outflag
  1753. Long ll_getbarid
  1754. Int li_flag
  1755. Int li_inflag_update,li_outflag_update
  1756. SELECT getbarid,
  1757. isuse,
  1758. inflag,
  1759. outflag
  1760. INTO :ll_getbarid,
  1761. :li_isuse,
  1762. :li_inflag,
  1763. :li_outflag
  1764. FROM u_mtrlware_mx
  1765. Where barcode = :arg_barcode;
  1766. IF sqlca.SQLCode <> 0 THEN
  1767. arg_msg = '查询条码:'+arg_barcode+',状态失败,'+sqlca.SQLErrText
  1768. rslt = 0
  1769. GOTO ext
  1770. END IF
  1771. IF ll_getbarid <= 0 THEN
  1772. rslt = 0
  1773. arg_msg = '错误的条形码单唯一码'
  1774. GOTO ext
  1775. END IF
  1776. SELECT flag INTO :li_flag
  1777. FROM u_getbar
  1778. Where getbarid = :ll_getbarid;
  1779. IF sqlca.SQLCode <> 0 THEN
  1780. arg_msg = '查询条码单审核标记失败,'+sqlca.SQLErrText
  1781. rslt = 0
  1782. GOTO ext
  1783. END IF
  1784. IF li_flag = 0 THEN
  1785. rslt = 0
  1786. arg_msg = "条码单未审核,不能操作,请检查"
  1787. GOTO ext
  1788. END IF
  1789. IF li_isuse = 0 THEN
  1790. rslt = 0
  1791. arg_msg = '条码:'+arg_barcode+',已经作废,不能操作,请检查'
  1792. GOTO ext
  1793. END IF
  1794. IF arg_ifth = 0 THEN
  1795. IF arg_inflag = 1 THEN
  1796. IF li_inflag - li_outflag = 1 THEN
  1797. rslt = 0
  1798. arg_msg = '操作失败,条码:'+arg_barcode+',已经进仓,不能重复进仓'
  1799. GOTO ext
  1800. END IF
  1801. li_inflag_update = 1
  1802. UPDATE u_mtrlware_mx
  1803. SET u_mtrlware_mx.scid = :arg_scid,
  1804. u_mtrlware_mx.mtrlwareid = :arg_mtrlwareid,
  1805. u_mtrlware_mx.relbillcode = :arg_relbillcode,
  1806. u_mtrlware_mx.relbillid = :arg_relbillid,
  1807. u_mtrlware_mx.relprintid = :arg_relprintid,
  1808. u_mtrlware_mx.inflag = u_mtrlware_mx.inflag + :li_inflag_update,
  1809. u_mtrlware_mx.storageid = u_mtrlware.storageid,
  1810. u_mtrlware_mx.mtrlid = u_mtrlware.mtrlid,
  1811. u_mtrlware_mx.sptid = u_mtrlware.sptid,
  1812. u_mtrlware_mx.status = u_mtrlware.status,
  1813. u_mtrlware_mx.woodcode = u_mtrlware.woodcode,
  1814. u_mtrlware_mx.pcode = u_mtrlware.pcode,
  1815. u_mtrlware_mx.plancode = u_mtrlware.plancode,
  1816. u_mtrlware_mx.mtrlcuscode = u_mtrlware.mtrlcuscode,
  1817. u_mtrlware_mx.location = u_mtrlware.location
  1818. FROM u_mtrlware_mx,u_mtrlware
  1819. WHERE u_mtrlware.scid = :arg_scid
  1820. AND u_mtrlware.mtrlwareid = :arg_mtrlwareid
  1821. And u_mtrlware_mx.barcode = :arg_barcode;
  1822. IF sqlca.SQLCode <> 0 THEN
  1823. rslt = 0
  1824. arg_msg = '更新条码:'+arg_barcode+',进仓标记操作失败,'+sqlca.SQLErrText
  1825. GOTO ext
  1826. END IF
  1827. ELSE
  1828. IF li_inflag = 0 THEN
  1829. rslt = 0
  1830. arg_msg = '操作失败,条码:'+arg_barcode+',未进仓,不能取消进仓'
  1831. GOTO ext
  1832. END IF
  1833. IF li_inflag - li_outflag = 0 THEN
  1834. rslt = 0
  1835. arg_msg = '操作失败,条码:'+arg_barcode+',已经出仓,不能取消进仓'
  1836. GOTO ext
  1837. END IF
  1838. li_inflag_update = -1
  1839. UPDATE u_mtrlware_mx
  1840. SET u_mtrlware_mx.scid = :arg_scid,
  1841. u_mtrlware_mx.mtrlwareid = :arg_mtrlwareid,
  1842. u_mtrlware_mx.relbillcode = :arg_relbillcode,
  1843. u_mtrlware_mx.relbillid = :arg_relbillid,
  1844. u_mtrlware_mx.relprintid = :arg_relprintid,
  1845. u_mtrlware_mx.inflag = u_mtrlware_mx.inflag + :li_inflag_update
  1846. FROM u_mtrlware_mx
  1847. Where u_mtrlware_mx.barcode = :arg_barcode;
  1848. IF sqlca.SQLCode <> 0 THEN
  1849. rslt = 0
  1850. arg_msg = '更新条码:'+arg_barcode+',进仓标记操作失败,'+sqlca.SQLErrText
  1851. GOTO ext
  1852. END IF
  1853. END IF
  1854. ELSE
  1855. IF arg_inflag = 1 THEN
  1856. IF li_inflag - li_outflag <> 1 THEN
  1857. rslt = 0
  1858. arg_msg = '操作失败,条码:'+arg_barcode+',不是在已进仓状态,不能执行退货审核'
  1859. GOTO ext
  1860. END IF
  1861. li_outflag_update = 1
  1862. ELSE
  1863. IF li_inflag - li_outflag <> 0 THEN
  1864. rslt = 0
  1865. arg_msg = '操作失败,条码:'+arg_barcode+',不是在未进仓状态,不能执行退货撤审'
  1866. GOTO ext
  1867. END IF
  1868. li_outflag_update = -1
  1869. END IF
  1870. UPDATE u_mtrlware_mx
  1871. SET outflag = outflag + :li_outflag_update
  1872. Where barcode = :arg_barcode;
  1873. IF sqlca.SQLCode <> 0 THEN
  1874. rslt = 0
  1875. arg_msg = '更新条码:'+arg_barcode+',出仓标记操作失败,'+sqlca.SQLErrText
  1876. GOTO ext
  1877. END IF
  1878. END IF
  1879. ext:
  1880. IF rslt = 0 THEN
  1881. ROLLBACK;
  1882. ELSEIF rslt = 0 And arg_ifcommit THEN
  1883. COMMIT;
  1884. END IF
  1885. RETURN rslt
  1886. end function
  1887. public function integer uof_barcode_fp (string arg_barcode, string arg_relbillcode, long arg_relbillid, long arg_relprintid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1888. UPDATE u_mtrlware_mx
  1889. SET u_mtrlware_mx.relbillcode = :arg_relbillcode,
  1890. u_mtrlware_mx.relbillid = :arg_relbillid,
  1891. u_mtrlware_mx.relprintid = :arg_relprintid
  1892. FROM u_mtrlware_mx
  1893. Where u_mtrlware_mx.barcode = :arg_barcode;
  1894. IF sqlca.SQLCode <> 0 THEN
  1895. rslt = 0
  1896. arg_msg = '更新条码:'+arg_barcode+',订单分配信息失败,'+sqlca.SQLErrText
  1897. GOTO ext
  1898. END IF
  1899. ext:
  1900. IF rslt = 0 THEN
  1901. ROLLBACK;
  1902. ELSEIF rslt = 1 And arg_ifcommit THEN
  1903. COMMIT;
  1904. END IF
  1905. RETURN rslt
  1906. end function
  1907. public function integer mod_dscrp2 (long arg_getbarid, string arg_newdescppart, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1908. s_getbar arg_s_gb
  1909. IF arg_getbarid <= 0 THEN
  1910. rslt = 0
  1911. arg_msg = '错误条码生成单唯一码'
  1912. GOTO ext
  1913. END IF
  1914. IF arg_newdescppart = '' THEN
  1915. rslt = 0
  1916. arG_MSG = "备注内容为空,操作取消"
  1917. GOTO ext
  1918. END IF
  1919. IF p_getinfo(arg_getbarid,arg_s_gb,arg_msg) = 0 THEN
  1920. rslt = 0
  1921. GOTO ext
  1922. END IF
  1923. IF arg_s_gb.flag = 0 THEN
  1924. rslt = 0
  1925. arg_msg = "条码生成单未审核,操作取消"
  1926. GOTO ext
  1927. END IF
  1928. UPDATE u_getbar
  1929. SET DSCRP2 = :arg_newdescppart
  1930. WHERE getbarid = :arg_getbarid;
  1931. IF SQLCA.SQLCode <> 0 THEN
  1932. rslt = 0
  1933. arG_MSG = "因网络或其它原因导致修改备注2操作失败"+"~n"+SQLCA.SQLErrText
  1934. GOTO ext
  1935. END IF
  1936. ext:
  1937. IF rslt = 0 THEN
  1938. ROLLBACK;
  1939. ELSEIF rslt = 1 AND arg_ifcommit THEN
  1940. COMMIT;
  1941. END IF
  1942. Return (rslt)
  1943. end function
  1944. on uo_getbar.create
  1945. call super::create
  1946. TriggerEvent( this, "constructor" )
  1947. end on
  1948. on uo_getbar.destroy
  1949. TriggerEvent( this, "destructor" )
  1950. call super::destroy
  1951. end on