Index: DOM/PM/impl/DataM/DataMProductAPI.cls.xml =================================================================== diff -u -r1727 -r1771 --- DOM/PM/impl/DataM/DataMProductAPI.cls.xml (.../DataMProductAPI.cls.xml) (revision 1727) +++ DOM/PM/impl/DataM/DataMProductAPI.cls.xml (.../DataMProductAPI.cls.xml) (revision 1771) @@ -242,26 +242,33 @@ Set KenmerkenSet = KenmerkenSetIt.Next() Set UnID = KenmerkenSet.UnID + Set ProductKenmerkenSets = ..GeefProductKenmerkenSets(PRNr,KenmerkGroep.Naam) + Set ProductKenmerkenSet = ProductKenmerkenSets.GeefKenmerkenSet(UnID) + + /// Nagaan dat product als GeneratieType niet AUTO is. + If ((KenmerkGroep.Naam = "OL") && (ProductKenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1) = ##class(APPS.PM.enu.GeneratieType).Auto())) { + Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).InvalidInput(),"Kon het kenmerk niet opslaan omdat het AUTO als GeneratieType heeft.")) + } + Set ProductKenmerkIt = ##class(TECH.ListIterator).%New(KenmerkenSet.Kenmerken) While (ProductKenmerkIt.HasNext()) { Set ProductKenmerk = ProductKenmerkIt.Next() - Set ProductKenmerkenSets = ..GeefProductKenmerkenSets(PRNr,KenmerkGroep.Naam) - Set ProductKenmerkenSet = ProductKenmerkenSets.GeefKenmerkenSet(UnID) - - /// Nagaan dat product als GeneratieType niet AUTO is. - If ((ProductKenmerk.Naam = "OL") && (ProductKenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1) = ##class(APPS.PM.enu.GeneratieType).Auto())) { - Do ##class(TECH.ExceptionHandler).Throw(##class(TECH.Exceptions.BaseException).%New(##class(TECH.enu.ExceptionCode).InvalidInput(),"Kon het kenmerk niet opslaan om het AUTO als GeneratieType heeft.")) - } - Do ProductKenmerkenSet.ZetRaiseEvent(0) /// Geen event raisen, want is bulk operatie Set Wijziging = ProductKenmerkenSet.ZetKenmerkWaarden(ProductKenmerk.Waarden,ProductKenmerk.Naam,ProductKenmerk.InstanceVersion) If (Wijziging '= ""){ Do KenmerkenModifiedEventData.Wijzigingen.Insert(Wijziging) } + } + + /// Als het een master is dan gaan we de wijzigingen ook doorvoeren op de varianten + /// Wijzigingen die binnen deze method lopen zullen echter niet in de bulk event komen, maar zullen allemaal single events zijn. + If ((KenmerkGroep.Naam = "OL") && (ProductKenmerkenSet.GeefKenmerkWaarden("GeneratieType").GetAt(1) = ##class(APPS.PM.enu.GeneratieType).Master())) { + Set Status = ##class(APPS.PM.OL.MasterAutoGenerator).GenereerVariantenVoorMaster(UnID) + } } } } Index: Prod/Kenmerk/DataDefinitie.cls.xml =================================================================== diff -u -r1727 -r1771 --- Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1727) +++ Prod/Kenmerk/DataDefinitie.cls.xml (.../DataDefinitie.cls.xml) (revision 1771) @@ -77,7 +77,11 @@ Indien geen event voor creatie/wijziging/verwijderen gewenst is kan deze vlag worden afgezet. -Het is dan de verantwoordelijkheid van de applicatie om zelf events te voorzien. +Het is dan de verantwoordelijkheid van de applicatie om zelf events te voorzien. + +Een betere implementatie zou zijn om een extra scope te initialiseren. De kenmerk definitie zou dan moeten controleren +of deze scope is ingeschakeld. Zoja dan moeten wijzigingen aan deze scope meegedeeld worden. De code die de scope heeft +geïnitialiseerd moet dan ook zelf zorgen dat de scope wordt afgesloten zodat de bulk event kan geraised worden. %Boolean 1 1 Index: APPS/PM/OL/MasterAutoGenerator.cls.xml =================================================================== diff -u -r1735 -r1771 --- APPS/PM/OL/MasterAutoGenerator.cls.xml (.../MasterAutoGenerator.cls.xml) (revision 1735) +++ APPS/PM/OL/MasterAutoGenerator.cls.xml (.../MasterAutoGenerator.cls.xml) (revision 1771) @@ -87,7 +87,6 @@ If $$$ISOK(sc) { // Verzamel UnIDs van de gegenereerde AUTO-producten Set ListOfUnIDs=MasterAutoGenerator.GeefLijstGegenereerdeVarianten() ;d WLIP^vhDBG(97,"ListOfUnIDs : "_$$$LCVT($$ObjectListToLB^vhLib(ListOfUnIDs))) - // SortKeys en Foto-links updaten voor de ListOfUnIDs Set flagReadOnly=0 Set sc=##class(APPS.PM.OL.AfgeleideKenmerkenGenerator).VerwerkProducten(ListOfUnIDs,flagReadOnly,BLProdMulti) @@ -255,7 +254,7 @@ Set ProductKenmerk=KenmerkenIt.Next() Set KenmerkNaam=ProductKenmerk.Naam Set KenmerkWaarden=OLKenmerken.GetKenmerkenPublic(KenmerkNaam) ; Waarden is een $LB() - If ($LL(KenmerkWaarden)=1)&&(KenmerkNaam'?1(1"Diepte",1"WandDikte",1"Websites",1"LadeFamilie",1"KleurFilter")) { + If ($LL(KenmerkWaarden)=1)&&(KenmerkNaam'?1(1"Diepte",1"WandDikte",1"WebSites",1"LadeFamilie",1"KleurFilter")) { // Voor alle kenmerken, behalve bovenvernoemde in pattern-match, worden de single-value waarden omgezet van $LB() naar string. Set KenmerkWaarden=$LG(KenmerkWaarden,1) } Index: APPS/PM/KenmerkenService.cls.xml =================================================================== diff -u -r1745 -r1771 --- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1745) +++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1771) @@ -108,10 +108,8 @@ Set tmpUnID = "" Set tmpKenmerkGroep = "" Set tmpPRNr = "" - set Teller = 0 While (RS.Next()) { - Set Teller = Teller + 1 Set KenmerkNaam = RS.Data("KenmerkNaam") If (KenmerkNaam '= "GeneratieType"){ Set PRNr = RS.Data("PRNr") Index: APPS/PM/OL/ProductKenmerken.cls.xml =================================================================== diff -u -r1517 -r1771 --- APPS/PM/OL/ProductKenmerken.cls.xml (.../ProductKenmerken.cls.xml) (revision 1517) +++ APPS/PM/OL/ProductKenmerken.cls.xml (.../ProductKenmerken.cls.xml) (revision 1771) @@ -372,6 +372,7 @@ Set:(CntVarianten=0) sc=$$$ERROR($$$GeneralError,"Geen varianten gevonden voor deze master ("_..UnID_" "_..KortTekst_" #KT="_PotentieleVarianten.Count()_")") } Set:(CntVarianten=0) sc=$$$ERROR($$$GeneralError,"Geen varianten gevonden voor deze master ("_..UnID_" "_..KortTekst_" #KT="_PotentieleVarianten.Count()_")") + Quit Varianten ]]> @@ -480,7 +481,7 @@ 0) If MasterIsKellerProduct { Index: vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml =================================================================== diff -u -r1744 -r1771 --- vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1744) +++ vhUnitTest/APPS/PM/TestKenmerkenService.cls.xml (.../TestKenmerkenService.cls.xml) (revision 1771) @@ -42,6 +42,43 @@ ]]> + + + + + + + + Test het verwijderen van een kenmerkenset, waardoor er nog één multiple kenmerken set overschiet.