Index: BL/MB/UGLYPicking/OrderReservatieImpl.cls.xml =================================================================== diff -u -r29059 -r58667 --- BL/MB/UGLYPicking/OrderReservatieImpl.cls.xml (.../OrderReservatieImpl.cls.xml) (revision 29059) +++ BL/MB/UGLYPicking/OrderReservatieImpl.cls.xml (.../OrderReservatieImpl.cls.xml) (revision 58667) @@ -28,7 +28,7 @@ - + %Status +QtyRes) && (+QtyPcs > 0)) { - - If (##class(Prod.Product).GetMagViaOpslagzone(LocM) '= "CONS") { - #Dim InsertTime As %String = ResultSetFPallets.Data("InsertTime") - #Dim IsFull As %Boolean = ResultSetFPallets.Data("IsFull") - #Dim LocID As %String = ResultSetFPallets.Data("LocID") - #Dim Sectie As %String = ResultSetFPallets.Data("Sectie") - #Dim LLocM As %Integer = ResultSetFPallets.Data("LLocM") - #Dim LocG As %Integer = ResultSetFPallets.Data("LocG") - #Dim LocX As %Integer = ResultSetFPallets.Data("LocX") - #Dim LocY As %Integer = ResultSetFPallets.Data("LocY") - #Dim LocZ As %Integer = ResultSetFPallets.Data("LocZ") - #Dim State As %String = ResultSetFPallets.Data("State") - #Dim Batch As %String = ResultSetFPallets.Data("Batch") - #Dim Quality As %String = ResultSetFPallets.Data("Quality") - #Dim Owner As %String = ResultSetFPallets.Data("Owner") - #Dim TransLoc As %String = ResultSetFPallets.Data("TransLoc") - #Dim IsPickbaar As %Boolean = ResultSetFPallets.Data("IsPickbaar") - - #Dim IDList As %String - #Dim InsertDate As %String - #Dim PLNode As %List - #Dim PalletIndex As %Integer + If ((+QtyPcs > +QtyRes) && (+QtyPcs > 0)) { - If '($DATA(IDList(LocID))) { // Vermijden van dubbels - Set IDList(LocID) = "" //Lijst bijhouden van Ids - - Set InsertDate = $ZDATEH($EXTRACT(InsertTime, 1, 10), 3) - - Do ..PostProcessPalletInfo(.InsertTime, .IsFull, TransLoc, IsPickbaar) - - Set PLNode = $LISTBUILD(Sectie, QtyPcs, QtyRes, LLocM, LocG, LocX, LocY, LocZ, State, InsertDate, IsFull, Batch, Quality, Owner, LocID, ProdNr, 0) //0: QtyBooked, wo later ingevuld - - Set PalletIndex = $INCREMENT(PalletIndex) - Set Pallet(PalletIndex) = $LISTBUILD(LocID _ "." _ Sectie, PLNode) //Volgende arrays worden gebruikt bij picking algorithms (exact, approx, ...) - - If (IsFull) { - //Grouping wordt enkel gebruikt bij FULL PALLET algo - Set PalletGroup(+QtyPcs-QtyRes) = $GET(PalletGroup(+QtyPcs-QtyRes)) _ $LISTBUILD(LocID _ "." _ Sectie) - } + If (##class(Prod.Product).GetMagViaOpslagzone(LocM) '= "CONS") { + #Dim InsertTime As %String = ResultSetFPallets.Data("InsertTime") + #Dim IsFull As %Boolean = ResultSetFPallets.Data("IsFull") + #Dim Sectie As %String = ResultSetFPallets.Data("Sectie") + #Dim LLocM As %Integer = ResultSetFPallets.Data("LLocM") + #Dim LocG As %Integer = ResultSetFPallets.Data("LocG") + #Dim LocX As %Integer = ResultSetFPallets.Data("LocX") + #Dim LocY As %Integer = ResultSetFPallets.Data("LocY") + #Dim LocZ As %Integer = ResultSetFPallets.Data("LocZ") + #Dim State As %String = ResultSetFPallets.Data("State") + #Dim Batch As %String = ResultSetFPallets.Data("Batch") + #Dim Quality As %String = ResultSetFPallets.Data("Quality") + #Dim Owner As %String = ResultSetFPallets.Data("Owner") + #Dim TransLoc As %String = ResultSetFPallets.Data("TransLoc") + #Dim IsPickbaar As %Boolean = ResultSetFPallets.Data("IsPickbaar") + + #Dim IDList As %String + #Dim InsertDate As %String + #Dim PLNode As %List + #Dim PalletIndex As %Integer + + If '($DATA(IDList(LocID))) { // Vermijden van dubbels + Set IDList(LocID) = "" //Lijst bijhouden van Ids + + Set InsertDate = $ZDATEH($EXTRACT(InsertTime, 1, 10), 3) + + Do ..PostProcessPalletInfo(.InsertTime, .IsFull, TransLoc, IsPickbaar) + + Set PLNode = $LISTBUILD(Sectie, QtyPcs, QtyRes, LLocM, LocG, LocX, LocY, LocZ, State, InsertDate, IsFull, Batch, Quality, Owner, LocID, ProdNr, 0) //0: QtyBooked, wo later ingevuld + + Set PalletIndex = $INCREMENT(PalletIndex) + Set Pallet(PalletIndex) = $LISTBUILD(LocID _ "." _ Sectie, PLNode) //Volgende arrays worden gebruikt bij picking algorithms (exact, approx, ...) + + If (IsFull) { + //Grouping wordt enkel gebruikt bij FULL PALLET algo + Set PalletGroup(+QtyPcs-QtyRes) = $GET(PalletGroup(+QtyPcs-QtyRes)) _ $LISTBUILD(LocID _ "." _ Sectie) + } + } } } } @@ -189,7 +191,6 @@ Set Query = Query _ "WHERE product = ? " Set Query = Query _ "AND I.loc_m < 5 AND NOT (L.loc_m = 4 AND L.loc_g = 2 and L.loc_x = 1 and L.loc_y = 1) " Set Query = Query _ "ORDER BY IsPickbaar DESC, IsFull ASC, InsertTime ASC " - Quit ..QueryAPI.GetDynamicResultSet(Query, $LISTBUILD(ProductID)) ]]> Index: vhUnitTest/BL/MB/UGLYPicking/OrderReservatie.cls.xml =================================================================== diff -u -r44393 -r58667 --- vhUnitTest/BL/MB/UGLYPicking/OrderReservatie.cls.xml (.../OrderReservatie.cls.xml) (revision 44393) +++ vhUnitTest/BL/MB/UGLYPicking/OrderReservatie.cls.xml (.../OrderReservatie.cls.xml) (revision 58667) @@ -5,10 +5,13 @@ 1 vhUnitTest.APPS.MAG.Inventaris.Base - -%String -I - + + + + +0 + + + 1 Index: vhUnitTest/APPS/MAG/UGLYPicking/TestUglyPickingService.cls.xml =================================================================== diff -u -r46321 -r58667 --- vhUnitTest/APPS/MAG/UGLYPicking/TestUglyPickingService.cls.xml (.../TestUglyPickingService.cls.xml) (revision 46321) +++ vhUnitTest/APPS/MAG/UGLYPicking/TestUglyPickingService.cls.xml (.../TestUglyPickingService.cls.xml) (revision 58667) @@ -338,6 +338,57 @@ ]]> + + + + + + + + ConsolidatieNr:%Integer,PalletID:%String,ProductObjectID:%Integer,AantalTePicken:%Integer,AantalOpPallet:%Integer 1 @@ -366,26 +417,41 @@ -ID:%Integer +ID:%Integer,KlantNr:%String="1000" %Status + +PalletNummer:%String + + + + + + + %Status 1 -ProdNr:%Library.Integer +ProdNr:%Library.Integer,ConsolidatiePalletten:%ListOfDataTypes=##class(%ListOfDataTypes).%New() cache 0 %Library.Status @@ -416,7 +416,7 @@ New Impl #Dim Impl As BL.MB.UGLYPicking.OrderReservatieImpl = ##class(BL.MB.UGLYPicking.OrderReservatieImpl).%New() - Quit Impl.BuildPalletsPerProdNr(ProdNr, .PalletList, .Pallet, .PalletGroup, .PalletGroupCnt, .PalletGroupSom) + Quit Impl.BuildPalletsPerProdNr(ProdNr, .PalletList, .Pallet, .PalletGroup, .PalletGroupCnt, .PalletGroupSom, ConsolidatiePalletten) ]]> @@ -565,7 +565,7 @@ 1 -ConsolidatieNr:%Library.Integer,Magazijn:%Library.String,ProductNr:%Library.String,AantalTePicken:%Library.Integer,AssociatedZeroPalletID:%String +ConsolidatieNr:%Library.Integer,Magazijn:%Library.String,ProductNr:%Library.String,AantalTePicken:%Library.Integer,AssociatedZeroPalletID:%String,ConsolidatiePalletten:%ListOfDataTypes=##class(%ListOfDataTypes).%New() cache 0 %Library.String @@ -580,7 +580,7 @@ Set MAXReserveCount=5 For Quit:(ReserveSuccess || (ReserveCount=MAXReserveCount) || (tmpResult'="")) Do - . Set tmpResult=..FPalletsPerProdNr(ProductNr) //Creatie PalletList met palletten bevattende product (met ProductNr) + . Set tmpResult=..FPalletsPerProdNr(ProductNr,ConsolidatiePalletten) //Creatie PalletList met palletten bevattende product (met ProductNr) . If $$$ISERR(tmpResult) Do Quit .. Set tmpResult=$$ParseStatus^vhLib(tmpResult) . Else Do @@ -686,20 +686,29 @@ New ProdLoop,tmpStatus,AantalTePicken,ZeroPalletID,ErrorOccured #Define tmpAantalTePicken 1 #Define tmpZeroPalletID 2 + ; Bepaal mogelijke palleten via EWPAL, picking producten van de juiste order + New ConsolidatiePalletten + Set ConsolidatiePalletten = ..GeefPallettenVoorConsolidatie(ConsNr) Set ProdLoop="", ErrorOccured=0 For Set ProdLoop=$O(ZeroPallets(ProdLoop)) Quit:(ProdLoop="") Do . Set AantalTePicken=$LI(ZeroPallets(ProdLoop),$$$tmpAantalTePicken) . Quit:(AantalTePicken=0) . Set ZeroPalletID=$LI(ZeroPallets(ProdLoop),$$$tmpZeroPalletID) - . Set tmpStatus=..FStartReservePallets(ConsNr,Magazijn,ProdLoop,AantalTePicken,ZeroPalletID) + . Set tmpStatus=..FStartReservePallets(ConsNr,Magazijn,ProdLoop,AantalTePicken,ZeroPalletID,ConsolidatiePalletten) . If tmpStatus'="" Do //Indien '="" is er een fout opgetreden - .. Set ErrorOccured=1 - .. $$$WriteToLog("ERROR: "_tmpStatus) - .. Do ##class(Flow.OrderWMS.PalletReservatie).SetReservationIsDone(ConsNr,Magazijn,ProdLoop,0,tmpStatus) + . . $$$WriteToLog("################### reservatie niet gelukt met info uit EWPAL, fallback hier nodig ########################") + . . Set tmpStatus=..FStartReservePallets(ConsNr,Magazijn,ProdLoop,AantalTePicken,ZeroPalletID) ; om fallback te activeren, laatste parameter laten defaulten. + . . If tmpStatus'="" Do //Indien '="" is er een fout opgetreden + . . . $$$WriteToLog("################### fallback ook mislukt ########################") + . . . Set ErrorOccured=1 + . . . $$$WriteToLog("ERROR: "_tmpStatus) + . . . Do ##class(Flow.OrderWMS.PalletReservatie).SetReservationIsDone(ConsNr,Magazijn,ProdLoop,0,tmpStatus) + . . Else Do + . . . Do ##class(Flow.OrderWMS.PalletReservatie).SetReservationIsDone(ConsNr,Magazijn,ProdLoop,1) //Reservation=OK . Else Do - .. Do ##class(Flow.OrderWMS.PalletReservatie).SetReservationIsDone(ConsNr,Magazijn,ProdLoop,1) //Reservation=OK - + . . Do ##class(Flow.OrderWMS.PalletReservatie).SetReservationIsDone(ConsNr,Magazijn,ProdLoop,1) //Reservation=OK + $$$WriteToLog("ProcessUnFinishedZeroPalletIDs "_$S(ErrorOccured:"failed",1:"success")_".") Quit 'ErrorOccured @@ -803,6 +812,38 @@ Quit ErrStr ]]> + + +1 +ConsolidatieNr:%String +%ListOfDataTypes + +