1 %RegisteredObject BronPalletID:%String,DoelPalletID:%String,ProductID:%String,AantalBijTeLaden:%Integer APPS.MAG.Inventaris.dto.BijladenInfo 0) { Set GrootVerpakking.AantalAanwezigOpDoel = ##class(TECH.Math).Floor(AantalOpDoelPallet/GrootVerpakking.AantalInVerpakking) Set AantalOpDoelPallet = AantalOpDoelPallet#GrootVerpakking.AantalInVerpakking Set GrootVerpakking.AantalBijladenVanBron = ##class(TECH.Math).Floor(AantalBijTeLaden/GrootVerpakking.AantalInVerpakking) Set AantalBijTeLaden = AantalBijTeLaden#GrootVerpakking.AantalInVerpakking } Set BijladenInfo.GrootVerpakking = GrootVerpakking Set NormaalVerpakking = ##class(APPS.MAG.Inventaris.dto.BijladenVanVerpakking).%New() Set NormaalVerpakking.AantalInVerpakking = Product.GeefAantalInNormaalVerpakking() If (NormaalVerpakking.AantalInVerpakking > 0) { Set NormaalVerpakking.AantalAanwezigOpDoel = ##class(TECH.Math).Floor(AantalOpDoelPallet/NormaalVerpakking.AantalInVerpakking) Set AantalOpDoelPallet = AantalOpDoelPallet#NormaalVerpakking.AantalInVerpakking Set NormaalVerpakking.AantalBijladenVanBron = ##class(TECH.Math).Floor(AantalBijTeLaden/NormaalVerpakking.AantalInVerpakking) Set AantalBijTeLaden = AantalBijTeLaden#NormaalVerpakking.AantalInVerpakking } Set BijladenInfo.NormaalVerpakking = NormaalVerpakking Set StukVerpakking = ##class(APPS.MAG.Inventaris.dto.BijladenVanVerpakking).%New() Set StukVerpakking.AantalInVerpakking = 1 Set StukVerpakking.AantalAanwezigOpDoel = AantalOpDoelPallet Set StukVerpakking.AantalBijladenVanBron = AantalBijTeLaden Set BijladenInfo.StukVerpakking = StukVerpakking Quit BijladenInfo ]]> BronPalletID:%String,DoelPalletID:%String,ProductID:%String,AantalBijTeLaden:%Integer APPS.MAG.Inventaris.dto.BijladenUitgevoerd PalletID:%String PalletID:%String APPS.MAG.Inventaris.dto.ProductenOpPallet 'EMPTY'") } Else { Do ResultSet.Prepare("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.QtyTransported = 0 AND I.QtyReceived > 0") } Do ResultSet.Execute(PalletID) 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.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 PalletID:%String,ProductID:%String APPS.MAG.Inventaris.dto.ProductReceptieDetail PalletID:%String,Uitgang:APPS.MAG.Inventaris.enu.AutoMagazijnUitgang PalletID:%String,DoelLocatieID:%String PalletID:%String,ProductID:%String APPS.MAG.Inventaris.dto.CycleCountInfo 0) { Set GrootVerpakking.AantalVerpakkingen = ##class(TECH.Math).Floor(Aantal/GrootVerpakking.AantalInVerpakking) Set Aantal = Aantal#GrootVerpakking.AantalInVerpakking } Set CycleCountInfo.GrootVerpakking = GrootVerpakking Set NormaalVerpakking = ##class(APPS.MAG.Inventaris.dto.ProductVerpakking).%New() Set NormaalVerpakking.AantalInVerpakking = Product.GeefAantalInNormaalVerpakking() Set NormaalVerpakking.AantalVerpakkingen = 0 If (NormaalVerpakking.AantalInVerpakking > 0) { Set NormaalVerpakking.AantalVerpakkingen = ##class(TECH.Math).Floor(Aantal/NormaalVerpakking.AantalInVerpakking) Set Aantal = Aantal#NormaalVerpakking.AantalInVerpakking } Set CycleCountInfo.NormaalVerpakking = NormaalVerpakking Set KleinVerpakking = ##class(APPS.MAG.Inventaris.dto.ProductVerpakking).%New() Set KleinVerpakking.AantalInVerpakking = 0 Set KleinVerpakking.AantalVerpakkingen = 0 If (Aantal > 0) { Set KleinVerpakking.AantalInVerpakking = 1 Set KleinVerpakking.AantalVerpakkingen = Aantal } Set CycleCountInfo.KleinVerpakking = KleinVerpakking Quit CycleCountInfo ]]> ProductID:%Integer 1 %ListOfObjects PalletID:%String,ProductID:%String,Reden:%String,AantalGrootVerpakkingen:%Integer,AantalNormaalVerpakkingen:%Integer,AantalKleinVerpakkingen:%Integer Geeft lijst met APPS.MAG.Inventaris.dto.BijladenProductInfo BijladenTotTimeStamp:%TimeStamp %ListOfObjects arAantalPickbaar.GetAt(ProductID))){ If ((arAantalPickbaar.GetAt(ProductID))>0){ Set TePickenProduct.AantalPickbaar = arAantalPickbaar.GetAt(ProductID) }Else{ Set TePickenProduct.AantalPickbaar = 0 } /// Pickbare en niet pickbare locaties instellen. Set ProductOpPalletIt = ##class(TECH.ListIterator).%New(InventarisService.GeefPallettenMetProduct(ProductID)) While ProductOpPalletIt.HasNext() { Set ProductOpPallet = ProductOpPalletIt.Next() Set TePickenProduct.ProductData = ProductOpPallet.ProductData If $L(TePickenProduct.ProductData.Code) = 0 { Set TePickenProduct.ProductData.Code = ProductID } If ProductOpPallet.IsPickbaar { Do TePickenProduct.PickbareLocaties.Insert(ProductOpPallet) }Else { Do TePickenProduct.NietPickbareLocaties.Insert(ProductOpPallet) } } Do ProductenBijTeLaden.Insert(TePickenProduct) } } Quit ProductenBijTeLaden ]]> Een lijst met BijladenProductInfo objecten. Deze lijst is gesorteerd op vroegste due out time ascending. TimeStamp:%TimeStamp 1 %ListOfObjects Hoofding->DueOutTime)) As VroegsteDueOut" _" FROM Flow_OrderWMS.Sub" _" WHERE StatusWMS = 'W' AND TECH.DateTime_HorologToTimeStamp(Lijn->Hoofding->DueOutTime) < ?" _" GROUP BY Product" _" ORDER BY VroegsteDueOut ASC") Set 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 ]]> Een array met ProductID als key en AantalPickbaar als value ProductIDs:%ListOfDataTypes,IsPickbaar:%Boolean=1 1 %ArrayOfDataTypes 0){ Set IN = "" Set ProductIDIt = ##class(TECH.ListIterator).%New(ProductIDs) While ProductIDIt.HasNext(){ Set IN = IN_ProductIDIt.Next() If ProductIDIt.HasNext(){ Set IN = IN_", " } } Set ResultSet = ##class(%ResultSet).%New() Set Statement = "SELECT I.Product As ProductID, SUM(CAST(qty_pcs AS INT)) as Aantal" _" FROM EWMS.Inventory I" _" JOIN EWMS.Locations L ON I.loc_m = L.loc_m and I.loc_id = 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" _" GROUP BY I.Product,T.Loc_ispickbaar, I.loc_m" _" HAVING T.loc_ispickbaar = ? AND I.loc_m < 5 AND I.Product IN ("_IN_")" Do ResultSet.Prepare(Statement) Set Status = ResultSet.Execute(IsPickbaar) If $$$ISERR(Status) Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.StatusException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),"Kon de aantal pickbare producten niet ophalen.",Status)) While ResultSet.Next() { Set ProductID = $ZSTRIP(ResultSet.Data("ProductID"),"<>W") Set Aantal = ResultSet.Data("Aantal") Do arAantalPickbaar.SetAt(Aantal, ProductID) } Do ResultSet.Close() Set ResultSet = "" } Quit arAantalPickbaar ]]>