uo_order_ml_pack.sru 45 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161
  1. $PBExportHeader$uo_order_ml_pack.sru
  2. forward
  3. global type uo_order_ml_pack from nonvisualobject
  4. end type
  5. end forward
  6. global type uo_order_ml_pack from nonvisualobject
  7. end type
  8. global uo_order_ml_pack uo_order_ml_pack
  9. type variables
  10. Long uo_billid
  11. String uo_billcode
  12. Long scid
  13. Long orderid
  14. Decimal orderqty
  15. Long taskid,taskprintid
  16. String billemp
  17. Int flag
  18. Long uo_option_inout_type
  19. end variables
  20. forward prototypes
  21. public function integer save (s_order_ml_pack arg_s_pack, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  22. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  23. public function integer p_getinfo (long arg_billid, ref string arg_msg)
  24. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
  25. public function integer getinfo (long arg_billid, ref s_order_ml_packmx arg_s_mx[], ref long arg_arr_cnt, ref string arg_msg)
  26. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
  27. public function integer updatebegin (long arg_billid, ref string arg_msg)
  28. public function integer getinfo_mx (long arg_billid, long arg_printid, ref s_order_ml_packmx arg_s_mx, ref string arg_msg)
  29. public function integer audit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  30. public function integer caudit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  31. public function integer stopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  32. public function integer cstopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
  33. public function integer uof_packmx (s_order_ml_packmx arg_s_packmx, ref string arg_msg, boolean arg_ifcommit)
  34. end prototypes
  35. public function integer save (s_order_ml_pack arg_s_pack, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  36. DateTime server_dt
  37. Long ll_billid
  38. String ls_billcode
  39. String ls_sccode
  40. Long it_mxbt,ll_i,ll_j
  41. Long cnt
  42. Int li_ifpack
  43. Long ll_outtype,ll_outtype_storage
  44. Boolean lb_find = False
  45. If IsNull(arg_s_pack.billid) Then arg_s_pack.billid = 0
  46. If IsNull(arg_s_pack.scid) Then arg_s_pack.scid = 0
  47. If IsNull(arg_s_pack.orderid) Then arg_s_pack.orderid = 0
  48. If IsNull(arg_s_pack.orderqty) Then arg_s_pack.orderqty = 0
  49. If IsNull(arg_s_pack.taskid) Then arg_s_pack.taskid = 0
  50. If IsNull(arg_s_pack.taskprintid) Then arg_s_pack.taskprintid = 0
  51. If IsNull(arg_s_pack.billemp) Then arg_s_pack.billemp = ''
  52. If arg_s_pack.orderid = 0 Then
  53. rslt = 0
  54. arg_msg = '请选择指令单'
  55. Goto ext
  56. End If
  57. If arg_s_pack.billemp = '' Then
  58. arg_msg = '请输入经手人'
  59. rslt = 0
  60. Goto ext
  61. End If
  62. //检查指令单是否已开过生产计划包件变更单,如果有,检查之前开的单是否全部终止包件明细
  63. Select count(*)
  64. Into :cnt
  65. From u_order_ml_pack Inner JOIN
  66. u_order_ml_packmx ON u_order_ml_pack.billid = u_order_ml_packmx.billid
  67. Where u_order_ml_pack.scid = :arg_s_pack.scid
  68. And u_order_ml_pack.orderid = :arg_s_pack.orderid
  69. And u_order_ml_pack.billid <> :arg_s_pack.billid
  70. And u_order_ml_packmx.stopflag = 0;
  71. If sqlca.SQLCode <> 0 Then
  72. rslt = 0
  73. arg_msg = '查询指令单是否已开过生产计划包件变更单失败,'+sqlca.SQLErrText
  74. Goto ext
  75. End If
  76. If cnt > 0 Then
  77. rslt = 0
  78. arg_msg = '指令单已开过其它生产计划包件变更单,如果想重新开单,请先把之前的变更单明细全部终止'
  79. Goto ext
  80. End If
  81. it_mxbt = UpperBound(arg_s_pack.arg_s_mx)
  82. If it_mxbt <= 0 Then
  83. rslt = 0
  84. arg_msg = "没有正确明细内容"
  85. Goto ext
  86. End If
  87. Select Top 1 getdate() Into :server_dt From u_user;
  88. If sqlca.SQLCode <> 0 Then
  89. rslt = 0
  90. arg_msg = "查询操作失败,日期 "
  91. Goto ext
  92. End If
  93. For ll_i = 1 To it_mxbt
  94. If arg_s_pack.arg_s_mx[ll_i].Kind = 1 Then Continue
  95. If arg_s_pack.arg_s_mx[ll_i].storageid = 0 Then
  96. rslt = 0
  97. arg_msg = '第'+String(ll_i)+'行,请选择仓库'
  98. Goto ext
  99. End If
  100. //限制必须是个性包件
  101. Select ifpack,outtype
  102. Into :li_ifpack,:ll_outtype
  103. From u_mtrldef
  104. Where mtrlid = :arg_s_pack.arg_s_mx[ll_i].mtrlid;
  105. If sqlca.SQLCode <> 0 Then
  106. rslt = 0
  107. arg_msg = '第'+String(ll_i)+'行明细,查询是否属于个性包件失败,'+sqlca.SQLErrText
  108. Goto ext
  109. End If
  110. If li_ifpack <> 2 Then
  111. rslt = 0
  112. arg_msg = '第'+String(ll_i)+'行明细不是个性包件,不能保存,请检查'
  113. Goto ext
  114. End If
  115. //
  116. If ll_outtype = 2 Then
  117. Select outtype
  118. Into :ll_outtype_storage
  119. From u_storage
  120. Where storageid = :arg_s_pack.arg_s_mx[ll_i].storageid;
  121. If sqlca.SQLCode <> 0 Then
  122. rslt = 0
  123. arg_msg = '第'+String(ll_i)+'行,查询仓库进出仓策略失败'
  124. Goto ext
  125. End If
  126. If ll_outtype_storage <> 2 Then
  127. rslt = 0
  128. arg_msg = '第'+String(ll_i)+'行,包件使用条码出仓,应该选择使用条码出仓的仓库'
  129. Goto ext
  130. End If
  131. End If
  132. If arg_s_pack.arg_s_mx[ll_i].qty <= 0 Then
  133. rslt = 0
  134. arg_msg = '第'+String(ll_i)+'行明细,不合理的包件数量'
  135. Goto ext
  136. End If
  137. If arg_s_pack.arg_s_mx[ll_i].packqty <= 0 Then
  138. rslt = 0
  139. arg_msg = '第'+String(ll_i)+'行明细,不合理的包装基数'
  140. Goto ext
  141. End If
  142. If arg_s_pack.arg_s_mx[ll_i].orderdate > arg_s_pack.arg_s_mx[ll_i].requiredate Then
  143. rslt = 0
  144. arg_msg = '第'+String(ll_i)+'行明细,不合理的指令单开始结束日期'
  145. Goto ext
  146. End If
  147. //检查终止类型中是否有相同包件明细,有则不作下面检查
  148. lb_find = False
  149. For ll_j = 1 To it_mxbt
  150. If arg_s_pack.arg_s_mx[ll_j].Kind = 0 Then Continue
  151. If arg_s_pack.arg_s_mx[ll_i].mtrlid = arg_s_pack.arg_s_mx[ll_j].mtrlid And &
  152. arg_s_pack.arg_s_mx[ll_i].status = arg_s_pack.arg_s_mx[ll_j].status And &
  153. arg_s_pack.arg_s_mx[ll_i].woodcode = arg_s_pack.arg_s_mx[ll_j].woodcode And &
  154. arg_s_pack.arg_s_mx[ll_i].pcode = arg_s_pack.arg_s_mx[ll_j].pcode Then
  155. lb_find = True
  156. Exit
  157. End If
  158. Next
  159. If lb_find = False Then
  160. Select count(*)
  161. Into :cnt
  162. From u_order_ml
  163. Where ordertype = 4
  164. And scid = :arg_s_pack.scid
  165. And pzlorderid = :arg_s_pack.orderid
  166. And mtrlid = :arg_s_pack.arg_s_mx[ll_i].mtrlid
  167. And status_mode = :arg_s_pack.arg_s_mx[ll_i].status
  168. And woodcode = :arg_s_pack.arg_s_mx[ll_i].woodcode
  169. And pcode = :arg_s_pack.arg_s_mx[ll_i].pcode
  170. And status = 1;
  171. If sqlca.SQLCode <> 0 Then
  172. rslt = 0
  173. arg_msg = '第'+String(ll_i)+'行明细,查询包件指令是否已有相同信息失败,'+sqlca.SQLErrText
  174. Goto ext
  175. End If
  176. If cnt > 0 Then
  177. rslt = 0
  178. arg_msg = '第'+String(ll_i)+'行明细,包件指令已存在相同信息,不能重复添加'
  179. Goto ext
  180. End If
  181. End If
  182. Next
  183. If arg_s_pack.billid = 0 Then
  184. ll_billid = f_sys_scidentity(0,"u_order_ml_pack","billid",arg_msg,True,id_sqlca)
  185. If ll_billid <= 0 Then
  186. rslt = 0
  187. Goto ext
  188. End If
  189. If f_get_sccode(arg_s_pack.scid,sqlca,ls_sccode,arg_msg) = 0 Then
  190. rslt = 0
  191. Goto ext
  192. End If
  193. ls_billcode = getid(arg_s_pack.scid,ls_sccode + 'TO',Date(server_dt),False,sqlca)
  194. If ls_billcode = "err" Then
  195. rslt = 0
  196. arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
  197. Goto ext
  198. End If
  199. Insert Into u_order_ml_pack
  200. (billid,
  201. billcode,
  202. scid,
  203. orderid,
  204. orderqty,
  205. taskid,
  206. taskprintid,
  207. billemp,
  208. opdate,
  209. opemp)
  210. Values (:ll_billid,
  211. :ls_billcode,
  212. :arg_s_pack.scid,
  213. :arg_s_pack.orderid,
  214. :arg_s_pack.orderqty,
  215. :arg_s_pack.taskid,
  216. :arg_s_pack.taskprintid,
  217. :arg_s_pack.billemp,
  218. :server_dt,
  219. :arg_opemp);
  220. If sqlca.SQLCode <> 0 Then
  221. rslt = 0
  222. arg_msg = '因网络或其它原因导致建立单据失败,'+sqlca.SQLErrText
  223. Goto ext
  224. End If
  225. For ll_i = 1 To it_mxbt
  226. Insert Into u_order_ml_packmx
  227. (billid,
  228. printid,
  229. scid,
  230. mtrlid,
  231. status,
  232. woodcode,
  233. pcode,
  234. qty,
  235. packqty,
  236. orderdate,
  237. requiredate,
  238. storageid,
  239. kind,
  240. orderid,
  241. ordercode,
  242. getbarid,
  243. getbarcode)
  244. Values (:ll_billid,
  245. :arg_s_pack.arg_s_mx[ll_i].printid,
  246. :arg_s_pack.scid,
  247. :arg_s_pack.arg_s_mx[ll_i].mtrlid,
  248. :arg_s_pack.arg_s_mx[ll_i].status,
  249. :arg_s_pack.arg_s_mx[ll_i].woodcode,
  250. :arg_s_pack.arg_s_mx[ll_i].pcode,
  251. :arg_s_pack.arg_s_mx[ll_i].qty,
  252. :arg_s_pack.arg_s_mx[ll_i].packqty,
  253. :arg_s_pack.arg_s_mx[ll_i].orderdate,
  254. :arg_s_pack.arg_s_mx[ll_i].requiredate,
  255. :arg_s_pack.arg_s_mx[ll_i].storageid,
  256. :arg_s_pack.arg_s_mx[ll_i].kind,
  257. :arg_s_pack.arg_s_mx[ll_i].orderid,
  258. :arg_s_pack.arg_s_mx[ll_i].ordercode,
  259. :arg_s_pack.arg_s_mx[ll_i].getbarid,
  260. :arg_s_pack.arg_s_mx[ll_i].getbarcode);
  261. If sqlca.SQLCode <> 0 Then
  262. rslt = 0
  263. arg_msg = '插入单据明细操作失败,'+sqlca.SQLErrText
  264. Goto ext
  265. End If
  266. Next
  267. uo_billid = ll_billid
  268. uo_billcode = ls_billcode
  269. Else
  270. Update u_order_ml_pack
  271. Set orderid = :arg_s_pack.orderid,
  272. orderqty = :arg_s_pack.orderqty,
  273. taskid = :arg_s_pack.taskid,
  274. taskprintid = :arg_s_pack.taskprintid,
  275. billemp = :arg_s_pack.billemp,
  276. moddate = :server_dt,
  277. modemp = :arg_opemp
  278. Where billid = :arg_s_pack.billid
  279. And flag = 0;
  280. If sqlca.SQLCode <> 0 Then
  281. rslt = 0
  282. arg_msg = '更新单据失败,'+sqlca.SQLErrText
  283. Goto ext
  284. End If
  285. Delete From u_order_ml_packmx
  286. Where billid = :arg_s_pack.billid;
  287. If sqlca.SQLCode <> 0 Then
  288. rslt = 0
  289. arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
  290. Goto ext
  291. End If
  292. For ll_i = 1 To it_mxbt
  293. Insert Into u_order_ml_packmx
  294. (billid,
  295. printid,
  296. scid,
  297. mtrlid,
  298. status,
  299. woodcode,
  300. pcode,
  301. qty,
  302. packqty,
  303. orderdate,
  304. requiredate,
  305. storageid,
  306. kind,
  307. orderid,
  308. ordercode,
  309. getbarid,
  310. getbarcode)
  311. Values (:arg_s_pack.billid,
  312. :arg_s_pack.arg_s_mx[ll_i].printid,
  313. :arg_s_pack.scid,
  314. :arg_s_pack.arg_s_mx[ll_i].mtrlid,
  315. :arg_s_pack.arg_s_mx[ll_i].status,
  316. :arg_s_pack.arg_s_mx[ll_i].woodcode,
  317. :arg_s_pack.arg_s_mx[ll_i].pcode,
  318. :arg_s_pack.arg_s_mx[ll_i].qty,
  319. :arg_s_pack.arg_s_mx[ll_i].packqty,
  320. :arg_s_pack.arg_s_mx[ll_i].orderdate,
  321. :arg_s_pack.arg_s_mx[ll_i].requiredate,
  322. :arg_s_pack.arg_s_mx[ll_i].storageid,
  323. :arg_s_pack.arg_s_mx[ll_i].kind,
  324. :arg_s_pack.arg_s_mx[ll_i].orderid,
  325. :arg_s_pack.arg_s_mx[ll_i].ordercode,
  326. :arg_s_pack.arg_s_mx[ll_i].getbarid,
  327. :arg_s_pack.arg_s_mx[ll_i].getbarcode);
  328. If sqlca.SQLCode <> 0 Then
  329. rslt = 0
  330. arg_msg = '插入单据明细操作失败,'+sqlca.SQLErrText
  331. Goto ext
  332. End If
  333. Next
  334. End If
  335. ext:
  336. If rslt = 0 Then
  337. Rollback;
  338. ElseIf arg_ifcommit And rslt = 1 Then
  339. Commit;
  340. End If
  341. Return rslt
  342. end function
  343. public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  344. Int li_flag,li_ifauto,li_billtype
  345. IF arg_billid <= 0 THEN
  346. rslt = 0
  347. arg_msg = '错误单据唯一码'
  348. GOTO ext
  349. END IF
  350. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  351. rslt = 0
  352. GOTO ext
  353. END IF
  354. IF flag <> 0 THEN
  355. rslt = 0
  356. arg_msg = '单据不是在待审核状态,不可以删除'
  357. GOTO ext
  358. END IF
  359. DELETE FROM u_order_ml_packmx
  360. WHERE billid = :arg_billid;
  361. IF sqlca.SQLCode <> 0 THEN
  362. rslt = 0
  363. arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
  364. GOTO ext
  365. END IF
  366. DELETE FROM u_order_ml_pack
  367. WHERE billid = :arg_billid
  368. AND flag = 0;
  369. IF sqlca.SQLCode <> 0 THEN
  370. rslt = 0
  371. arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
  372. GOTO ext
  373. END IF
  374. ext:
  375. IF rslt = 0 THEN
  376. ROLLBACK;
  377. ELSEIF rslt = 1 AND arg_ifcommit THEN
  378. COMMIT;
  379. END IF
  380. RETURN rslt
  381. end function
  382. public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
  383. SELECT billid,
  384. billcode,
  385. flag,
  386. scid,
  387. orderid,
  388. orderqty,
  389. taskid,
  390. taskprintid,
  391. billemp
  392. INTO :uo_billid,
  393. :uo_billcode,
  394. :flag,
  395. :scid,
  396. :orderid,
  397. :orderqty,
  398. :taskid,
  399. :taskprintid,
  400. :billemp
  401. FROM u_order_ml_pack
  402. Where billid = :arg_billid;
  403. IF sqlca.SQLCode <> 0 THEN
  404. rslt = 0
  405. arg_msg = '查询单据信息失败,'+sqlca.SQLErrText
  406. GOTO ext
  407. END IF
  408. ext:
  409. RETURN rslt
  410. end function
  411. public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  412. IF arg_billid <= 0 THEN
  413. rslt = 0
  414. arg_msg = '错误的单据唯一码'
  415. GOTO ext
  416. END IF
  417. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  418. rslt = 0
  419. GOTO ext
  420. END IF
  421. IF flag <> 0 THEN
  422. rslt = 0
  423. arg_msg = '单据只有在待审核状态下才能执行审核操作'
  424. GOTO ext
  425. END IF
  426. UPDATE u_order_ml_pack
  427. SET auditemp = :arg_opemp,
  428. auditdate = getdate(),
  429. flag = 1
  430. WHERE billid = :arg_billid
  431. And flag = 0;
  432. IF sqlca.SQLCode <> 0 THEN
  433. rslt = 0
  434. arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
  435. GOTO ext
  436. END IF
  437. ext:
  438. IF rslt = 0 THEN
  439. ROLLBACK;
  440. ELSEIF rslt = 1 And arg_ifcommit THEN
  441. COMMIT;
  442. END IF
  443. RETURN rslt
  444. end function
  445. public function integer getinfo (long arg_billid, ref s_order_ml_packmx arg_s_mx[], ref long arg_arr_cnt, ref string arg_msg);Int rslt = 1
  446. Long i = 1,no_mxcheck = 0
  447. IF arg_billid <= 0 THEN
  448. rslt = 0
  449. arg_msg = '错误的单据唯一码'
  450. GOTO ext
  451. END IF
  452. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  453. rslt = 0
  454. GOTO ext
  455. END IF
  456. DECLARE cur_pack_mx CURSOR FOR
  457. SELECT billid,
  458. printid,
  459. scid,
  460. mtrlid,
  461. status,
  462. woodcode,
  463. pcode,
  464. qty,
  465. packqty,
  466. orderdate,
  467. requiredate,
  468. orderid,
  469. ordercode,
  470. flag,
  471. getbarid,
  472. getbarcode,
  473. stopflag,
  474. storageid
  475. FROM u_order_ml_packmx
  476. Where billid = :arg_billid
  477. order by printid;
  478. OPEN cur_pack_mx;
  479. FETCH cur_pack_mx INTO :arg_s_mx[i].billid,
  480. :arg_s_mx[i].printid,
  481. :arg_s_mx[i].scid,
  482. :arg_s_mx[i].mtrlid,
  483. :arg_s_mx[i].status,
  484. :arg_s_mx[i].woodcode,
  485. :arg_s_mx[i].pcode,
  486. :arg_s_mx[i].qty,
  487. :arg_s_mx[i].packqty,
  488. :arg_s_mx[i].orderdate,
  489. :arg_s_mx[i].requiredate,
  490. :arg_s_mx[i].orderid,
  491. :arg_s_mx[i].ordercode,
  492. :arg_s_mx[i].flag,
  493. :arg_s_mx[i].getbarid,
  494. :arg_s_mx[i].getbarcode,
  495. :arg_s_mx[i].stopflag,
  496. :arg_s_mx[i].storageid;
  497. DO WHILE sqlca.SQLCode = 0
  498. i++
  499. FETCH cur_pack_mx INTO :arg_s_mx[i].billid,
  500. :arg_s_mx[i].printid,
  501. :arg_s_mx[i].scid,
  502. :arg_s_mx[i].mtrlid,
  503. :arg_s_mx[i].status,
  504. :arg_s_mx[i].woodcode,
  505. :arg_s_mx[i].pcode,
  506. :arg_s_mx[i].qty,
  507. :arg_s_mx[i].packqty,
  508. :arg_s_mx[i].orderdate,
  509. :arg_s_mx[i].requiredate,
  510. :arg_s_mx[i].orderid,
  511. :arg_s_mx[i].ordercode,
  512. :arg_s_mx[i].flag,
  513. :arg_s_mx[i].getbarid,
  514. :arg_s_mx[i].getbarcode,
  515. :arg_s_mx[i].stopflag,
  516. :arg_s_mx[i].storageid;
  517. LOOP
  518. CLOSE cur_pack_mx;
  519. //检验明细是否读入完整
  520. SELECT count(*) INTO :no_mxcheck
  521. FROM u_order_ml_packmx
  522. Where billid = :arg_billid;
  523. IF sqlca.SQLCode <> 0 THEN
  524. rslt = 0
  525. arg_msg = "查询操作失败,单据明细"
  526. GOTO ext
  527. END IF
  528. IF i <> (no_mxcheck + 1) THEN
  529. rslt = 0
  530. arg_msg = "查询操作失败,单据明细内容"
  531. GOTO ext
  532. END IF
  533. arg_arr_cnt = i - 1
  534. ext:
  535. RETURN rslt
  536. end function
  537. public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  538. Long ll_cnt_mx,ll_i
  539. DateTime null_dt
  540. s_order_ml_packmx arg_s_mx[]
  541. SetNull(null_dt)
  542. IF getinfo(arg_billid,arg_s_mx,ll_cnt_mx,arg_msg) = 0 THEN
  543. rslt = 0
  544. GOTO ext
  545. END IF
  546. IF flag <> 1 THEN
  547. rslt = 0
  548. arg_msg = '单据只有在已审核状态下才能执行撤审'
  549. GOTO ext
  550. END IF
  551. FOR ll_i = 1 To ll_cnt_mx
  552. IF arg_s_mx[ll_i].flag = 1 THEN
  553. rslt = 0
  554. arg_msg = '明细第'+String(arg_s_mx[ll_i].printid)+'行已经审核,不以撤审单据,请检查'
  555. GOTO ext
  556. END IF
  557. NEXT
  558. //更新审核标记
  559. UPDATE u_order_ml_pack
  560. SET auditemp = '',
  561. auditdate = :null_dt,
  562. flag = 0
  563. WHERE billid = :arg_billid
  564. And flag = 1;
  565. IF sqlca.SQLCode <> 0 THEN
  566. rslt = 0
  567. arg_msg = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
  568. GOTO ext
  569. END IF
  570. ext:
  571. IF rslt = 0 THEN
  572. ROLLBACK;
  573. ELSEIF rslt = 1 AND arg_ifcommit THEN
  574. COMMIT;
  575. END IF
  576. RETURN rslt
  577. end function
  578. public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
  579. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  580. rslt = 0
  581. GOTO ext
  582. END IF
  583. IF flag <> 0 THEN
  584. rslt = 0
  585. arg_msg = '单据只有待审核状态下才能修改'
  586. GOTO ext
  587. END IF
  588. ext:
  589. RETURN rslt
  590. end function
  591. public function integer getinfo_mx (long arg_billid, long arg_printid, ref s_order_ml_packmx arg_s_mx, ref string arg_msg);Int rslt = 1
  592. IF arg_billid <= 0 THEN
  593. rslt = 0
  594. arg_msg = '错误的单据唯一码'
  595. GOTO ext
  596. END IF
  597. IF arg_printid <= 0 THEN
  598. rslt = 0
  599. arg_msg = '错误的明细序号'
  600. GOTO ext
  601. END IF
  602. Long ll_billid,ll_printid,ll_scid,ll_mtrlid
  603. String ls_status,ls_woodcode,ls_pcode
  604. Decimal ld_qty,ld_packqty
  605. DateTime ld_orderdate,ld_requiredate
  606. Long ll_orderid,ll_flag,ll_getbarid,ll_stopflag,ll_storageid,ll_printid_tree
  607. String ls_ordercode,ls_getbarcode
  608. int li_kind
  609. SELECT billid,
  610. printid,
  611. scid,
  612. mtrlid,
  613. status,
  614. woodcode,
  615. pcode,
  616. qty,
  617. packqty,
  618. orderdate,
  619. requiredate,
  620. orderid,
  621. ordercode,
  622. flag,
  623. getbarid,
  624. getbarcode,
  625. stopflag,
  626. storageid,
  627. printid_tree,
  628. kind
  629. INTO :ll_billid,
  630. :ll_printid,
  631. :ll_scid,
  632. :ll_mtrlid,
  633. :ls_status,
  634. :ls_woodcode,
  635. :ls_pcode,
  636. :ld_qty,
  637. :ld_packqty,
  638. :ld_orderdate,
  639. :ld_requiredate,
  640. :ll_orderid,
  641. :ls_ordercode,
  642. :ll_flag,
  643. :ll_getbarid,
  644. :ls_getbarcode,
  645. :ll_stopflag,
  646. :ll_storageid,
  647. :ll_printid_tree,
  648. :li_kind
  649. FROM u_order_ml_packmx
  650. WHERE billid = :arg_billid
  651. And printid = :arg_printid;
  652. IF sqlca.SQLCode <> 0 THEN
  653. rslt = 0
  654. arg_msg = '查询明细信息失败,'+sqlca.SQLErrText
  655. GOTO ext
  656. END IF
  657. arg_s_mx.billid = ll_billid
  658. arg_s_mx.printid = ll_printid
  659. arg_s_mx.scid = ll_scid
  660. arg_s_mx.mtrlid = ll_mtrlid
  661. arg_s_mx.status = ls_status
  662. arg_s_mx.woodcode = ls_woodcode
  663. arg_s_mx.pcode = ls_pcode
  664. arg_s_mx.qty = ld_qty
  665. arg_s_mx.packqty = ld_packqty
  666. arg_s_mx.orderdate = ld_orderdate
  667. arg_s_mx.requiredate = ld_requiredate
  668. arg_s_mx.orderid = ll_orderid
  669. arg_s_mx.ordercode = ls_ordercode
  670. arg_s_mx.flag = ll_flag
  671. arg_s_mx.getbarid = ll_getbarid
  672. arg_s_mx.getbarcode = ls_getbarcode
  673. arg_s_mx.stopflag = ll_stopflag
  674. arg_s_mx.storageid = ll_storageid
  675. arg_s_mx.printid_tree = ll_printid_tree
  676. arg_s_mx.kind = li_kind
  677. ext:
  678. RETURN rslt
  679. end function
  680. public function integer audit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  681. Long ll_i,cnt
  682. uo_order_ml uo_zl
  683. uo_zl = Create uo_order_ml
  684. uo_getbar uo_get
  685. uo_get = Create uo_getbar
  686. s_order_ml_packmx arg_s_mx
  687. s_getbar arg_s_gb,arg_s_gb_null
  688. datastore ds_gb_mx
  689. ds_gb_mx = Create datastore
  690. ds_gb_mx.DataObject = 'dw_getbarmx_edit'
  691. ds_gb_mx.SetTransObject(sqlca)
  692. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  693. rslt = 0
  694. GOTO ext
  695. END IF
  696. IF getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 THEN
  697. rslt = 0
  698. GOTO ext
  699. END IF
  700. IF flag <> 1 THEN
  701. rslt = 0
  702. arg_msg = '必须先审核单据才能审核明细,请检查'
  703. GOTO ext
  704. END IF
  705. IF arg_s_mx.flag = 1 THEN
  706. rslt = 0
  707. arg_msg = '明细已审核,不能再审'
  708. GOTO ext
  709. END IF
  710. String ls_relcode,ls_taskrelcode
  711. Long ll_taskmxid
  712. String ls_gydscrp,ls_pfklmode
  713. DateTime ld_perfinishdate
  714. Long ll_level
  715. String ls_typename,ls_outtypestr
  716. Long ll_porderid
  717. Decimal ld_orderqty
  718. String ls_ordercode
  719. String ls_pfcode
  720. Long ll_produce_wrkgrpid
  721. Long ll_orderid_update,ll_getbarid_update
  722. String ls_ordercode_update,ls_getbarcode_update
  723. Long ll_outtype
  724. Long ll_balctype,ll_cusid
  725. Decimal ld_packqty,ld_qty
  726. Long ll_cnt,j,i,child_row
  727. String ls_barcode
  728. DateTime server_dt
  729. Long ll_mtrlid_order
  730. Long ll_dftscllwkpid,ll_printid_tree
  731. String ls_wpcode
  732. SELECT Top 1 getdate() Into :server_dt From u_user;
  733. IF sqlca.SQLCode <> 0 THEN
  734. rslt = 0
  735. arg_msg = '查询操作失败,日期'
  736. GOTO ext
  737. END IF
  738. IF arg_s_mx.Kind = 0 THEN
  739. //0-新增
  740. cnt = 0
  741. SELECT count(*) INTO :cnt
  742. FROM u_order_ml_packmx
  743. WHERE billid = :arg_billid
  744. AND kind = 1
  745. And flag = 0;
  746. IF sqlca.SQLCode <> 0 THEN
  747. arg_msg = '查询单据是否有终止类型明细未审核失败,原因:'+sqlca.SQLErrText
  748. rslt = 0
  749. GOTO ext
  750. END IF
  751. IF cnt > 0 THEN
  752. arg_msg = '单据有终止类型明细未审核,请先审核终止类型明细'
  753. rslt = 0
  754. GOTO ext
  755. END IF
  756. SELECT relcode,
  757. taskrelcode,
  758. taskmxid,
  759. gydscrp,
  760. pfklmode,
  761. perfinishdate,
  762. level,
  763. typename,
  764. outtypestr,
  765. porderid,
  766. ordercode,
  767. cusid,
  768. mtrlid,
  769. orderqty
  770. INTO :ls_relcode,
  771. :ls_taskrelcode,
  772. :ll_taskmxid,
  773. :ls_gydscrp,
  774. :ls_pfklmode,
  775. :ld_perfinishdate,
  776. :ll_level,
  777. :ls_typename,
  778. :ls_outtypestr,
  779. :ll_porderid,
  780. :ls_ordercode,
  781. :ll_cusid,
  782. :ll_mtrlid_order,
  783. :ld_orderqty
  784. FROM u_order_ml
  785. WHERE scid = :scid
  786. And orderid = :orderid;
  787. IF sqlca.SQLCode <> 0 THEN
  788. rslt = 0
  789. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  790. GOTO ext
  791. END IF
  792. SELECT dftwrkGrpid,outtype,dftscllwkpid
  793. INTO :ll_produce_wrkgrpid,:ll_outtype,:ll_dftscllwkpid
  794. FROM u_mtrldef
  795. Where mtrlid = :arg_s_mx.mtrlid;
  796. IF sqlca.SQLCode <> 0 THEN
  797. rslt = 0
  798. arg_msg = '查询明细包件默认制造车间失败,'+sqlca.SQLErrText
  799. GOTO ext
  800. END IF
  801. ls_pfcode = f_get_dft_pf(arg_s_mx.mtrlid)
  802. ls_wpcode = f_get_dft_wp(arg_s_mx.mtrlid)
  803. //插入主计划运算表
  804. SELECT max(printid) INTO :ll_printid_tree
  805. FROM u_OrderRqMtrl_tree
  806. WHERE scid = :scid
  807. And orderid = :ll_porderid;
  808. IF sqlca.SQLCode <> 0 THEN
  809. rslt = 0
  810. arg_msg = '查询主生产计划运算表信息失败,'+sqlca.SQLErrText
  811. GOTO ext
  812. END IF
  813. IF IsNull(ll_printid_tree) THEN ll_printid_tree = 0
  814. ll_printid_tree++
  815. INSERT INTO u_OrderRqMtrl_tree
  816. (scid,
  817. OrderID,
  818. MtrlID,
  819. wrkGrpid,
  820. RqQty,
  821. truerqqty,
  822. edate,
  823. RqDate,
  824. status,
  825. woodcode,
  826. pcode,
  827. lp,
  828. printid,
  829. pfcode,
  830. produce_scid,
  831. scllqty,
  832. produce_wrkGrpid)
  833. VALUES (:scid,
  834. :ll_porderid,
  835. :arg_s_mx.mtrlid,
  836. :ll_dftscllwkpid,
  837. :arg_s_mx.qty,
  838. :arg_s_mx.qty,
  839. :arg_s_mx.orderdate,
  840. :arg_s_mx.requiredate,
  841. :arg_s_mx.status,
  842. :arg_s_mx.woodcode,
  843. :arg_s_mx.pcode,
  844. 1,
  845. :ll_printid_tree,
  846. :ls_pfcode,
  847. :scid,
  848. :arg_s_mx.qty,
  849. :ll_produce_wrkgrpid);
  850. IF sqlca.SQLCode <> 0 THEN
  851. rslt = 0
  852. arg_msg = '插入主生产计划运算表失败,'+sqlca.SQLErrText
  853. GOTO ext
  854. END IF
  855. //生成相关生产指令单
  856. IF uo_zl.acceptmx(ls_relcode,&
  857. arg_s_mx.orderdate,&
  858. 0,&
  859. '',&
  860. 0,&
  861. arg_s_mx.mtrlid,&
  862. arg_s_mx.status,&
  863. arg_s_mx.woodcode,&
  864. arg_s_mx.pcode,&
  865. arg_s_mx.qty,&
  866. '',&
  867. publ_operator,&
  868. arg_s_mx.requiredate,&
  869. 4,&
  870. ls_taskrelcode,&
  871. ls_pfcode,&
  872. ll_taskmxid,&
  873. ll_porderid,&
  874. 1,&
  875. ll_produce_wrkgrpid,&
  876. ls_gydscrp,&
  877. ls_pfklmode,&
  878. 0,'',0,&
  879. '',&
  880. '',&
  881. scid,&
  882. ld_perfinishdate,&
  883. 0,&
  884. 0,&
  885. ll_level,&
  886. ls_typename,&
  887. ls_outtypestr,&
  888. orderid,&
  889. 0,&
  890. 0,0,0,&
  891. ls_wpcode,0,&
  892. arg_msg) = 0 THEN
  893. arg_msg = '建立相关生产指令单失败,'+arg_msg
  894. rslt = 0
  895. GOTO ext
  896. END IF
  897. uo_zl.pzlordercode_tmp = ls_ordercode
  898. IF uo_zl.Save(arg_msg,False) = 0 THEN
  899. arg_msg = '保存相关生产指令单失败,'+arg_msg
  900. rslt = 0
  901. GOTO ext
  902. END IF
  903. uo_zl.pzlordercode_tmp = ''
  904. IF uo_zl.audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
  905. rslt = 0
  906. arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
  907. GOTO ext
  908. END IF
  909. IF uo_zl.plan_audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
  910. rslt = 0
  911. arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
  912. GOTO ext
  913. END IF
  914. IF uo_zl.sec_audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
  915. rslt = 0
  916. arg_msg = '审核相关生产指令单失败(二审),'+arg_msg
  917. GOTO ext
  918. END IF
  919. ll_orderid_update = uo_zl.orderid
  920. ls_ordercode_update = uo_zl.ordercode
  921. //生成相关条码生成单
  922. IF ll_outtype = 2 And uo_option_inout_type = 2 THEN
  923. SELECT balctype INTO :ll_balctype
  924. FROM u_storage
  925. Where storageid = :arg_s_mx.storageid;
  926. IF sqlca.SQLCode <> 0 THEN
  927. rslt = 0
  928. arg_msg = '查询仓库是否使用客户库存失败,'+sqlca.SQLErrText
  929. GOTO ext
  930. END IF
  931. arg_s_gb = arg_s_gb_null
  932. arg_s_gb.scid = scid
  933. arg_s_gb.getbarid = 0
  934. arg_s_gb.getbardate = DateTime(Date(Today()),Time(0))
  935. arg_s_gb.ifrel = 1
  936. arg_s_gb.orderid = ll_orderid_update
  937. arg_s_gb.storageid = arg_s_mx.storageid
  938. arg_s_gb.mtrlid = arg_s_mx.mtrlid
  939. IF ll_balctype = 1 THEN
  940. arg_s_gb.cusid = ll_cusid
  941. ELSE
  942. arg_s_gb.cusid = 0
  943. END IF
  944. IF sys_option_taskplancode = 1 THEN
  945. arg_s_gb.plancode = ls_taskrelcode
  946. ELSE
  947. arg_s_gb.plancode = ''
  948. END IF
  949. arg_s_gb.status = arg_s_mx.status
  950. arg_s_gb.woodcode = arg_s_mx.woodcode
  951. arg_s_gb.pcode = arg_s_mx.pcode
  952. arg_s_gb.Location = ''
  953. arg_s_gb.packqty = arg_s_mx.packqty
  954. arg_s_gb.qty = arg_s_mx.qty
  955. arg_s_gb.dscrp = ''
  956. arg_s_gb.reason = ''
  957. arg_s_gb.buytaskprintid = 0
  958. arg_s_gb.mtrlcuscode = ls_ordercode
  959. arg_s_gb.relbillid = arg_billid
  960. arg_s_gb.relbillprintid = arg_printid
  961. //生成条码
  962. ds_gb_mx.Reset()
  963. ld_packqty = arg_s_mx.packqty
  964. ld_qty = arg_s_mx.qty
  965. IF ld_packqty >= 1 THEN
  966. ll_cnt = Ceiling(Truncate(ld_qty/ld_packqty,10))
  967. ELSE
  968. ll_cnt = Ceiling(ld_qty*ld_packqty)
  969. ld_packqty = Long(1/ld_packqty)
  970. END IF
  971. FOR j = 1 To ll_cnt
  972. ls_barcode = getid(0,"TXM",Date(server_dt),False,sqlca) //取得新单据编号
  973. IF ls_barcode = "err" THEN
  974. ls_barcode = ''
  975. arg_msg = '无法获取条码'
  976. GOTO ext
  977. END IF
  978. child_row = ds_gb_mx.InsertRow(0)
  979. ds_gb_mx.Object.barcode[child_row] = ls_barcode
  980. IF Mod(ld_qty,ld_packqty) = 0 THEN
  981. ds_gb_mx.Object.packqty[child_row] = ld_packqty
  982. ELSE
  983. IF j <> ll_cnt THEN
  984. ds_gb_mx.Object.packqty[child_row] = ld_packqty
  985. ELSE
  986. ds_gb_mx.Object.packqty[child_row] = ld_qty - ld_packqty * ( ll_cnt - 1 )
  987. END IF
  988. END IF
  989. NEXT
  990. ds_gb_mx.AcceptText()
  991. FOR j = 1 To ds_gb_mx.RowCount()
  992. arg_s_gb.arg_s_mx[j].barcode = ds_gb_mx.Object.barcode[j]
  993. arg_s_gb.arg_s_mx[j].packqty = ds_gb_mx.Object.packqty[j]
  994. arg_s_gb.arg_s_mx[j].qty = ds_gb_mx.Object.qty[j]
  995. arg_s_gb.arg_s_mx[j].mxdscrp = ''
  996. NEXT
  997. IF uo_get.Save(arg_s_gb,publ_operator,arg_msg,False) = 0 THEN
  998. arg_msg = '建立相关条码生成单失败,'+arg_msg
  999. rslt = 0
  1000. GOTO ext
  1001. END IF
  1002. IF uo_get.auditing(uo_get.uo_getbarid,publ_operator,arg_msg,False) = 0 THEN
  1003. arg_msg = '审核相关条码生成单失败,'+arg_msg
  1004. rslt = 0
  1005. GOTO ext
  1006. END IF
  1007. ll_getbarid_update = uo_get.uo_getbarid
  1008. ls_getbarcode_update = uo_get.uo_getbarcode
  1009. END IF
  1010. //yyx2013-10-18
  1011. Decimal ld_mxqty_audit_notstop
  1012. Decimal ld_Sonscale_saletaskmx_pf
  1013. Decimal ld_Sonscale_fm_saletaskmx_pf
  1014. SELECT sum(u_order_ml_packmx.qty)
  1015. INTO :ld_mxqty_audit_notstop
  1016. FROM u_order_ml_packmx
  1017. WHERE u_order_ml_packmx.billid = :arg_billid
  1018. AND u_order_ml_packmx.printid <> :arg_printid
  1019. AND u_order_ml_packmx.flag = 1
  1020. AND u_order_ml_packmx.stopflag = 0
  1021. AND u_order_ml_packmx.kind = 0
  1022. AND u_order_ml_packmx.mtrlid = :arg_s_mx.mtrlid
  1023. AND u_order_ml_packmx.status = :arg_s_mx.status
  1024. AND u_order_ml_packmx.woodcode = :arg_s_mx.woodcode
  1025. And u_order_ml_packmx.pcode = :arg_s_mx.pcode;
  1026. IF sqlca.SQLCode <> 0 THEN
  1027. arg_msg = '查询单据明细其它行相同包件已审数量失败,'+sqlca.SQLErrText
  1028. rslt = 0
  1029. GOTO ext
  1030. END IF
  1031. IF IsNull(ld_mxqty_audit_notstop) THEN ld_mxqty_audit_notstop = 0
  1032. ld_Sonscale_saletaskmx_pf = (arg_s_mx.qty + ld_mxqty_audit_notstop)
  1033. ld_Sonscale_fm_saletaskmx_pf = ld_orderqty
  1034. //
  1035. UPDATE u_SaleTaskMx_pf
  1036. SET Sonscale = :ld_Sonscale_saletaskmx_pf,
  1037. Sonscale_fm = :ld_Sonscale_fm_saletaskmx_pf
  1038. WHERE scid = :scid
  1039. AND taskid = :taskid
  1040. AND printid = :taskprintid
  1041. AND sonmtrlid = :arg_s_mx.mtrlid
  1042. AND status = :arg_s_mx.status
  1043. AND woodcode = :arg_s_mx.woodcode
  1044. And pcode = :arg_s_mx.pcode;
  1045. IF sqlca.SQLCode = 0 THEN
  1046. IF sqlca.SQLNRows = 0 THEN
  1047. INSERT INTO u_SaleTaskMx_pf
  1048. (scid,
  1049. taskid,
  1050. printid,
  1051. mtrlid,
  1052. sonmtrlid,
  1053. status,
  1054. woodcode,
  1055. pcode,
  1056. Sonscale,
  1057. Sonscale_fm)
  1058. VALUES (:scid,
  1059. :taskid,
  1060. :taskprintid,
  1061. :ll_mtrlid_order,
  1062. :arg_s_mx.mtrlid,
  1063. :arg_s_mx.status,
  1064. :arg_s_mx.woodcode,
  1065. :arg_s_mx.pcode,
  1066. :ld_Sonscale_saletaskmx_pf,
  1067. :ld_Sonscale_fm_saletaskmx_pf);
  1068. IF sqlca.SQLCode <> 0 THEN
  1069. rslt = 0
  1070. arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
  1071. GOTO ext
  1072. END IF
  1073. END IF
  1074. ELSE
  1075. rslt = 0
  1076. arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
  1077. GOTO ext
  1078. END IF
  1079. UPDATE u_order_ml_packmx
  1080. SET orderid = :ll_orderid_update,
  1081. ordercode = :ls_ordercode_update,
  1082. flag = 1,
  1083. auditdate = :server_dt,
  1084. auditemp = :publ_operator,
  1085. getbarid = :ll_getbarid_update,
  1086. getbarcode = :ls_getbarcode_update,
  1087. printid_tree = :ll_printid_tree
  1088. WHERE billid = :arg_billid
  1089. And printid = :arg_printid;
  1090. IF sqlca.SQLCode <> 0 THEN
  1091. rslt = 0
  1092. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1093. GOTO ext
  1094. END IF
  1095. ELSEIF arg_s_mx.Kind = 1 THEN
  1096. //1-终止
  1097. IF uo_zl.stoporder(scid,arg_s_mx.orderid,0,'包件变更单自动终止',arg_msg,False) = 0 THEN
  1098. rslt = 0
  1099. arg_msg = '终止相关生产指令单失败,'+arg_msg
  1100. GOTO ext
  1101. END IF
  1102. //作废相关条码生成单(如果存在)
  1103. IF arg_s_mx.getbarid > 0 THEN
  1104. ds_gb_mx.Retrieve(arg_s_mx.getbarid)
  1105. FOR ll_i = 1 To ds_gb_mx.RowCount()
  1106. ls_barcode = ds_gb_mx.Object.barcode[ll_i]
  1107. IF uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 THEN
  1108. rslt = 0
  1109. GOTO ext
  1110. END IF
  1111. NEXT
  1112. END IF
  1113. Delete From u_SaleTaskMx_pf
  1114. Where scid = :scid
  1115. And taskid = :taskid
  1116. And printid = :taskprintid
  1117. And sonmtrlid = :arg_s_mx.mtrlid
  1118. And status = :arg_s_mx.status
  1119. And woodcode = :arg_s_mx.woodcode
  1120. And pcode = :arg_s_mx.pcode;
  1121. If sqlca.SQLCode <> 0 Then
  1122. rslt = 0
  1123. arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
  1124. Goto ext
  1125. End If
  1126. UPDATE u_order_ml_packmx
  1127. SET flag = 1,
  1128. auditdate = :server_dt,
  1129. auditemp = :publ_operator
  1130. WHERE billid = :arg_billid
  1131. And printid = :arg_printid;
  1132. IF sqlca.SQLCode <> 0 THEN
  1133. rslt = 0
  1134. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1135. GOTO ext
  1136. END IF
  1137. END IF
  1138. ext:
  1139. IF rslt = 0 THEN
  1140. ROLLBACK;
  1141. ELSEIF rslt = 1 And arg_ifcommit THEN
  1142. COMMIT;
  1143. END IF
  1144. Destroy uo_zl
  1145. Destroy uo_get
  1146. Destroy ds_gb_mx
  1147. RETURN rslt
  1148. end function
  1149. public function integer caudit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1150. DateTime null_dt
  1151. SetNull(null_dt)
  1152. Int li_status,li_flag
  1153. Long ll_i
  1154. String ls_barcode
  1155. Decimal ld_orderqty
  1156. Long ll_mtrlid_order
  1157. uo_order_ml uo_zl
  1158. uo_zl = Create uo_order_ml
  1159. uo_getbar uo_get
  1160. uo_get = Create uo_getbar
  1161. datastore ds_gb_mx
  1162. ds_gb_mx = Create datastore
  1163. ds_gb_mx.DataObject = 'dw_getbarmx_edit'
  1164. ds_gb_mx.SetTransObject(sqlca)
  1165. s_order_ml_packmx arg_s_mx
  1166. s_getbar arg_s_gb,arg_s_gb_null
  1167. IF p_getinfo(arg_billid,arg_msg) = 0 THEN
  1168. rslt = 0
  1169. GOTO ext
  1170. END IF
  1171. IF getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 THEN
  1172. rslt = 0
  1173. GOTO ext
  1174. END IF
  1175. IF flag <> 1 THEN
  1176. rslt = 0
  1177. arg_msg = '必须先审核单据才能审核明细,请检查'
  1178. GOTO ext
  1179. END IF
  1180. IF arg_s_mx.flag = 0 THEN
  1181. rslt = 0
  1182. arg_msg = '明细未审核,不能撤审'
  1183. GOTO ext
  1184. END IF
  1185. IF arg_s_mx.stopflag = 1 THEN
  1186. rslt = 0
  1187. arg_msg = '明细已终止,不能撤审'
  1188. GOTO ext
  1189. END IF
  1190. IF arg_s_mx.Kind = 0 THEN
  1191. SELECT orderqty
  1192. INTO :ld_orderqty
  1193. FROM u_order_ml
  1194. WHERE scid = :scid
  1195. And orderid = :orderid;
  1196. IF sqlca.SQLCode <> 0 THEN
  1197. rslt = 0
  1198. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1199. GOTO ext
  1200. END IF
  1201. //删除相关条码生成单(如果存在)
  1202. IF arg_s_mx.getbarid > 0 THEN
  1203. SELECT flag
  1204. INTO :li_flag
  1205. FROM u_getbar
  1206. Where getbarid = :arg_s_mx.getbarid;
  1207. IF sqlca.SQLCode <> 0 THEN
  1208. rslt = 0
  1209. arg_msg = '查询相关条码生成单状态失败,'+sqlca.SQLErrText
  1210. GOTO ext
  1211. END IF
  1212. IF li_flag = 1 THEN
  1213. IF uo_get.c_auditing(arg_s_mx.getbarid,True,arg_msg,False) = 0 THEN
  1214. rslt = 0
  1215. arg_msg = '撤审相关条码生成单,'+arg_msg
  1216. GOTO ext
  1217. END IF
  1218. END IF
  1219. IF uo_get.del(arg_s_mx.getbarid,arg_msg,False) = 0 THEN
  1220. rslt = 0
  1221. arg_msg = '删除相关条码生成单,'+arg_msg
  1222. GOTO ext
  1223. END IF
  1224. END IF
  1225. SELECT status INTO :li_status
  1226. FROM u_order_ml
  1227. WHERE scid = :scid
  1228. And orderid = :arg_s_mx.orderid;
  1229. IF sqlca.SQLCode <> 0 THEN
  1230. rslt = 0
  1231. arg_msg = '查询相关指令单状态失败,'+arg_msg
  1232. GOTO ext
  1233. END IF
  1234. IF li_status = 1 THEN
  1235. IF uo_zl.c_sec_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
  1236. rslt = 0
  1237. arg_msg = '撤审相关生产指令单失败,'+arg_msg
  1238. GOTO ext
  1239. END IF
  1240. END IF
  1241. SELECT status INTO :li_status
  1242. FROM u_order_ml
  1243. WHERE scid = :scid
  1244. And orderid = :arg_s_mx.orderid;
  1245. IF sqlca.SQLCode <> 0 THEN
  1246. rslt = 0
  1247. arg_msg = '查询相关指令单状态失败,'+arg_msg
  1248. GOTO ext
  1249. END IF
  1250. IF li_status = 4 THEN
  1251. IF uo_zl.c_plan_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
  1252. rslt = 0
  1253. arg_msg = '撤审相关生产指令单失败,'+arg_msg
  1254. GOTO ext
  1255. END IF
  1256. END IF
  1257. SELECT status INTO :li_status
  1258. FROM u_order_ml
  1259. WHERE scid = :scid
  1260. And orderid = :arg_s_mx.orderid;
  1261. IF sqlca.SQLCode <> 0 THEN
  1262. rslt = 0
  1263. arg_msg = '查询相关指令单状态失败,'+arg_msg
  1264. GOTO ext
  1265. END IF
  1266. IF li_status = 7 THEN
  1267. IF uo_zl.c_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
  1268. rslt = 0
  1269. arg_msg = '撤审相关生产指令单失败,'+arg_msg
  1270. GOTO ext
  1271. END IF
  1272. END IF
  1273. IF uo_zl.del(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
  1274. rslt = 0
  1275. arg_msg = '删除相关生产指令单失败,'+arg_msg
  1276. GOTO ext
  1277. END IF
  1278. //删除主生产计划运算表相应行
  1279. Long ll_porderid
  1280. SELECT porderid
  1281. INTO :ll_porderid
  1282. FROM u_order_ml
  1283. WHERE scid = :scid
  1284. And orderid = :orderid;
  1285. IF sqlca.SQLCode <> 0 THEN
  1286. rslt = 0
  1287. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1288. GOTO ext
  1289. END IF
  1290. DELETE FROM u_OrderRqMtrl_tree
  1291. WHERE scid = :scid
  1292. AND orderid = :ll_porderid
  1293. And printid = :arg_s_mx.printid_tree;
  1294. IF sqlca.SQLCode <> 0 THEN
  1295. rslt = 0
  1296. arg_msg = '删除主生产计划运算表对应信息失败,'+sqlca.SQLErrText
  1297. GOTO ext
  1298. END IF
  1299. //yyx2013-10-18
  1300. Decimal ld_mxqty_audit_notstop
  1301. Decimal ld_Sonscale_saletaskmx_pf,ld_Sonscale_fm_saletaskmx_pf
  1302. SELECT sum(u_order_ml_packmx.qty)
  1303. INTO :ld_mxqty_audit_notstop
  1304. FROM u_order_ml_packmx
  1305. WHERE u_order_ml_packmx.billid = :arg_billid
  1306. AND u_order_ml_packmx.printid <> :arg_printid
  1307. AND u_order_ml_packmx.flag = 1
  1308. AND u_order_ml_packmx.stopflag = 0
  1309. AND u_order_ml_packmx.kind = 0
  1310. AND u_order_ml_packmx.mtrlid = :arg_s_mx.mtrlid
  1311. AND u_order_ml_packmx.status = :arg_s_mx.status
  1312. AND u_order_ml_packmx.woodcode = :arg_s_mx.woodcode
  1313. And u_order_ml_packmx.pcode = :arg_s_mx.pcode;
  1314. IF sqlca.SQLCode <> 0 THEN
  1315. arg_msg = '查询单据明细其它行相同包件已审数量失败,'+sqlca.SQLErrText
  1316. rslt = 0
  1317. GOTO ext
  1318. END IF
  1319. IF IsNull(ld_mxqty_audit_notstop) THEN ld_mxqty_audit_notstop = 0
  1320. ld_Sonscale_saletaskmx_pf = ld_mxqty_audit_notstop
  1321. ld_Sonscale_fm_saletaskmx_pf = ld_orderqty
  1322. //
  1323. IF ld_mxqty_audit_notstop = 0 THEN
  1324. DELETE FROM u_SaleTaskMx_pf
  1325. WHERE scid = :scid
  1326. AND taskid = :taskid
  1327. AND printid = :taskprintid
  1328. AND sonmtrlid = :arg_s_mx.mtrlid
  1329. AND status = :arg_s_mx.status
  1330. AND woodcode = :arg_s_mx.woodcode
  1331. And pcode = :arg_s_mx.pcode;
  1332. IF sqlca.SQLCode <> 0 THEN
  1333. rslt = 0
  1334. arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
  1335. GOTO ext
  1336. END IF
  1337. ELSE
  1338. UPDATE u_SaleTaskMx_pf
  1339. SET Sonscale = :ld_Sonscale_saletaskmx_pf,
  1340. Sonscale_fm = :ld_Sonscale_fm_saletaskmx_pf
  1341. WHERE scid = :scid
  1342. AND taskid = :taskid
  1343. AND printid = :taskprintid
  1344. AND sonmtrlid = :arg_s_mx.mtrlid
  1345. AND status = :arg_s_mx.status
  1346. AND woodcode = :arg_s_mx.woodcode
  1347. And pcode = :arg_s_mx.pcode;
  1348. IF sqlca.SQLCode <> 0 THEN
  1349. rslt = 0
  1350. arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
  1351. GOTO ext
  1352. END IF
  1353. END IF
  1354. UPDATE u_order_ml_packmx
  1355. SET orderid = 0,
  1356. ordercode = '',
  1357. flag = 0,
  1358. auditdate = :null_dt,
  1359. auditemp = '',
  1360. getbarid = 0,
  1361. getbarcode = '',
  1362. printid_tree = 0
  1363. WHERE billid = :arg_billid
  1364. And printid = :arg_printid;
  1365. IF sqlca.SQLCode <> 0 THEN
  1366. rslt = 0
  1367. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1368. GOTO ext
  1369. END IF
  1370. ELSEIF arg_s_mx.Kind = 1 THEN
  1371. IF uo_zl.stoporder_cancel(scid,arg_s_mx.orderid,0,arg_msg,False) = 0 THEN
  1372. rslt = 0
  1373. arg_msg = '终止相关生产指令单失败,'+arg_msg
  1374. GOTO ext
  1375. END IF
  1376. //作废相关条码生成单(如果存在)
  1377. IF arg_s_mx.getbarid > 0 THEN
  1378. ds_gb_mx.Retrieve(arg_s_mx.getbarid)
  1379. FOR ll_i = 1 To ds_gb_mx.RowCount()
  1380. ls_barcode = ds_gb_mx.Object.barcode[ll_i]
  1381. IF uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 THEN
  1382. rslt = 0
  1383. GOTO ext
  1384. END IF
  1385. NEXT
  1386. END IF
  1387. Select mtrlid,orderqty
  1388. Into :ll_mtrlid_order,:ld_orderqty
  1389. From u_order_ml
  1390. Where scid = :scid
  1391. And orderid = :orderid;
  1392. If sqlca.SQLCode <> 0 Then
  1393. rslt = 0
  1394. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1395. Goto ext
  1396. End If
  1397. UPDATE u_SaleTaskMx_pf
  1398. SET Sonscale = :arg_s_mx.qty
  1399. WHERE scid = :scid
  1400. AND taskid = :taskid
  1401. AND printid = :taskprintid
  1402. AND sonmtrlid = :arg_s_mx.mtrlid
  1403. AND status = :arg_s_mx.status
  1404. AND woodcode = :arg_s_mx.woodcode
  1405. And pcode = :arg_s_mx.pcode;
  1406. IF sqlca.SQLCode = 0 THEN
  1407. IF sqlca.SQLNRows = 0 THEN
  1408. INSERT INTO u_SaleTaskMx_pf
  1409. (scid,
  1410. taskid,
  1411. printid,
  1412. mtrlid,
  1413. sonmtrlid,
  1414. status,
  1415. woodcode,
  1416. pcode,
  1417. Sonscale,
  1418. Sonscale_fm)
  1419. VALUES (:scid,
  1420. :taskid,
  1421. :taskprintid,
  1422. :ll_mtrlid_order,
  1423. :arg_s_mx.mtrlid,
  1424. :arg_s_mx.status,
  1425. :arg_s_mx.woodcode,
  1426. :arg_s_mx.pcode,
  1427. :arg_s_mx.qty,
  1428. :ld_orderqty);
  1429. IF sqlca.SQLCode <> 0 THEN
  1430. rslt = 0
  1431. arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
  1432. GOTO ext
  1433. END IF
  1434. END IF
  1435. ELSE
  1436. rslt = 0
  1437. arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
  1438. GOTO ext
  1439. END IF
  1440. UPDATE u_order_ml_packmx
  1441. SET flag = 0,
  1442. auditdate = :null_dt,
  1443. auditemp = ''
  1444. WHERE billid = :arg_billid
  1445. And printid = :arg_printid;
  1446. IF sqlca.SQLCode <> 0 THEN
  1447. rslt = 0
  1448. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1449. GOTO ext
  1450. END IF
  1451. END IF
  1452. ext:
  1453. IF rslt = 0 THEN
  1454. ROLLBACK;
  1455. ELSEIF rslt = 1 And arg_ifcommit THEN
  1456. COMMIT;
  1457. END IF
  1458. Destroy uo_zl
  1459. Destroy uo_get
  1460. Destroy ds_gb_mx
  1461. RETURN rslt
  1462. end function
  1463. public function integer stopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1464. DateTime null_dt
  1465. Long ll_i
  1466. String ls_barcode
  1467. SetNull(null_dt)
  1468. uo_order_ml uo_zl
  1469. uo_zl = Create uo_order_ml
  1470. uo_getbar uo_get
  1471. uo_get = Create uo_getbar
  1472. datastore ds_gb_mx
  1473. ds_gb_mx = Create datastore
  1474. ds_gb_mx.DataObject = 'dw_getbarmx_edit'
  1475. ds_gb_mx.SetTransObject(sqlca)
  1476. s_order_ml_packmx arg_s_mx
  1477. s_getbar arg_s_gb,arg_s_gb_null
  1478. If p_getinfo(arg_billid,arg_msg) = 0 Then
  1479. rslt = 0
  1480. Goto ext
  1481. End If
  1482. If getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 Then
  1483. rslt = 0
  1484. Goto ext
  1485. End If
  1486. If flag <> 1 Then
  1487. rslt = 0
  1488. arg_msg = '必须先审核单据才能终止明细,请检查'
  1489. Goto ext
  1490. End If
  1491. If arg_s_mx.flag = 0 Then
  1492. rslt = 0
  1493. arg_msg = '明细未审核,不能终止'
  1494. Goto ext
  1495. End If
  1496. If arg_s_mx.stopflag = 1 Then
  1497. rslt = 0
  1498. arg_msg = '明细已终止,不能再执行终止操作'
  1499. Goto ext
  1500. End If
  1501. if arg_s_mx.Kind = 1 Then
  1502. rslt = 0
  1503. arg_msg = '明细为终止类型明细,不能执行终止操作'
  1504. Goto ext
  1505. End If
  1506. If arg_s_mx.Kind = 0 Then
  1507. If uo_zl.stoporder(scid,arg_s_mx.orderid,0,'包件变更单自动终止',arg_msg,False) = 0 Then
  1508. rslt = 0
  1509. arg_msg = '终止相关生产指令单失败,'+arg_msg
  1510. Goto ext
  1511. End If
  1512. //作废相关条码生成单(如果存在)
  1513. If arg_s_mx.getbarid > 0 Then
  1514. ds_gb_mx.Retrieve(arg_s_mx.getbarid)
  1515. For ll_i = 1 To ds_gb_mx.RowCount()
  1516. ls_barcode = ds_gb_mx.Object.barcode[ll_i]
  1517. If uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 Then
  1518. rslt = 0
  1519. Goto ext
  1520. End If
  1521. Next
  1522. End If
  1523. Delete From u_SaleTaskMx_pf
  1524. Where scid = :scid
  1525. And taskid = :taskid
  1526. And printid = :taskprintid
  1527. And sonmtrlid = :arg_s_mx.mtrlid
  1528. And status = :arg_s_mx.status
  1529. And woodcode = :arg_s_mx.woodcode
  1530. And pcode = :arg_s_mx.pcode;
  1531. If sqlca.SQLCode <> 0 Then
  1532. rslt = 0
  1533. arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
  1534. Goto ext
  1535. End If
  1536. End If
  1537. Update u_order_ml_packmx
  1538. Set stopflag = 1,
  1539. stopdate = getdate(),
  1540. stopemp = :publ_operator
  1541. Where billid = :arg_billid
  1542. And printid = :arg_printid;
  1543. If sqlca.SQLCode <> 0 Then
  1544. rslt = 0
  1545. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1546. Goto ext
  1547. End If
  1548. ext:
  1549. If rslt = 0 Then
  1550. Rollback;
  1551. ElseIf rslt = 1 And arg_ifcommit Then
  1552. Commit;
  1553. End If
  1554. Destroy uo_zl
  1555. Destroy uo_get
  1556. Destroy ds_gb_mx
  1557. Return rslt
  1558. end function
  1559. public function integer cstopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1560. DateTime null_dt
  1561. Long ll_i
  1562. String ls_barcode
  1563. Long ll_mtrlid_order
  1564. decimal ld_orderqty
  1565. SetNull(null_dt)
  1566. uo_order_ml uo_zl
  1567. uo_zl = Create uo_order_ml
  1568. uo_getbar uo_get
  1569. uo_get = Create uo_getbar
  1570. datastore ds_gb_mx
  1571. ds_gb_mx = Create datastore
  1572. ds_gb_mx.DataObject = 'dw_getbarmx_edit'
  1573. ds_gb_mx.SetTransObject(sqlca)
  1574. s_order_ml_packmx arg_s_mx
  1575. s_getbar arg_s_gb,arg_s_gb_null
  1576. If p_getinfo(arg_billid,arg_msg) = 0 Then
  1577. rslt = 0
  1578. Goto ext
  1579. End If
  1580. If getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 Then
  1581. rslt = 0
  1582. Goto ext
  1583. End If
  1584. If flag <> 1 Then
  1585. rslt = 0
  1586. arg_msg = '必须先审核单据才能审核明细,请检查'
  1587. Goto ext
  1588. End If
  1589. If arg_s_mx.flag = 0 Then
  1590. rslt = 0
  1591. arg_msg = '明细未审核,不能终止'
  1592. Goto ext
  1593. End If
  1594. If arg_s_mx.stopflag = 0 Then
  1595. rslt = 0
  1596. arg_msg = '明细未终止,不能执行取消终止操作'
  1597. Goto ext
  1598. End If
  1599. If arg_s_mx.Kind = 0 Then
  1600. If uo_zl.stoporder_cancel(scid,arg_s_mx.orderid,0,arg_msg,False) = 0 Then
  1601. rslt = 0
  1602. arg_msg = '取消终止相关生产指令单失败,'+arg_msg
  1603. Goto ext
  1604. End If
  1605. //取消作废相关条码生成单(如果存在)
  1606. If arg_s_mx.getbarid > 0 Then
  1607. ds_gb_mx.Retrieve(arg_s_mx.getbarid)
  1608. For ll_i = 1 To ds_gb_mx.RowCount()
  1609. ls_barcode = ds_gb_mx.Object.barcode[ll_i]
  1610. If uo_get.uof_barcode_inuse(ls_barcode,1,False,arg_msg) = 0 Then
  1611. rslt = 0
  1612. Goto ext
  1613. End If
  1614. Next
  1615. End If
  1616. Select mtrlid,orderqty
  1617. Into :ll_mtrlid_order,:ld_orderqty
  1618. From u_order_ml
  1619. Where scid = :scid
  1620. And orderid = :orderid;
  1621. If sqlca.SQLCode <> 0 Then
  1622. rslt = 0
  1623. arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
  1624. Goto ext
  1625. End If
  1626. Update u_SaleTaskMx_pf
  1627. Set Sonscale = :arg_s_mx.qty
  1628. Where scid = :scid
  1629. And taskid = :taskid
  1630. And printid = :taskprintid
  1631. And sonmtrlid = :arg_s_mx.mtrlid
  1632. And status = :arg_s_mx.status
  1633. And woodcode = :arg_s_mx.woodcode
  1634. And pcode = :arg_s_mx.pcode;
  1635. If sqlca.SQLCode = 0 Then
  1636. If sqlca.SQLNRows = 0 Then
  1637. Insert Into u_SaleTaskMx_pf
  1638. (scid,
  1639. taskid,
  1640. printid,
  1641. mtrlid,
  1642. sonmtrlid,
  1643. status,
  1644. woodcode,
  1645. pcode,
  1646. Sonscale,
  1647. Sonscale_fm)
  1648. Values (:scid,
  1649. :taskid,
  1650. :taskprintid,
  1651. :ll_mtrlid_order,
  1652. :arg_s_mx.mtrlid,
  1653. :arg_s_mx.status,
  1654. :arg_s_mx.woodcode,
  1655. :arg_s_mx.pcode,
  1656. :arg_s_mx.qty,
  1657. :ld_orderqty);
  1658. If sqlca.SQLCode <> 0 Then
  1659. rslt = 0
  1660. arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
  1661. Goto ext
  1662. End If
  1663. End If
  1664. Else
  1665. rslt = 0
  1666. arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
  1667. Goto ext
  1668. End If
  1669. End If
  1670. Update u_order_ml_packmx
  1671. Set stopflag = 0,
  1672. stopdate = :null_dt,
  1673. stopemp = ''
  1674. Where billid = :arg_billid
  1675. And printid = :arg_printid;
  1676. If sqlca.SQLCode <> 0 Then
  1677. rslt = 0
  1678. arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
  1679. Goto ext
  1680. End If
  1681. ext:
  1682. If rslt = 0 Then
  1683. Rollback;
  1684. ElseIf rslt = 1 And arg_ifcommit Then
  1685. Commit;
  1686. End If
  1687. Destroy uo_zl
  1688. Destroy uo_get
  1689. Destroy ds_gb_mx
  1690. Return rslt
  1691. end function
  1692. public function integer uof_packmx (s_order_ml_packmx arg_s_packmx, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
  1693. Int li_ifpack
  1694. Long ll_cnt_mx,ll_max_printid
  1695. s_order_ml_packmx arg_s_mx[]
  1696. IF arg_s_packmx.billid = 0 THEN
  1697. arg_msg = '错误的单据唯一码'
  1698. rslt = 0
  1699. GOTO ext
  1700. END IF
  1701. IF getinfo(arg_s_packmx.billid,arg_s_mx,ll_cnt_mx,arg_msg) = 0 THEN
  1702. rslt = 0
  1703. GOTO ext
  1704. END IF
  1705. IF flag <> 1 THEN
  1706. rslt = 0
  1707. arg_msg = '单据未审核,操作取消'
  1708. GOTO ext
  1709. END IF
  1710. SELECT ifpack
  1711. INTO :li_ifpack
  1712. FROM u_mtrldef
  1713. Where mtrlid = :arg_s_packmx.mtrlid;
  1714. IF sqlca.SQLCode <> 0 THEN
  1715. arg_msg = '查询物料信息失败,'+sqlca.SQLErrText
  1716. rslt = 0
  1717. GOTO ext
  1718. END IF
  1719. IF li_ifpack <> 2 THEN
  1720. arg_msg = '物料不是个性包件,操作取消'
  1721. rslt = 0
  1722. GOTO ext
  1723. END IF
  1724. IF arg_s_packmx.printid = -1 THEN
  1725. IF arg_s_packmx.qty <= 0 THEN
  1726. arg_msg = '请录入正确的数量'
  1727. rslt = 0
  1728. GOTO ext
  1729. END IF
  1730. IF arg_s_packmx.packqty <= 0 THEN
  1731. arg_msg = '请录入正确的包装基数'
  1732. rslt = 0
  1733. GOTO ext
  1734. END IF
  1735. IF arg_s_packmx.storageid = 0 THEN
  1736. arg_msg = '请录入仓库'
  1737. rslt = 0
  1738. GOTO ext
  1739. END IF
  1740. SELECT max(printid)
  1741. INTO :ll_max_printid
  1742. FROM u_order_ml_packmx
  1743. Where billid = :arg_s_packmx.billid;
  1744. IF sqlca.SQLCode <> 0 THEN
  1745. arg_msg = '查询单据最新明细序号printid失败,'+sqlca.SQLErrText
  1746. rslt = 0
  1747. GOTO ext
  1748. END IF
  1749. INSERT INTO u_order_ml_packmx
  1750. (billid,
  1751. printid,
  1752. mtrlid,
  1753. status,
  1754. woodcode,
  1755. pcode,
  1756. qty,
  1757. packqty,
  1758. orderdate,
  1759. requiredate,
  1760. storageid,
  1761. kind)
  1762. VALUES (:arg_s_packmx.billid,
  1763. :ll_max_printid + 1,
  1764. :arg_s_packmx.mtrlid,
  1765. :arg_s_packmx.status,
  1766. :arg_s_packmx.woodcode,
  1767. :arg_s_packmx.pcode,
  1768. :arg_s_packmx.qty,
  1769. :arg_s_packmx.packqty,
  1770. :arg_s_packmx.orderdate,
  1771. :arg_s_packmx.requiredate,
  1772. :arg_s_packmx.storageid,
  1773. :arg_s_packmx.kind);
  1774. IF sqlca.SQLCode <> 0 THEN
  1775. rslt = 0
  1776. arg_msg = '增加包件操作失败,'+sqlca.SQLErrText
  1777. GOTO ext
  1778. END IF
  1779. ELSE
  1780. UPDATE u_order_ml_packmx
  1781. SET mtrlid = :arg_s_packmx.mtrlid,
  1782. status = :arg_s_packmx.status,
  1783. woodcode = :arg_s_packmx.woodcode,
  1784. pcode = :arg_s_packmx.pcode,
  1785. qty = :arg_s_packmx.qty,
  1786. packqty = :arg_s_packmx.packqty,
  1787. storageid = :arg_s_packmx.storageid,
  1788. orderdate = :arg_s_packmx.orderdate,
  1789. requiredate = :arg_s_packmx.requiredate
  1790. WHERE u_order_ml_packmx.billid = :arg_s_packmx.billid
  1791. And u_order_ml_packmx.printid = :arg_s_packmx.printid;
  1792. IF sqlca.SQLCode <> 0 THEN
  1793. rslt = 0
  1794. arg_msg = '修改包件操作失败,'+sqlca.SQLErrText
  1795. GOTO ext
  1796. END IF
  1797. END IF
  1798. ext:
  1799. IF rslt = 0 THEN
  1800. ROLLBACK;
  1801. ELSEIF rslt = 1 And arg_ifcommit THEN
  1802. COMMIT;
  1803. END IF
  1804. RETURN rslt
  1805. end function
  1806. on uo_order_ml_pack.create
  1807. call super::create
  1808. TriggerEvent( this, "constructor" )
  1809. end on
  1810. on uo_order_ml_pack.destroy
  1811. TriggerEvent( this, "destructor" )
  1812. call super::destroy
  1813. end on
  1814. event constructor;String arg_msg
  1815. String str_optionvalue
  1816. str_optionvalue = ''
  1817. f_get_sys_option_value('142',str_optionvalue,arg_msg)
  1818. uo_option_inout_type = Long(str_optionvalue)
  1819. end event