Index: EWORDSW.mac.rou =================================================================== diff -u -r31363 -r31455 --- EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 31363) +++ EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 31455) @@ -198,8 +198,7 @@ .For Set OLUNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr)) Quit:OLUNr="" Do ..Set OLRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr) ..Set ProductID = $Piece(OLRec,"\",1) - ..Set lbBevat = $$Bevat(CONSNr) - ..Set lbBevat = $Select(($LL(lbBevat)=2)&&$LF(lbBevat,##class(BL.Legacy.enu.ProductBevatType).TaorIndeling())&&$LF(lbBevat,##class(BL.Legacy.enu.ProductBevatType).Orgalux()):lbBevat,1:##class(BL.Legacy.EWORDSW).GeefProductBevatTypeList(ProductID)) + ..Set lbBevat = ##class(BL.Legacy.EWORDSW).GeefProductBevatTypeList(ProductID) ..Quit:$P(OLRec,D,2)'="" ; Reeds verwerkt (doorgestuurd), terugname, manueel of zonder WMS ..For Set SOLNr=$O(^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr)) Quit:SOLNr="" Do ...Set SOLRec=^ORDW("D",CONSNr,"D",ORDNr,OLUNr,SOLNr) @@ -241,10 +240,77 @@ Quit -SOFTV(PRNr, KLNr,Qty,lbProductTypesInConsolidatie ,Force=0) ; SoftwareVerwerking - Quit ##class(BL.Legacy.EWORDSW).SOFTV(PRNr,KLNr,Qty,lbProductTypesInConsolidatie,Force) +SOFTV(PRNr, KLNr,Qty,lbBevat,Force) ; SoftwareVerwerking + // Bepaalt in welke pickingzone (aka "SoftwareVerwerking"; "softmag") een product gepicked moet worden. + // lbBevat As %List : lijst van soorten producten die in de consolidatie zitten. Dit dient om bvb ORGALUX en TA'OR Cubics kindproducten in de juiste Ugly-rubriek te krijgen. + // Result: APPS.MAG.enu.Magazijn + New Result,PALNr,MagList,Mag,Rec2 + Set Result = ##class(APPS.MAG.enu.Magazijn).EWMS() + If '$G(Force),'$G(^EWREC("P","UPSEND")) Quit Result ; UglyPicking niet actief + ; Controle of er een pallet bestaat in de auto en of ugly mag. + Set PALNr="",MagList="" + For Set PALNr=$O(^EWPAL("D",PRNr,PALNr)) Quit:PALNr="" Do + . Quit:+$P($G(^EWPAL("D",PRNr,PALNr)),D,1)<1 + . Set Mag=+$E($P($G(^EWPAL("D",PRNr,PALNr)),D,2),1,3) + . Set:Mag=1&(MagList'["A") MagList=MagList_"A" + . Set:Mag>1&(Mag<5)&(MagList'["U") MagList=MagList_"U" + . Set MagList($P($G(^EWPAL("D",PRNr,PALNr)),D,2)_" ")="" + Set Rec2=$G(^KPR(PRNr,2)) Set:Rec2="" Rec2=$G(^KPRO(PRNr,2)) ; wordt ook opgeroepen door Rendab (historiek) + Set:$P(Rec2,D,15)=3 Result = ##class(APPS.MAG.enu.Magazijn).LangGoed() ; Langgoed + Set:$P(Rec2,D,15)=2&&(MagList'="A") Result = ##class(APPS.MAG.enu.Magazijn).Ugly() ; UglyPicking (behalve indien alle palletten in auto.mag + Set:$P(Rec2,D,15)=1&&(MagList="U") Result = ##class(APPS.MAG.enu.Magazijn).Ugly() ; UglyPicking (goederen bedoeld voor automatisch mag. maar alle palletten staan in ugly + // N.B. Bij het sluiten van een order, worden eventuele ORGALUX-lijnen sowieso afgesplitst naar een gekoppeld ORGALUX-order, en idem voor TA'OR cubics. + // Daarom is het correct om te stellen dat een product in het ugly-magazijn bij ORGALUX (of TA'OR cubics) moet gepicked worden, als het een dergelijk order/consolidatie betreft. + If $$IsInUglyEnBevat(MagList,Result,lbBevat,"ORGALUX") { + Set Result = ##class(APPS.MAG.enu.Magazijn).Orgalux() + }ElseIf $$IsInUglyEnBevat(MagList,Result,lbBevat,"TAORINDELING") { + Set Result = ##class(APPS.MAG.enu.Magazijn).TAORIndeling() + }ElseIf $$KomtVanHaluxEnGeenPalletInAutomatischMagazijn(MagList,PRNr) { + Set Result = ##class(APPS.MAG.enu.Magazijn).Halux() + } + + If ((Result'=##class(APPS.MAG.enu.Magazijn).Orgalux()) && (Result'=##class(APPS.MAG.enu.Magazijn).TAORIndeling())){ + If ((Result=##class(APPS.MAG.enu.Magazijn).Ugly()||(Result=##class(APPS.MAG.enu.Magazijn).Halux()))&&($$Is^PRODUKT2(PRNr,"TA")||$$Is^PRODUKT2(PRNr,"AV"))){ ; Groep tandembox en Aventos + Set Result = ##class(APPS.MAG.enu.Magazijn).TandemAventos() + } + If ((Result'=##class(APPS.MAG.enu.Magazijn).LangGoed()) && $$SmallQtyInUgly(.MagList,PRNr)){ + If $LF(lbBevat,"KADERD"){ ; Klein aantal beslag voor kaderdeur -> Halux + Set Result = ##class(APPS.MAG.enu.Magazijn).Halux() + }ElseIf $LF(lbBevat,"AVENTOS"){ ; Klein aantal beslag behorende bij Aventos -> Tandem/Aventos + Set Result = ##class(APPS.MAG.enu.Magazijn).TandemAventos() + } + } + } + + Quit Result + +IsInUglyEnBevat(MagList, Result, lbBevat, ItemTeBevatten) + New IsInUglyEnBevat + Set IsInUglyEnBevat = ($LF(lbBevat,ItemTeBevatten)&&((MagList["U")||(Result="U"))) + Quit IsInUglyEnBevat + +KomtVanHaluxEnGeenPalletInAutomatischMagazijn(MagList,PRNr) + New Waarde + Set Waarde = (($D(^KPR(PRNr,"J6332"))||$D(^KPRO(PRNr,"J6332")))&&(MagList'="A")) + Quit Waarde + + ; controleert of er een klein aantal moet gepickt worden in Ugly +SmallQtyInUgly(MagList,PRNr) + ; MagList via .Local + New RecJ,Verpak,MagSmall + Quit:MagList'["U" 0 ; Komt niet voor in Ugly magazijn + ; Controle op verpakkingshoeveelheid + Set RecJ=$S($E($O(^KPR(PRNr,"J")))="J":^KPR(PRNr,$O(^KPR(PRNr,"J"))),1:"") + Set:RecJ="" RecJ=$S($E($O(^KPRO(PRNr,"J")))="J":^KPRO(PRNr,$O(^KPRO(PRNr,"J"))),1:"") ; wordt ook gebruikt voor historieken of simulaties + Set Verpak=$P(RecJ,D,16) ; Grootverpakking + Set:$P(RecJ,D,15)>10 Verpak=$P(RecJ,D,15) ; Normverpakking indien voldoende aantal (>10) in verpakking anders grootverpakking + Quit:Qty'12)&&(+$E(MagSmall,7,9)<25) Quit 1 + Quit 0 + BLDOL(KLNr,CONSNr,ORDNr,OLUNr,lbBevat,SoftV) ; SoftV : via .Local ; Verwerken van een orderlijn met eventuele opslitsing in verschillende kindproducten