1 vhConsistency.Check Do ##class(vhConsistency.ConsistencyCheck).VoerUit(1,1,"vhConsistency.Checks.InvoerUitvoerLinken") %Status 0) // terugnames hebben negatieve aantallen en mogen geskipt worden { #dim VerwachteUitvoer As DOM.ProdRes.VerwachteUitvoer = VerwachteUitvoerAPI.ZoekUitvoerViaTransactieLijnRef(Order.GeefID(),ProductLijn.GeefID(),##class(DOM.common.enu.Bedrijf).VanHoecke()) If ($IsObject(VerwachteUitvoer)) { #dim Toelevering As DOM.AKP.Toelevering = ProductLijn.GeefToelevering() If ($IsObject(Toelevering)) { #dim ToeLijnNr As %Integer = ProductLijn.GeefToeleveringLijn().GeefID() #dim VerwachteInvoer As DOM.ProdRes.VerwachteInvoer = VerwachteInvoerAPI.ZoekInvoerViaTransactieRef(Toelevering.GeefID(),ToeLijnNr,##class(DOM.common.enu.Bedrijf).VanHoecke()) If ($IsObject(VerwachteInvoer)) { #dim InvoerUitvoerLinkIterator As TECH.Iterator = VerwachteInvoer.GeefReservatie().GeefInvoerUitvoerLinkIterator() If (InvoerUitvoerLinkIterator.HasNext()) { #dim InvoerUitvoerLink As DOM.ProdRes.InvoerUitvoerLink = InvoerUitvoerLinkIterator.Next() #dim UitvoerReservatie As DOM.ProdRes.UitvoerReservatie = InvoerUitvoerLink.GeefUitvoerReservatie() #dim InvoerReservatie As DOM.ProdRes.InvoerReservatie = InvoerUitvoerLink.GeefInvoerReservatie() If ('$IsObject(UitvoerReservatie)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" tussen (Order, LijnNr): "_Order.GeefID()_", "_ProductLijn.GeefLijnVolgNr()_" en (Toelevering, LijnNr): "_Toelevering.GeefID()_", "_ToeLijnNr_" is niet gelinkt aan een reservatie") } ElseIf (UitvoerReservatie.GeefProductID() '= InvoerReservatie.GeefProductID()) { Do ..VoegMeldingToe("Invoer-uitvoer-link tussen (Order, LijnNr): "_Order.GeefID()_", "_ProductLijn.GeefLijnVolgNr()_" en (Toelevering, LijnNr): "_Toelevering.GeefID()_", "_ToeLijnNr_" linkt tussen 2 verschillende producten "_UitvoerReservatie.GeefProductID()_" <-> "_VerwachteInvoer.GeefReservatie().GeefProductID()_" (niet auto oplosbaar)") } } Else { Do VerwachteInvoerAPI.RegistreerInvoerUitvoerLinken(VerwachteInvoer.%Id(),VerwachteUitvoer.%Id()) } } Else { Do ..VoegMeldingToe("Kon geen invoer-uitvoer-link registreren voor (Order, LijnNr): "_Order.GeefID()_", "_ProductLijn.GeefLijnVolgNr()_" omdat verwachte invoer niet kon gevonden worden voor (Toelevering, LijnNr): "_Toelevering.GeefID()_", "_ToeLijnNr) } } } } } } Set ResultSet = ##class(%ResultSet).%New("DOM.ProdRes.InvoerUitvoerLink:Extent") Do ResultSet.Execute() While (ResultSet.Next()) { Set InvoerUitvoerLink = ##class(DOM.ProdRes.InvoerUitvoerLink).%OpenId(ResultSet.Data("ID")) If $$$Not($IsObject(InvoerUitvoerLink)) { Do ..VoegMeldingToe("Invoer-uitvoer-link " _ ResultSet.Data("ID") _ " kon niet geopend worden") } Else { #dim VerwachteInvoerReservatie As DOM.ProdRes.InvoerReservatie = InvoerUitvoerLink.GeefInvoerReservatie() #dim VerwachteUitvoerReservatie As DOM.ProdRes.UitvoerReservatie = InvoerUitvoerLink.GeefUitvoerReservatie() Set VerwachteInvoer = VerwachteInvoerReservatie.GeefVerwachteInvoer() Set VerwachteUitvoer = VerwachteUitvoerReservatie.GeefVerwachteUitvoer() If ($$$Not($IsObject(VerwachteUitvoerReservatie))) && ($$$Not($IsObject(VerwachteInvoer))) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" is niet gekoppeld aan een verwachte invoer en reservatie (alleenstaande invoer-uitvoer-link)") } ElseIf ('$IsObject(VerwachteUitvoerReservatie)){ Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" is niet gekoppeld aan een reservatie maar wel aan (Toelevering, LijnNr): "_VerwachteInvoer.GeefTransactieReferentie()_", "_VerwachteInvoer.GeefTransactieLijnReferentie()) } ElseIf ('$IsObject(VerwachteInvoer)){ Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" is niet gekoppeld aan een verwachte invoer maar wel aan (Order, LijnNr): "_VerwachteUitvoerReservatie.GeefVerwachteUitvoer().GeefTransactieReferentie()_", "_VerwachteUitvoerReservatie.GeefVerwachteUitvoer().GeefTransactieLijnReferentie()) } ElseIf ('$IsObject(VerwachteUitvoer)){ Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" is niet gekoppeld aan een verwachte uitvoer maar wel aan (Order, LijnNr): "_VerwachteInvoer.GeefTransactieReferentie()_", "_VerwachteInvoer.GeefTransactieLijnReferentie()) } Else { #dim OrderNr As %String = VerwachteUitvoer.GeefTransactieReferentie() #dim OrderLijnCode As %String = VerwachteUitvoerReservatie.GeefVerwachteUitvoer().GeefTransactieLijnReferentie() #dim ToeNr As %String = VerwachteInvoer.GeefTransactieReferentie() Set ToeLijnNr = VerwachteInvoer.GeefTransactieLijnReferentie() If ('OrderAPI.BestaatOrder(OrderNr)) && ('ToeleveringAPI.BestaatToelevering(ToeNr)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar order "_OrderNr_" en toelevering "_ToeNr_" die beiden niet bestaan (niet auto oplosbaar)") } ElseIf ('OrderAPI.BestaatOrder(OrderNr)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar order "_OrderNr_" die niet bestaat (niet auto oplosbaar)") } ElseIf (InvoerUitvoerLink.GeefStatus()'=##class(DOM.ProdRes.enu.InvoerUitvoerLinkStatus).Voldaan()) && ('ToeleveringAPI.BestaatToelevering(ToeNr)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar toelevering "_ToeNr_" die niet bestaat (niet auto oplosbaar)") } ElseIf (InvoerUitvoerLink.GeefStatus()'=##class(DOM.ProdRes.enu.InvoerUitvoerLinkStatus).Voldaan()) { Set Order = OrderAPI.GeefOrder(OrderNr) #dim OrderLijn As DOM.VKP.Orderlijn = Order.GeefOrderLijn(OrderLijnCode) Set Toelevering = ToeleveringAPI.GeefToelevering(ToeNr) #dim ToeleveringLijn As DOM.AKP.ToeleveringLijn = Toelevering.GeefToeleveringLijn(ToeLijnNr) If ('$IsObject(OrderLijn)) && ('$IsObject(ToeleveringLijn)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar orderlijn "_OrderLijn.GeefLijnVolgNr()_" van order "_OrderNr_" en toeleveringlijn "_ToeLijnNr_" van toelevering "_ToeNr_" die beiden niet bestaan (niet auto oplosbaar)") } ElseIf ('$IsObject(OrderLijn)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar orderlijn "_OrderLijn.GeefLijnVolgNr()_" van order "_OrderNr_" die niet bestaat (niet auto oplosbaar)") } ElseIf (InvoerUitvoerLink.GeefStatus()'=##class(DOM.ProdRes.enu.InvoerUitvoerLinkStatus).Voldaan()) && ('$IsObject(ToeleveringLijn)) { Do ..VoegMeldingToe("Invoer-uitvoer-link "_InvoerUitvoerLink.%Id()_" verwijst naar toeleveringlijn "_ToeLijnNr_" van toelevering "_ToeNr_" die niet bestaat (niet auto oplosbaar)") } Else { #dim KOMToelevering As DOM.AKP.Toelevering = OrderLijn.GeefToelevering() If ('$IsObject(KOMToelevering)) { Do VerwachteInvoerAPI.VerbreekInvoerUitvoerLinken(InvoerUitvoerLink.GeefInvoerReservatie().GeefVerwachteInvoer().%Id(),InvoerUitvoerLink.GeefUitvoerReservatie().GeefVerwachteUitvoer().%Id()) Do ..VoegMeldingToe("Invoer-uitvoer-link tussen (Order, LijnNr): "_OrderNr_", "_OrderLijn.GeefLijnVolgNr()_" en (Toelevering, LijnNr): "_ToeNr_", "_ToeLijnNr_" bestaat niet meer tussen het order en de toelevering") } } } } } } If (..GeefAantalMeldingen() > 0) { Do ..VoegMeldingToe("Indien deze test ""gecrashed"" is. Is deze mogelijk op te lossen door de records te verwijderen die met deze query geselecteerd worden.") Do ..VoegMeldingToe("select IUL.ID As IULinkID, IR.ID As InvoerReservatieID,InvoerReservatie,UitvoerReservatie,Status from DOM_ProdRes_impl.InvoerUitvoerLinkImpl IUL") Do ..VoegMeldingToe("LEFT OUTER JOIN DOM_ProdRes.InvoerReservatie IR ON IUL.InvoerReservatie = IR.ID") Do ..VoegMeldingToe("HAVING IR.ID Is NULL") Quit $$$ERROR($$$GeneralError,"Tralala") } Else { Quit $$$OK } ]]>