Index: EWORDSW.mac.rou =================================================================== diff -u -r29059 -r31358 --- EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 29059) +++ EWORDSW.mac.rou (.../EWORDSW.mac.rou) (revision 31358) @@ -240,77 +240,10 @@ Quit -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)_" ")="" +SOFTV(PRNr, KLNr,Qty,lbProductTypesInConsolidatie ,Force=0) ; SoftwareVerwerking + Quit ##class(BL.Legacy.EWORDSW).SOFTV(PRNr,KLNr,Qty,lbProductTypesInConsolidatie,Force) - 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 Index: BL/Legacy/EWORDSW.cls.xml =================================================================== diff -u -r29059 -r31358 --- BL/Legacy/EWORDSW.cls.xml (.../EWORDSW.cls.xml) (revision 29059) +++ BL/Legacy/EWORDSW.cls.xml (.../EWORDSW.cls.xml) (revision 31358) @@ -1,20 +1,20 @@ -%RegisteredObject +TECH.RegisteredObject 1 CONSNr:%String %List @@ -23,18 +23,117 @@ ProductID:%String %List + + + +Bepaalt in welke pickingzone (aka "SoftwareVerwerking"; "softmag") een product gepicked moet worden. +1 +PRNr:%String,KLNr:%String,Qty:%Integer,lbProductTypesInConsolidatie:%List,Force:%Boolean +APPS.MAG.enu.Magazijn + : 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. + #dim Mag,MagList,PALNr,Rec2 As %String + #dim Magazijn As APPS.MAG.enu.Magazijn = ##class(APPS.MAG.enu.Magazijn).EWMS() + If '$G(Force),'$G(^EWREC("P","UPSEND")) Quit Magazijn ; 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="" + continue:+$P($G(^EWPAL("D",PRNr,PALNr)),"\",1)<1 + Set Mag=+$E($P($G(^EWPAL("D",PRNr,PALNr)),"\",2),1,3) + Set:Mag=1&(MagList'[##class(APPS.MAG.enu.Magazijn).TandemAventos()) MagList=MagList_##class(APPS.MAG.enu.Magazijn).TandemAventos() + Set:Mag>1&(Mag<5)&(MagList'[##class(APPS.MAG.enu.Magazijn).Ugly()) MagList=MagList_##class(APPS.MAG.enu.Magazijn).Ugly() + Set MagList($P($G(^EWPAL("D",PRNr,PALNr)),"\",2)_" ")="" + } + + Set Rec2=$G(^KPR(PRNr,2)) Set:Rec2="" Rec2=$G(^KPRO(PRNr,2)) ; wordt ook opgeroepen door Rendab (historiek) + Set:$P(Rec2,"\",15)=3 Magazijn = ##class(APPS.MAG.enu.Magazijn).LangGoed() ; Langgoed + Set:($P(Rec2,"\",15)=2 && ($$$Not(MagList = ##class(APPS.MAG.enu.Magazijn).TandemAventos()))) Magazijn = ##class(APPS.MAG.enu.Magazijn).Ugly() ; UglyPicking (behalve indien alle palletten in auto.mag + Set:($P(Rec2,"\",15)=1 && (MagList = ##class(APPS.MAG.enu.Magazijn).Ugly())) Magazijn = ##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,Magazijn,lbProductTypesInConsolidatie,##class(BL.Legacy.enu.ProductBevatType).Orgalux()) { + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).Orgalux() + }ElseIf ..IsInUglyEnBevat(MagList,Magazijn,lbProductTypesInConsolidatie,##class(BL.Legacy.enu.ProductBevatType).TaorIndeling()) { + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).TAORIndeling() + }ElseIf ..KomtVanHaluxEnGeenPalletInAutomatischMagazijn(MagList,PRNr) { + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).Halux() + } + + If ((Magazijn'=##class(APPS.MAG.enu.Magazijn).Orgalux()) && (Magazijn'=##class(APPS.MAG.enu.Magazijn).TAORIndeling())){ + If ((Magazijn=##class(APPS.MAG.enu.Magazijn).Ugly()||(Magazijn=##class(APPS.MAG.enu.Magazijn).Halux()))&&($$Is^PRODUKT2(PRNr,"TA")||$$Is^PRODUKT2(PRNr,"AV"))){ ; Groep tandembox en Aventos + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).TandemAventos() + } + If ((Magazijn'=##class(APPS.MAG.enu.Magazijn).LangGoed()) && ..SmallQtyInUgly(.MagList,PRNr,Qty)){ + If $LF(lbProductTypesInConsolidatie,"KADERD"){ ; Klein aantal beslag voor kaderdeur -> Halux + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).Halux() + }ElseIf $LF(lbProductTypesInConsolidatie,"AVENTOS"){ ; Klein aantal beslag behorende bij Aventos -> Tandem/Aventos + Set Magazijn = ##class(APPS.MAG.enu.Magazijn).TandemAventos() + } + } + } + Quit Magazijn +]]> + + + +1 +MagList:%String,Magazijn:APPS.MAG.enu.Magazijn,lbProductTypesInConsolidatie:%List,ItemTeBevatten:BL.Legacy.enu.ProductBevatType +1 +%Boolean + + + + +1 +MagList:%String,Magazijn:APPS.MAG.enu.Magazijn +1 +%Boolean + + + + +1 +MagList:%String,PRNr:%String +1 +%Boolean + + + + +1 +MagList:%String,PRNr:%String,Qty:%Integer +1 +%Boolean +10 Verpak=$P(RecJ,"\",15) ; Normverpakking indien voldoende aantal (>10) in verpakking anders grootverpakking + Quit:Qty'12)&&(+$E(MagSmall,7,9)<25) Quit 1 + Quit 0 +]]> +