1 %RegisteredObject,DOM.ProdRes.VerwachteInvoerAPI 0 VerwachteInvoerID:%String VerwachteInvoerInfo:DOM.ProdRes.dto.VerwachteInvoerInfo DOM.ProdRes.VerwachteInvoer VerwachteInvoerID:%String VerwachteInvoerID:%String TransactieReferentie:%String,TransactieLijnReferentie:%String,Bedrijf:DOM.common.enu.Bedrijf DOM.ProdRes.VerwachteInvoer VerwachteInvoerID:%String,VerwachteUitvoerID:%String 0 && ProductReservatieIterator.HasNext()) { Set Reservatie = ProductReservatieIterator.Next() Set AantalTeLinkenReservatie = Reservatie.GeefAantal() - Reservatie.GeefAantalGelinkt() If (AantalTeLinkenReservatie > AantalTeLinkenInvoer) { Set AantalTeLinkenReservatie = AantalTeLinkenInvoer } If (AantalTeLinkenReservatie > 0) { Set InvoerUitvoerLink = ##class(DOM.ProdRes.impl.InvoerUitvoerLinkImpl).%New(AantalTeLinkenReservatie) Do InvoerUitvoerLink.Save() Do VerwachteInvoer.RegistreerInvoerUitvoerLink(InvoerUitvoerLink) Do Reservatie.RegistreerInvoerUitvoerLink(InvoerUitvoerLink) Set AantalTeLinkenInvoer = AantalTeLinkenInvoer - AantalTeLinkenReservatie Do VerwachteInvoer.Save() Do Reservatie.Save() } } Set $ZTRAP = "" Do OperatieScope.Gelukt() Quit RegistreerFout Set $ZTRAP = "" Set Exceptie = ##class(TECH.ExceptionHandler).Catch() Do OperatieScope.Gefaald() Do ##class(TECH.ExceptionHandler).Rethrow(Exceptie) ]]> Geeft aan voor welke producten bepaalde verwachte invoeren kunnen samengevoegd worden. VerwachteUitvoerIDs:%ListOfDataTypes DOM.ProdRes.dto.SamenvoegVoorstellen 1) { Set SamenvoegVoorstel = ##class(DOM.ProdRes.dto.SamenvoegVoorstel).%New() Set SamenvoegVoorstel.Aantal = 0 Set SamenvoegVoorstel.ProductID = VerwachteInvoerLijstIterator.Key() Set VerwachteInvoerIterator = ##class(TECH.ListIterator).%New(VerwachteInvoerLijst) While (VerwachteInvoerIterator.HasNext()) { Set VerwachteInvoer = VerwachteInvoerIterator.Next() Do SamenvoegVoorstel.VerwachteInvoerIDs.Insert(VerwachteInvoer.%Id()) Set SamenvoegVoorstel.Aantal = SamenvoegVoorstel.Aantal + VerwachteInvoer.GeefAantal() } Do SamenvoegVoorstellen.Insert(SamenvoegVoorstel) } } Quit SamenvoegVoorstellen ]]> Verbreekt de nodige invoer-uitvoer-links en doet ook de nodige saves. VerwachteInvoerID:%String,VerwachteUitvoerID:%String VerwachteInvoerID:%String,NieuweVerwachteInvoer:DOM.ProdRes.dto.VerwachteInvoerInfo DOM.ProdRes.VerwachteInvoer AantalGelinkt)) { Set InvoerUitvoerLink = InvoerUitvoerLinkIterator.Next() Set AantalGelinkt = AantalGelinkt + InvoerUitvoerLink.GeefAantalProducten() } // Als er überhaupt een invoer-uitvoer-link was komen we in deze if If ($IsObject(InvoerUitvoerLink)) { // Het object dat aanwezig is, is degene die er heeft voor gezorgd dat de while lus is gestopt. // Als het aantal gelinkt groter is dan moet het de invoer-uitvoer-link gesplitst worden. // Bij gelijke aantallen moeten we niks extra doen met dit object want dan voldoet de verwachte invoer net om de link te voldoen. If (VerwachteInvoer.GeefAantal() < AantalGelinkt) { Set AantalAfsplitsen = AantalGelinkt - VerwachteInvoer.GeefAantal() Do InvoerUitvoerLink.ZetAantalProducten(InvoerUitvoerLink.GeefAantalProducten()-AantalAfsplitsen) Set NieuweInvoerUitvoerLink = ##class(DOM.ProdRes.impl.InvoerUitvoerLinkImpl).%New(AantalAfsplitsen) Do NieuweInvoerUitvoerLink.Save() Do NieuweVerwachteInvoer.RegistreerInvoerUitvoerLink(NieuweInvoerUitvoerLink) Set VerwachteUitvoerReservatie = InvoerUitvoerLink.GeefVerwachteUitvoerReservatie() Do VerwachteUitvoerReservatie.RegistreerInvoerUitvoerLink(NieuweInvoerUitvoerLink) Do VerwachteUitvoerReservatie.Save() } // Alle resterende invoer-uitvoer-linken moeten verplaatst worden naar de nieuwe verwachte invoer While (InvoerUitvoerLinkIterator.HasNext()) { Set InvoerUitvoerLink = InvoerUitvoerLinkIterator.Next() Do VerwachteInvoer.VerwijderInvoerUitvoerLink(InvoerUitvoerLink) Do NieuweVerwachteInvoer.RegistreerInvoerUitvoerLink(InvoerUitvoerLink) } } Do VerwachteInvoer.Save() Do NieuweVerwachteInvoer.Save() Set $ZTRAP = "" Do OperatieScope.Gelukt() Quit NieuweVerwachteInvoer SplitsError Set $ZTRAP = "" Set Exceptie = ##class(TECH.ExceptionHandler).Catch() Do OperatieScope.Gefaald() Do ##class(TECH.ExceptionHandler).Rethrow(Exceptie) ]]> De verwachte invoeren moeten dezelfde producten bevatten. De samengevoegde verwachte invoer wordt teruggegeven. De samen te voegen verwachte invoeren worden verwijderd. VerwachteInvoerIDs:%ListOfDataTypes,DueIn:%TimeStamp,TransactieReferentie:%String,TransactieLijnReferentie:%String DOM.ProdRes.VerwachteInvoer reservatie) hetzelfde zijn. Deze kunnen we ook samenvoegen. Set InvoerUitvoerLinkPerReservatie = ##class(%ArrayOfObjects).%New() Set InvoerUitvoerLinkIterator = SamengevoegdeVerwachteInvoer.GeefInvoerUitvoerLinkIterator() While (InvoerUitvoerLinkIterator.HasNext()) { Set InvoerUitvoerLink = InvoerUitvoerLinkIterator.Next() Set VerwachteUitvoerReservatie = InvoerUitvoerLink.GeefVerwachteUitvoerReservatie() Set VerwachteUitvoerReservatieID = VerwachteUitvoerReservatie.%Id() If ('InvoerUitvoerLinkPerReservatie.IsDefined(VerwachteUitvoerReservatieID)) { Do InvoerUitvoerLinkPerReservatie.SetAt(InvoerUitvoerLink, VerwachteUitvoerReservatieID) } Else { Set BestaandeInvoerUitvoerLink = InvoerUitvoerLinkPerReservatie.GetAt(VerwachteUitvoerReservatieID) Do BestaandeInvoerUitvoerLink.ZetAantalProducten(BestaandeInvoerUitvoerLink.GeefAantalProducten() + InvoerUitvoerLink.GeefAantalProducten()) Do VerwachteUitvoerReservatie.VerwijderInvoerUitvoerLink(InvoerUitvoerLink) Do VerwachteUitvoerReservatie.Save() Do SamengevoegdeVerwachteInvoer.VerwijderInvoerUitvoerLink(InvoerUitvoerLink) Do InvoerUitvoerLink.DeleteId(InvoerUitvoerLink.%Id()) } } Do SamengevoegdeVerwachteInvoer.Save() Set $ZTRAP = "" Do OperatieScope.Gelukt() } Quit SamengevoegdeVerwachteInvoer SamenvoegError Set $ZTRAP = "" Set Exceptie = ##class(TECH.ExceptionHandler).Catch() Do OperatieScope.Gefaald() Do ##class(TECH.ExceptionHandler).Rethrow(Exceptie) ]]> ProductID:%String,Bedrijf:DOM.common.enu.Bedrijf,InclusiefGelinkte:%Boolean,MaxDueIn:%TimeStamp=##class(TECH.DateTime).MaxTimeStamp() %Float