Index: DOM/ProdRes/impl/VerwachteInvoerAPIimpl.cls.xml
===================================================================
diff -u -r2161 -r2169
--- DOM/ProdRes/impl/VerwachteInvoerAPIimpl.cls.xml (.../VerwachteInvoerAPIimpl.cls.xml) (revision 2161)
+++ DOM/ProdRes/impl/VerwachteInvoerAPIimpl.cls.xml (.../VerwachteInvoerAPIimpl.cls.xml) (revision 2169)
@@ -83,8 +83,8 @@
Set AantalTeLinkenInvoer = VerwachteInvoer.GeefAantal() - VerwachteInvoer.GeefAantalGelinkt()
- Set $ZTRAP = "RegistreerFout"
Set OperatieScope = ##class(TECH.OperatieScope).StartMetTx()
+ Set $ZTRAP = "RegistreerFout"
Set ProductReservatieIterator = VerwachteUitvoer.GeefProductReservatieIterator(ProductID)
While (AantalTeLinkenInvoer > 0 && ProductReservatieIterator.HasNext())
{
@@ -108,12 +108,14 @@
If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de reservatie niet opslaan",Status)) }
}
}
+ Set $ZTRAP = ""
Do OperatieScope.Gelukt()
Quit
RegistreerFout
Set $ZTRAP = ""
+ Set Exceptie = ##class(TECH.ExceptionHandler).Catch()
Do OperatieScope.Gefaald()
- Do ##class(TECH.ExceptionHandler).Rethrow()
+ Do ##class(TECH.ExceptionHandler).Rethrow(Exceptie)
]]>
@@ -168,5 +170,153 @@
Quit SamenvoegVoorstellen
]]>
+
+
+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)
+ Set Status = NieuweInvoerUitvoerLink.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de InvoerUitvoerLink niet opslaan",Status)) }
+ Do NieuweVerwachteInvoer.RegistreerInvoerUitvoerLink(NieuweInvoerUitvoerLink)
+ Set VerwachteUitvoerReservatie = InvoerUitvoerLink.GeefVerwachteUitvoerReservatie()
+ Do VerwachteUitvoerReservatie.RegistreerInvoerUitvoerLink(NieuweInvoerUitvoerLink)
+ Set Status = VerwachteUitvoerReservatie.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de verwachte uitvoer reservatie niet opslaan",Status)) }
+ }
+ // 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)
+ }
+ }
+
+ Set Status = VerwachteInvoer.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de originele verwachte invoer niet opslaan",Status)) }
+ Set Status = NieuweVerwachteInvoer.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de nieuwe verwachte invoer niet opslaan",Status)) }
+
+ 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)
+ Set Status = VerwachteUitvoerReservatie.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de nieuwe verwachte invoer niet opslaan",Status)) }
+ Do SamengevoegdeVerwachteInvoer.VerwijderInvoerUitvoerLink(InvoerUitvoerLink)
+ Set Status = InvoerUitvoerLink.%DeleteId(InvoerUitvoerLink.%Id())
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.StatusException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),"Kon invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" niet verwijderen",Status)) }
+ }
+ }
+
+ Set Status = SamengevoegdeVerwachteInvoer.%Save()
+ If ($$$ISERR(Status)) { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.SaveFailedException).%New("Kon de nieuwe verwachte invoer niet opslaan",Status)) }
+
+ 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)
+]]>
+