1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161 |
- $PBExportHeader$uo_order_ml_pack.sru
- forward
- global type uo_order_ml_pack from nonvisualobject
- end type
- end forward
- global type uo_order_ml_pack from nonvisualobject
- end type
- global uo_order_ml_pack uo_order_ml_pack
- type variables
- Long uo_billid
- String uo_billcode
- Long scid
- Long orderid
- Decimal orderqty
- Long taskid,taskprintid
- String billemp
- Int flag
- Long uo_option_inout_type
- end variables
- forward prototypes
- public function integer save (s_order_ml_pack arg_s_pack, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer p_getinfo (long arg_billid, ref string arg_msg)
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit)
- public function integer getinfo (long arg_billid, ref s_order_ml_packmx arg_s_mx[], ref long arg_arr_cnt, ref string arg_msg)
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit)
- public function integer updatebegin (long arg_billid, ref string arg_msg)
- public function integer getinfo_mx (long arg_billid, long arg_printid, ref s_order_ml_packmx arg_s_mx, ref string arg_msg)
- public function integer audit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer caudit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer stopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer cstopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit)
- public function integer uof_packmx (s_order_ml_packmx arg_s_packmx, ref string arg_msg, boolean arg_ifcommit)
- end prototypes
- public function integer save (s_order_ml_pack arg_s_pack, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime server_dt
- Long ll_billid
- String ls_billcode
- String ls_sccode
- Long it_mxbt,ll_i,ll_j
- Long cnt
- Int li_ifpack
- Long ll_outtype,ll_outtype_storage
- Boolean lb_find = False
- If IsNull(arg_s_pack.billid) Then arg_s_pack.billid = 0
- If IsNull(arg_s_pack.scid) Then arg_s_pack.scid = 0
- If IsNull(arg_s_pack.orderid) Then arg_s_pack.orderid = 0
- If IsNull(arg_s_pack.orderqty) Then arg_s_pack.orderqty = 0
- If IsNull(arg_s_pack.taskid) Then arg_s_pack.taskid = 0
- If IsNull(arg_s_pack.taskprintid) Then arg_s_pack.taskprintid = 0
- If IsNull(arg_s_pack.billemp) Then arg_s_pack.billemp = ''
- If arg_s_pack.orderid = 0 Then
- rslt = 0
- arg_msg = '请选择指令单'
- Goto ext
- End If
- If arg_s_pack.billemp = '' Then
- arg_msg = '请输入经手人'
- rslt = 0
- Goto ext
- End If
- //检查指令单是否已开过生产计划包件变更单,如果有,检查之前开的单是否全部终止包件明细
- Select count(*)
- Into :cnt
- From u_order_ml_pack Inner JOIN
- u_order_ml_packmx ON u_order_ml_pack.billid = u_order_ml_packmx.billid
- Where u_order_ml_pack.scid = :arg_s_pack.scid
- And u_order_ml_pack.orderid = :arg_s_pack.orderid
- And u_order_ml_pack.billid <> :arg_s_pack.billid
- And u_order_ml_packmx.stopflag = 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询指令单是否已开过生产计划包件变更单失败,'+sqlca.SQLErrText
- Goto ext
- End If
- If cnt > 0 Then
- rslt = 0
- arg_msg = '指令单已开过其它生产计划包件变更单,如果想重新开单,请先把之前的变更单明细全部终止'
- Goto ext
- End If
- it_mxbt = UpperBound(arg_s_pack.arg_s_mx)
- If it_mxbt <= 0 Then
- rslt = 0
- arg_msg = "没有正确明细内容"
- Goto ext
- End If
- Select Top 1 getdate() Into :server_dt From u_user;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "查询操作失败,日期 "
- Goto ext
- End If
- For ll_i = 1 To it_mxbt
- If arg_s_pack.arg_s_mx[ll_i].Kind = 1 Then Continue
-
- If arg_s_pack.arg_s_mx[ll_i].storageid = 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行,请选择仓库'
- Goto ext
- End If
-
- //限制必须是个性包件
- Select ifpack,outtype
- Into :li_ifpack,:ll_outtype
- From u_mtrldef
- Where mtrlid = :arg_s_pack.arg_s_mx[ll_i].mtrlid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,查询是否属于个性包件失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If li_ifpack <> 2 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细不是个性包件,不能保存,请检查'
- Goto ext
- End If
- //
-
- If ll_outtype = 2 Then
- Select outtype
- Into :ll_outtype_storage
- From u_storage
- Where storageid = :arg_s_pack.arg_s_mx[ll_i].storageid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行,查询仓库进出仓策略失败'
- Goto ext
- End If
-
- If ll_outtype_storage <> 2 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行,包件使用条码出仓,应该选择使用条码出仓的仓库'
- Goto ext
- End If
- End If
-
- If arg_s_pack.arg_s_mx[ll_i].qty <= 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,不合理的包件数量'
- Goto ext
- End If
-
- If arg_s_pack.arg_s_mx[ll_i].packqty <= 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,不合理的包装基数'
- Goto ext
- End If
-
- If arg_s_pack.arg_s_mx[ll_i].orderdate > arg_s_pack.arg_s_mx[ll_i].requiredate Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,不合理的指令单开始结束日期'
- Goto ext
- End If
-
- //检查终止类型中是否有相同包件明细,有则不作下面检查
- lb_find = False
- For ll_j = 1 To it_mxbt
- If arg_s_pack.arg_s_mx[ll_j].Kind = 0 Then Continue
-
- If arg_s_pack.arg_s_mx[ll_i].mtrlid = arg_s_pack.arg_s_mx[ll_j].mtrlid And &
- arg_s_pack.arg_s_mx[ll_i].status = arg_s_pack.arg_s_mx[ll_j].status And &
- arg_s_pack.arg_s_mx[ll_i].woodcode = arg_s_pack.arg_s_mx[ll_j].woodcode And &
- arg_s_pack.arg_s_mx[ll_i].pcode = arg_s_pack.arg_s_mx[ll_j].pcode Then
- lb_find = True
- Exit
- End If
-
- Next
-
- If lb_find = False Then
- Select count(*)
- Into :cnt
- From u_order_ml
- Where ordertype = 4
- And scid = :arg_s_pack.scid
- And pzlorderid = :arg_s_pack.orderid
- And mtrlid = :arg_s_pack.arg_s_mx[ll_i].mtrlid
- And status_mode = :arg_s_pack.arg_s_mx[ll_i].status
- And woodcode = :arg_s_pack.arg_s_mx[ll_i].woodcode
- And pcode = :arg_s_pack.arg_s_mx[ll_i].pcode
- And status = 1;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,查询包件指令是否已有相同信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- If cnt > 0 Then
- rslt = 0
- arg_msg = '第'+String(ll_i)+'行明细,包件指令已存在相同信息,不能重复添加'
- Goto ext
- End If
- End If
- Next
- If arg_s_pack.billid = 0 Then
- ll_billid = f_sys_scidentity(0,"u_order_ml_pack","billid",arg_msg,True,id_sqlca)
-
- If ll_billid <= 0 Then
- rslt = 0
- Goto ext
- End If
-
- If f_get_sccode(arg_s_pack.scid,sqlca,ls_sccode,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
-
- ls_billcode = getid(arg_s_pack.scid,ls_sccode + 'TO',Date(server_dt),False,sqlca)
- If ls_billcode = "err" Then
- rslt = 0
- arg_msg = "无法获取单据编号"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- Insert Into u_order_ml_pack
- (billid,
- billcode,
- scid,
- orderid,
- orderqty,
- taskid,
- taskprintid,
- billemp,
- opdate,
- opemp)
- Values (:ll_billid,
- :ls_billcode,
- :arg_s_pack.scid,
- :arg_s_pack.orderid,
- :arg_s_pack.orderqty,
- :arg_s_pack.taskid,
- :arg_s_pack.taskprintid,
- :arg_s_pack.billemp,
- :server_dt,
- :arg_opemp);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '因网络或其它原因导致建立单据失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- For ll_i = 1 To it_mxbt
- Insert Into u_order_ml_packmx
- (billid,
- printid,
- scid,
- mtrlid,
- status,
- woodcode,
- pcode,
- qty,
- packqty,
- orderdate,
- requiredate,
- storageid,
- kind,
- orderid,
- ordercode,
- getbarid,
- getbarcode)
- Values (:ll_billid,
- :arg_s_pack.arg_s_mx[ll_i].printid,
- :arg_s_pack.scid,
- :arg_s_pack.arg_s_mx[ll_i].mtrlid,
- :arg_s_pack.arg_s_mx[ll_i].status,
- :arg_s_pack.arg_s_mx[ll_i].woodcode,
- :arg_s_pack.arg_s_mx[ll_i].pcode,
- :arg_s_pack.arg_s_mx[ll_i].qty,
- :arg_s_pack.arg_s_mx[ll_i].packqty,
- :arg_s_pack.arg_s_mx[ll_i].orderdate,
- :arg_s_pack.arg_s_mx[ll_i].requiredate,
- :arg_s_pack.arg_s_mx[ll_i].storageid,
- :arg_s_pack.arg_s_mx[ll_i].kind,
- :arg_s_pack.arg_s_mx[ll_i].orderid,
- :arg_s_pack.arg_s_mx[ll_i].ordercode,
- :arg_s_pack.arg_s_mx[ll_i].getbarid,
- :arg_s_pack.arg_s_mx[ll_i].getbarcode);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入单据明细操作失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- uo_billid = ll_billid
- uo_billcode = ls_billcode
- Else
- Update u_order_ml_pack
- Set orderid = :arg_s_pack.orderid,
- orderqty = :arg_s_pack.orderqty,
- taskid = :arg_s_pack.taskid,
- taskprintid = :arg_s_pack.taskprintid,
- billemp = :arg_s_pack.billemp,
- moddate = :server_dt,
- modemp = :arg_opemp
- Where billid = :arg_s_pack.billid
- And flag = 0;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新单据失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- Delete From u_order_ml_packmx
- Where billid = :arg_s_pack.billid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = "删除旧有明细操作失败"+"~n"+sqlca.SQLErrText
- Goto ext
- End If
-
- For ll_i = 1 To it_mxbt
- Insert Into u_order_ml_packmx
- (billid,
- printid,
- scid,
- mtrlid,
- status,
- woodcode,
- pcode,
- qty,
- packqty,
- orderdate,
- requiredate,
- storageid,
- kind,
- orderid,
- ordercode,
- getbarid,
- getbarcode)
- Values (:arg_s_pack.billid,
- :arg_s_pack.arg_s_mx[ll_i].printid,
- :arg_s_pack.scid,
- :arg_s_pack.arg_s_mx[ll_i].mtrlid,
- :arg_s_pack.arg_s_mx[ll_i].status,
- :arg_s_pack.arg_s_mx[ll_i].woodcode,
- :arg_s_pack.arg_s_mx[ll_i].pcode,
- :arg_s_pack.arg_s_mx[ll_i].qty,
- :arg_s_pack.arg_s_mx[ll_i].packqty,
- :arg_s_pack.arg_s_mx[ll_i].orderdate,
- :arg_s_pack.arg_s_mx[ll_i].requiredate,
- :arg_s_pack.arg_s_mx[ll_i].storageid,
- :arg_s_pack.arg_s_mx[ll_i].kind,
- :arg_s_pack.arg_s_mx[ll_i].orderid,
- :arg_s_pack.arg_s_mx[ll_i].ordercode,
- :arg_s_pack.arg_s_mx[ll_i].getbarid,
- :arg_s_pack.arg_s_mx[ll_i].getbarcode);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入单据明细操作失败,'+sqlca.SQLErrText
- Goto ext
- End If
- Next
-
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf arg_ifcommit And rslt = 1 Then
- Commit;
- End If
- Return rslt
- end function
- public function integer del (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_flag,li_ifauto,li_billtype
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = '单据不是在待审核状态,不可以删除'
- GOTO ext
- END IF
- DELETE FROM u_order_ml_packmx
- WHERE billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据明细操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- DELETE FROM u_order_ml_pack
- WHERE billid = :arg_billid
- AND flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "删除单据操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer p_getinfo (long arg_billid, ref string arg_msg);Int rslt = 1
- SELECT billid,
- billcode,
- flag,
- scid,
- orderid,
- orderqty,
- taskid,
- taskprintid,
- billemp
- INTO :uo_billid,
- :uo_billcode,
- :flag,
- :scid,
- :orderid,
- :orderqty,
- :taskid,
- :taskprintid,
- :billemp
- FROM u_order_ml_pack
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询单据信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- public function integer audit (long arg_billid, string arg_opemp, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = '单据只有在待审核状态下才能执行审核操作'
- GOTO ext
- END IF
- UPDATE u_order_ml_pack
- SET auditemp = :arg_opemp,
- auditdate = getdate(),
- flag = 1
- WHERE billid = :arg_billid
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致单据审核操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- 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
- Long i = 1,no_mxcheck = 0
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- DECLARE cur_pack_mx CURSOR FOR
- SELECT billid,
- printid,
- scid,
- mtrlid,
- status,
- woodcode,
- pcode,
- qty,
- packqty,
- orderdate,
- requiredate,
- orderid,
- ordercode,
- flag,
- getbarid,
- getbarcode,
- stopflag,
- storageid
- FROM u_order_ml_packmx
- Where billid = :arg_billid
- order by printid;
-
- OPEN cur_pack_mx;
- FETCH cur_pack_mx INTO :arg_s_mx[i].billid,
- :arg_s_mx[i].printid,
- :arg_s_mx[i].scid,
- :arg_s_mx[i].mtrlid,
- :arg_s_mx[i].status,
- :arg_s_mx[i].woodcode,
- :arg_s_mx[i].pcode,
- :arg_s_mx[i].qty,
- :arg_s_mx[i].packqty,
- :arg_s_mx[i].orderdate,
- :arg_s_mx[i].requiredate,
- :arg_s_mx[i].orderid,
- :arg_s_mx[i].ordercode,
- :arg_s_mx[i].flag,
- :arg_s_mx[i].getbarid,
- :arg_s_mx[i].getbarcode,
- :arg_s_mx[i].stopflag,
- :arg_s_mx[i].storageid;
-
- DO WHILE sqlca.SQLCode = 0
- i++
- FETCH cur_pack_mx INTO :arg_s_mx[i].billid,
- :arg_s_mx[i].printid,
- :arg_s_mx[i].scid,
- :arg_s_mx[i].mtrlid,
- :arg_s_mx[i].status,
- :arg_s_mx[i].woodcode,
- :arg_s_mx[i].pcode,
- :arg_s_mx[i].qty,
- :arg_s_mx[i].packqty,
- :arg_s_mx[i].orderdate,
- :arg_s_mx[i].requiredate,
- :arg_s_mx[i].orderid,
- :arg_s_mx[i].ordercode,
- :arg_s_mx[i].flag,
- :arg_s_mx[i].getbarid,
- :arg_s_mx[i].getbarcode,
- :arg_s_mx[i].stopflag,
- :arg_s_mx[i].storageid;
- LOOP
- CLOSE cur_pack_mx;
- //检验明细是否读入完整
- SELECT count(*) INTO :no_mxcheck
- FROM u_order_ml_packmx
- Where billid = :arg_billid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细"
- GOTO ext
- END IF
- IF i <> (no_mxcheck + 1) THEN
- rslt = 0
- arg_msg = "查询操作失败,单据明细内容"
- GOTO ext
- END IF
- arg_arr_cnt = i - 1
- ext:
- RETURN rslt
- end function
- public function integer caudit (long arg_billid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_cnt_mx,ll_i
- DateTime null_dt
- s_order_ml_packmx arg_s_mx[]
- SetNull(null_dt)
- IF getinfo(arg_billid,arg_s_mx,ll_cnt_mx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = '单据只有在已审核状态下才能执行撤审'
- GOTO ext
- END IF
- FOR ll_i = 1 To ll_cnt_mx
- IF arg_s_mx[ll_i].flag = 1 THEN
- rslt = 0
- arg_msg = '明细第'+String(arg_s_mx[ll_i].printid)+'行已经审核,不以撤审单据,请检查'
- GOTO ext
- END IF
- NEXT
- //更新审核标记
- UPDATE u_order_ml_pack
- SET auditemp = '',
- auditdate = :null_dt,
- flag = 0
- WHERE billid = :arg_billid
- And flag = 1;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = "因网络或其它原因导致单据撤审操作失败"+"~n"+sqlca.SQLErrText
- GOTO ext
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 AND arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- public function integer updatebegin (long arg_billid, ref string arg_msg);Int rslt = 1
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 0 THEN
- rslt = 0
- arg_msg = '单据只有待审核状态下才能修改'
- GOTO ext
- END IF
- ext:
- RETURN rslt
- end function
- 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
- IF arg_billid <= 0 THEN
- rslt = 0
- arg_msg = '错误的单据唯一码'
- GOTO ext
- END IF
- IF arg_printid <= 0 THEN
- rslt = 0
- arg_msg = '错误的明细序号'
- GOTO ext
- END IF
- Long ll_billid,ll_printid,ll_scid,ll_mtrlid
- String ls_status,ls_woodcode,ls_pcode
- Decimal ld_qty,ld_packqty
- DateTime ld_orderdate,ld_requiredate
- Long ll_orderid,ll_flag,ll_getbarid,ll_stopflag,ll_storageid,ll_printid_tree
- String ls_ordercode,ls_getbarcode
- int li_kind
- SELECT billid,
- printid,
- scid,
- mtrlid,
- status,
- woodcode,
- pcode,
- qty,
- packqty,
- orderdate,
- requiredate,
- orderid,
- ordercode,
- flag,
- getbarid,
- getbarcode,
- stopflag,
- storageid,
- printid_tree,
- kind
- INTO :ll_billid,
- :ll_printid,
- :ll_scid,
- :ll_mtrlid,
- :ls_status,
- :ls_woodcode,
- :ls_pcode,
- :ld_qty,
- :ld_packqty,
- :ld_orderdate,
- :ld_requiredate,
- :ll_orderid,
- :ls_ordercode,
- :ll_flag,
- :ll_getbarid,
- :ls_getbarcode,
- :ll_stopflag,
- :ll_storageid,
- :ll_printid_tree,
- :li_kind
- FROM u_order_ml_packmx
- WHERE billid = :arg_billid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- arg_s_mx.billid = ll_billid
- arg_s_mx.printid = ll_printid
- arg_s_mx.scid = ll_scid
- arg_s_mx.mtrlid = ll_mtrlid
- arg_s_mx.status = ls_status
- arg_s_mx.woodcode = ls_woodcode
- arg_s_mx.pcode = ls_pcode
- arg_s_mx.qty = ld_qty
- arg_s_mx.packqty = ld_packqty
- arg_s_mx.orderdate = ld_orderdate
- arg_s_mx.requiredate = ld_requiredate
- arg_s_mx.orderid = ll_orderid
- arg_s_mx.ordercode = ls_ordercode
- arg_s_mx.flag = ll_flag
- arg_s_mx.getbarid = ll_getbarid
- arg_s_mx.getbarcode = ls_getbarcode
- arg_s_mx.stopflag = ll_stopflag
- arg_s_mx.storageid = ll_storageid
- arg_s_mx.printid_tree = ll_printid_tree
- arg_s_mx.kind = li_kind
- ext:
- RETURN rslt
- end function
- public function integer audit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Long ll_i,cnt
- uo_order_ml uo_zl
- uo_zl = Create uo_order_ml
- uo_getbar uo_get
- uo_get = Create uo_getbar
- s_order_ml_packmx arg_s_mx
- s_getbar arg_s_gb,arg_s_gb_null
- datastore ds_gb_mx
- ds_gb_mx = Create datastore
- ds_gb_mx.DataObject = 'dw_getbarmx_edit'
- ds_gb_mx.SetTransObject(sqlca)
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = '必须先审核单据才能审核明细,请检查'
- GOTO ext
- END IF
- IF arg_s_mx.flag = 1 THEN
- rslt = 0
- arg_msg = '明细已审核,不能再审'
- GOTO ext
- END IF
- String ls_relcode,ls_taskrelcode
- Long ll_taskmxid
- String ls_gydscrp,ls_pfklmode
- DateTime ld_perfinishdate
- Long ll_level
- String ls_typename,ls_outtypestr
- Long ll_porderid
- Decimal ld_orderqty
- String ls_ordercode
- String ls_pfcode
- Long ll_produce_wrkgrpid
- Long ll_orderid_update,ll_getbarid_update
- String ls_ordercode_update,ls_getbarcode_update
- Long ll_outtype
- Long ll_balctype,ll_cusid
- Decimal ld_packqty,ld_qty
- Long ll_cnt,j,i,child_row
- String ls_barcode
- DateTime server_dt
- Long ll_mtrlid_order
- Long ll_dftscllwkpid,ll_printid_tree
- String ls_wpcode
- SELECT Top 1 getdate() Into :server_dt From u_user;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询操作失败,日期'
- GOTO ext
- END IF
- IF arg_s_mx.Kind = 0 THEN
- //0-新增
- cnt = 0
- SELECT count(*) INTO :cnt
- FROM u_order_ml_packmx
- WHERE billid = :arg_billid
- AND kind = 1
- And flag = 0;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据是否有终止类型明细未审核失败,原因:'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- IF cnt > 0 THEN
- arg_msg = '单据有终止类型明细未审核,请先审核终止类型明细'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT relcode,
- taskrelcode,
- taskmxid,
- gydscrp,
- pfklmode,
- perfinishdate,
- level,
- typename,
- outtypestr,
- porderid,
- ordercode,
- cusid,
- mtrlid,
- orderqty
- INTO :ls_relcode,
- :ls_taskrelcode,
- :ll_taskmxid,
- :ls_gydscrp,
- :ls_pfklmode,
- :ld_perfinishdate,
- :ll_level,
- :ls_typename,
- :ls_outtypestr,
- :ll_porderid,
- :ls_ordercode,
- :ll_cusid,
- :ll_mtrlid_order,
- :ld_orderqty
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- SELECT dftwrkGrpid,outtype,dftscllwkpid
- INTO :ll_produce_wrkgrpid,:ll_outtype,:ll_dftscllwkpid
- FROM u_mtrldef
- Where mtrlid = :arg_s_mx.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询明细包件默认制造车间失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ls_pfcode = f_get_dft_pf(arg_s_mx.mtrlid)
- ls_wpcode = f_get_dft_wp(arg_s_mx.mtrlid)
-
- //插入主计划运算表
- SELECT max(printid) INTO :ll_printid_tree
- FROM u_OrderRqMtrl_tree
- WHERE scid = :scid
- And orderid = :ll_porderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询主生产计划运算表信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF IsNull(ll_printid_tree) THEN ll_printid_tree = 0
- ll_printid_tree++
-
- INSERT INTO u_OrderRqMtrl_tree
- (scid,
- OrderID,
- MtrlID,
- wrkGrpid,
- RqQty,
- truerqqty,
- edate,
- RqDate,
- status,
- woodcode,
- pcode,
- lp,
- printid,
- pfcode,
- produce_scid,
- scllqty,
- produce_wrkGrpid)
- VALUES (:scid,
- :ll_porderid,
- :arg_s_mx.mtrlid,
- :ll_dftscllwkpid,
- :arg_s_mx.qty,
- :arg_s_mx.qty,
- :arg_s_mx.orderdate,
- :arg_s_mx.requiredate,
- :arg_s_mx.status,
- :arg_s_mx.woodcode,
- :arg_s_mx.pcode,
- 1,
- :ll_printid_tree,
- :ls_pfcode,
- :scid,
- :arg_s_mx.qty,
- :ll_produce_wrkgrpid);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入主生产计划运算表失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
-
-
- //生成相关生产指令单
- IF uo_zl.acceptmx(ls_relcode,&
- arg_s_mx.orderdate,&
- 0,&
- '',&
- 0,&
- arg_s_mx.mtrlid,&
- arg_s_mx.status,&
- arg_s_mx.woodcode,&
- arg_s_mx.pcode,&
- arg_s_mx.qty,&
- '',&
- publ_operator,&
- arg_s_mx.requiredate,&
- 4,&
- ls_taskrelcode,&
- ls_pfcode,&
- ll_taskmxid,&
- ll_porderid,&
- 1,&
- ll_produce_wrkgrpid,&
- ls_gydscrp,&
- ls_pfklmode,&
- 0,'',0,&
- '',&
- '',&
- scid,&
- ld_perfinishdate,&
- 0,&
- 0,&
- ll_level,&
- ls_typename,&
- ls_outtypestr,&
- orderid,&
- 0,&
- 0,0,0,&
- ls_wpcode,0,&
- arg_msg) = 0 THEN
- arg_msg = '建立相关生产指令单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- uo_zl.pzlordercode_tmp = ls_ordercode
-
- IF uo_zl.Save(arg_msg,False) = 0 THEN
- arg_msg = '保存相关生产指令单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- uo_zl.pzlordercode_tmp = ''
-
- IF uo_zl.audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
- GOTO ext
- END IF
-
- IF uo_zl.plan_audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '审核相关生产指令单失败(初审),'+arg_msg
- GOTO ext
- END IF
-
- IF uo_zl.sec_audit(scid,uo_zl.orderid_arr[1],arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '审核相关生产指令单失败(二审),'+arg_msg
- GOTO ext
- END IF
-
- ll_orderid_update = uo_zl.orderid
- ls_ordercode_update = uo_zl.ordercode
-
- //生成相关条码生成单
- IF ll_outtype = 2 And uo_option_inout_type = 2 THEN
- SELECT balctype INTO :ll_balctype
- FROM u_storage
- Where storageid = :arg_s_mx.storageid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询仓库是否使用客户库存失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- arg_s_gb = arg_s_gb_null
-
- arg_s_gb.scid = scid
- arg_s_gb.getbarid = 0
- arg_s_gb.getbardate = DateTime(Date(Today()),Time(0))
- arg_s_gb.ifrel = 1
- arg_s_gb.orderid = ll_orderid_update
- arg_s_gb.storageid = arg_s_mx.storageid
- arg_s_gb.mtrlid = arg_s_mx.mtrlid
-
- IF ll_balctype = 1 THEN
- arg_s_gb.cusid = ll_cusid
- ELSE
- arg_s_gb.cusid = 0
- END IF
-
- IF sys_option_taskplancode = 1 THEN
- arg_s_gb.plancode = ls_taskrelcode
- ELSE
- arg_s_gb.plancode = ''
- END IF
-
- arg_s_gb.status = arg_s_mx.status
- arg_s_gb.woodcode = arg_s_mx.woodcode
- arg_s_gb.pcode = arg_s_mx.pcode
-
- arg_s_gb.Location = ''
- arg_s_gb.packqty = arg_s_mx.packqty
- arg_s_gb.qty = arg_s_mx.qty
- arg_s_gb.dscrp = ''
- arg_s_gb.reason = ''
- arg_s_gb.buytaskprintid = 0
-
- arg_s_gb.mtrlcuscode = ls_ordercode
-
- arg_s_gb.relbillid = arg_billid
- arg_s_gb.relbillprintid = arg_printid
-
-
- //生成条码
- ds_gb_mx.Reset()
-
- ld_packqty = arg_s_mx.packqty
- ld_qty = arg_s_mx.qty
-
- IF ld_packqty >= 1 THEN
- ll_cnt = Ceiling(Truncate(ld_qty/ld_packqty,10))
- ELSE
- ll_cnt = Ceiling(ld_qty*ld_packqty)
- ld_packqty = Long(1/ld_packqty)
- END IF
-
- FOR j = 1 To ll_cnt
- ls_barcode = getid(0,"TXM",Date(server_dt),False,sqlca) //取得新单据编号
- IF ls_barcode = "err" THEN
- ls_barcode = ''
- arg_msg = '无法获取条码'
- GOTO ext
- END IF
-
- child_row = ds_gb_mx.InsertRow(0)
- ds_gb_mx.Object.barcode[child_row] = ls_barcode
-
- IF Mod(ld_qty,ld_packqty) = 0 THEN
- ds_gb_mx.Object.packqty[child_row] = ld_packqty
- ELSE
- IF j <> ll_cnt THEN
- ds_gb_mx.Object.packqty[child_row] = ld_packqty
- ELSE
- ds_gb_mx.Object.packqty[child_row] = ld_qty - ld_packqty * ( ll_cnt - 1 )
- END IF
- END IF
- NEXT
-
- ds_gb_mx.AcceptText()
-
- FOR j = 1 To ds_gb_mx.RowCount()
- arg_s_gb.arg_s_mx[j].barcode = ds_gb_mx.Object.barcode[j]
- arg_s_gb.arg_s_mx[j].packqty = ds_gb_mx.Object.packqty[j]
- arg_s_gb.arg_s_mx[j].qty = ds_gb_mx.Object.qty[j]
- arg_s_gb.arg_s_mx[j].mxdscrp = ''
- NEXT
-
- IF uo_get.Save(arg_s_gb,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '建立相关条码生成单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
-
- IF uo_get.auditing(uo_get.uo_getbarid,publ_operator,arg_msg,False) = 0 THEN
- arg_msg = '审核相关条码生成单失败,'+arg_msg
- rslt = 0
- GOTO ext
- END IF
-
- ll_getbarid_update = uo_get.uo_getbarid
- ls_getbarcode_update = uo_get.uo_getbarcode
- END IF
-
-
- //yyx2013-10-18
- Decimal ld_mxqty_audit_notstop
- Decimal ld_Sonscale_saletaskmx_pf
- Decimal ld_Sonscale_fm_saletaskmx_pf
-
- SELECT sum(u_order_ml_packmx.qty)
- INTO :ld_mxqty_audit_notstop
- FROM u_order_ml_packmx
- WHERE u_order_ml_packmx.billid = :arg_billid
- AND u_order_ml_packmx.printid <> :arg_printid
- AND u_order_ml_packmx.flag = 1
- AND u_order_ml_packmx.stopflag = 0
- AND u_order_ml_packmx.kind = 0
- AND u_order_ml_packmx.mtrlid = :arg_s_mx.mtrlid
- AND u_order_ml_packmx.status = :arg_s_mx.status
- AND u_order_ml_packmx.woodcode = :arg_s_mx.woodcode
- And u_order_ml_packmx.pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据明细其它行相同包件已审数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_mxqty_audit_notstop) THEN ld_mxqty_audit_notstop = 0
- ld_Sonscale_saletaskmx_pf = (arg_s_mx.qty + ld_mxqty_audit_notstop)
- ld_Sonscale_fm_saletaskmx_pf = ld_orderqty
- //
-
- UPDATE u_SaleTaskMx_pf
- SET Sonscale = :ld_Sonscale_saletaskmx_pf,
- Sonscale_fm = :ld_Sonscale_fm_saletaskmx_pf
- WHERE scid = :scid
- AND taskid = :taskid
- AND printid = :taskprintid
- AND sonmtrlid = :arg_s_mx.mtrlid
- AND status = :arg_s_mx.status
- AND woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
-
- INSERT INTO u_SaleTaskMx_pf
- (scid,
- taskid,
- printid,
- mtrlid,
- sonmtrlid,
- status,
- woodcode,
- pcode,
- Sonscale,
- Sonscale_fm)
- VALUES (:scid,
- :taskid,
- :taskprintid,
- :ll_mtrlid_order,
- :arg_s_mx.mtrlid,
- :arg_s_mx.status,
- :arg_s_mx.woodcode,
- :arg_s_mx.pcode,
- :ld_Sonscale_saletaskmx_pf,
- :ld_Sonscale_fm_saletaskmx_pf);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_order_ml_packmx
- SET orderid = :ll_orderid_update,
- ordercode = :ls_ordercode_update,
- flag = 1,
- auditdate = :server_dt,
- auditemp = :publ_operator,
- getbarid = :ll_getbarid_update,
- getbarcode = :ls_getbarcode_update,
- printid_tree = :ll_printid_tree
- WHERE billid = :arg_billid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- ELSEIF arg_s_mx.Kind = 1 THEN
- //1-终止
- IF uo_zl.stoporder(scid,arg_s_mx.orderid,0,'包件变更单自动终止',arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '终止相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
-
-
- //作废相关条码生成单(如果存在)
- IF arg_s_mx.getbarid > 0 THEN
- ds_gb_mx.Retrieve(arg_s_mx.getbarid)
-
- FOR ll_i = 1 To ds_gb_mx.RowCount()
- ls_barcode = ds_gb_mx.Object.barcode[ll_i]
- IF uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
-
- Delete From u_SaleTaskMx_pf
- Where scid = :scid
- And taskid = :taskid
- And printid = :taskprintid
- And sonmtrlid = :arg_s_mx.mtrlid
- And status = :arg_s_mx.status
- And woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- UPDATE u_order_ml_packmx
- SET flag = 1,
- auditdate = :server_dt,
- auditemp = :publ_operator
- WHERE billid = :arg_billid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_zl
- Destroy uo_get
- Destroy ds_gb_mx
- RETURN rslt
- end function
- public function integer caudit_mx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- SetNull(null_dt)
- Int li_status,li_flag
- Long ll_i
- String ls_barcode
- Decimal ld_orderqty
- Long ll_mtrlid_order
- uo_order_ml uo_zl
- uo_zl = Create uo_order_ml
- uo_getbar uo_get
- uo_get = Create uo_getbar
- datastore ds_gb_mx
- ds_gb_mx = Create datastore
- ds_gb_mx.DataObject = 'dw_getbarmx_edit'
- ds_gb_mx.SetTransObject(sqlca)
- s_order_ml_packmx arg_s_mx
- s_getbar arg_s_gb,arg_s_gb_null
- IF p_getinfo(arg_billid,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = '必须先审核单据才能审核明细,请检查'
- GOTO ext
- END IF
- IF arg_s_mx.flag = 0 THEN
- rslt = 0
- arg_msg = '明细未审核,不能撤审'
- GOTO ext
- END IF
- IF arg_s_mx.stopflag = 1 THEN
- rslt = 0
- arg_msg = '明细已终止,不能撤审'
- GOTO ext
- END IF
- IF arg_s_mx.Kind = 0 THEN
- SELECT orderqty
- INTO :ld_orderqty
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //删除相关条码生成单(如果存在)
- IF arg_s_mx.getbarid > 0 THEN
- SELECT flag
- INTO :li_flag
- FROM u_getbar
- Where getbarid = :arg_s_mx.getbarid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关条码生成单状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- IF li_flag = 1 THEN
- IF uo_get.c_auditing(arg_s_mx.getbarid,True,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关条码生成单,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_get.del(arg_s_mx.getbarid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关条码生成单,'+arg_msg
- GOTO ext
- END IF
-
- END IF
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :arg_s_mx.orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 1 THEN
- IF uo_zl.c_sec_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :arg_s_mx.orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 4 THEN
- IF uo_zl.c_plan_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
-
- SELECT status INTO :li_status
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :arg_s_mx.orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询相关指令单状态失败,'+arg_msg
- GOTO ext
- END IF
-
- IF li_status = 7 THEN
- IF uo_zl.c_audit(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '撤审相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
- END IF
-
- IF uo_zl.del(scid,arg_s_mx.orderid,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '删除相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
-
- //删除主生产计划运算表相应行
- Long ll_porderid
- SELECT porderid
- INTO :ll_porderid
- FROM u_order_ml
- WHERE scid = :scid
- And orderid = :orderid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- DELETE FROM u_OrderRqMtrl_tree
- WHERE scid = :scid
- AND orderid = :ll_porderid
- And printid = :arg_s_mx.printid_tree;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除主生产计划运算表对应信息失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- //yyx2013-10-18
- Decimal ld_mxqty_audit_notstop
- Decimal ld_Sonscale_saletaskmx_pf,ld_Sonscale_fm_saletaskmx_pf
-
- SELECT sum(u_order_ml_packmx.qty)
- INTO :ld_mxqty_audit_notstop
- FROM u_order_ml_packmx
- WHERE u_order_ml_packmx.billid = :arg_billid
- AND u_order_ml_packmx.printid <> :arg_printid
- AND u_order_ml_packmx.flag = 1
- AND u_order_ml_packmx.stopflag = 0
- AND u_order_ml_packmx.kind = 0
- AND u_order_ml_packmx.mtrlid = :arg_s_mx.mtrlid
- AND u_order_ml_packmx.status = :arg_s_mx.status
- AND u_order_ml_packmx.woodcode = :arg_s_mx.woodcode
- And u_order_ml_packmx.pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据明细其它行相同包件已审数量失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF IsNull(ld_mxqty_audit_notstop) THEN ld_mxqty_audit_notstop = 0
- ld_Sonscale_saletaskmx_pf = ld_mxqty_audit_notstop
- ld_Sonscale_fm_saletaskmx_pf = ld_orderqty
- //
-
- IF ld_mxqty_audit_notstop = 0 THEN
- DELETE FROM u_SaleTaskMx_pf
- WHERE scid = :scid
- AND taskid = :taskid
- AND printid = :taskprintid
- AND sonmtrlid = :arg_s_mx.mtrlid
- AND status = :arg_s_mx.status
- AND woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_SaleTaskMx_pf
- SET Sonscale = :ld_Sonscale_saletaskmx_pf,
- Sonscale_fm = :ld_Sonscale_fm_saletaskmx_pf
- WHERE scid = :scid
- AND taskid = :taskid
- AND printid = :taskprintid
- AND sonmtrlid = :arg_s_mx.mtrlid
- AND status = :arg_s_mx.status
- AND woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
-
- UPDATE u_order_ml_packmx
- SET orderid = 0,
- ordercode = '',
- flag = 0,
- auditdate = :null_dt,
- auditemp = '',
- getbarid = 0,
- getbarcode = '',
- printid_tree = 0
- WHERE billid = :arg_billid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSEIF arg_s_mx.Kind = 1 THEN
- IF uo_zl.stoporder_cancel(scid,arg_s_mx.orderid,0,arg_msg,False) = 0 THEN
- rslt = 0
- arg_msg = '终止相关生产指令单失败,'+arg_msg
- GOTO ext
- END IF
-
-
- //作废相关条码生成单(如果存在)
- IF arg_s_mx.getbarid > 0 THEN
- ds_gb_mx.Retrieve(arg_s_mx.getbarid)
-
- FOR ll_i = 1 To ds_gb_mx.RowCount()
- ls_barcode = ds_gb_mx.Object.barcode[ll_i]
- IF uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- NEXT
- END IF
-
- Select mtrlid,orderqty
- Into :ll_mtrlid_order,:ld_orderqty
- From u_order_ml
- Where scid = :scid
- And orderid = :orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- UPDATE u_SaleTaskMx_pf
- SET Sonscale = :arg_s_mx.qty
- WHERE scid = :scid
- AND taskid = :taskid
- AND printid = :taskprintid
- AND sonmtrlid = :arg_s_mx.mtrlid
- AND status = :arg_s_mx.status
- AND woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- IF sqlca.SQLCode = 0 THEN
- IF sqlca.SQLNRows = 0 THEN
- INSERT INTO u_SaleTaskMx_pf
- (scid,
- taskid,
- printid,
- mtrlid,
- sonmtrlid,
- status,
- woodcode,
- pcode,
- Sonscale,
- Sonscale_fm)
- VALUES (:scid,
- :taskid,
- :taskprintid,
- :ll_mtrlid_order,
- :arg_s_mx.mtrlid,
- :arg_s_mx.status,
- :arg_s_mx.woodcode,
- :arg_s_mx.pcode,
- :arg_s_mx.qty,
- :ld_orderqty);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ELSE
- rslt = 0
- arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- UPDATE u_order_ml_packmx
- SET flag = 0,
- auditdate = :null_dt,
- auditemp = ''
- WHERE billid = :arg_billid
- And printid = :arg_printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
-
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- Destroy uo_zl
- Destroy uo_get
- Destroy ds_gb_mx
- RETURN rslt
- end function
- public function integer stopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- Long ll_i
- String ls_barcode
- SetNull(null_dt)
- uo_order_ml uo_zl
- uo_zl = Create uo_order_ml
- uo_getbar uo_get
- uo_get = Create uo_getbar
- datastore ds_gb_mx
- ds_gb_mx = Create datastore
- ds_gb_mx.DataObject = 'dw_getbarmx_edit'
- ds_gb_mx.SetTransObject(sqlca)
- s_order_ml_packmx arg_s_mx
- s_getbar arg_s_gb,arg_s_gb_null
- If p_getinfo(arg_billid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If flag <> 1 Then
- rslt = 0
- arg_msg = '必须先审核单据才能终止明细,请检查'
- Goto ext
- End If
- If arg_s_mx.flag = 0 Then
- rslt = 0
- arg_msg = '明细未审核,不能终止'
- Goto ext
- End If
- If arg_s_mx.stopflag = 1 Then
- rslt = 0
- arg_msg = '明细已终止,不能再执行终止操作'
- Goto ext
- End If
- if arg_s_mx.Kind = 1 Then
- rslt = 0
- arg_msg = '明细为终止类型明细,不能执行终止操作'
- Goto ext
- End If
- If arg_s_mx.Kind = 0 Then
- If uo_zl.stoporder(scid,arg_s_mx.orderid,0,'包件变更单自动终止',arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '终止相关生产指令单失败,'+arg_msg
- Goto ext
- End If
-
-
- //作废相关条码生成单(如果存在)
- If arg_s_mx.getbarid > 0 Then
- ds_gb_mx.Retrieve(arg_s_mx.getbarid)
-
- For ll_i = 1 To ds_gb_mx.RowCount()
- ls_barcode = ds_gb_mx.Object.barcode[ll_i]
- If uo_get.uof_barcode_inuse(ls_barcode,0,False,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
-
- End If
-
- Delete From u_SaleTaskMx_pf
- Where scid = :scid
- And taskid = :taskid
- And printid = :taskprintid
- And sonmtrlid = :arg_s_mx.mtrlid
- And status = :arg_s_mx.status
- And woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '删除销售订单包件明细失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Update u_order_ml_packmx
- Set stopflag = 1,
- stopdate = getdate(),
- stopemp = :publ_operator
- Where billid = :arg_billid
- And printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Destroy uo_zl
- Destroy uo_get
- Destroy ds_gb_mx
- Return rslt
- end function
- public function integer cstopmx (long arg_billid, long arg_printid, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- DateTime null_dt
- Long ll_i
- String ls_barcode
- Long ll_mtrlid_order
- decimal ld_orderqty
- SetNull(null_dt)
- uo_order_ml uo_zl
- uo_zl = Create uo_order_ml
- uo_getbar uo_get
- uo_get = Create uo_getbar
- datastore ds_gb_mx
- ds_gb_mx = Create datastore
- ds_gb_mx.DataObject = 'dw_getbarmx_edit'
- ds_gb_mx.SetTransObject(sqlca)
- s_order_ml_packmx arg_s_mx
- s_getbar arg_s_gb,arg_s_gb_null
- If p_getinfo(arg_billid,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If getinfo_mx(arg_billid,arg_printid,arg_s_mx,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- If flag <> 1 Then
- rslt = 0
- arg_msg = '必须先审核单据才能审核明细,请检查'
- Goto ext
- End If
- If arg_s_mx.flag = 0 Then
- rslt = 0
- arg_msg = '明细未审核,不能终止'
- Goto ext
- End If
- If arg_s_mx.stopflag = 0 Then
- rslt = 0
- arg_msg = '明细未终止,不能执行取消终止操作'
- Goto ext
- End If
- If arg_s_mx.Kind = 0 Then
- If uo_zl.stoporder_cancel(scid,arg_s_mx.orderid,0,arg_msg,False) = 0 Then
- rslt = 0
- arg_msg = '取消终止相关生产指令单失败,'+arg_msg
- Goto ext
- End If
-
-
- //取消作废相关条码生成单(如果存在)
- If arg_s_mx.getbarid > 0 Then
- ds_gb_mx.Retrieve(arg_s_mx.getbarid)
-
- For ll_i = 1 To ds_gb_mx.RowCount()
- ls_barcode = ds_gb_mx.Object.barcode[ll_i]
- If uo_get.uof_barcode_inuse(ls_barcode,1,False,arg_msg) = 0 Then
- rslt = 0
- Goto ext
- End If
- Next
-
- End If
-
- Select mtrlid,orderqty
- Into :ll_mtrlid_order,:ld_orderqty
- From u_order_ml
- Where scid = :scid
- And orderid = :orderid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '查询指令单相关信息失败,'+sqlca.SQLErrText
- Goto ext
- End If
-
- Update u_SaleTaskMx_pf
- Set Sonscale = :arg_s_mx.qty
- Where scid = :scid
- And taskid = :taskid
- And printid = :taskprintid
- And sonmtrlid = :arg_s_mx.mtrlid
- And status = :arg_s_mx.status
- And woodcode = :arg_s_mx.woodcode
- And pcode = :arg_s_mx.pcode;
- If sqlca.SQLCode = 0 Then
- If sqlca.SQLNRows = 0 Then
-
- Insert Into u_SaleTaskMx_pf
- (scid,
- taskid,
- printid,
- mtrlid,
- sonmtrlid,
- status,
- woodcode,
- pcode,
- Sonscale,
- Sonscale_fm)
- Values (:scid,
- :taskid,
- :taskprintid,
- :ll_mtrlid_order,
- :arg_s_mx.mtrlid,
- :arg_s_mx.status,
- :arg_s_mx.woodcode,
- :arg_s_mx.pcode,
- :arg_s_mx.qty,
- :ld_orderqty);
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '插入相关销售订单包件明细失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Else
- rslt = 0
- arg_msg = '更新相关销售订单包件明细失败,'+sqlca.SQLErrText
- Goto ext
- End If
- End If
- Update u_order_ml_packmx
- Set stopflag = 0,
- stopdate = :null_dt,
- stopemp = ''
- Where billid = :arg_billid
- And printid = :arg_printid;
- If sqlca.SQLCode <> 0 Then
- rslt = 0
- arg_msg = '更新单据明细状态失败,'+sqlca.SQLErrText
- Goto ext
- End If
- ext:
- If rslt = 0 Then
- Rollback;
- ElseIf rslt = 1 And arg_ifcommit Then
- Commit;
- End If
- Destroy uo_zl
- Destroy uo_get
- Destroy ds_gb_mx
- Return rslt
- end function
- public function integer uof_packmx (s_order_ml_packmx arg_s_packmx, ref string arg_msg, boolean arg_ifcommit);Int rslt = 1
- Int li_ifpack
- Long ll_cnt_mx,ll_max_printid
- s_order_ml_packmx arg_s_mx[]
- IF arg_s_packmx.billid = 0 THEN
- arg_msg = '错误的单据唯一码'
- rslt = 0
- GOTO ext
- END IF
- IF getinfo(arg_s_packmx.billid,arg_s_mx,ll_cnt_mx,arg_msg) = 0 THEN
- rslt = 0
- GOTO ext
- END IF
- IF flag <> 1 THEN
- rslt = 0
- arg_msg = '单据未审核,操作取消'
- GOTO ext
- END IF
- SELECT ifpack
- INTO :li_ifpack
- FROM u_mtrldef
- Where mtrlid = :arg_s_packmx.mtrlid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询物料信息失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
- IF li_ifpack <> 2 THEN
- arg_msg = '物料不是个性包件,操作取消'
- rslt = 0
- GOTO ext
- END IF
- IF arg_s_packmx.printid = -1 THEN
- IF arg_s_packmx.qty <= 0 THEN
- arg_msg = '请录入正确的数量'
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_packmx.packqty <= 0 THEN
- arg_msg = '请录入正确的包装基数'
- rslt = 0
- GOTO ext
- END IF
-
- IF arg_s_packmx.storageid = 0 THEN
- arg_msg = '请录入仓库'
- rslt = 0
- GOTO ext
- END IF
-
- SELECT max(printid)
- INTO :ll_max_printid
- FROM u_order_ml_packmx
- Where billid = :arg_s_packmx.billid;
- IF sqlca.SQLCode <> 0 THEN
- arg_msg = '查询单据最新明细序号printid失败,'+sqlca.SQLErrText
- rslt = 0
- GOTO ext
- END IF
-
- INSERT INTO u_order_ml_packmx
- (billid,
- printid,
- mtrlid,
- status,
- woodcode,
- pcode,
- qty,
- packqty,
- orderdate,
- requiredate,
- storageid,
- kind)
- VALUES (:arg_s_packmx.billid,
- :ll_max_printid + 1,
- :arg_s_packmx.mtrlid,
- :arg_s_packmx.status,
- :arg_s_packmx.woodcode,
- :arg_s_packmx.pcode,
- :arg_s_packmx.qty,
- :arg_s_packmx.packqty,
- :arg_s_packmx.orderdate,
- :arg_s_packmx.requiredate,
- :arg_s_packmx.storageid,
- :arg_s_packmx.kind);
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '增加包件操作失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- ELSE
- UPDATE u_order_ml_packmx
- SET mtrlid = :arg_s_packmx.mtrlid,
- status = :arg_s_packmx.status,
- woodcode = :arg_s_packmx.woodcode,
- pcode = :arg_s_packmx.pcode,
- qty = :arg_s_packmx.qty,
- packqty = :arg_s_packmx.packqty,
- storageid = :arg_s_packmx.storageid,
- orderdate = :arg_s_packmx.orderdate,
- requiredate = :arg_s_packmx.requiredate
- WHERE u_order_ml_packmx.billid = :arg_s_packmx.billid
- And u_order_ml_packmx.printid = :arg_s_packmx.printid;
- IF sqlca.SQLCode <> 0 THEN
- rslt = 0
- arg_msg = '修改包件操作失败,'+sqlca.SQLErrText
- GOTO ext
- END IF
- END IF
- ext:
- IF rslt = 0 THEN
- ROLLBACK;
- ELSEIF rslt = 1 And arg_ifcommit THEN
- COMMIT;
- END IF
- RETURN rslt
- end function
- on uo_order_ml_pack.create
- call super::create
- TriggerEvent( this, "constructor" )
- end on
- on uo_order_ml_pack.destroy
- TriggerEvent( this, "destructor" )
- call super::destroy
- end on
- event constructor;String arg_msg
- String str_optionvalue
- str_optionvalue = ''
- f_get_sys_option_value('142',str_optionvalue,arg_msg)
- uo_option_inout_type = Long(str_optionvalue)
- end event
|