Index: APPS/PM/KenmerkenService.cls.xml =================================================================== diff -u -r1631 -r1681 --- APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1631) +++ APPS/PM/KenmerkenService.cls.xml (.../KenmerkenService.cls.xml) (revision 1681) @@ -54,50 +54,28 @@ Set ProductAPI = ##class(DOM.DomeinContext).Instance().GeefProductAPI() Set ProductService = ##class(APPS.PM.ProductService).%New() - // nadien nagaan of er iets in kenmerkGroepen zit, als het ledig is wordt in alle kenmerkgroepen gezocht. - if ('$IsObject(KenmerkGroepen) || (KenmerkGroepen.Count() = 0)) { - Set KenmerkGroepen = ##class(Prod.Kenmerk.MetaGroep).GetAllMetaGroupsAsList() - } - - /// UnIDs verzamelen - 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 Multiples = Product.GeefMultiples() - If (Multiples.Count() > 0){ - Set UnIDs = ##class(TECH.ListUtils).CopyListOfDataTypes(Multiples,UnIDs) - }Else{ - 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 = ..MaakSQLINParameters(KenmerkGroepen) + /// PRNrs naar SQLPRNrs + Set SQLPRNrs = ..MaakSQLINParameters(PRNrs) /// voorbereidend werk 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) + Set SQLStatement = "SELECT PRNr, UnID, KenmerkGroep, KenmerkNaam, Waarden FROM Prod_Kenmerk.DataDefinitie where" + // nadien nagaan of er iets in kenmerkGroepen zit, als het ledig is wordt in alle kenmerkgroepen gezocht. + if ($IsObject(KenmerkGroepen) && (KenmerkGroepen.Count() '= 0)) { + /// Kenmerkgroepen verzamelen + Set SQLKenmerken = ..MaakSQLINParameters(KenmerkGroepen) + Set SQLStatement = SQLStatement_" KenmerkGroep IN ( "_SQLKenmerken_" ) AND" + } + Set SQLStatement = SQLStatement_" PRNr In ( "_SQLPRNrs_" )" + + D WLIP^vhDBG(127,SQLStatement) Do RS.Prepare(SQLStatement) - Set tmpStatus = RS.Execute(SQLKenmerken,SQLUnIDs) + Set tmpStatus = RS.Execute() If $$$ISOK(tmpStatus) { Set tmpUnID = "" @@ -107,50 +85,51 @@ While (RS.Next()) { Set KenmerkNaam = RS.Data("KenmerkNaam") - Set UnID = RS.Data("UnID") - Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID) - Set KenmerkGroep = RS.Data("KenmerkGroep") - - /// Als PRNr verandert. - 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 ((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 '= UnID || (tmpKenmerkGroep '= KenmerkGroep)) { - Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New() - Set ProductKenmerkenSet.UnID = UnID - /// GeneratieType - Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, KenmerkGroep) - 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() - } - Do ProductKenmerkenGroep.Sets.Insert(ProductKenmerkenSet) - } - - Set ProductKenmerk = ##class(APPS.PM.dto.Kenm.ProductKenmerk).%New() - Set ProductKenmerk.Naam = 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 = UnID - Set tmpKenmerkGroep = KenmerkGroep + If (KenmerkNaam '= "GeneratieType"){ + Set PRNr = RS.Data("PRNr") + Set UnID = RS.Data("UnID") + Set KenmerkGroep = RS.Data("KenmerkGroep") + + /// Als PRNr verandert. + 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 ((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 '= UnID || (tmpKenmerkGroep '= KenmerkGroep)) { + Set ProductKenmerkenSet = ##class(APPS.PM.dto.Kenm.ProductKenmerkenSet).%New() + Set ProductKenmerkenSet.UnID = UnID + /// GeneratieType + Set KenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr, KenmerkGroep) + 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() + } + Do ProductKenmerkenGroep.Sets.Insert(ProductKenmerkenSet) + } + + Set ProductKenmerk = ##class(APPS.PM.dto.Kenm.ProductKenmerk).%New() + Set ProductKenmerk.Naam = KenmerkNaam + Set ProductKenmerk.Waarden = ##class(TECH.ListUtils).ListbuildToList(RS.Data("Waarden")) // tmpDataDef.Waarden + + Do ProductKenmerkenSet.Kenmerken.Insert(ProductKenmerk) + + Set tmpPRNr = PRNr + Set tmpUnID = UnID + Set tmpKenmerkGroep = KenmerkGroep + } } } @@ -244,11 +223,11 @@ Set KenmerkGroep = KenmerkGroepIterator.Next() Set KenmerkGroepMetadata = ##class(APPS.PM.dto.Kenm.KenmerkGroepMetadata).%New() - Set KenmerkGroepMetadata.Naam = KenmerkGroep + Set KenmerkGroepMetadata.Code = KenmerkGroep Set Metadata = ##class(Prod.Kenmerk.MetaGroep).%OpenId(KenmerkGroep) If $IsObject(Metadata){ Set KenmerkGroepMetadata.MultipleKenmerkenSetsToegelaten = Metadata.MultipleKenmerkenSetsToegelaten() - Set KenmerkGroepMetadata.Omschrijving = Metadata.Omschrijving + Set KenmerkGroepMetadata.Naam = Metadata.Omschrijving Set KenmerkGroepMetadata.Icoon = Metadata.Icoon } @@ -430,15 +409,17 @@ Set UnIDIt = ##class(TECH.ListIterator).%New(UnIDs) While (UnIDIt.HasNext()){ 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)) } + Set PRNr = ##class(BL.Kenm.ProdMulti).GetCommonID(UnID) + Set ProductKenmerkenSets = ProductAPI.GeefProductKenmerkenSets(PRNr,KenmerkGroep) + + /// 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())){