Index: BL/PPS/OL/Inpak.cls.xml =================================================================== diff -u -r31391 -r31455 --- BL/PPS/OL/Inpak.cls.xml (.../Inpak.cls.xml) (revision 31391) +++ BL/PPS/OL/Inpak.cls.xml (.../Inpak.cls.xml) (revision 31455) @@ -105,49 +105,6 @@ - -BL.PPS.OL.Inpak.MultiCountBepaler -1 -1 - - - -TECH.String -1 -1 - - - -DOM.PM.ProductTypeAPI -1 -1 - - - -DOM.VKP.VerkoopAPI -1 -1 - - - -DOM.VKP.impl.BonTypeAPI -1 - - - -1 -1 -%Status -1 - - - Open : Initialiseren van object (properties + ophalen sequentie) @@ -156,8 +113,13 @@ -1 0)&&(..CurID >= ..SequenceList.Count())) $$$pxStatusErrorEx("Kan pointer niet verder voorwaarts verplaatsen", "..CurID="_..CurID_" ..SequenceList.Count()="_..SequenceList.Count()_" Dir="_pDir) Quit:((pDir<1)&&(..CurID <= 1)) $$$pxStatusErrorEx("Kan pointer niet verder achterwaarts verplaatsen", "..CurID="_..CurID_" Dir="_pDir) - Do ..BepaalOutput(pxInpakInfo.PRNr) - // pointer incrementeren (of decrementeren) Set ..CurID=$S(pDir>0:..CurID+1,1:..CurID-1) @@ -268,6 +227,10 @@ // van die doos, die mag ook gesneden worden // - Een product mag gesneden worden (als minstens 1 item is waarbij HasSnijDef=true + + + + If ($LI(SnijItem,$$$lbPosType) = "O") { Do ..PrintAllEtiket() Do ..PrintAlleEtikettenOpnieuwIndienNodigOpOverdoosVoorKlant( pxInpakInfo ) @@ -300,7 +263,7 @@ pxInpakInfo:BL.PPS.OL.pxInpakInfo -1 BL.Sys.Proxy.pxStatus PRNr:%String,LijnSep:%String,KolomSep:%String -1 + +pObjRef:%String,pObjType:%String,pPPSSubgroep:%String,pBoxDeelVan:%String + + + Forced:%Boolean -1 + +BonID:%String +1 +%Boolean + + + Etiket(ten) printen voor 1 product zonder bijkomende controle)[ Private ] @@ -795,7 +788,6 @@ BonID:%String,ProductID:%String,Aantal:%Integer -1 BL.Sys.LabelPrinter BonID:%String,ProductID:%String,Aantal:%Integer -1 %ListOfObjects ELEMENTTYPE="BL.Sys.pxLabel" 1 { #dim Step As %Integer For Step=1:1:MultiCount { @@ -843,49 +834,86 @@ ]]> - -ProductID:TECH.String -1 - - - BonID:%String,ProductID:%String,Aantal:%Integer -1 BL.Sys.pxLabel 1 Set pxLabel.MultiDeel="x"_Aantal, pxLabel.Aantal=1 + Set pxLabel.Aantal = Aantal + If Aantal > 1 Set pxLabel.MultiDeel="x"_Aantal, pxLabel.Aantal=1 + + Set pxLabel.Device=..LabelDev() + If ##class(DOM.DomeinContext).Instance().GeefProductTypeAPI().IsTAORIndelingProduct(ProductID) { + Set pxLabel.Layout = ..#LabelProductTAORIndeling + }Else{ + Set pxLabel.Layout = ..#LabelProductOrgalux + } + Set pxLabel.Layout = pxLabel.Layout_##class(BL.Sys.LabelPrinter).PrinterLabelSize(pxLabel.Device) + } + Quit pxLabel +]]> + - Set pxLabel.Device=..LabelDev() - If ..ProductTypeAPI.IsTAORIndelingProduct(ProductID) { - Set pxLabel.Layout = ..#LabelProductTAORIndeling - }Else{ - Set pxLabel.Layout = ..#LabelProductOrgalux + + +bepalen of er meer dan 1 doos is voor dit product +EN bepalen of er meer dan 1 product in de doos zit +ProductID:%String +%Integer + + + + +pxLabel:BL.Sys.pxLabel,PRNr:%String +BL.Sys.pxLabel + PRNr:%String,pxLabel:BL.Sys.pxLabel -1 1 - -IsTAORIndeling:%Boolean,BONNr:%String -1 -TECH.String - - - - -1 +BONNr:%String,pxLabel:BL.Sys.pxLabel LabelPrinter is afhankelijk van de werkpost bepaalt door property Output -1 Output - -BonTypeAPI - Index: BL/Legacy/EWORDSW.cls.xml =================================================================== diff -u -r31358 -r31455 --- BL/Legacy/EWORDSW.cls.xml (.../EWORDSW.cls.xml) (revision 31358) +++ BL/Legacy/EWORDSW.cls.xml (.../EWORDSW.cls.xml) (revision 31455) @@ -1,20 +1,20 @@ -TECH.RegisteredObject +%RegisteredObject 1 CONSNr:%String %List @@ -23,117 +23,18 @@ 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 -]]> - FishEye: Tag 31455 refers to a dead (removed) revision in file `vhUnitTest/BL/PPS/OL/DummyInpak.cls.xml'. FishEye: No comparison available. Pass `N' to diff? FishEye: Tag 31376 refers to a dead (removed) revision in file `vhUnitTest/BL/PPS/OL/TestInpakSphinxUitzondering.cls.xml'. FishEye: No comparison available. Pass `N' to diff? 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 Index: vhUnitTest/BL/PPS/OL/TestInpak.cls.xml =================================================================== diff -u -r31379 -r31455 --- vhUnitTest/BL/PPS/OL/TestInpak.cls.xml (.../TestInpak.cls.xml) (revision 31379) +++ vhUnitTest/BL/PPS/OL/TestInpak.cls.xml (.../TestInpak.cls.xml) (revision 31455) @@ -195,7 +195,7 @@ Do $$$AssertEquals(Inpak.BONNr,..Bon.GeefID()) Do $$$AssertEquals(Inpak.KlantNaam,"UNITTEST CONSUMENT") - Do $$$AssertEquals(Inpak.Output,1, "Output is gedefault omdat deze per product moet wijzigen") + Do $$$AssertEquals(Inpak.Output,InpakTafelNr) Do $$$AssertEquals(Inpak.Count,1,"Aantal overdozen ??") Do $$$AssertEquals(Inpak.SequenceList.Count(),2) @@ -207,14 +207,15 @@