TECH.Error,APPS.PM.OL.Common 1 %RegisteredObject 0 %String \\Notes01\Images\Orgalux\ Geef gegeven de criteria een lijst terug met producten (Prod.Product) Criteria:APPS.PM.dto.ZoekCriteria APPS.PM.dto.ProductIDsControleResult 0) { Set DataInKenmerkGroepResultSet = ##class(%ResultSet).%New() Do DataInKenmerkGroepResultSet.Prepare("SELECT Count(1) As HeeftDataInKenmerkGroep FROM Prod_Kenmerk.DataDefinitie WHERE PRNr = ? AND KenmerkGroep = ?") } While(rs.Next() && ((Criteria.MaxAantalResultaten = "") || (AantalToegevoegde < Criteria.MaxAantalResultaten))) { Set PRNr = rs.GetData(1) If ((PRNrArray.Count() = 0) || (PRNrArray.IsDefined(PRNr) = 1 )){ Set Product = ProductAPI.GeefProduct(PRNr) Set Toevoegen = 1 /// Als op exacte korttekst gezocht word, die hier controleren. If (Toevoegen && Criteria.ExacteKorttekst && (Criteria.SoortProductID = ##class(APPS.PM.enu.SoortProductID).Korttekst()) && (Product.GeefKorttekst() '= Criteria.ProductID)){ Set Toevoegen = 0 } /// Indien GeopenNa meegeven, hier checken met datum van opening product If (Toevoegen && Criteria.GeopendNa && (Product.GeefOpeningDatum() <= Criteria.GeopendNa)){ Set Toevoegen = 0 } If (Toevoegen && ($Length(Criteria.DataInKenmerkGroep)>0)) { Do DataInKenmerkGroepResultSet.Execute(PRNr, Criteria.DataInKenmerkGroep) If (DataInKenmerkGroepResultSet.Next()) { Set Toevoegen = (DataInKenmerkGroepResultSet.Data("HeeftDataInKenmerkGroep")>0) } Else { Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.GeneralErrorException).%New("Kon de query niet uitvoeren om te achterhalen of het product data heeft in een kenmerkgroep")) } } /// Als generatietype is opgegeven hierop filteren If (Toevoegen && $IsObject(Criteria.GeneratieType) && (Criteria.GeneratieType.Count() > 0) && ('Criteria.GeneratieType.Find(##class(APPS.PM.enu.GeneratieType).Onbepaald()))){ /// Indien product multiple heeft, toevoegen als minstens één multiple hetzelfde generatietype heeft. /// Nie alle multiples moeten dus voldoen aan hetzelfde generatietype. If ($$ISORGAL^ORGALUX(PRNr)){ Set Multiples = Product.GeefMultiples() Set MultipleToevoegen = 0 Set MultipleIt = ##class(TECH.ListIterator).%New(Multiples) While (MultipleIt.HasNext()){ Set UnID = MultipleIt.Next() Set GeneratieTypeDataDef=$LG(##class(Prod.Kenmerk.DataDefinitie).Get($$$KenmerkGroepID,UnID,"GeneratieType"),1) Set GeneratieTypeIt = ##class(TECH.ListIterator).%New(Criteria.GeneratieType) While (GeneratieTypeIt.HasNext()){ Set GeneratieType = GeneratieTypeIt.Next() If (GeneratieType = GeneratieTypeDataDef){ Set MultipleToevoegen = 1 } } } If ('MultipleToevoegen){ Set Toevoegen = 0 } }Else{ Set UnID = Product.GeefPRNr() Set DataDefID= ##class(Prod.Kenmerk.DataDefinitie).BuildDataDefinitionID($$$KenmerkGroepID,UnID,"GeneratieType") Set GeneratieTypeDataDef=$LG(##class(Prod.Kenmerk.DataDefinitie).Get($$$KenmerkGroepID,UnID,"GeneratieType"),1) If ##class(Prod.Kenmerk.DataDefinitie).%ExistsId(DataDefID) { Set GeneratieTypeIt = ##class(TECH.ListIterator).%New(Criteria.GeneratieType) While (GeneratieTypeIt.HasNext()){ Set GeneratieType = GeneratieTypeIt.Next() If (GeneratieType '= GeneratieTypeDataDef){ Set Toevoegen = 0 } } }Else{ Set Toevoegen = 0 } } } /// TOEVOEGEN If Toevoegen { Set DataService = ##class(APPS.common.DataService).%New() Set ProductID = DataService.GeefProductData(PRNr) Do ProductenLijst.HerkendeProducten.Insert(ProductID) Set AantalToegevoegde = AantalToegevoegde + 1 } } } $$$TECHErrorTrapOff Quit ProductenLijst ]]> De klassificatiestructuur voor producten terug geven in een boomstructuur. APPS.PM.dto.Classificatie PRNrs:%ListOfDataTypes APPS.PM.dto.ProductIDsControleResult Kortteksten:%ListOfDataTypes APPS.PM.dto.ProductIDsControleResult DossierNrs:%ListOfDataTypes APPS.PM.dto.ProductIDsControleResult IdentNrs:%ListOfDataTypes APPS.PM.dto.ProductIDsControleResult ClassificatieObject:DOM.PM.Classificatie 1 APPS.PM.dto.Classificatie