uo_wfjg_py.sru 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544
  1. $PBExportHeader$uo_wfjg_py.sru
  2. forward
  3. global type uo_wfjg_py from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_wfjg_py from nonvisualobject
  7. end type
  8. global uo_wfjg_py uo_wfjg_py
  9. type variables
  10. PUBLIC PROTECTEDWRITE Long scid = 0 //分部id
  11. PUBLIC PROTECTEDWRITE Long outwareid //进仓单表自动增量id
  12. PUBLIC PROTECTEDWRITE String outwarecode //单据的唯一编号
  13. PUBLIC PROTECTEDWRITE Int billtype = 0 //业务类型
  14. //billtype = 4 正常出仓
  15. //billtype =16 加工商盘盈
  16. PUBLIC PROTECTEDWRITE DateTime opdate //建立时间,自动
  17. PUBLIC PROTECTEDWRITE String opemp //建立操作员
  18. PUBLIC PROTECTEDWRITE DateTime moddate //修改时间,自动
  19. PUBLIC PROTECTEDWRITE String modemp //修改操作员
  20. PUBLIC PROTECTEDWRITE Int balcflag = 0 //仓库日结标志
  21. PUBLIC PROTECTEDWRITE Int flag = 0 //仓库审核标志
  22. PUBLIC PROTECTEDWRITE DateTime auditingdate //审核时间
  23. PUBLIC PROTECTEDWRITE String auditingrep //审核操作员
  24. PUBLIC PROTECTEDWRITE Long ctmint
  25. Long relid = 0 //关联id
  26. DateTime outdate //进仓发生时间
  27. String outrep = '' //经手人
  28. String part = '' //相关号码
  29. String dscrp = '' //备注
  30. Long sptid = 0 //供应户id
  31. String sptname = '' //供应商名称 
  32. Int thflag = 0 //退货标记
  33. Boolean if_getid_ture = TRUE
  34. Transaction commit_transaction //数据commit事务
  35. s_outwaremx_wfjg outwaremx[] //明细结构数组
  36. s_outwaremx_wfjg_aft outwaremx_aft[] //明细结构数组
  37. Long it_mxbt = 0 //明细结构数组末指针
  38. Long it_mxbt_aft = 0 //明细结构数组末指针
  39. Boolean it_newbegin = FALSE //新建标志
  40. Boolean it_updatebegin = FALSE //修改标志
  41. Int uo_option_2unit
  42. String uo_option_change_status
  43. String uo_option_change_woodcode
  44. String uo_option_change_pcode
  45. end variables
  46. forward prototypes
  47. public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg)
  48. public function integer save (boolean arg_ifcommit, ref string arg_msg)
  49. public function integer auditing (boolean arg_ifcommit, ref string arg_msg)
  50. public function integer updatebegin (long arg_scid, long arg_outwareid, integer arg_billtype, ref string arg_msg)
  51. public function integer getinfo (long arg_scid, long arg_outwareid, ref string arg_msg)
  52. public function integer del (long arg_scid, long arg_outwareid, ref string arg_msg, boolean arg_ifcommit)
  53. public function integer add_dscrp (long arg_scid, long arg_outwareid, string arg_newdescppart, ref string arg_msg)
  54. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg)
  55. public function integer p_clearmx ()
  56. public function integer p_getinfo (long arg_scid, long arg_outwareid, ref string arg_msg)
  57. public function integer p_reset ()
  58. public function integer acceptmx (long arg_mtrlwareid, decimal arg_qty, string arg_mxdscrp, long arg_printid, ref string arg_msg, integer arg_ifrel, long arg_relid, long arg_mtrlid, long arg_storageid, integer arg_dxflag, string arg_plancode, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_fprice, decimal arg_rebate, long arg_olmtrlid, decimal arg_uqty, string arg_uunit, decimal arg_rate)
  59. public function integer p_create_wfjgorder (string arg_opemp, boolean arg_ifcommit, ref string arg_msg)
  60. public function integer p_destroy_wfjgorder (boolean arg_ifcommit, ref string arg_msg)
  61. public function integer acceptmx_aft (s_outwaremx_wfjg_aft s_mx, string arg_msg)
  62. end prototypes
  63. public function integer newbegin (long arg_scid, integer arg_billtype, ref string arg_msg);int rslt=1
  64. if arg_scid < 0 then
  65. arg_msg = '请选择分部'
  66. rslt = 0
  67. goto ext
  68. end if
  69. IF Not (arg_billtype = 5 OR &
  70. arg_billtype = 9 or &
  71. arg_billtype = 10) THEN
  72. rslt = 0
  73. arg_msg = '此单据类型必须为:'
  74. arg_msg = arg_msg+'5-车间外协发出单,'
  75. arg_msg = arg_msg+'9-外协商盘盈单,'
  76. arg_msg = arg_msg+'10-外协商库存成本价调整'
  77. GOTO ext
  78. END IF
  79. p_reset()
  80. billtype=arg_billtype
  81. scid=arg_scid
  82. it_newbegin=true
  83. it_updatebegin=false
  84. ext:
  85. if rslt=0 then p_reset()
  86. return rslt
  87. end function
  88. public function integer save (boolean arg_ifcommit, ref string arg_msg);Integer rslt = 1,cnt = 0,i
  89. DateTime server_dt
  90. Long ls_newid
  91. String ls_sccode
  92. IF IsNull(relid) THEN relid = 0
  93. IF IsNull(outrep) THEN outrep = ''
  94. IF IsNull(dscrp) THEN dscrp = ''
  95. IF IsNull(part) THEN part = ''
  96. IF IsNull(sptid) THEN sptid = 0
  97. IF IsNull(sptname) THEN sptname = ''
  98. IF IsNull(thflag) THEN thflag = 0
  99. IF it_newbegin = False And it_updatebegin = False THEN
  100. rslt = 0
  101. arg_msg = "非编辑状态不可以提交"
  102. GOTO ext
  103. END IF
  104. SELECT Top 1 getdate() Into :server_dt From u_user Using commit_transaction ;
  105. //取得系统时间,借用操作员表
  106. IF commit_transaction.SQLCode <> 0 THEN
  107. rslt = 0
  108. arg_msg = "查询操作失败,日期 "
  109. GOTO ext
  110. END IF
  111. IF it_mxbt = 0 THEN //如果输入物料资料错则已经清空
  112. rslt = 0
  113. arg_msg = "没有正确进仓内容"
  114. GOTO ext
  115. END IF
  116. IF f_check_inoutdate(0,outdate,False,arg_msg) = 0 THEN
  117. rslt = 0
  118. GOTO ext
  119. END IF
  120. IF f_check_inoutdate_wfjg(scid,sptid,outdate,arg_msg) = 0 THEN
  121. rslt = 0
  122. GOTO ext
  123. END IF
  124. SELECT name INTO :sptname
  125. FROM u_spt
  126. Where sptid = :sptid Using commit_transaction;
  127. IF commit_transaction.SQLCode <> 0 THEN
  128. rslt = 0
  129. arg_msg = "查询操作失败,加工商资料"
  130. GOTO ext
  131. END IF
  132. ////////////////////////////////////////////// //开始区分:新建/更新 处理
  133. IF outwareid = 0 THEN //新建
  134. ls_newid = f_sys_scidentity(scid,"ow_wfjg_out","outwareid",arg_msg,True,id_sqlca)
  135. IF ls_newid <= 0 THEN
  136. rslt = 0
  137. GOTO ext
  138. END IF
  139. //取分部代号
  140. IF f_get_sccode(scid,commit_transaction,ls_sccode,arg_msg) = 0 THEN
  141. rslt = 0
  142. GOTO ext
  143. END IF
  144. //取得新单据编号
  145. IF billtype = 5 THEN
  146. IF thflag = 0 THEN
  147. outwarecode = getid(scid,ls_sccode + 'WF',Date(server_dt),if_getid_ture,commit_transaction)
  148. ELSE
  149. outwarecode = getid(scid,ls_sccode + 'OF',Date(server_dt),if_getid_ture,commit_transaction)
  150. END IF
  151. ELSEIF billtype = 9 THEN
  152. outwarecode = getid(scid,ls_sccode + 'WY',Date(server_dt),if_getid_ture,commit_transaction)
  153. ELSEIF billtype = 10 THEN
  154. outwarecode = getid(scid,ls_sccode + 'FI',Date(server_dt),if_getid_ture,commit_transaction)
  155. END IF
  156. IF outwarecode = "err" THEN
  157. outwarecode = ''
  158. rslt = 0
  159. arg_msg = "无法获取出仓单编号"+"~n"+commit_transaction.SQLErrText
  160. GOTO ext
  161. END IF
  162. INSERT INTO ow_wfjg_out (
  163. scid,
  164. outwareid,
  165. outwarecode,
  166. billtype,
  167. relid,
  168. outdate,
  169. outrep,
  170. part,
  171. dscrp,
  172. sptid,
  173. sptname,
  174. thflag,
  175. opdate,
  176. opemp)
  177. VALUES (
  178. :scid,
  179. :ls_newid,
  180. :outwarecode,
  181. :billtype,
  182. :relid,
  183. :outdate,
  184. :outrep,
  185. :part,
  186. :dscrp,
  187. :sptid,
  188. :sptname,
  189. :thflag,
  190. :server_dt,
  191. :publ_operator
  192. ) Using commit_transaction ;
  193. IF commit_transaction.SQLCode <> 0 THEN
  194. rslt = 0
  195. arg_msg = "因网络或其它原因导致插入操作失败"+"~n"+commit_transaction.SQLErrText
  196. GOTO ext
  197. END IF
  198. //读取新outwareid
  199. outwareid = ls_newid
  200. ELSE //////////////////////////////////////////////// //更新
  201. UPDATE ow_wfjg_out
  202. SET billtype = :billtype,
  203. relid = :relid,
  204. outdate = :outdate,
  205. outrep = :outrep,
  206. part = :part,
  207. dscrp = :dscrp,
  208. sptid = :sptid,
  209. sptname = :sptname,
  210. thflag = :thflag,
  211. moddate = :server_dt,
  212. modemp = :publ_operator
  213. WHERE ow_wfjg_out.outwareid = :outwareid
  214. AND ow_wfjg_out.scid = :scid
  215. And flag = 0 Using commit_transaction;
  216. IF commit_transaction.SQLCode <> 0 Or commit_transaction.SQLNRows <= 0 THEN
  217. rslt = 0
  218. arg_msg = "因网络或其它原因导致更新单据操作失败(1)"+"~n"+commit_transaction.SQLErrText
  219. GOTO ext
  220. END IF
  221. //删除原有明细
  222. DELETE FROM ow_wfjgmx_out
  223. WHERE ow_wfjgmx_out.outwareid = :outwareid
  224. And ow_wfjgmx_out.scid = :scid Using commit_transaction;
  225. IF commit_transaction.SQLCode <> 0 THEN
  226. rslt = 0
  227. arg_msg = "删除旧有明细操作失败"+"~n"+commit_transaction.SQLErrText
  228. GOTO ext
  229. END IF
  230. //删除原有明细
  231. DELETE FROM ow_wfjgmx_out_aft
  232. WHERE ow_wfjgmx_out_aft.outwareid = :outwareid
  233. And ow_wfjgmx_out_aft.scid = :scid Using commit_transaction;
  234. IF commit_transaction.SQLCode <> 0 THEN
  235. rslt = 0
  236. arg_msg = "删除旧有收货明细操作失败"+"~n"+commit_transaction.SQLErrText
  237. GOTO ext
  238. END IF
  239. END IF
  240. FOR i = 1 To it_mxbt
  241. INSERT INTO ow_wfjgmx_out
  242. (scid,
  243. storageid,
  244. outwareid,
  245. mtrlwareid,
  246. printid,
  247. mtrlid,
  248. plancode,
  249. status,
  250. qty,
  251. fprice,
  252. rebate,
  253. price,
  254. mxdscrp,
  255. costamt,
  256. ifrel,
  257. relid,
  258. woodcode,
  259. relcode,
  260. pcode,
  261. cost,
  262. olmtrlid,
  263. uqty,
  264. uprice,
  265. uunit,
  266. rate)
  267. VALUES (
  268. :scid,
  269. :outwaremx[i].storageid,
  270. :outwareid,
  271. :outwaremx[i].mtrlwareid,
  272. :outwaremx[i].printid,
  273. :outwaremx[i].mtrlid,
  274. :outwaremx[i].plancode,
  275. :outwaremx[i].status,
  276. :outwaremx[i].qty,
  277. :outwaremx[i].fprice,
  278. :outwaremx[i].rebate,
  279. :outwaremx[i].price,
  280. :outwaremx[i].mxdscrp,
  281. :outwaremx[i].costamt,
  282. :outwaremx[i].ifrel,
  283. :outwaremx[i].relid,
  284. :outwaremx[i].woodcode,
  285. :outwaremx[i].relcode,
  286. :outwaremx[i].pcode,
  287. :outwaremx[i].cost,
  288. :outwaremx[i].olmtrlid,
  289. :outwaremx[i].uqty,
  290. :outwaremx[i].uprice,
  291. :outwaremx[i].uunit,
  292. :outwaremx[i].rate) Using commit_transaction;
  293. IF commit_transaction.SQLCode <> 0 THEN
  294. IF it_newbegin THEN outwareid = 0 //重置outwareid
  295. rslt = 0
  296. arg_msg = "插入发出明细操作失败"+"~n"+commit_transaction.SQLErrText
  297. GOTO ext
  298. END IF
  299. NEXT
  300. //收货明细
  301. FOR i = 1 To it_mxbt_aft
  302. INSERT INTO ow_wfjgmx_out_aft
  303. (scid,
  304. outwareid,
  305. printid,
  306. outmxprintid,
  307. mtrlid,
  308. status,
  309. woodcode,
  310. pcode,
  311. qty,
  312. uqty,
  313. unit,
  314. rate,
  315. price,
  316. jgprice,
  317. rebate,
  318. jgdscrp,
  319. ifrel,
  320. relid,
  321. relprintid,
  322. relcode,
  323. plancode,
  324. mtrlcuscode,
  325. location,
  326. mxdscrp)
  327. VALUES (
  328. :scid,
  329. :outwareid,
  330. :outwaremx_aft[i].printid,
  331. :outwaremx_aft[i].outmxprintid,
  332. :outwaremx_aft[i].mtrlid,
  333. :outwaremx_aft[i].status,
  334. :outwaremx_aft[i].woodcode,
  335. :outwaremx_aft[i].pcode,
  336. :outwaremx_aft[i].qty,
  337. :outwaremx_aft[i].uqty,
  338. :outwaremx_aft[i].unit,
  339. :outwaremx_aft[i].rate,
  340. :outwaremx_aft[i].price,
  341. :outwaremx_aft[i].jgprice,
  342. :outwaremx_aft[i].rebate,
  343. :outwaremx_aft[i].jgdscrp,
  344. :outwaremx_aft[i].ifrel,
  345. :outwaremx_aft[i].relid,
  346. :outwaremx_aft[i].relprintid,
  347. :outwaremx_aft[i].relcode,
  348. :outwaremx_aft[i].plancode,
  349. :outwaremx_aft[i].mtrlcuscode,
  350. :outwaremx_aft[i].location,
  351. :outwaremx_aft[i].mxdscrp) Using commit_transaction;
  352. IF commit_transaction.SQLCode <> 0 THEN
  353. IF it_newbegin THEN outwareid = 0 //重置outwareid
  354. rslt = 0
  355. arg_msg = "插入收货明细操作失败"+"~n"+commit_transaction.SQLErrText
  356. GOTO ext
  357. END IF
  358. NEXT
  359. it_newbegin = False
  360. it_updatebegin = False
  361. ext:
  362. IF rslt = 0 THEN
  363. ROLLBACK Using commit_transaction;
  364. p_clearmx()
  365. ELSEIF rslt = 1 And arg_ifcommit THEN
  366. COMMIT Using commit_transaction;
  367. END IF
  368. RETURN rslt
  369. end function
  370. public function integer auditing (boolean arg_ifcommit, ref string arg_msg);Long rslt = 1,cnt = 0,i
  371. uo_order_wfjg uo_wfjg
  372. uo_wfjg = Create uo_order_wfjg
  373. uo_wfjg.commit_transaction = commit_transaction
  374. IF outwareid = 0 THEN
  375. rslt = 0
  376. arg_msg = "没有审核对象"
  377. GOTO ext
  378. END IF
  379. IF flag = 1 THEN
  380. rslt = 0
  381. arg_msg = "单据已经审核"
  382. GOTO ext
  383. END IF
  384. UPDATE ow_wfjg_out
  385. SET Auditingemp = :publ_operator,
  386. Auditingdate = getdate(),
  387. flag = 1
  388. WHERE ow_wfjg_out.outwareid = :outwareid
  389. AND flag = 0
  390. And scid = :scid Using commit_transaction;
  391. IF commit_transaction.SQLCode <> 0 THEN
  392. rslt = 0
  393. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  394. GOTO ext
  395. ELSEIF commit_transaction.SQLNRows = 0 THEN
  396. rslt = 0
  397. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  398. GOTO ext
  399. END IF
  400. //更新供应商库存
  401. FOR i = 1 To it_mxbt
  402. IF f_update_mtrlware_spt_out (billtype,thflag,scid,outwaremx[i].mtrlid, &
  403. outwaremx[i].mtrlcode, outwaremx[i].plancode,&
  404. outwaremx[i].status, outwaremx[i].qty, outwaremx[i].costamt,&
  405. outwaremx[i].planprice, sptid, &
  406. outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,&
  407. False,commit_transaction) = 0 THEN
  408. rslt = 0
  409. GOTO ext
  410. END IF
  411. IF outwaremx[i].relid > 0 THEN
  412. IF uo_wfjg.addmxcmpl_out(scid,outwaremx[i].relid,outwaremx[i].mtrlid,outwaremx[i].olmtrlid,outwaremx[i].status,outwaremx[i].woodcode,outwaremx[i].pcode,outwaremx[i].qty,arg_msg,False) <> 1 THEN
  413. rslt = 0
  414. GOTO ext
  415. END IF
  416. END IF
  417. NEXT
  418. // //外协商盘盈,自动生成外协订单
  419. IF it_mxbt_aft > 0 THEN
  420. IF p_create_wfjgorder(publ_operator,False,arg_msg) = 0 THEN
  421. rslt = 0
  422. GOTO ext
  423. END IF
  424. END IF
  425. flag = 1
  426. ext:
  427. Destroy uo_wfjg
  428. IF rslt = 0 THEN
  429. ROLLBACK Using commit_transaction;
  430. ELSEIF rslt = 1 And arg_ifcommit THEN
  431. COMMIT Using commit_transaction;
  432. END IF
  433. RETURN rslt
  434. end function
  435. public function integer updatebegin (long arg_scid, long arg_outwareid, integer arg_billtype, ref string arg_msg);Long rslt = 1
  436. IF arg_scid < 0 THEN
  437. arg_msg = '请选择分部'
  438. rslt = 0
  439. GOTO ext
  440. END IF
  441. IF arg_outwareid <= 0 THEN
  442. rslt = 0
  443. GOTO ext
  444. END IF
  445. IF Not (arg_billtype = 5 OR &
  446. arg_billtype = 9 or &
  447. arg_billtype = 10) THEN
  448. rslt = 0
  449. arg_msg = '此单据类型必须为:'
  450. arg_msg = arg_msg+'5-车间外协发出单,'
  451. arg_msg = arg_msg+'9-外协商盘盈单,'
  452. arg_msg = arg_msg+'10-外协商库存成本价调整'
  453. GOTO ext
  454. END IF
  455. rslt = p_getinfo(arg_scid,arg_outwareid,arg_msg)
  456. IF rslt = 0 THEN GOTO ext
  457. IF flag = 1 THEN
  458. rslt = 0
  459. arg_msg = '单据已经审核,不可以修改'
  460. GOTO ext
  461. END IF
  462. outwareid = arg_outwareid
  463. billtype = arg_billtype
  464. scid = arg_scid
  465. it_newbegin = FALSE
  466. it_updatebegin = TRUE
  467. p_clearmx() //清除明细
  468. ext:
  469. IF rslt = 0 THEN p_reset()
  470. RETURN rslt
  471. end function
  472. public function integer getinfo (long arg_scid, long arg_outwareid, ref string arg_msg);//getinfo(arg_scid,arg_outwareid,arg_msg)
  473. //0 失败 1成功
  474. Int rslt = 1,i = 1,no_mxcheck = 0
  475. IF arg_outwareid <= 0 THEN
  476. rslt = 0
  477. arg_msg = "非法出仓单唯一码"
  478. GOTO ext
  479. END IF
  480. rslt = p_getinfo(arg_scid,arg_outwareid,arg_msg)
  481. IF rslt = 0 THEN GOTO ext
  482. //用游标读取明细
  483. DECLARE cur_inwaermx CURSOR FOR
  484. SELECT ow_wfjgmx_out.printid,
  485. ow_wfjgmx_out.mtrlid,
  486. ow_wfjgmx_out.plancode,
  487. ow_wfjgmx_out.status,
  488. ow_wfjgmx_out.qty,
  489. ow_wfjgmx_out.fprice,
  490. ow_wfjgmx_out.rebate,
  491. ow_wfjgmx_out.price,
  492. ow_wfjgmx_out.mxdscrp,
  493. u_mtrldef.mtrlcode,
  494. ow_wfjgmx_out.mtrlwareid,
  495. ow_wfjgmx_out.storageid,
  496. ow_wfjgmx_out.costamt,
  497. ow_wfjgmx_out.ifrel,
  498. ow_wfjgmx_out.relid,
  499. ow_wfjgmx_out.woodcode,
  500. ow_wfjgmx_out.pcode,
  501. ow_wfjgmx_out.cost,
  502. ow_wfjgmx_out.olmtrlid,
  503. ow_wfjgmx_out.rate,
  504. u_mtrldef.unit
  505. FROM ow_wfjgmx_out,u_mtrldef,ow_wfjg_out
  506. WHERE ow_wfjg_out.outwareid = :arg_outwareid AND
  507. ow_wfjgmx_out.mtrlid = u_mtrldef.mtrlid AND
  508. ow_wfjg_out.scid = :arg_scid AND
  509. ow_wfjg_out.outwareid = ow_wfjgmx_out.outwareid AND
  510. ow_wfjg_out.scid = ow_wfjgmx_out.scid USING commit_transaction;
  511. OPEN cur_inwaermx;
  512. FETCH cur_inwaermx INTO
  513. :outwaremx[i].printid,:outwaremx[i].mtrlid,:outwaremx[i].plancode,
  514. :outwaremx[i].status,:outwaremx[i].qty,:outwaremx[i].fprice,
  515. :outwaremx[i].rebate,:outwaremx[i].price,
  516. :outwaremx[i].mxdscrp,:outwaremx[i].mtrlcode,
  517. :outwaremx[i].mtrlwareid,:outwaremx[i].storageid,
  518. :outwaremx[i].costamt,:outwaremx[i].ifrel,
  519. :outwaremx[i].relid,
  520. :outwaremx[i].woodcode,:outwaremx[i].pcode,
  521. :outwaremx[i].cost,:outwaremx[i].olmtrlid,
  522. :outwaremx[i].rate,
  523. :outwaremx[i].unit;
  524. DO WHILE commit_transaction.SQLCode = 0
  525. i++
  526. FETCH cur_inwaermx INTO
  527. :outwaremx[i].printid,:outwaremx[i].mtrlid,:outwaremx[i].plancode,
  528. :outwaremx[i].status,:outwaremx[i].qty,:outwaremx[i].fprice,
  529. :outwaremx[i].rebate,:outwaremx[i].price,
  530. :outwaremx[i].mxdscrp,:outwaremx[i].mtrlcode,
  531. :outwaremx[i].mtrlwareid,:outwaremx[i].storageid,
  532. :outwaremx[i].costamt,:outwaremx[i].ifrel,
  533. :outwaremx[i].relid,
  534. :outwaremx[i].woodcode,:outwaremx[i].pcode,
  535. :outwaremx[i].cost,:outwaremx[i].olmtrlid,
  536. :outwaremx[i].rate,
  537. :outwaremx[i].unit;
  538. LOOP
  539. CLOSE cur_inwaermx;
  540. //检验明细是否读入完整
  541. SELECT count(*) INTO :no_mxcheck
  542. FROM ow_wfjgmx_out
  543. WHERE ow_wfjgmx_out.outwareid = :arg_outwareid
  544. AND scid = :arg_scid USING commit_transaction;
  545. IF commit_transaction.SQLCode <> 0 THEN
  546. rslt = 0
  547. arg_msg = "查询操作失败,出仓单明细数量"
  548. GOTO ext
  549. END IF
  550. IF i <> (no_mxcheck+1) THEN
  551. rslt = 0
  552. arg_msg = "查询操作失败,出仓单明细"
  553. GOTO ext
  554. END IF
  555. it_mxbt = i - 1
  556. ////收货明细 游标读取
  557. i = 1
  558. DECLARE cur_aftmx CURSOR FOR
  559. SELECT ow_wfjgmx_out_aft.printid,
  560. ow_wfjgmx_out_aft.outmxprintid,
  561. ow_wfjgmx_out_aft.mtrlid,
  562. ow_wfjgmx_out_aft.status,
  563. ow_wfjgmx_out_aft.woodcode,
  564. ow_wfjgmx_out_aft.pcode,
  565. ow_wfjgmx_out_aft.qty,
  566. ow_wfjgmx_out_aft.uqty,
  567. ow_wfjgmx_out_aft.unit,
  568. ow_wfjgmx_out_aft.rate,
  569. ow_wfjgmx_out_aft.price,
  570. ow_wfjgmx_out_aft.jgprice,
  571. ow_wfjgmx_out_aft.rebate,
  572. ow_wfjgmx_out_aft.jgdscrp,
  573. ow_wfjgmx_out_aft.ifrel,
  574. ow_wfjgmx_out_aft.relid,
  575. ow_wfjgmx_out_aft.relprintid,
  576. ow_wfjgmx_out_aft.relcode,
  577. ow_wfjgmx_out_aft.plancode,
  578. ow_wfjgmx_out_aft.mtrlcuscode,
  579. ow_wfjgmx_out_aft.location,
  580. ow_wfjgmx_out_aft.mxdscrp,
  581. u_mtrldef.mtrlcode
  582. FROM ow_wfjgmx_out_aft,u_mtrldef
  583. WHERE ow_wfjgmx_out_aft.scid = :arg_scid AND
  584. ow_wfjgmx_out_aft.outwareid = :arg_outwareid AND
  585. ow_wfjgmx_out_aft.mtrlid = u_mtrldef.mtrlid
  586. USING commit_transaction;
  587. OPEN cur_aftmx;
  588. FETCH cur_aftmx INTO
  589. :outwaremx_aft[i].printid,
  590. :outwaremx_aft[i].outmxprintid,
  591. :outwaremx_aft[i].mtrlid,
  592. :outwaremx_aft[i].status,
  593. :outwaremx_aft[i].woodcode,
  594. :outwaremx_aft[i].pcode,
  595. :outwaremx_aft[i].qty,
  596. :outwaremx_aft[i].uqty,
  597. :outwaremx_aft[i].unit,
  598. :outwaremx_aft[i].rate,
  599. :outwaremx_aft[i].price,
  600. :outwaremx_aft[i].jgprice,
  601. :outwaremx_aft[i].rebate,
  602. :outwaremx_aft[i].jgdscrp,
  603. :outwaremx_aft[i].ifrel,
  604. :outwaremx_aft[i].relid,
  605. :outwaremx_aft[i].relprintid,
  606. :outwaremx_aft[i].relcode,
  607. :outwaremx_aft[i].plancode,
  608. :outwaremx_aft[i].mtrlcuscode,
  609. :outwaremx_aft[i].location,
  610. :outwaremx_aft[i].mxdscrp,
  611. :outwaremx_aft[i].mtrlcode;
  612. DO WHILE commit_transaction.SQLCode = 0
  613. i++
  614. FETCH cur_aftmx INTO
  615. :outwaremx_aft[i].printid,
  616. :outwaremx_aft[i].outmxprintid,
  617. :outwaremx_aft[i].mtrlid,
  618. :outwaremx_aft[i].status,
  619. :outwaremx_aft[i].woodcode,
  620. :outwaremx_aft[i].pcode,
  621. :outwaremx_aft[i].qty,
  622. :outwaremx_aft[i].uqty,
  623. :outwaremx_aft[i].unit,
  624. :outwaremx_aft[i].rate,
  625. :outwaremx_aft[i].price,
  626. :outwaremx_aft[i].jgprice,
  627. :outwaremx_aft[i].rebate,
  628. :outwaremx_aft[i].jgdscrp,
  629. :outwaremx_aft[i].ifrel,
  630. :outwaremx_aft[i].relid,
  631. :outwaremx_aft[i].relprintid,
  632. :outwaremx_aft[i].relcode,
  633. :outwaremx_aft[i].plancode,
  634. :outwaremx_aft[i].mtrlcuscode,
  635. :outwaremx_aft[i].location,
  636. :outwaremx_aft[i].mxdscrp,
  637. :outwaremx_aft[i].mtrlcode;
  638. LOOP
  639. CLOSE cur_aftmx;
  640. //检验明细是否读入完整
  641. SELECT count(*) INTO :no_mxcheck
  642. FROM ow_wfjgmx_out_aft
  643. WHERE outwareid = :arg_outwareid
  644. AND scid = :arg_scid USING commit_transaction;
  645. IF commit_transaction.SQLCode <> 0 THEN
  646. rslt = 0
  647. arg_msg = "查询操作失败,发货明细数量"
  648. GOTO ext
  649. END IF
  650. IF i <> (no_mxcheck+1) THEN
  651. rslt = 0
  652. arg_msg = "查询操作失败,发货明细"
  653. GOTO ext
  654. END IF
  655. it_mxbt_aft = i - 1
  656. outwareid = arg_outwareid
  657. scid = arg_scid
  658. it_newbegin = FALSE
  659. it_updatebegin = FALSE
  660. ext:
  661. IF rslt = 0 THEN p_reset()
  662. RETURN rslt
  663. end function
  664. public function integer del (long arg_scid, long arg_outwareid, ref string arg_msg, boolean arg_ifcommit);//如果单据还没有审核删除单据极其明细
  665. //0 FAIL, 1 SUCCESS
  666. Int rslt = 1
  667. IF arg_outwareid <= 0 THEN
  668. rslt = 0
  669. arG_MSG = "没有删除对象,操作取消"
  670. GOTO ext
  671. END IF
  672. p_getinfo(arg_scid,arg_outwareid,arg_msg)
  673. IF flag = 1 THEN
  674. rslt = 0
  675. arG_MSG = "单据已经审核,不可以删除"
  676. GOTO ext
  677. END IF
  678. DELETE FROM ow_wfjg_out
  679. WHERE ow_wfjg_out.outwareid = :arg_outwareid
  680. AND ow_wfjg_out.scid = :arg_scid USING commit_transaction;
  681. IF commit_transaction.SQLCode <> 0 THEN
  682. rslt = 0
  683. arG_MSG = "删除进仓单操作失败"+"~n"+commit_transaction.SQLErrText
  684. GOTO ext
  685. END IF
  686. DELETE FROM ow_wfjgmx_out
  687. WHERE ow_wfjgmx_out.outwareid = :arg_outwareid
  688. AND ow_wfjgmx_out.scid = :arg_scid USING commit_transaction;
  689. IF commit_transaction.SQLCode <> 0 THEN
  690. rslt = 0
  691. arG_MSG = "删除进仓单明细操作失败"+"~n"+commit_transaction.SQLErrText
  692. GOTO ext
  693. END IF
  694. it_newbegin = FALSE
  695. it_updatebegin = FALSE
  696. ext:
  697. IF rslt = 0 THEN
  698. ROLLBACK USING commit_transaction;
  699. p_reset()
  700. ELSEIF rslt = 1 AND arg_ifcommit THEN
  701. COMMIT USING commit_transaction;
  702. END IF
  703. RETURN (rslt)
  704. end function
  705. public function integer add_dscrp (long arg_scid, long arg_outwareid, string arg_newdescppart, ref string arg_msg);//add_dscrp(string arg_newdescppart)
  706. //0 fail 1 success
  707. int rslt=1
  708. arg_newdescppart=trim(arg_newdescppart)
  709. if arg_newdescppart='' then
  710. rslt=0
  711. arg_msg="要添加内容为空,操作取消"
  712. goto ext
  713. end if
  714. rslt=p_getinfo(arg_scid,arg_outwareid,arg_msg)
  715. if rslt=0 then goto ext
  716. if flag=0 then
  717. rslt=0
  718. arg_msg="非审核状态下不可用"
  719. goto ext
  720. end if
  721. update ow_wfjg_out
  722. set dscrp = ltrim(rtrim(dscrp))+' '+:arg_newdescppart
  723. where ow_wfjg_out.outwareid = :outwareid
  724. and scid=:scid using commit_transaction;
  725. if commit_transaction.sqlcode<>0 then
  726. rollback ;
  727. rslt=0
  728. arg_msg="因网络或其它原因导致添加单据备注操作失败"+"~n"+commit_transaction.sqlerrtext
  729. goto ext
  730. end if
  731. commit using commit_transaction;
  732. dscrp = dscrp+' '+arg_newdescppart
  733. ext: return (rslt)
  734. end function
  735. public function integer c_auditing (boolean arg_ifcommit, ref string arg_msg);
  736. Long rslt = 1,cnt = 0,i
  737. DateTime null_dt
  738. SetNull(null_dt)
  739. uo_order_wfjg uo_wfjg
  740. uo_wfjg=create uo_order_wfjg
  741. uo_wfjg.commit_transaction=commit_transaction
  742. IF outwareid = 0 THEN
  743. rslt = 0
  744. arg_msg = "没有审核对象"
  745. GOTO ext
  746. END IF
  747. IF ctmint > 0 THEN
  748. arg_msg = '单据已截数,不能操作'
  749. rslt = 0
  750. GOTO ext
  751. END IF
  752. IF flag = 0 THEN
  753. rslt = 0
  754. arg_msg = "单据还未审核"
  755. GOTO ext
  756. END IF
  757. UPDATE ow_wfjg_out
  758. SET Auditingemp = '',
  759. Auditingdate = :null_dt,
  760. flag = 0
  761. WHERE ow_wfjg_out.outwareid = :outwareid
  762. AND flag = 1
  763. AND scid = :scid USING commit_transaction;
  764. IF commit_transaction.SQLCode <> 0 THEN
  765. rslt = 0
  766. arg_msg = "因网络或其它原因导致审核单据操作失败"+"~n"+commit_transaction.SQLErrText
  767. GOTO ext
  768. ELSEIF commit_transaction.SQLNRows = 0 THEN
  769. rslt = 0
  770. arg_msg = "单据正在审核,请稍后查询。"+"~n"+commit_transaction.SQLErrText
  771. GOTO ext
  772. END IF
  773. FOR i = 1 TO it_mxbt
  774. IF f_update_mtrlware_spt_out(billtype,thflag,scid,outwaremx[i].mtrlid, &
  775. outwaremx[i].mtrlcode, outwaremx[i].plancode,&
  776. outwaremx[i].status, 0 - outwaremx[i].qty, 0 - outwaremx[i].costamt,&
  777. outwaremx[i].planprice, sptid, &
  778. outwaremx[i].woodcode, outwaremx[i].pcode,arg_msg,false,commit_transaction) = 0 THEN
  779. rslt = 0
  780. GOTO ext
  781. END IF
  782. IF outwaremx[i].relid > 0 THEN
  783. IF uo_wfjg.addmxcmpl_out(scid,outwaremx[i].relid,outwaremx[i].mtrlid,outwaremx[i].sptid,outwaremx[i].status,outwaremx[i].woodcode,outwaremx[i].pcode,0 - outwaremx[i].qty,arg_msg,FALSE) <> 1 THEN
  784. rslt = 0
  785. GOTO ext
  786. END IF
  787. END IF
  788. NEXT
  789. ////外协商盘盈,自动删除外协订单
  790. IF it_mxbt_aft > 0 And relid > 0 THEN
  791. IF p_destroy_wfjgorder( False, arg_msg ) = 0 THEN
  792. rslt = 0
  793. GOTO ext
  794. END IF
  795. END IF
  796. flag = 0
  797. ext:
  798. destroy uo_wfjg
  799. IF rslt = 0 THEN
  800. ROLLBACK USING commit_transaction;
  801. ELSEIF rslt = 1 AND arg_ifcommit THEN
  802. COMMIT USING commit_transaction;
  803. END IF
  804. RETURN rslt
  805. end function
  806. public function integer p_clearmx ();//int p_clearmx()
  807. //清除明细
  808. it_mxbt=0
  809. it_mxbt_aft=0
  810. return 1
  811. end function
  812. public function integer p_getinfo (long arg_scid, long arg_outwareid, ref string arg_msg);//p_getinfo(arg_scid,arg_outwareid,arg_msg)
  813. //0 失败 1成功
  814. Int rslt = 1
  815. IF arg_outwareid <= 0 THEN
  816. rslt = 0
  817. arG_MSG = "非法出仓单唯一码"
  818. GOTO ext
  819. END IF
  820. SELECT ow_wfjg_out.outwarecode,
  821. ow_wfjg_out.billtype,
  822. ow_wfjg_out.relid,
  823. ow_wfjg_out.outdate,
  824. ow_wfjg_out.outrep,
  825. ow_wfjg_out.part,
  826. ow_wfjg_out.sptid,
  827. ow_wfjg_out.sptname,
  828. ow_wfjg_out.dscrp,
  829. ow_wfjg_out.thflag,
  830. ow_wfjg_out.flag,
  831. ow_wfjg_out.balcflag ,
  832. ow_wfjg_out.ctmint
  833. INTO :outwarecode,
  834. :billtype,
  835. :relid,
  836. :outdate,
  837. :outrep,
  838. :part,
  839. :sptid,
  840. :sptname,
  841. :dscrp,
  842. :thflag,
  843. :flag,
  844. :balcflag,
  845. :ctmint
  846. FROM ow_wfjg_out
  847. WHERE ow_wfjg_out.outwareid = :arg_outwareid
  848. AND scid = :arg_scid
  849. Using commit_transaction;
  850. IF commit_transaction.SQLCode <> 0 THEN
  851. rslt = 0
  852. arG_MSG = "查询操作失败(错误出仓单唯一码),出仓单"+commit_transaction.SQLErrText
  853. GOTO ext
  854. END IF
  855. outwareid = arg_outwareid
  856. scid = arg_scid
  857. ext:
  858. IF rslt = 0 THEN p_reset()
  859. RETURN rslt
  860. end function
  861. public function integer p_reset ();//int p_reset()
  862. //清除对象及其明细
  863. scid = 0
  864. outwareid = 0
  865. outwarecode = ''
  866. billtype = 0
  867. opemp = ''
  868. modemp = ''
  869. auditingrep = ''
  870. flag = 0
  871. relid = 0
  872. //storageid = 0
  873. outrep = ''
  874. part = ''
  875. dscrp = ''
  876. sptid = 0
  877. sptname = ''
  878. thflag = 0
  879. it_newbegin = FALSE
  880. it_updatebegin = FALSE
  881. //清除明细
  882. p_clearmx()
  883. RETURN 1
  884. end function
  885. public function integer acceptmx (long arg_mtrlwareid, decimal arg_qty, string arg_mxdscrp, long arg_printid, ref string arg_msg, integer arg_ifrel, long arg_relid, long arg_mtrlid, long arg_storageid, integer arg_dxflag, string arg_plancode, string arg_mtrlcode, string arg_status, string arg_woodcode, string arg_pcode, decimal arg_fprice, decimal arg_rebate, long arg_olmtrlid, decimal arg_uqty, string arg_uunit, decimal arg_rate);Long rslt = 1,cnt = 0,LS_i
  886. Decimal i_planprice
  887. String ls_relcode
  888. IF it_newbegin = False And it_updatebegin = False THEN
  889. rslt = 0
  890. arg_msg = "非编辑状态不可以使用,操作取消"
  891. GOTO ext
  892. END IF
  893. IF uo_option_2unit = -1000 THEN
  894. arg_msg = '选项:[067]外协双单位核算,读取初始默认值失败,操作取消!'
  895. rslt = 0
  896. GOTO ext
  897. END IF
  898. IF uo_option_change_status = '-1000' THEN
  899. arg_msg = '选项:[029]配置标题文本,读取初始默认值失败,操作取消!'
  900. rslt = 0
  901. GOTO ext
  902. END IF
  903. IF uo_option_change_woodcode = '-1000' THEN
  904. arg_msg = '选项:[027]配置1标题文本,读取初始默认值失败,操作取消!'
  905. rslt = 0
  906. GOTO ext
  907. END IF
  908. IF uo_option_change_pcode = '-1000' THEN
  909. arg_msg = '选项:[028]配置2标题文本,读取初始默认值失败,操作取消!'
  910. rslt = 0
  911. GOTO ext
  912. END IF
  913. //清除空值
  914. IF IsNull(arg_mtrlwareid) THEN arg_mtrlwareid = 0
  915. IF IsNull(arg_printid) THEN arg_printid = 0
  916. IF IsNull(arg_qty) THEN arg_qty = 0
  917. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  918. IF IsNull(arg_ifrel) THEN arg_ifrel = 0
  919. IF IsNull(arg_relid) THEN arg_relid = 0
  920. IF IsNull(arg_mtrlid) THEN arg_mtrlid = 0
  921. IF IsNull(arg_mtrlcode) THEN arg_mtrlcode = ''
  922. IF IsNull(arg_plancode) THEN arg_plancode = ''
  923. IF IsNull(arg_status) THEN arg_status = ''
  924. IF IsNull(arg_fprice) THEN arg_fprice = 0
  925. IF IsNull(arg_rebate) THEN arg_rebate = 0
  926. IF IsNull(arg_mxdscrp) THEN arg_mxdscrp = ''
  927. IF IsNull(arg_relid) THEN arg_relid = 0
  928. IF IsNull(arg_ifrel) THEN arg_ifrel = 0
  929. IF IsNull(arg_mxdscrp) THEN arg_woodcode = ''
  930. IF IsNull(arg_pcode) THEN arg_pcode = ''
  931. IF IsNull(arg_storageid) THEN arg_storageid = 0
  932. IF IsNull(arg_uqty) THEN arg_uqty = 0
  933. IF IsNull(arg_uunit) THEN arg_uunit = ''
  934. IF IsNull(arg_rate) THEN arg_rate = 0
  935. IF arg_mtrlid = 0 Or arg_qty = 0 THEN
  936. rslt = 1
  937. GOTO ext
  938. END IF
  939. IF uo_option_2unit = 1 THEN
  940. IF arg_uqty = 0 THEN
  941. arg_msg = '行:'+String(arg_printid)+ ',请输入计价数量'
  942. rslt = 0
  943. GOTO ext
  944. END IF
  945. END IF
  946. IF Trim(arg_uunit) = '' THEN
  947. arg_msg = '行:'+String(arg_printid)+ ',请输入计价单位'
  948. rslt = 0
  949. GOTO ext
  950. END IF
  951. //检查物料id
  952. SELECT planprice
  953. INTO :i_planprice
  954. FROM u_mtrldef
  955. Where u_mtrldef.mtrlid = :arg_mtrlid Using commit_transaction ;
  956. IF commit_transaction.SQLCode <> 0 THEN
  957. rslt = 0
  958. arg_msg = "查询操作失败,物料或产品编号:"+arg_mtrlcode
  959. GOTO ext
  960. END IF
  961. IF f_check_status(1,arg_status) = 0 THEN
  962. rslt = 0
  963. arg_msg = "查询操作失败,可能'+uo_option_change_status+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_status
  964. GOTO ext
  965. END IF
  966. IF f_check_status(2,arg_woodcode) = 0 THEN
  967. rslt = 0
  968. arg_msg = "查询操作失败,可能'+uo_option_change_woodcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_woodcode
  969. GOTO ext
  970. END IF
  971. IF f_check_status(3,arg_pcode) = 0 THEN
  972. rslt = 0
  973. arg_msg = "查询操作失败,可能'+uo_option_change_pcode+'未定义,物料:"+arg_mtrlcode+",内容:"+arg_pcode
  974. GOTO ext
  975. END IF
  976. IF arg_ifrel = 1 THEN
  977. IF arg_relid = 0 THEN
  978. rslt = 0
  979. arg_msg = '请选择加工计划!'
  980. GOTO ext
  981. END IF
  982. SELECT taskcode INTO :ls_relcode
  983. FROM u_order_wfjg
  984. Where wfjgID = :arg_relid Using commit_transaction;
  985. IF commit_transaction.SQLCode <> 0 THEN
  986. rslt = 0
  987. arg_msg = '查询加工计划号失败!>>'+commit_transaction.SQLErrText
  988. GOTO ext
  989. END IF
  990. SELECT count(*) INTO :cnt
  991. FROM u_order_wfjgMx_out
  992. WHERE wfjgid = :arg_relid
  993. AND mtrlid = :arg_mtrlid
  994. AND status = :arg_status
  995. AND orderid = :arg_olmtrlid
  996. AND woodcode = :arg_woodcode
  997. AND pcode = :arg_pcode
  998. Using commit_transaction;
  999. IF commit_transaction.SQLCode <> 0 THEN
  1000. rslt = 0
  1001. arg_msg = '查询外协计划出仓明细失败!>'+commit_transaction.SQLErrText
  1002. GOTO ext
  1003. END IF
  1004. IF cnt = 0 THEN
  1005. rslt = 0
  1006. arg_msg = '出仓物料:'+arg_mtrlcode+'不在加工计划出仓明细中!'
  1007. GOTO ext
  1008. END IF
  1009. END IF
  1010. //***********************************************
  1011. IF arg_fprice * arg_rebate < 0 THEN //检查进仓价
  1012. rslt = 0
  1013. arg_msg = "物料或产品:" + String(arg_mtrlcode)+" 单价错误"
  1014. GOTO ext
  1015. END IF
  1016. //写入内容
  1017. it_mxbt++
  1018. outwaremx[it_mxbt].mtrlwareid = arg_mtrlwareid
  1019. outwaremx[it_mxbt].mtrlid = arg_mtrlid
  1020. outwaremx[it_mxbt].status = arg_status
  1021. outwaremx[it_mxbt].qty = arg_qty
  1022. outwaremx[it_mxbt].storageid = arg_storageid
  1023. outwaremx[it_mxbt].cost = arg_fprice
  1024. outwaremx[it_mxbt].costamt = Round(arg_fprice * arg_qty,2)
  1025. outwaremx[it_mxbt].newpriceamt = 0
  1026. outwaremx[it_mxbt].plancode = arg_plancode
  1027. outwaremx[it_mxbt].planprice = i_planprice
  1028. outwaremx[it_mxbt].mtrlcode = arg_mtrlcode
  1029. outwaremx[it_mxbt].mxdscrp = arg_mxdscrp
  1030. outwaremx[it_mxbt].printid = arg_printid
  1031. outwaremx[it_mxbt].rebate = arg_rebate
  1032. outwaremx[it_mxbt].fprice = arg_fprice
  1033. outwaremx[it_mxbt].price = Round(arg_fprice * arg_rebate,2)
  1034. outwaremx[it_mxbt].olmtrlid = arg_olmtrlid
  1035. outwaremx[it_mxbt].dxflag = arg_dxflag
  1036. outwaremx[it_mxbt].ifrel = arg_ifrel
  1037. outwaremx[it_mxbt].relid = arg_relid
  1038. outwaremx[it_mxbt].woodcode = arg_woodcode
  1039. outwaremx[it_mxbt].pcode = arg_pcode
  1040. outwaremx[it_mxbt].relcode = ls_relcode
  1041. IF uo_option_2unit = 0 THEN
  1042. arg_uqty = arg_qty
  1043. END IF
  1044. outwaremx[it_mxbt].rate = arg_rate
  1045. outwaremx[it_mxbt].uqty = arg_uqty
  1046. outwaremx[it_mxbt].uunit = arg_uunit
  1047. IF uo_option_2unit = 0 THEN
  1048. outwaremx[it_mxbt].uprice = arg_fprice
  1049. ELSE
  1050. outwaremx[it_mxbt].uprice = Round(arg_qty * arg_fprice/arg_uqty,5)
  1051. END IF
  1052. ext:
  1053. IF rslt = 0 THEN p_clearmx()
  1054. RETURN rslt
  1055. end function
  1056. public function integer p_create_wfjgorder (string arg_opemp, boolean arg_ifcommit, ref string arg_msg);Int rslt = 1,i
  1057. Long rst_wfjgid
  1058. uo_order_wfjg uo_wforder
  1059. uo_wforder = Create uo_order_wfjg
  1060. uo_wforder.commit_transaction = commit_transaction
  1061. IF uo_wforder.newbegin(scid,arg_msg) = 0 THEN //
  1062. rslt = 0
  1063. GOTO ext
  1064. END IF
  1065. uo_wforder.Requiredate = outdate
  1066. uo_wforder.Assign_emp = outrep
  1067. uo_wforder.sptID = sptID
  1068. uo_wforder.dscrp = '盘盈单审核自动生成的外协订单'
  1069. uo_wforder.billtype = 9
  1070. uo_wforder.reason = ''
  1071. uo_wforder.relcode = outwarecode
  1072. String ls_jgdscrp, ls_unit
  1073. //收货明细
  1074. FOR i = 1 To it_mxbt_aft
  1075. IF uo_wforder.acceptmx(0,&
  1076. 0,&
  1077. '',&
  1078. outwaremx_aft[i].mtrlid,&
  1079. Abs(outwaremx_aft[i].qty),&
  1080. outwaremx_aft[i].price,&
  1081. outwaremx_aft[i].mxdscrp,&
  1082. outwaremx_aft[i].mtrlcode,&
  1083. arg_msg,&
  1084. i,&
  1085. outdate,&
  1086. 0,&
  1087. outwaremx_aft[i].jgdscrp,&
  1088. outwaremx_aft[i].status,&
  1089. outwaremx_aft[i].woodcode,&
  1090. outwaremx_aft[i].pcode,&
  1091. 0,&
  1092. 0,&
  1093. 0,&
  1094. '[常规]',&
  1095. outwaremx_aft[i].unit,&
  1096. Abs(outwaremx_aft[i].uqty),&
  1097. outwaremx_aft[i].rate,&
  1098. 0,&
  1099. outwaremx_aft[i].plancode,&
  1100. 0,0) = 0 THEN
  1101. rslt = 0
  1102. GOTO ext
  1103. END IF
  1104. NEXT
  1105. //发出明细
  1106. FOR i = 1 To it_mxbt
  1107. IF uo_wforder.acceptmx_out(0,&
  1108. 0,&
  1109. '',&
  1110. outwaremx[i].mtrlid,&
  1111. abs(outwaremx[i].qty),&
  1112. outwaremx[i].price,&
  1113. outwaremx[i].mxdscrp,&
  1114. outwaremx[i].mtrlcode,&
  1115. arg_msg,&
  1116. i,&
  1117. 0,&
  1118. outwaremx[i].status,&
  1119. outwaremx[i].woodcode,&
  1120. outwaremx[i].pcode,&
  1121. outwaremx[i].unit,&
  1122. abs(outwaremx[i].uqty),&
  1123. outwaremx[i].rate,&
  1124. i,&
  1125. 0) = 0 THEN
  1126. rslt = 0
  1127. GOTO ext
  1128. END IF
  1129. NEXT
  1130. IF uo_wforder.savesubmit(arg_opemp,arg_msg,False) = 0 THEN
  1131. rslt = 0
  1132. GOTO ext
  1133. END IF
  1134. rst_wfjgid = uo_wforder.wfjgid
  1135. IF uo_wforder.firstpermit(scid,rst_wfjgid,arg_opemp,arg_msg,False) = 0 THEN
  1136. rslt = 0
  1137. GOTO ext
  1138. END IF
  1139. UPDATE ow_wfjg_out
  1140. SET relid = :rst_wfjgid
  1141. WHERE scid = :scid
  1142. And outwareid = :outwareid Using commit_transaction;
  1143. IF commit_transaction.SQLCode <> 0 THEN
  1144. arg_msg = '记录相关盘盈外协订单id失败,'+commit_transaction.SQLErrText
  1145. rslt = 0
  1146. GOTO ext
  1147. END IF
  1148. ext:
  1149. IF rslt = 0 THEN
  1150. ROLLBACK Using commit_transaction;
  1151. ELSEIF arg_ifcommit And rslt = 1 THEN
  1152. COMMIT Using commit_transaction;
  1153. END IF
  1154. Destroy uo_wforder
  1155. RETURN rslt
  1156. end function
  1157. public function integer p_destroy_wfjgorder (boolean arg_ifcommit, ref string arg_msg);Int rslt = 1
  1158. uo_order_wfjg uo_wforder
  1159. uo_wforder = Create uo_order_wfjg
  1160. uo_wforder.commit_transaction = commit_transaction
  1161. uo_wforder.caudit_checkauto = 1
  1162. IF outwareid = 0 THEN
  1163. rslt = 0
  1164. arg_msg = "没有审核对象"
  1165. GOTO ext
  1166. END IF
  1167. IF relid = 0 THEN
  1168. rslt = 1
  1169. GOTO ext
  1170. END IF
  1171. IF uo_wforder.cancelpermit(scid,relid,arg_msg,False) = 0 THEN
  1172. rslt = 0
  1173. GOTO ext
  1174. END IF
  1175. IF uo_wforder.Cancel(scid,relid,arg_msg,False) = 0 THEN
  1176. rslt = 0
  1177. GOTO ext
  1178. END IF
  1179. UPDATE ow_wfjg_out
  1180. SET relid = 0
  1181. WHERE scid = :scid
  1182. And outwareid = :outwareid Using commit_transaction;
  1183. IF commit_transaction.SQLCode <> 0 THEN
  1184. arg_msg = '清除相关盘盈外协订单id失败,'+commit_transaction.SQLErrText
  1185. rslt = 0
  1186. GOTO ext
  1187. END IF
  1188. ext:
  1189. IF rslt = 0 THEN
  1190. ROLLBACK Using commit_transaction;
  1191. ELSEIF arg_ifcommit And rslt = 1 THEN
  1192. COMMIT Using commit_transaction;
  1193. END IF
  1194. Destroy uo_wforder
  1195. RETURN rslt
  1196. end function
  1197. public function integer acceptmx_aft (s_outwaremx_wfjg_aft s_mx, string arg_msg);
  1198. Long rslt = 1
  1199. IF it_newbegin = FALSE AND it_updatebegin = FALSE THEN
  1200. rslt = 0
  1201. arg_msg = "非编辑状态不可以使用,操作取消"
  1202. GOTO ext
  1203. END IF
  1204. IF IsNull(s_mx.printid) THEN s_mx.printid = 0
  1205. IF IsNull(s_mx.mtrlid) THEN s_mx.mtrlid = 0
  1206. IF IsNull(s_mx.qty) THEN s_mx.qty = 0
  1207. IF IsNull(s_mx.unit) THEN s_mx.unit = ''
  1208. IF IsNull(s_mx.uqty) THEN s_mx.uqty = 0
  1209. IF IsNull(s_mx.rate) THEN s_mx.rate = 0
  1210. IF IsNull(s_mx.relid) THEN s_mx.relid = 0
  1211. IF IsNull(s_mx.relprintid) THEN s_mx.relprintid = 0
  1212. IF IsNull(s_mx.mxdscrp) THEN s_mx.mxdscrp = ''
  1213. IF s_mx.mtrlid = 0 OR s_mx.qty = 0 THEN
  1214. rslt = 1
  1215. GOTO ext
  1216. END IF
  1217. //写入内容
  1218. it_mxbt_aft++
  1219. outwaremx_aft[it_mxbt_aft].printid = s_mx.printid
  1220. outwaremx_aft[it_mxbt_aft].outmxprintid = s_mx.outmxprintid
  1221. outwaremx_aft[it_mxbt_aft].mtrlid = s_mx.mtrlid
  1222. outwaremx_aft[it_mxbt_aft].mtrlcode = s_mx.mtrlcode
  1223. outwaremx_aft[it_mxbt_aft].status = s_mx.status
  1224. outwaremx_aft[it_mxbt_aft].woodcode = s_mx.woodcode
  1225. outwaremx_aft[it_mxbt_aft].pcode = s_mx.pcode
  1226. outwaremx_aft[it_mxbt_aft].qty = s_mx.qty
  1227. outwaremx_aft[it_mxbt_aft].uqty = s_mx.uqty
  1228. outwaremx_aft[it_mxbt_aft].unit = s_mx.unit
  1229. IF s_mx.uqty <> 0 THEN
  1230. outwaremx_aft[it_mxbt_aft].rate = s_mx.qty / s_mx.uqty
  1231. ELSE
  1232. outwaremx_aft[it_mxbt_aft].rate = 0
  1233. END IF
  1234. outwaremx_aft[it_mxbt_aft].price = s_mx.price
  1235. outwaremx_aft[it_mxbt_aft].rebate = s_mx.rebate
  1236. outwaremx_aft[it_mxbt_aft].jgprice = s_mx.jgprice
  1237. outwaremx_aft[it_mxbt_aft].jgdscrp = s_mx.jgdscrp
  1238. outwaremx_aft[it_mxbt_aft].sptid = s_mx.sptid
  1239. outwaremx_aft[it_mxbt_aft].mxdscrp = s_mx.mxdscrp
  1240. outwaremx_aft[it_mxbt_aft].ifrel = s_mx.ifrel
  1241. outwaremx_aft[it_mxbt_aft].relid = s_mx.relid
  1242. outwaremx_aft[it_mxbt_aft].relprintid = s_mx.relprintid
  1243. outwaremx_aft[it_mxbt_aft].relcode = s_mx.relcode
  1244. outwaremx_aft[it_mxbt_aft].plancode = s_mx.plancode
  1245. outwaremx_aft[it_mxbt_aft].mtrlcuscode = s_mx.mtrlcuscode
  1246. outwaremx_aft[it_mxbt_aft].location = s_mx.location
  1247. ext:
  1248. IF rslt = 0 THEN p_clearmx()
  1249. RETURN rslt
  1250. end function
  1251. on uo_wfjg_py.create
  1252. call super::create
  1253. TriggerEvent( this, "constructor" )
  1254. end on
  1255. on uo_wfjg_py.destroy
  1256. TriggerEvent( this, "destructor" )
  1257. call super::destroy
  1258. end on
  1259. event constructor;String arg_msg
  1260. String str_optionvalue
  1261. str_optionvalue = ''
  1262. f_get_sys_option_value('067',str_optionvalue,arg_msg)
  1263. uo_option_2unit = Long(str_optionvalue)
  1264. str_optionvalue = ''
  1265. f_get_sys_option_value('029',str_optionvalue,arg_msg)
  1266. uo_option_change_status = str_optionvalue
  1267. str_optionvalue = ''
  1268. f_get_sys_option_value('027',str_optionvalue,arg_msg)
  1269. uo_option_change_woodcode = str_optionvalue
  1270. str_optionvalue = ''
  1271. f_get_sys_option_value('028',str_optionvalue,arg_msg)
  1272. uo_option_change_pcode = str_optionvalue
  1273. end event