Do ##class(vhUnitTest.Manager).RunTest("/debug/display=all","DOM.ProdRes.TestVerwachteInvoerAPI") 1 vhUnitTest.TestCase 0 0,"De due in is ingesteld") Do $$$AssertEquals(VerwachteInvoer.GeefProductID(),"Product1","De product id") Do $$$AssertEquals(VerwachteInvoer.GeefTransactieReferentie(),"UT Transactieref","De transactiereferentie") Do VerwachteInvoer.ZetTransactieReferentie("UT Transactieref gewijzigd") Do $$$AssertEquals(VerwachteInvoer.GeefTransactieReferentie(),"UT Transactieref gewijzigd","De transactiereferentie gewijzigd") Do $$$AssertEquals(VerwachteInvoer.GeefTransactieLijnReferentie(),"UT Transactielijnref","De transactielijnreferentie") Do VerwachteInvoer.ZetTransactieLijnReferentie("UT Transactielijnref gewijzigd") Do $$$AssertEquals(VerwachteInvoer.GeefTransactieLijnReferentie(),"UT Transactielijnref gewijzigd","De transactielijnreferentie gewijzigd") Do VerwachteInvoer.%DeleteId(VerwachteInvoer.%Id()) ]]> | P1 210 | // | P1 170 | ---170---> | | // | | +------------+ // | | +------------+ // | P2 30 | ----15---> | P2 15 | // +------------+ +------------+ // \ +------------+ // \--15---> | P2 18 | // +------------+ // Opbouw uitvoer objecten Set VerwachteUitvoerAPI = ##class(DOM.DomeinContext).Instance().GeefVerwachteUitvoerAPI() Set ReservatieVoorVerwachteUitvoer = ##class(DOM.ProdRes.dto.ReservatieVoorVerwachteUitvoer).%New() Set ReservatieVoorVerwachteUitvoer.TransactieReferentie = "UT uitvoer1" Set ReservatieVoorVerwachteUitvoer.TransactieLijnReferentie = "UT uitvoer1 lijn1" Set ReservatieVoorVerwachteUitvoer.Bedrijf = ##class(DOM.common.enu.Bedrijf).VanHoecke() Set ReservatieMoeder = ##class(DOM.ProdRes.dto.Reservatie).%New() Set ReservatieVoorVerwachteUitvoer.Reservatie = ReservatieMoeder Set ReservatieMoeder.ProductID = "MoederProduct" Set ReservatieMoeder.Aantal = 1 // Aantal maakt hier niet uit Set Reservatie1 = ##class(DOM.ProdRes.dto.Reservatie).%New() Set Reservatie1.ProductID = "P1" Set Reservatie1.Aantal = 50 Do ReservatieMoeder.KindReservaties.Insert(Reservatie1) Set Reservatie2 = ##class(DOM.ProdRes.dto.Reservatie).%New() Set Reservatie2.ProductID = "P1" Set Reservatie2.Aantal = 170 Do ReservatieMoeder.KindReservaties.Insert(Reservatie2) Set Reservatie3 = ##class(DOM.ProdRes.dto.Reservatie).%New() Set Reservatie3.ProductID = "P2" Set Reservatie3.Aantal = 30 Do ReservatieMoeder.KindReservaties.Insert(Reservatie3) Set VerwachteUitvoer = VerwachteUitvoerAPI.RegistreerReservaties(ReservatieVoorVerwachteUitvoer) // Opbouw invoer objecten Set VerwachteInvoerAPI = ##class(DOM.DomeinContext).Instance().GeefVerwachteInvoerAPI() Set VerwachteInvoerInfo = ##class(DOM.ProdRes.dto.VerwachteInvoerInfo).%New() Set VerwachteInvoerInfo.Aantal = 210 Set VerwachteInvoerInfo.ProductID = "P1" Set VerwachteInvoerInfo.TransactieReferentie = "UT invoer1" Set VerwachteInvoerInfo.TransactieLijnReferentie = "UT invoer1 lijn1" Set VerwachteInvoer1 = VerwachteInvoerAPI.RegistreerVerwachteInvoer(VerwachteInvoerInfo) Set VerwachteInvoerInfo = ##class(DOM.ProdRes.dto.VerwachteInvoerInfo).%New() Set VerwachteInvoerInfo.Aantal = 15 Set VerwachteInvoerInfo.ProductID = "P2" Set VerwachteInvoerInfo.TransactieReferentie = "UT invoer2" Set VerwachteInvoerInfo.TransactieLijnReferentie = "UT invoer2 lijn1" Set VerwachteInvoer2 = VerwachteInvoerAPI.RegistreerVerwachteInvoer(VerwachteInvoerInfo) Set VerwachteInvoerInfo = ##class(DOM.ProdRes.dto.VerwachteInvoerInfo).%New() Set VerwachteInvoerInfo.Aantal = 18 Set VerwachteInvoerInfo.ProductID = "P2" Set VerwachteInvoerInfo.TransactieReferentie = "UT invoer3" Set VerwachteInvoerInfo.TransactieLijnReferentie = "UT invoer3 lijn1" Set VerwachteInvoer3 = VerwachteInvoerAPI.RegistreerVerwachteInvoer(VerwachteInvoerInfo) // Registreren van invoer/uitvoer links Do VerwachteInvoerAPI.RegistreerInvoerUitvoerLinken(VerwachteInvoer1.%Id(),VerwachteUitvoer.%Id()) Do $$$AssertEquals(VerwachteInvoer1.GeefAantalGelinkt(),210,"Er zijn 210 producten gelinkt") Set ReservatieIterator = VerwachteUitvoer.GeefReservatie().GeefKindReservatieIterator() Set Reservatie1 = ReservatieIterator.Next() Set Reservatie2 = ReservatieIterator.Next() Set Reservatie3 = ReservatieIterator.Next() Do $$$AssertEquals(Reservatie1.GeefAantalGelinkt(),40,"40 van de 50 producten zijn gelinkt") Do $$$AssertEquals(Reservatie2.GeefAantalGelinkt(),170,"Alle producten zijn gelinkt") Do $$$AssertEquals(Reservatie3.GeefAantalGelinkt(),0,"Er zijn nog geen producten gelinkt") Do $$$AssertEquals(VerwachteInvoer1.GeefAantalGelinkt(),210,"Alle producten zijn gelinkt") Do VerwachteInvoerAPI.RegistreerInvoerUitvoerLinken(VerwachteInvoer2.%Id(),VerwachteUitvoer.%Id()) Do $$$AssertEquals(Reservatie1.GeefAantalGelinkt(),40,"40 van de 50 producten zijn gelinkt") Do $$$AssertEquals(Reservatie2.GeefAantalGelinkt(),170,"Alle producten zijn gelinkt") Do $$$AssertEquals(Reservatie3.GeefAantalGelinkt(),15,"Er zijn 15 producten gelinkt") Do $$$AssertEquals(VerwachteInvoer2.GeefAantalGelinkt(),15,"Alle producten zijn gelinkt") Do VerwachteInvoerAPI.RegistreerInvoerUitvoerLinken(VerwachteInvoer3.%Id(),VerwachteUitvoer.%Id()) Do $$$AssertEquals(Reservatie1.GeefAantalGelinkt(),40,"40 van de 50 producten zijn gelinkt") Do $$$AssertEquals(Reservatie2.GeefAantalGelinkt(),170,"Alle producten zijn gelinkt") Do $$$AssertEquals(Reservatie3.GeefAantalGelinkt(),30,"Alle producten zijn gelinkt") Do $$$AssertEquals(VerwachteInvoer3.GeefAantalGelinkt(),15,"15 van de 18 producten zijn gelinkt") // Verwachte invoer iterator controleren Set VerwachteInvoerIterator = VerwachteUitvoer.GeefVerwachteInvoerIterator() Do $$$AssertTrue(VerwachteInvoerIterator.HasNext(),"Element 1 is aanwezig") Do VerwachteInvoerIterator.Next() Do $$$AssertTrue(VerwachteInvoerIterator.HasNext(),"Element 2 is aanwezig") Do VerwachteInvoerIterator.Next() Do $$$AssertTrue(VerwachteInvoerIterator.HasNext(),"Element 3 is aanwezig") Do VerwachteInvoerIterator.Next() Do $$$AssertFalse(VerwachteInvoerIterator.HasNext(),"Er is geen 4de element aanwezig") // Samenvoegvoorstel nagaan Set VerwachteUitvoerIDs = ##class(%ListOfDataTypes).%New() Do VerwachteUitvoerIDs.Insert(VerwachteUitvoer.%Id()) Set SamenvoegVoorstellen = VerwachteInvoerAPI.GeefSamenvoegVoorstellen(VerwachteUitvoerIDs) Do $$$AssertEquals(SamenvoegVoorstellen.Count(),1,"Er is 1 samenvoeg voorstel") Set SamenvoegVoorstel = SamenvoegVoorstellen.GetAt(1) Do $$$AssertEquals(SamenvoegVoorstel.ProductID,"P2","P2 kan worden samengevoegd") Do $$$AssertEquals(SamenvoegVoorstel.Aantal,15+18,"33 producten kunnen samengevoegd worden") // Voor de splitsing die we gaan doen eerst de huidige toestand controleren Set Reservatie1LinkIterator = Reservatie1.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie1LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),40,"40 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),VerwachteInvoer1,"De verwachte invoer") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie1,"De reservatie") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is geen volgende link") Set Reservatie1LinkIterator = Reservatie2.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie1LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),170,"170 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),VerwachteInvoer1,"De verwachte invoer") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie2,"De reservatie") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is geen volgende link") // Eerste verwachte invoer splitsen in 170 - 40 Set VerwachteInvoerInfo = ##class(DOM.ProdRes.dto.VerwachteInvoerInfo).%New() Set VerwachteInvoerInfo.Aantal = 40 Set VerwachteInvoerInfo.ProductID = "P1" Set VerwachteInvoerInfo.TransactieReferentie = "UT invoer1" Set VerwachteInvoerInfo.TransactieLijnReferentie = "UT invoer1 lijn2" Set NieuweVerwachteInvoer = VerwachteInvoerAPI.SplitsVerwachteInvoer(VerwachteInvoer1.%Id(),VerwachteInvoerInfo) // Nagaan of de splitsing correct was en of de invoer-uitvoer-linken correct zijn herlegd Set Reservatie1LinkIterator = Reservatie1.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie1LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),40,"40 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),NieuweVerwachteInvoer,"De verwachte invoer bij reservatie 1") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie1,"De reservatie") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is geen volgende link") Set Reservatie2LinkIterator = Reservatie2.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie2LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),170,"170 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),VerwachteInvoer1,"De verwachte invoer bij reservatie 2") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie2,"De reservatie") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is geen volgende link") // De splitsing terug samenvoegen Set VerwachteInvoerIDs = ##class(%ListOfDataTypes).%New() Do VerwachteInvoerIDs.Insert(VerwachteInvoer1.%Id()) Do VerwachteInvoerIDs.Insert(NieuweVerwachteInvoer.%Id()) Set SamengevoegdeVerwachteInvoer = VerwachteInvoerAPI.VoegVerwachteInvoerenSamen(VerwachteInvoerIDs,"2011-09-23 08:57:19",VerwachteInvoer1.GeefTransactieReferentie(),VerwachteInvoer1.GeefTransactieLijnReferentie()) Do $$$AssertEquals(SamengevoegdeVerwachteInvoer.GeefAantal(),210,"Het aantal producten is terug samengevoegd") Set InvoerUitvoerLinkIterator = SamengevoegdeVerwachteInvoer.GeefInvoerUitvoerLinkIterator() Do $$$AssertTrue(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft zeker 1 invoer-uitvoer-link") Do InvoerUitvoerLinkIterator.Next() Do $$$AssertTrue(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft ook een 2de invoer-uitvoer-link") Do InvoerUitvoerLinkIterator.Next() Do $$$AssertFalse(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft geen 3de invoer-uitvoer-link") // Opnieuw opsplitsen maar nu met 180 - 30, nu moeten er een invoer-uitvoer-link opgesplitst worden Set VerwachteInvoerInfo = ##class(DOM.ProdRes.dto.VerwachteInvoerInfo).%New() Set VerwachteInvoerInfo.Aantal = 30 Set VerwachteInvoerInfo.ProductID = "P1" Set VerwachteInvoerInfo.TransactieReferentie = "UT invoer1" Set VerwachteInvoerInfo.TransactieLijnReferentie = "UT invoer1 lijn2" Set NieuweVerwachteInvoer = VerwachteInvoerAPI.SplitsVerwachteInvoer(VerwachteInvoer1.%Id(),VerwachteInvoerInfo) // Nagaan of de splitsing correct was en of de invoer-uitvoer-linken correct zijn herlegd Set Reservatie1LinkIterator = Reservatie1.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie1LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),10,"10 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),VerwachteInvoer1,"De verwachte invoer bij reservatie 1") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie1,"De reservatie") Do $$$AssertTrue(Reservatie1LinkIterator.HasNext(),"Er is een volgende link") Set InvoerUitvoerLink = Reservatie1LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),30,"30 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),NieuweVerwachteInvoer,"De verwachte invoer bij reservatie 1") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie1,"De reservatie van de gesplitste link") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is geen volgende link") Set Reservatie2LinkIterator = Reservatie2.GeefInvoerUitvoerLinkIterator() Set InvoerUitvoerLink = Reservatie2LinkIterator.Next() Do $$$AssertEquals(InvoerUitvoerLink.GeefAantalProducten(),170,"170 producten gelinkt") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteInvoer(),VerwachteInvoer1,"De verwachte invoer bij reservatie 2") Do $$$AssertEquals(InvoerUitvoerLink.GeefVerwachteUitvoerReservatie(),Reservatie2,"De reservatie") Do $$$AssertFalse(Reservatie1LinkIterator.HasNext(),"Er is een volgende link") // De splitsing terug samenvoegen, ook de gesplitste invoer-uitvoer-link moet samengevoegd zijn Set VerwachteInvoerIDs = ##class(%ListOfDataTypes).%New() Do VerwachteInvoerIDs.Insert(VerwachteInvoer1.%Id()) Do VerwachteInvoerIDs.Insert(NieuweVerwachteInvoer.%Id()) Set SamengevoegdeVerwachteInvoer = VerwachteInvoerAPI.VoegVerwachteInvoerenSamen(VerwachteInvoerIDs,"2011-09-23 08:57:19",VerwachteInvoer1.GeefTransactieReferentie(),VerwachteInvoer1.GeefTransactieLijnReferentie()) Do $$$AssertEquals(SamengevoegdeVerwachteInvoer.GeefAantal(),210,"Het aantal producten is terug samengevoegd") Set InvoerUitvoerLinkIterator = SamengevoegdeVerwachteInvoer.GeefInvoerUitvoerLinkIterator() Do $$$AssertTrue(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft zeker 1 invoer-uitvoer-link") Do InvoerUitvoerLinkIterator.Next() Do $$$AssertTrue(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft ook een 2de invoer-uitvoer-link") Do InvoerUitvoerLinkIterator.Next() Do $$$AssertFalse(InvoerUitvoerLinkIterator.HasNext(),"De verwachte invoer heeft geen 3de invoer-uitvoer-link") // Verbreken van linken testen Do VerwachteInvoerAPI.VerbreekInvoerUitvoerLinken(VerwachteInvoer1.%Id(),VerwachteUitvoer.%Id()) Do $$$AssertFalse(VerwachteInvoer1.GeefInvoerUitvoerLinkIterator().HasNext(),"De links zijn weg") Do $$$AssertFalse(VerwachteUitvoer.GeefReservatie().GeefInvoerUitvoerLinkIterator().HasNext(),"De links zijn weg") // Opkuis data Do VerwachteUitvoer.%DeleteId(VerwachteUitvoer.%Id()) Do VerwachteInvoer1.%DeleteId(VerwachteInvoer1.%Id()) Do VerwachteInvoer2.%DeleteId(VerwachteInvoer2.%Id()) Do VerwachteInvoer3.%DeleteId(VerwachteInvoer3.%Id()) Do NieuweVerwachteInvoer.%DeleteId(NieuweVerwachteInvoer.%Id()) ]]> 1 %Status