Index: Prod/Kenmerk/DataDefinitie.cls.xml
===================================================================
diff -u -r1565 -r1580
--- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1565)
+++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1580)
@@ -116,14 +116,27 @@
+
+************** !!!! **************** !!! ***************************************
+KenmerkGroep en KenmerkNaam dienen ENKEL voor indexen te kunnen maken.
+Deze mogen NOOIT door programma code gebruikt worden of aangeroepen worden !!!
+************** !!!! **************** !!! ***************************************
%String
+1
+
+************** !!!! **************** !!! ***************************************
+KenmerkGroep en KenmerkNaam dienen ENKEL voor indexen te kunnen maken.
+Deze mogen NOOIT door programma code gebruikt worden of aangeroepen worden !!!
%String
+1
+
+************** !!!! **************** !!! ***************************************
IsNew:%Library.Boolean=1
0
%Library.Status
@@ -258,7 +271,7 @@
%Status
+
+
+
+1
+UnID:%String,GroepID:%String
+1
+Groep = :GroepID) OR (:GroepID=$$$CodeAllGroups)) )
&sql(OPEN crsDP)
- For &sql(FETCH crsDP) Quit:SQLCODE Do ##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID)
+ For &sql(FETCH crsDP) Quit:SQLCODE Set HasDeleteKenmerk = 1 Do ##class(Prod.Kenmerk.DataDefinitie).%DeleteId(DDefID)
&sql(CLOSE crsDP)
- Quit
+ Quit HasDeleteKenmerk
]]>
@@ -490,6 +523,7 @@
Quit:(FromUnID="")||(ToUnID="") $$$ERROR($$$GeneralError,$$$msgUnIDisEmpty)
Set sc=$$$OK
+
If $G(lbGroepIDs)="" Set sc=$$cvpCopyGroep(FromUnID,ToUnID,"*",.lbExcludeGroepIDs) ; Alle groepen
Else Do
. For i=1:1:$LL(lbGroepIDs) Do Quit:($$$ISERR(sc))
@@ -828,6 +862,19 @@
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: DOM/PM/ProductAPI.cls.xml
===================================================================
diff -u -r1507 -r1580
--- DOM/PM/ProductAPI.cls.xml (.../ProductAPI.cls.xml) (revision 1507)
+++ DOM/PM/ProductAPI.cls.xml (.../ProductAPI.cls.xml) (revision 1580)
@@ -61,13 +61,15 @@
Geef de enige kenmerkenset van het opgegeven PRNr
1
PRNr:%Integer,KenmerkenGroep:%String
+DOM.PM.ProductKenmerkenSet
Geef meerdere kenmerkenset van het opgegeven PRNr, bij multiples
1
PRNr:%Integer,KenmerkenGroep:%String
+DOM.PM.ProductKenmerkenSets
Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml
===================================================================
diff -u -r1539 -r1580
--- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1539)
+++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1580)
@@ -63,7 +63,7 @@
do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).KenmerkenGroepen.GetAt(1).Sets.GetAt(1).Kenmerken.Count(),15,"Juiste aantal gedefineerde kenmerken.")
- do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).KenmerkenGroepen.GetAt(1).Sets.GetAt(1).Kenmerken.GetAt(1).Naam,"ProductType","Kenmerknaam is correct ingevuld.")
+ do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(2).KenmerkenGroepen.GetAt(1).Sets.GetAt(1).Kenmerken.GetAt(1).Naam,"Diepte","Kenmerknaam is correct ingevuld.")
]]>
@@ -92,7 +92,7 @@
do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(1).KenmerkenGroepen.GetAt(1).Sets.GetAt(2).Kenmerken.Count(),19,"Juiste aantal gedefineerde kenmerken ProductKenmerken2.")
- do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(1).KenmerkenGroepen.GetAt(1).Sets.GetAt(2).Kenmerken.GetAt(1).Naam,"ProductType","Kenmerknaam is correct ingevuld.")
+ do $$$AssertEquals(ProductenKenmerken.Kenmerken.GetAt(1).KenmerkenGroepen.GetAt(1).Sets.GetAt(2).Kenmerken.GetAt(1).Naam,"BOWeten","Kenmerknaam is correct ingevuld.")
]]>
Index: APPS/PM/KenmerkenService.cls.xml
===================================================================
diff -u -r1563 -r1580
--- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1563)
+++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1580)
@@ -51,92 +51,125 @@
$$$chkRequiredParameter(PRNrs)
$$$chkIsObject(PRNrs)
- Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New()
Set ProductAPI = ##class(DOM.DomeinContext).Instance().GeefProductAPI()
+ Set ProductService = ##class(APPS.PM.ProductService).%New()
-
// nadien nagaan of er iets in kenmerkGroepen zit
if ('$IsObject(KenmerkGroepen) || (KenmerkGroepen.Count() = 0)) {
Set KenmerkGroepen = ##class(Prod.Kenmerk.MetaGroep).GetAllMetaGroupsAsList()
}
- Set ProductAPI = ##class(DOM.DomeinContext).Instance().GeefProductAPI()
- Set ProductService = ##class(APPS.PM.ProductService).%New()
- Set RS=##class(%ResultSet).%New("Prod.Kenmerk.MetaDefinitie:FilterMetaDefsViaGroep")
+
+ /// UnIDs verzamelen
+ Set SQLUnIDs = ""
+ Set SQLUnIDsReedsToegevoegd = 0
Set PRNrIterator = ##class(TECH.ListIterator).%New(PRNrs)
While (PRNrIterator.HasNext())
{
- Set PRNr = PRNrIterator.Next()
-
+ Set PRNr = PRNrIterator.Next()
Set Product = ProductAPI.GeefProduct(PRNr)
- Set ProductKenmerken = ##class(APPS.PM.dto.Kenm.ProductKenmerken).%New()
- Set ProductKenmerken.PRNr = PRNr
-
- Set KenmerkGroepIterator = ##class(TECH.ListIterator).%New(KenmerkGroepen)
- While (KenmerkGroepIterator.HasNext())
- {
- Set KenmerkGroep = KenmerkGroepIterator.Next()
-
- Set ProductKenmerkenGroep = ##class(APPS.PM.dto.Kenm.ProductKenmerkenGroep).%New()
- Set ProductKenmerkenGroep.Sets = ##class(%ListOfObjects).%New()
- Set ProductKenmerkenGroep.Naam = KenmerkGroep
-
- Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, KenmerkGroep)
-
+ If ($IsObject(Product)){
+ /// UnIDs verzamelen van dit PRNr
Set UnIDs = ##class(%ListOfDataTypes).%New()
Set Multiples = Product.GeefMultiples()
If (Multiples.Count() > 0){
Set UnIDs = Multiples
}Else{
Do UnIDs.Insert(PRNr)
}
+
+ /// UnIDs naar SQLUnIDs
Set UnIDIt = ##class(TECH.ListIterator).%New(UnIDs)
- While (UnIDIt.HasNext()){
- Set UnID = UnIDIt.Next()
- Set Kenmerken = ##class(%ListOfObjects).%New()
-
- Set tmpStatus=RS.Execute(KenmerkGroep)
- If $$$ISOK(tmpStatus)
- {
- While (RS.Next())
- {
- Set DataDefID= ##class(Prod.Kenmerk.DataDefinitie).BuildDataDefinitionID(KenmerkGroep,UnID,RS.Get("Kenmerk"))
- If ##class(Prod.Kenmerk.DataDefinitie).%ExistsId(DataDefID)
- {
- Set tmpDataDef=##class(Prod.Kenmerk.DataDefinitie).%OpenId(DataDefID)
- Set ProductKenmerk = ##class(APPS.PM.dto.Kenm.ProductKenmerk).%New()
- Set ProductKenmerk.Naam = tmpDataDef.GeefKenmerk().Kenmerk
- Set ProductKenmerk.Waarden = tmpDataDef.Waarden
- Do Kenmerken.Insert(ProductKenmerk)
- }
- }
+ While (UnIDIt.HasNext()){
+ If (SQLUnIDsReedsToegevoegd){
+ Set SQLUnIDs = SQLUnIDs_", "
}
-
- /// Enkel Set toevoegen als er kenmerken zijn voor die set.
- If (Kenmerken.Count() > 0){
- Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New()
- Set ProductKenmerkenSet.UnID = UnID
-
- /// GeneratieType
- Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(UnID)
- If (KenmerkenSet.GeefKenmerkWaarden("GeneratieType").Count() > 0){
- Set ProductKenmerkenSet.GeneratieType = KenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1)
- }Else{
- Set ProductKenmerkenSet.GeneratieType = ##class(APPS.PM.enu.GeneratieType).Single()
- }
+ Set SQLUnIDs = SQLUnIDs _"'"_UnIDIt.Next()_"'"
+ Set SQLUnIDsReedsToegevoegd = 1
+ }
+ }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))
+ }
+ }
- Set ProductKenmerkenSet.Kenmerken = Kenmerken
- Do ProductKenmerkenGroep.Sets.Insert(ProductKenmerkenSet)
- }
- }
-
+ /// 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()_"'"
+ }
+
+
+ /// voorbereidend werk
+ Set ProductenKenmerken = ##class(APPS.PM.dto.Kenm.ProductenKenmerken).%New()
+ Set ProductKenmerken = ##class(APPS.PM.dto.Kenm.ProductKenmerken).%New()
+ Set ProductKenmerkenGroep = ##class(APPS.PM.dto.Kenm.ProductKenmerkenGroep).%New()
+ Set ProductKenmerkenSets = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%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)
+ If $$$ISOK(tmpStatus)
+ {
+ Set tmpUnID = ""
+ Set tmpKenmerkGroep = ""
+ Set tmpPRNr = ""
+
+ While (RS.Next())
+ {
+ Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(RS.Data("UnID"))
+
+ /// Als PRNr veranderd.
+ If (tmpPRNr '= PRNr){
+ Set ProductKenmerken = ##class(APPS.PM.dto.Kenm.ProductKenmerken).%New()
+ Set ProductKenmerken.PRNr = PRNr
+ Do ProductenKenmerken.Kenmerken.Insert(ProductKenmerken)
+ }
+
+ /// Als kenmerkgroep verandert
/// Enkel groepen toevoegen als er sets aanwezig zijn
- If (ProductKenmerkenGroep.Sets.Count() > 0) {
- Do ProductKenmerken.KenmerkenGroepen.Insert(ProductKenmerkenGroep)
- }
- }
- Do ProductenKenmerken.Kenmerken.Insert(ProductKenmerken)
- }
+ If ((tmpKenmerkGroep '= RS.Data("KenmerkGroep")) || (tmpPRNr '= PRNr)){
+ Set ProductKenmerkenGroep = ##class(APPS.PM.dto.Kenm.ProductKenmerkenGroep).%New()
+ Set ProductKenmerkenGroep.Naam = RS.Data("KenmerkGroep")
+ Do ProductKenmerken.KenmerkenGroepen.Insert(ProductKenmerkenGroep)
+ }
+
+
+ /// Nagaan of dit record nog bij vorige hoort.
+ If (tmpUnID '= RS.Data("UnID")) {
+ Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New()
+ Set ProductKenmerkenSet.UnID = RS.Data("UnID")
+ /// GeneratieType
+ Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, tmpKenmerkGroep)
+ Set KenmerkenSet = KenmerkenSets.GeefKenmerkenSet(RS.Data("UnID"))
+ If (KenmerkenSet.GeefKenmerkWaarden("GeneratieType").Count() > 0){
+ Set ProductKenmerkenSet.GeneratieType = KenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1)
+ }Else{
+ Set ProductKenmerkenSet.GeneratieType = ##class(APPS.PM.enu.GeneratieType).Single()
+ }
+ Do ProductKenmerkenGroep.Sets.Insert(ProductKenmerkenSet)
+ }
+
+ Set ProductKenmerk = ##class(APPS.PM.dto.Kenm.ProductKenmerk).%New()
+ Set ProductKenmerk.Naam = RS.Data("KenmerkNaam")
+ Set tmpDataDef=##class(Prod.Kenmerk.DataDefinitie).%OpenId(RS.Data("ID"))
+ Set ProductKenmerk.Waarden = tmpDataDef.Waarden
+ Do ProductKenmerkenSet.Kenmerken.Insert(ProductKenmerk)
+
+ Set tmpPRNr = PRNr
+ Set tmpUnID = RS.Data("UnID")
+ Set tmpKenmerkGroep = RS.Data("KenmerkGroep")
+ }
+ }
$$$TECHErrorTrapOff
Quit ProductenKenmerken
@@ -344,7 +377,7 @@
Catch Set $ZTRAP = ""
Set Exception = ##class(TECH.ExceptionHandler).Catch()
- Set ErrorMsg = "BewaarProductenKenmerken heeft de wijzigingen niet kunnen opslaan :"_Exception.GeefOmschrijving()_", "_$ECODE
+ Set ErrorMsg = "BewaarProductenKenmerken heeft de wijzigingen niet kunnen opslaan : "_$C(13,10)_Exception.ToString()
Do OperatieScope.Gefaald(##class(TECH.Exceptions.BaseException).%New(Exception.GeefExceptionCode(),ErrorMsg))
Quit 0
]]>
@@ -380,9 +413,9 @@
Quit GewijzigdePRNrs
Catch Set $ZTRAP = ""
- Set UnIDsOutput = $$LCVT^vhLib(##class(TECH.ListUtils).ListToListbuild(UnIDs))
Set Exception = ##class(TECH.ExceptionHandler).Catch()
- Set ErrorMsg = "VerwijderKenmerkenSets heeft de KenmerkenSets niet kunnen verwijderen. "_Exception.GeefOmschrijving()
+ Set UnIDsOutput = $$LCVT^vhLib(##class(TECH.ListUtils).ListToListbuild(UnIDs))
+ Set ErrorMsg = "VerwijderKenmerkenSets heeft de KenmerkenSets "_UnIDsOutput_" niet kunnen verwijderen. "_$C(13,10)_Exception.ToString()
Do OperatieScope.Gefaald(##class(TECH.Exceptions.BaseException).%New(Exception.GeefExceptionCode(),ErrorMsg))
Set $ECODE = ""
Do GewijzigdePRNrs.Clear() /// Omdat operatie gefaald is, en rollback plaats vond, de GewijzigdePRNrs leeg maken.
@@ -413,6 +446,20 @@
Set UnID = UnIDIt.Next()
Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID)
Set ProductKenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr,KenmerkGroep)
+
+ /// Indien UnID niet bestaat, kan er geen nieuwe kenmerkenset gecreeerd worden
+ If ('$Data(^Prod.Ken.DataDefinitieD(UnID))){
+ Set ErrorMsg = "Kan MaakNieuweKenmerkenSets("_KenmerkGroep_","_UnID_") niet uitvoeren omdat dit geen bestaand UnID is."
+ Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg))
+ }
+
+ /// Indien UnID een Auto is, kan er geen nieuwe kenmerkenset gecreeerd worden
+ Set KenmerkenSet = ProductKenmerkenSets.GeefKenmerkenSet(UnID)
+ If ($IsObject(KenmerkenSet) && (KenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1) = ##class(APPS.PM.enu.GeneratieType).Auto())){
+ Set ErrorMsg = "Kan MaakNieuweKenmerkenSets("_KenmerkGroep_","_UnID_") niet uitvoeren omdat dit een Auto product is."
+ Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg))
+ }
+
Set NieuweGewijzigdePRNrs = ProductKenmerkenSets.MaakNieuweKenmerkenSet(UnID)
Set GewijzigdePRNrs = ##class(TECH.ListUtils).CopyList(NieuweGewijzigdePRNrs,GewijzigdePRNrs)
}
@@ -421,7 +468,8 @@
Catch Set $ZTRAP = ""
Set Exception = ##class(TECH.ExceptionHandler).Catch()
- Set ErrorMsg = "MaakNieuweKenmerkenSet heeft de KenmerkenSets niet kunnen aanmaken: "_Exception.GeefOmschrijving()
+ Set UnIDsOutput = $$LCVT^vhLib(##class(TECH.ListUtils).ListToListbuild(UnIDs))
+ Set ErrorMsg = "MaakNieuweKenmerkenSet heeft de KenmerkenSets "_UnIDsOutput_" niet kunnen aanmaken: "_$C(13,10)_Exception.ToString()
Do OperatieScope.Gefaald(##class(TECH.Exceptions.BaseException).%New(Exception.GeefExceptionCode(),ErrorMsg))
Do GewijzigdePRNrs.Clear() /// Omdat operatie gefaald is, en rollback plaats vond, de GewijzigdePRNrs leeg maken.
Quit GewijzigdePRNrs
Index: DOM/PM/impl/ProductKenmerkenSets.cls.xml
===================================================================
diff -u -r1565 -r1580
--- DOM/PM/impl/ProductKenmerkenSets.cls.xml (.../ProductKenmerkenSets.cls.xml) (revision 1565)
+++ DOM/PM/impl/ProductKenmerkenSets.cls.xml (.../ProductKenmerkenSets.cls.xml) (revision 1580)
@@ -120,6 +120,12 @@
Set NewUnID = ProdMulti.AddMultiple(BronUnID,.Status)
+ If (NewUnID = ""){
+ Set ErrorMsg = "Het gegeneerde nieuwe UnID '"_NewUnID_"' voor reeds bestaande UnID '"_BronUnID_"' is niet correct."
+ Set ErrorMsg = ErrorMsg_$C(13,10)_$$ParseStatus^vhLib(NewUnID)
+ Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg))
+ }
+
If ($$$ISERR(Status) && (NewUnID '= "")){
Set ErrorMsg = "Kon geen nieuwe kenmerkenset aanmaken : "_$$ParseStatus^vhLib(Status)
Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).GeneralError(),ErrorMsg))
@@ -150,13 +156,21 @@
Verwijderen van een kenmerkenset voor opgegeven UnID (Multiple)
Indien er maar één multiple meer overschiet wordt het product automatisch een gewoon product zonder multiple.
+VerwijderAutoProducten : mag enkel op true gezet worden als het intern wordt aangeroepen.
Return : Lijst met PRNr's die verwijderd zijn.
Opgelet : er worden voor multiples geen TECH.Events.KenmerkModifiedEventData events geraised !
-UnID:%String
+UnID:%String,VerwijderAutoProducten:%Boolean=0
%ListOfDataTypes
DoelSubUnID){
Index: vhDeploy/JBL/vhDeploy20110629x1147.cls.xml
===================================================================
diff -u
--- vhDeploy/JBL/vhDeploy20110629x1147.cls.xml (revision 0)
+++ vhDeploy/JBL/vhDeploy20110629x1147.cls.xml (revision 1580)
@@ -0,0 +1,47 @@
+
+
+
+1
+svn.Deploy
+0
+
+
+Indexen opbouwen van Prod.Kenm.DataDefinitie
+
+
+
+1
+
+
+
+
+1
+Kenmerk As KenmerkNaam2, Kenmerk->Groep->Code As KenmerkGroep2 from Prod_Kenmerk.DataDefinitie")
+ Do RS.Execute()
+ Set Teller = 0
+ Set RSUpdate = ##class(%ResultSet).%New()
+ Do RSUpdate.Prepare("Update Prod_Kenmerk.DataDefinitie Set KenmerkNaam = ?, KenmerkGroep = ? where ID = ?")
+
+ While (RS.Next()){
+ w:((Teller#100)=0) RS.Data("ID"),!
+ Set Teller = Teller + 1
+ Do RSUpdate.Execute(RS.Data("KenmerkNaam2"),RS.Data("KenmerkGroep2"),RS.Data("ID"))
+ }
+
+ Write Teller_" aantal kenmerken geupdate.",!
+ Write !
+
+ /// Rebuild Indices
+ w "Rebuild indices van 'Prod.Kenmerk.DataDefinitie'",!
+ Do ##class(Prod.Kenmerk.DataDefinitie).%BuildIndices()
+]]>
+
+
+