1 TECH.Mockable DOM.MAG.Inventaris.InventarisRepository 1 APPS.MAG.UglyPickingService 1 TECH.Query.QueryAPI 1 InventarisRepository:DOM.MAG.Inventaris.InventarisRepository,UglyPickingService:APPS.MAG.UglyPickingService 1 1 %Status 1 BronPalletID:%String,DoelPalletID:%String,ProductID:%String,AantalBijTeLaden:%Integer APPS.MAG.Inventaris.dto.BijladenInfo BronPalletID:%String,DoelPalletID:%String,DoelLocatieID:%String,ProductID:%String,AantalBijTeLaden:%Integer APPS.MAG.Inventaris.dto.BijladenUitgevoerd OK 2) doelpallet bestaat nog niet, en de opgegeven locatie is bezet => mag niet 3) doelpallet bestaat wel, en de opgegeven locatie klopt => OK 4) doelpallet bestaat wel, en de opgegeven locatie klopt niet => mag niet */ ]]> 1 %List PalletID:%String PalletID:%String APPS.MAG.Inventaris.dto.ProductenOpPallet 'EMPTY'" } Else { Set Query = "SELECT rtrim(product) as ProductID, CAST(qtytoreceive AS INT) as Aantal, I.locm As loc_m, (SELECT count(1) FROM EWMS.ToReceive WHERE loc_id = I.locid) as AantalSecties, T.Loc_Trans As LocatieID, T.Loc_IsPickbaar As IsPickbaar" _" FROM EWMS.ToReceive I" _" LEFT JOIN EWMS.Locations L ON I.locm = L.loc_m and I.locid = L.loc_id" _" LEFT JOIN EWMS.TransLoc T ON T.loc_m = L.loc_m AND T.loc_g = L.loc_g AND T.loc_x = L.loc_x AND T.loc_y = L.loc_y" _" WHERE I.locid = ? AND I.locm < 5 AND I.Product <> 'EMPTY' AND I.QtyReceived > 0" } #Dim Params As %List = $listbuild(PalletID) #Dim ResultSet As TECH.ResultSet = ..QueryAPI.GeefQueryUitvoerder().VoerUit(Query, Params) While (ResultSet.Next()) { Set ProductOpPallet = ##class(APPS.MAG.Inventaris.dto.ProductOpPallet).%New() Set ProductOpPallet.ProductData = DataService.GeefProductData(ResultSet.Data("ProductID")) Set ProductOpPallet.Aantal = ResultSet.Data("Aantal") Set ProductOpPallet.PalletID = PalletID Set ProductOpPallet.LocatieID = ResultSet.Data("LocatieID") Set ProductOpPallet.IsPickbaar = ResultSet.Data("IsPickbaar") Set ProductOpPallet.MagazijnOmschrijving = ##class(Prod.Product).GetMagViaOpslagzone(ResultSet.Data("loc_m")) Set ProductOpPallet.IsLocatieEenTransitZone = ##class(BL.MB.UGLYPicking.General).LocMIsInTransit(ResultSet.Data("loc_m")) Set ProductOpPallet.AantalSecties = ResultSet.Data("AantalSecties") Do ProductenOpPallet.Insert(ProductOpPallet) } Do ResultSet.Close() // Ophalen in welke magazijnen dit product aanwezig is, dit moet achteraf gebeuren. // Indien dit in de lus hierboven gebeurt dan geeft dit problemen (waarschijnlijk omdat dit niet over dezelfde connectie kan?). Set ProductOpPalletIterator = ##class(TECH.ListIterator).%New(ProductenOpPallet) While (ProductOpPalletIterator.HasNext()) { Set ProductOpPallet = ProductOpPalletIterator.Next() Set ProductOpPallet.AanwezigInMagazijnen = ..GeefAanwezigInMagazijnen(ProductOpPallet.ProductData.ID) Set ProductOpPallet.PalletIsBezet = ##class(BL.MB.UGLYPicking.Opslag).PalletIsBusy(PalletID) } Quit ProductenOpPallet ]]> ProductID:%String APPS.MAG.Inventaris.dto.ProductenOpPallet ProductID:%String APPS.MAG.Inventaris.dto.ProductenOpPallet ProductID:%String,ResultSet:%ResultSet 1 APPS.MAG.Inventaris.dto.ProductenOpPallet PalletID:%String,ProductID:%String APPS.MAG.Inventaris.dto.ProductReceptieDetail %ListOfObjects PalletID:%String,Uitgang:APPS.MAG.Inventaris.enu.AutoMagazijnUitgang APPS.MAG.Inventaris.dto.PalletOpvragenAutoMagazijnStatus PalletID:%String,Uitgang:%String 1 PalletID:%String,Uitgang:APPS.MAG.Inventaris.enu.AutoMagazijnUitgang %Boolean PalletID:%String,Uitgang:%String %String PalletID:%String APPS.MAG.Inventaris.dto.PalletOpvragenAutoMagazijnStatus PalletID:%String,DoelLocatieID:%String PalletID:%String,DoelLocatieID:%String PalletID:%String,ProductID:%String APPS.MAG.Inventaris.dto.CycleCountInfo PalletID:%String,ProductID:%String 1 %Integer 1 APPS.MAG.Inventaris.dto.ProductVerpakking 1) { Set ProductVerpakking.AantalInVerpakking = AantalInVerpakking Set ProductVerpakking.AantalVerpakkingen = ##class(TECH.Math).Floor(TotaalAantal / AantalInVerpakking) Set TotaalAantal = TotaalAantal # AantalInVerpakking } ElseIf ((AantalInVerpakking = 1) && (TotaalAantal > 0)) { Set ProductVerpakking.AantalInVerpakking = AantalInVerpakking Set ProductVerpakking.AantalVerpakkingen = ##class(TECH.Math).Floor(TotaalAantal / AantalInVerpakking) } Quit ProductVerpakking ]]> 1 %ListOfDataTypes ProductID:%Integer 1 %ListOfObjects PalletID:%String,ProductID:%String,Reden:%String,AantalGrootVerpakkingen:%Integer,AantalKleinVerpakkingen:%Integer,AantalStukVerpakkingen:%Integer,PalletInfo:APPS.MAG.UGLYPicking.dto.PalletInfo=##class(APPS.MAG.UGLYPicking.dto.PalletInfo).%New(),AutoCC:%Boolean=0 Geeft lijst met APPS.MAG.Inventaris.dto.BijladenProductInfo BijladenTotTimeStamp:%TimeStamp %ListOfObjects TePickenProduct:APPS.MAG.Inventaris.dto.BijladenProductInfo %ListOfObjects dtoProductOpPallet:APPS.MAG.Inventaris.dto.ProductOpPallet,TePickenProduct:APPS.MAG.Inventaris.dto.BijladenProductInfo APPS.MAG.Inventaris.dto.BijladenProductInfo Een lijst met BijladenProductInfo objecten. Deze lijst is gesorteerd op vroegste due out time ascending. TimeStamp:%TimeStamp %ListOfObjects Hoofding->DueOutTime)) As VroegsteDueOut" _" FROM Flow_OrderWMS.Sub" _" WHERE (Lijn->Hoofding->StatusWMS IN ('W','P')) AND StatusWMS = 'W' AND VerwerkingSoftware NOT IN ('1','2','3','H','E') " _" AND (Product != '' OR Product IS NOT NULL) and Product->IsStockOverKinderen = 0 AND TECH.DateTime_HorologToTimeStamp(Lijn->Hoofding->DueOutTime) < ? " _" GROUP BY Product" _" ORDER BY VroegsteDueOut ASC") #Dim Status As %Status = ResultSet.Execute(TimeStamp) If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.StatusException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),"Kon de aantal gevraagde producten niet ophalen.",Status)) } While ResultSet.Next() { Set BijladenProductInfo = ##class(APPS.MAG.Inventaris.dto.BijladenProductInfo).%New() Set BijladenProductInfo.VroegsteDueOut = ResultSet.Data("VroegsteDueOut") Set BijladenProductInfo.ProductID = $ZSTRIP(ResultSet.Data("ProductID"),"<>W") Set BijladenProductInfo.AantalTePicken = ResultSet.Data("Aantal") Do TePickenProducten.Insert(BijladenProductInfo) } Do ResultSet.Close() Set ResultSet = "" Quit TePickenProducten ]]> ProductID:%String %Integer ProductID:%String,IsPickbaar:%Boolean=1 %Integer PalletID:%String %ListOfObjects ELEMENTTYPE="APPS.MAG.Inventaris.dto.LocatieInfo" PalletID:%String %Boolean N.B. "Echte pallet" betekent dat VHOSS als drager niet aanvaard wordt. PalletID:%String %Boolean PalletID:%String,LocatieID:%String %Boolean %Boolean LocatieID:%String %Boolean OriginelePalletID:%String,NieuwePalletID:%String 0) { Set Exceptie = ##class(TECH.Exceptions.InvalidInputException).%New("Er staan reeds producten op de nieuwe pallet") Do Exceptie.VoegToeExtraInfo("OriginelePalletID:"_OriginelePalletID) Do Exceptie.VoegToeExtraInfo("NieuwePalletID:"_NieuwePalletID) Do ##class(TECH.ExceptionHandler).Throw(Exceptie) } #Dim MagazijnLocatie As DOM.MAG.MagazijnLocatie = ..GeefLocatieVoorDrager(OriginelePalletID) Do ##class(EWMS.Locations).CreateEmpty(MagazijnLocatie.GeefMagazijn(), MagazijnLocatie.GeefGang(), MagazijnLocatie.GeefX(), MagazijnLocatie.GeefY(), , NieuwePalletID) #Dim DoelLocatieID As %List = ##class(EWMS.TransLoc).GetTransLocation(MagazijnLocatie.GeefMagazijn() ,MagazijnLocatie.GeefGang(), MagazijnLocatie.GeefX(), MagazijnLocatie.GeefY()) Set ProductenOpPallet = ..GeefProductenOpPallet(OriginelePalletID) #Dim LocatieOriginelePallet As %String = "" Set Iterator = ##class(TECH.ListIterator).%New(ProductenOpPallet) While (Iterator.HasNext()) { #Dim ProductOpPallet As APPS.MAG.Inventaris.dto.ProductOpPallet = Iterator.Next() Do ..VoerBijladenUit(OriginelePalletID, NieuwePalletID, DoelLocatieID, ProductOpPallet.ProductData.ID, ProductOpPallet.Aantal) Set LocatieOriginelePallet = ProductOpPallet.LocatieID } #Dim NieuweLocatie As DOM.MAG.MagazijnLocatie = ..GeefLocatieVoorDrager(NieuwePalletID) If (LocatieOriginelePallet '= "") && (OrigineleLocatie.GeefCode() '= NieuweLocatie.GeefCode()) { Do ..VerplaatsPallet(NieuwePalletID, LocatieOriginelePallet) } ]]> 1 APPS.MAG.Inventaris.dto.BijladenVanVerpakking 0) { Set BijladenVanVerpakking.AantalAanwezigOpDoel = ##class(TECH.Math).Floor(AantalOpDoelPallet / AantalInVerpakking) Set AantalOpDoelPallet = AantalOpDoelPallet # AantalInVerpakking Set BijladenVanVerpakking.AantalBijladenVanBron = ##class(TECH.Math).Floor(AantalBijTeLaden / AantalInVerpakking) Set AantalBijTeLaden = AantalBijTeLaden # AantalInVerpakking } Quit BijladenVanVerpakking ]]> DragerID:%String 1 DOM.MAG.MagazijnLocatie 8) { Set ExceptionDragerIDIsTeLang = ##class(TECH.Exceptions.InvalidUserInputException).%New("Een drager mag maximum 8 tekens bevatten.") Do ExceptionDragerIDIsTeLang.VoegToeExtraInfo("DragerID : "_DragerID) Do ##class(TECH.ExceptionHandler).Throw(ExceptionDragerIDIsTeLang) } #Dim Locatie As DOM.MAG.MagazijnLocatie = ##class(DOM.DomeinContext).Instance().GeefMagazijnAPI().GeefMagazijnLocatie("") #Dim SQL As %String = "SELECT L.loc_m As M,L.loc_g As G,L.loc_x As X,L.loc_y As Y FROM EWMS.Locations L WHERE Loc_id = ? " #Dim ResultSet As %ResultSet = $$ExecDynQuery^vhLib.Query(SQL,$listbuild(DragerID)) If (ResultSet.Next()) { #Dim LocatieID As %String = ##class(BL.MB.UGLYPicking.General).BuildLocStr(ResultSet.Data("M"), ResultSet.Data("G"), ResultSet.Data("X"), ResultSet.Data("Y"),"",1) Set Locatie = ##class(DOM.DomeinContext).Instance().GeefMagazijnAPI().GeefMagazijnLocatie(LocatieID) } Quit Locatie ]]>