Index: vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml
===================================================================
diff -u -r1507 -r1619
--- vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml (.../OPGZoekProductGroepen.cls.xml) (revision 1507)
+++ vhUnitTest/DOM/PM/OL/Gamma/OPGZoekProductGroepen.cls.xml (.../OPGZoekProductGroepen.cls.xml) (revision 1619)
@@ -206,7 +206,7 @@
set dtoGamma = implOrgaluxProductGamma.ZoekProductGroepen(ProductCriteria,,LadeSpec)
if $IsObject(dtoGamma) {
- do $$$AssertEquals(7,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep Test3")
+ do $$$AssertEquals(8,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep Test3")
do $$$AssertEquals("ICT_GrpKey03",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(1).Identifier,"Controle Groep 1")
do $$$AssertEquals("ICT_GrpKey04",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(2).Identifier,"Controle Groep 2")
do $$$AssertEquals("ICT_GrpKey05",dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.GetAt(3).Identifier,"Controle Groep 3")
@@ -698,7 +698,7 @@
set dtoGamma = implOrgaluxProductGamma.ZoekProductGroepen(ProductCriteria,)
if $IsObject(dtoGamma) {
- do $$$AssertEquals(10,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep TestHogeLade")
+ do $$$AssertEquals(11,dtoGamma.ProductSubGroepen.GetAt("1").ProductGroepen.Count(),"Controle Groep TestHogeLade")
}
else {
do $$$AssertTrue(0,"TestZoekProductGroepen HogeLade geen resultaten") // failed
Index: DOM/PM/impl/DataM/DataMProduct.cls.xml
===================================================================
diff -u -r1609 -r1619
--- DOM/PM/impl/DataM/DataMProduct.cls.xml (.../DataMProduct.cls.xml) (revision 1609)
+++ DOM/PM/impl/DataM/DataMProduct.cls.xml (.../DataMProduct.cls.xml) (revision 1619)
@@ -296,8 +296,8 @@
Set MultipleGroepenIt = ..GeefMultipleGroepen()
While (MultipleGroepenIt.HasNext()){
Set MultipleGroep = MultipleGroepenIt.Next()
- Set MultipleNrs = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep).GetMultiplesLB(..GeefPRNr()) ; [Review WV JBL Kenm-Pref] De oproep ##class(BL.Kenm.ProdMulti).Create() genereert 'veel' overhead, en zou mogelijks maar 1x opgeroepen moeten worden per MultiGroep (???)
- If (($ll(MultipleNrs)> 0) && ($Data(MultipleNrs))) { ; [Review WV JBL Kenm-Pref] Wat is het nut van de $Data() test ?
+ Set MultipleNrs = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep).GetMultiplesLB(..GeefPRNr())
+ If ($ll(MultipleNrs) > 0) {
for i=1:1:$ll(MultipleNrs)
{
Do Multiples.Insert($lg(MultipleNrs,i))
@@ -309,14 +309,15 @@
+1
TECH.Iterator
1
","Sleutel")
+ Do $$$ProdKenmSetAt("","InfoSleutel")
+ Do $$$ProdKenmSetAt("ICT_GrpKey24","GroepSleutel")
+
+ Do $$$ProdKenmSetAt($LB("SINGLE"),"GeneratieType")
+ Do $$$ProdKenmSetAt($LB("vhUnitTest.com"),"WebSites")
+ Do $$$ProdKenmSetAt($LB("Keuken"),"MeubelToepassing")
+ Do $$$ProdKenmSetAt($LB("Opbergen_Borden"),"ZoneToepassing")
+ Do $$$ProdKenmSetAt($LB("Set"),"SamenstellingsType")
+ ;
+ Do $$$ProdKenmSetAt("WOODLINE_Noot","ProductType")
+ Do $$$ProdKenmSetAt($LB("TBX_intivo"),"LadeFamilie")
+ Do $$$ProdKenmSetAt($LB("D","D/Z"),"LadeType")
+ ;
+ Do $$$ProdKenmSetAt($LB(600),"Diepte")
+ Do $$$ProdKenmSetAt("900","LadeBreedteMin")
+ Do $$$ProdKenmSetAt("900","LadeBreedteMax")
+ Do $$$ProdKenmSetAt("40","ProductHoogte")
+ Do $$$ProdKenmSetAt($LB("TIPS_Antislipmat_AanTeRaden_SepBestellen"),"BOWeten")
+ }
+
ElseIf PRNr="1099" {
Set UnID = "1099.1"
Set sc=..BLProdMulti.AddProdMultiKenmerk(UnID)
Index: APPS/PM/KenmerkenService.cls.xml
===================================================================
diff -u -r1609 -r1619
--- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1609)
+++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1619)
@@ -60,62 +60,41 @@
}
/// UnIDs verzamelen
- Set SQLUnIDs = ""
- Set SQLUnIDsReedsToegevoegd = 0
+ Set UnIDs = ##class(%ListOfDataTypes).%New()
Set PRNrIterator = ##class(TECH.ListIterator).%New(PRNrs)
While (PRNrIterator.HasNext())
{
Set PRNr = PRNrIterator.Next()
Set Product = ProductAPI.GeefProduct(PRNr)
If ($IsObject(Product)){
- /// UnIDs verzamelen van dit PRNr
- Set UnIDs = ##class(%ListOfDataTypes).%New()
+ /// UnIDs verzamelen van dit PRNr
Set Multiples = Product.GeefMultiples()
If (Multiples.Count() > 0){
Set UnIDs = Multiples
}Else{
- Do UnIDs.Insert(PRNr) ; [Review WV JBL Kenm-Pref] de If-Else structuur --> je gaat ervan uit dat er geen conflicten bestaan tussen PRNr en PRNr.1 ofzo ?
- }
-
- /// UnIDs naar SQLUnIDs
- Set UnIDIt = ##class(TECH.ListIterator).%New(UnIDs)
- While (UnIDIt.HasNext()){
- If (SQLUnIDsReedsToegevoegd){
- Set SQLUnIDs = SQLUnIDs_", "
- }
- Set SQLUnIDs = SQLUnIDs _"'"_UnIDIt.Next()_"'"
- Set SQLUnIDsReedsToegevoegd = 1
- }
- ; [Review WV JBL Kenm-Pref] Aparte oproep ..MaakSqlIN(%ListOfDT) en gebruik ##class(TECH.ListUtils).ListToPieces(UnIDs,"', '") + begin- en eind-quotes (')
-
+ Do UnIDs.Insert(PRNr)
+ }
}Else {
Set ErrorMsg = "GeefProductKenmerken() : Het product met PRNr '"_PRNr_"' bestaat niet."
Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg))
}
}
+
+ /// UnIDs naar SQLUnIDs
+ Set SQLUnIDs = ..MaakSQLINParameters(UnIDs)
+
/// Kenmerkgroepen verzamelen
- Set SQLKenmerken = ""
- Set KenmerkGroepIterator = ##class(TECH.ListIterator).%New(KenmerkGroepen)
- If (KenmerkGroepIterator.HasNext()){
- Set SQLKenmerken = SQLKenmerken_"'"_KenmerkGroepIterator.Next()_"'"
- }
- While (KenmerkGroepIterator.HasNext()){
- Set SQLKenmerken = SQLKenmerken_", '"_KenmerkGroepIterator.Next()_"'"
- }
- ; [Review WV JBL Kenm-Pref] idem oproepen via ..MaakSqlIN(%ListOfDT)
+ Set SQLKenmerken = ..MaakSQLINParameters(KenmerkGroepen)
/// voorbereidend werk
- Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New()
- Set ProductKenmerken = ##class(APPS.PM.dto.Kenm.ProductKenmerken).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij?
- Set ProductKenmerkenGroep = ##class(APPS.PM.dto.Kenm.ProductKenmerkenGroep).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij?
- Set ProductKenmerkenSets = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New() ; [Review WV JBL Kenm-Pref] is niet nodig volgens mij?
-
- Set Kenmerken = ##class(%ListOfObjects).%New()
+ Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New()
+ Set Kenmerken = ##class(%ListOfObjects).%New()
/// DataDefinities ophalen
Set RS=##class(%ResultSet).%New()
Set SQLStatement = "SELECT ID, UnID, KenmerkGroep, KenmerkNaam, Waarden FROM Prod_Kenmerk.DataDefinitie where KenmerkGroep IN ( "_SQLKenmerken_" ) AND UnID In ( "_SQLUnIDs_" ) ORDER BY UnID, KenmerkGroep"
+ ///D WLIP^vhDBG(127,SQLStatement)
Do RS.Prepare(SQLStatement)
Set tmpStatus = RS.Execute(SQLKenmerken,SQLUnIDs)
@@ -127,8 +106,8 @@
While (RS.Next())
{
- ; [Review WV JBL Kenm-Pref] de RS.Data("UnID") wordt 5x opgevraagd. Beter in een variable steken?
- Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(RS.Data("UnID"))
+ Set UnID = RS.Data("UnID")
+ Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID)
/// Als PRNr verandert.
If (tmpPRNr '= PRNr){
@@ -147,12 +126,12 @@
/// Nagaan of dit record nog bij vorige hoort.
- If (tmpUnID '= RS.Data("UnID")) {
+ If (tmpUnID '= UnID || (tmpKenmerkGroep '= RS.Data("KenmerkGroep"))) {
Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New()
- Set ProductKenmerkenSet.UnID = RS.Data("UnID")
+ Set ProductKenmerkenSet.UnID = UnID
/// GeneratieType
- Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, tmpKenmerkGroep) ; [Review WV JBL Kenm-Pref] Kunnen we niet beter een oproep maken ProductAPI.GeefProductKenmerkWaarden(...) ?
- Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(RS.Data("UnID"))
+ Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, tmpKenmerkGroep)
+ Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(UnID)
If (KenmerkenSet.GeefKenmerkWaarden("GeneratieType").Count() > 0){
Set ProductKenmerkenSet.GeneratieType = KenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1)
}Else{
@@ -168,7 +147,7 @@
Do ProductKenmerkenSet.Kenmerken.Insert(ProductKenmerk)
Set tmpPRNr = PRNr
- Set tmpUnID = RS.Data("UnID")
+ Set tmpUnID = UnID
Set tmpKenmerkGroep = RS.Data("KenmerkGroep")
}
}
@@ -178,6 +157,18 @@
]]>
+
+
+Omzetten van een lijst, naar een string die gebruikt kan worden voor een SQL 'IN' statement.
+Lijst:%ListOfDataTypes
+1
+%String
+
+
+
Geeft de ProductenKenmerken voor 1 product voor 1 KenmerkGroep.
Index: Prod/Kenmerk/DataDefinitie.cls.xml
===================================================================
diff -u -r1580 -r1619
--- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1580)
+++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1619)
@@ -862,19 +862,6 @@
ORDER BY Waarde
-
-
-JBL + 2011-06-30
-Performanter ophalen kenmerken
-%Library.SQLQuery
-KenmerkGroepen:%String,UnIDs:%String
-
- SELECT UnID, KenmerkNaam, Waarden
- FROM Prod_Kenmerk.DataDefinitie
- where KenmerkGroep IN ( :KenmerkGroepen ) AND UnID In ( :UnIDs )
- ORDER BY ID
-
-
1
KenmerkUnID
Index: zJBLTestZoekKenmerken.mac.rou
===================================================================
diff -u -r1579 -r1619
--- zJBLTestZoekKenmerken.mac.rou (.../zJBLTestZoekKenmerken.mac.rou) (revision 1579)
+++ zJBLTestZoekKenmerken.mac.rou (.../zJBLTestZoekKenmerken.mac.rou) (revision 1619)
@@ -7,6 +7,84 @@
Set PRNrs = ##class(%ListOfDataTypes).%New()
Do PRNrs.Insert(315014)
Do PRNrs.Insert(557372)
+ Do PRNrs.Insert(64879)
+ Do PRNrs.Insert(64879)
+ Do PRNrs.Insert(64936)
+ Do PRNrs.Insert(64936)
+ Do PRNrs.Insert(200030)
+ Do PRNrs.Insert(200030)
+ Do PRNrs.Insert(396730)
+ Do PRNrs.Insert(396730)
+ Do PRNrs.Insert(396731)
+ Do PRNrs.Insert(396731)
+ Do PRNrs.Insert(583763)
+ Do PRNrs.Insert(583763)
+ Do PRNrs.Insert(64880)
+ Do PRNrs.Insert(64880)
+ Do PRNrs.Insert(64937)
+ Do PRNrs.Insert(64937)
+ Do PRNrs.Insert(200031)
+ Do PRNrs.Insert(200031)
+ Do PRNrs.Insert(562940)
+ Do PRNrs.Insert(562940)
+ Do PRNrs.Insert(562941)
+ Do PRNrs.Insert(562941)
+ Do PRNrs.Insert(583764)
+ Do PRNrs.Insert(583764)
+ Do PRNrs.Insert(204672)
+ Do PRNrs.Insert(204672)
+ Do PRNrs.Insert(204673)
+ Do PRNrs.Insert(204673)
+ Do PRNrs.Insert(583765)
+ Do PRNrs.Insert(583765)
+ Do PRNrs.Insert(64872)
+ Do PRNrs.Insert(64872)
+ Do PRNrs.Insert(64924)
+ Do PRNrs.Insert(64924)
+ Do PRNrs.Insert(200020)
+ Do PRNrs.Insert(200020)
+ Do PRNrs.Insert(64873)
+ Do PRNrs.Insert(64873)
+ Do PRNrs.Insert(64927)
+ Do PRNrs.Insert(64927)
+ Do PRNrs.Insert(200021)
+ Do PRNrs.Insert(200021)
+ Do PRNrs.Insert(64874)
+ Do PRNrs.Insert(64874)
+ Do PRNrs.Insert(64931)
+ Do PRNrs.Insert(64931)
+ Do PRNrs.Insert(200022)
+ Do PRNrs.Insert(200022)
+ Do PRNrs.Insert(359903)
+ Do PRNrs.Insert(359903)
+ Do PRNrs.Insert(521355)
+ Do PRNrs.Insert(521355)
+ Do PRNrs.Insert(583766)
+ Do PRNrs.Insert(583766)
+ Do PRNrs.Insert(64875)
+ Do PRNrs.Insert(64875)
+ Do PRNrs.Insert(64933)
+ Do PRNrs.Insert(64933)
+ Do PRNrs.Insert(200023)
+ Do PRNrs.Insert(200023)
+ Do PRNrs.Insert(354439)
+ Do PRNrs.Insert(354439)
+ Do PRNrs.Insert(396268)
+ Do PRNrs.Insert(396268)
+ Do PRNrs.Insert(583767)
+ Do PRNrs.Insert(583767)
+ Do PRNrs.Insert(64877)
+ Do PRNrs.Insert(64877)
+ Do PRNrs.Insert(64934)
+ Do PRNrs.Insert(64934)
+ Do PRNrs.Insert(200024)
+ Do PRNrs.Insert(200024)
+ Do PRNrs.Insert(64878)
+ Do PRNrs.Insert(64878)
+ Do PRNrs.Insert(64935)
+ Do PRNrs.Insert(64935)
+ Do PRNrs.Insert(200029)
+ Do PRNrs.Insert(200029)
Set KenmerkGroepen = ##class(%ListOfDataTypes).%New()
Do KenmerkGroepen.Insert("OL")
@@ -28,6 +106,84 @@
Set PRNrs = ##class(%ListOfDataTypes).%New()
Do PRNrs.Insert(315014)
Do PRNrs.Insert(557372)
+ Do PRNrs.Insert(64879)
+ Do PRNrs.Insert(64879)
+ Do PRNrs.Insert(64936)
+ Do PRNrs.Insert(64936)
+ Do PRNrs.Insert(200030)
+ Do PRNrs.Insert(200030)
+ Do PRNrs.Insert(396730)
+ Do PRNrs.Insert(396730)
+ Do PRNrs.Insert(396731)
+ Do PRNrs.Insert(396731)
+ Do PRNrs.Insert(583763)
+ Do PRNrs.Insert(583763)
+ Do PRNrs.Insert(64880)
+ Do PRNrs.Insert(64880)
+ Do PRNrs.Insert(64937)
+ Do PRNrs.Insert(64937)
+ Do PRNrs.Insert(200031)
+ Do PRNrs.Insert(200031)
+ Do PRNrs.Insert(562940)
+ Do PRNrs.Insert(562940)
+ Do PRNrs.Insert(562941)
+ Do PRNrs.Insert(562941)
+ Do PRNrs.Insert(583764)
+ Do PRNrs.Insert(583764)
+ Do PRNrs.Insert(204672)
+ Do PRNrs.Insert(204672)
+ Do PRNrs.Insert(204673)
+ Do PRNrs.Insert(204673)
+ Do PRNrs.Insert(583765)
+ Do PRNrs.Insert(583765)
+ Do PRNrs.Insert(64872)
+ Do PRNrs.Insert(64872)
+ Do PRNrs.Insert(64924)
+ Do PRNrs.Insert(64924)
+ Do PRNrs.Insert(200020)
+ Do PRNrs.Insert(200020)
+ Do PRNrs.Insert(64873)
+ Do PRNrs.Insert(64873)
+ Do PRNrs.Insert(64927)
+ Do PRNrs.Insert(64927)
+ Do PRNrs.Insert(200021)
+ Do PRNrs.Insert(200021)
+ Do PRNrs.Insert(64874)
+ Do PRNrs.Insert(64874)
+ Do PRNrs.Insert(64931)
+ Do PRNrs.Insert(64931)
+ Do PRNrs.Insert(200022)
+ Do PRNrs.Insert(200022)
+ Do PRNrs.Insert(359903)
+ Do PRNrs.Insert(359903)
+ Do PRNrs.Insert(521355)
+ Do PRNrs.Insert(521355)
+ Do PRNrs.Insert(583766)
+ Do PRNrs.Insert(583766)
+ Do PRNrs.Insert(64875)
+ Do PRNrs.Insert(64875)
+ Do PRNrs.Insert(64933)
+ Do PRNrs.Insert(64933)
+ Do PRNrs.Insert(200023)
+ Do PRNrs.Insert(200023)
+ Do PRNrs.Insert(354439)
+ Do PRNrs.Insert(354439)
+ Do PRNrs.Insert(396268)
+ Do PRNrs.Insert(396268)
+ Do PRNrs.Insert(583767)
+ Do PRNrs.Insert(583767)
+ Do PRNrs.Insert(64877)
+ Do PRNrs.Insert(64877)
+ Do PRNrs.Insert(64934)
+ Do PRNrs.Insert(64934)
+ Do PRNrs.Insert(200024)
+ Do PRNrs.Insert(200024)
+ Do PRNrs.Insert(64878)
+ Do PRNrs.Insert(64878)
+ Do PRNrs.Insert(64935)
+ Do PRNrs.Insert(64935)
+ Do PRNrs.Insert(200029)
+ Do PRNrs.Insert(200029)
Set KenmerkGroepen = ##class(%ListOfDataTypes).%New()
Do StartTimer^vhLib
Index: APPS/PM/ProductService.cls.xml
===================================================================
diff -u -r1542 -r1619
--- APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1542)
+++ APPS/PM/ProductService.cls.xml (.../ProductService.cls.xml) (revision 1619)
@@ -75,6 +75,15 @@
While (PRNrIt.HasNext()){
Do PRNrArray.SetAt(1,PRNrIt.Next())
}
+
+ /// Om pure performantie winst, de BL.Kenm.ProdMulti in geheugen houden
+ Set ProdMultiNr = 0
+ Set MultipleGroepenIt = ##class(DOM.PM.impl.DataM.DataMProduct).GeefMultipleGroepen()
+ While (MultipleGroepenIt.HasNext()){
+ Set MultipleGroep = MultipleGroepenIt.Next()
+ Set ProdMulti(ProdMultiNr) = ##class(BL.Kenm.ProdMulti).Create(MultipleGroep)
+ Set ProdMultiNr = ProdMultiNr + 1
+ }
Set AantalToegevoegde = 0
Set rs = rsSearch
Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml
===================================================================
diff -u -r1602 -r1619
--- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1602)
+++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1619)
@@ -96,6 +96,37 @@
]]>
+
+
+Product met kenmerken in meerdere groepen testen.
+
+
+