Index: vhUnitTest/APPS/PM/TestProductService.cls.xml =================================================================== diff -u -r1724 -r1763 --- vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 1724) +++ vhUnitTest/APPS/PM/TestProductService.cls.xml (.../TestProductService.cls.xml) (revision 1763) @@ -76,6 +76,30 @@ ]]> + + + + 1 APPS.PM.enu.GeneratieType list + + +%String + Index: APPS/PM/ProductService.cls.xml =================================================================== diff -u -r1723 -r1763 --- APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1723) +++ APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1763) @@ -88,24 +88,42 @@ Set AantalToegevoegde = 0 Set rs = rsSearch + If ($Length(Criteria.DataInKenmerkGroep)>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 (Criteria.ExacteKorttekst && (Criteria.SoortProductID = ##class(APPS.PM.enu.SoortProductID).Korttekst()) && (Product.GeefKorttekst() '= Criteria.ProductID)){ + 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 (Criteria.GeopendNa && (Product.GeefOpeningDatum() <= Criteria.GeopendNa)){ + 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 ($IsObject(Criteria.GeneratieType) && (Criteria.GeneratieType.Count() > 0) && ('Criteria.GeneratieType.Find(##class(APPS.PM.enu.GeneratieType).Onbepaald()))){ - - + 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)){ @@ -114,7 +132,6 @@ Set MultipleIt = ##class(TECH.ListIterator).%New(Multiples) While (MultipleIt.HasNext()){ Set UnID = MultipleIt.Next() - Set DataDefID= ##class(Prod.Kenmerk.DataDefinitie).BuildDataDefinitionID($$$KenmerkGroepID,UnID,"GeneratieType") Set GeneratieTypeDataDef=$LG(##class(Prod.Kenmerk.DataDefinitie).Get($$$KenmerkGroepID,UnID,"GeneratieType"),1) Set GeneratieTypeIt = ##class(TECH.ListIterator).%New(Criteria.GeneratieType) While (GeneratieTypeIt.HasNext()){