Index: APPS/PM/Maatwerk/MaatwerkService.cls.xml =================================================================== diff -u -r64395 -r64428 --- APPS/PM/Maatwerk/MaatwerkService.cls.xml (.../MaatwerkService.cls.xml) (revision 64395) +++ APPS/PM/Maatwerk/MaatwerkService.cls.xml (.../MaatwerkService.cls.xml) (revision 64428) @@ -97,22 +97,30 @@ #dim KostItem As DOM.PM.Maatwerk.Calc.Kost.SamengesteldKostItem #dim MaatwerkDetails As APPS.PM.Maatwerk.dto.MaatwerkDetails = ##class(APPS.PM.Maatwerk.dto.MaatwerkDetails).%New() #dim Problemen As list of %String = ##class(%ListOfDataTypes).%New() + #dim KostenVisitor As DOM.PM.Maatwerk.Calc.Kost.impl.KostItemNaarDtoVisitor = ##class(DOM.PM.Maatwerk.Calc.Kost.impl.KostItemNaarDtoVisitor).%New() + #dim HalffabrikatenVisitor As DOM.PM.Maatwerk.Calc.HF.impl.HalffabItemNaarDtoVisitor = ##class(DOM.PM.Maatwerk.Calc.HF.impl.HalffabItemNaarDtoVisitor).%New() #dim IsBerekeningViaDotNetMaatwerkService As %Boolean = OmleidingNaarDotNetBepaler.IsMaatwerkCalculatieInDotNet(IngegevenKenmerkenDomain.GeefVariant(),IngegevenKenmerkenDomain.GeefVersieNr()) If IsBerekeningViaDotNetMaatwerkService { #dim DotNetMaatwerkDetails As APPS.PM.Maatwerk.dto.DotNet.MaatwerkDetailsParsedFromJson = DotNetMaatwerkService.GeefMaatwerkDetails(IngegevenKenmerkenDomain, KlantID, Aantal,) - Set MaatwerkDetails.Halffabrikaten = MaatwerkDetailsConvertor.GeefHalffabItemsBoom(DotNetMaatwerkDetails) - Set MaatwerkDetails.Kosten = MaatwerkDetailsConvertor.GeefKostItems(DotNetMaatwerkDetails) + + Set HalffabItemsBoom = MaatwerkDetailsConvertor.GeefHalffabItemsBoom(DotNetMaatwerkDetails) + Do HalffabItemsBoom.Wortel.Accept(HalffabrikatenVisitor) + Set MaatwerkDetails.Halffabrikaten = HalffabrikatenVisitor.GeefHalffabItem() + + Set KostItem = MaatwerkDetailsConvertor.GeefKostItems(DotNetMaatwerkDetails) + Do KostItem.Accept(KostenVisitor) + Set MaatwerkDetails.Kosten = KostenVisitor.GeefKostItem() + Do Problemen.Insert(..MaakStringVanMaatwerkProblemen(DotNetMaatwerkDetails.ProbleemRapport)) } Else { #dim PartijID As DOM.common.PartijID = ##class(DOM.DomeinContext).Instance().GeefLegacyPartijAPI().GeefKlantPartijID(KlantID) #dim BerekeningSpecificatie As DOM.PM.Maatwerk.Calc.Common.BerekeningsSpecificatie = ..GeefBerekeningSpecificatie(PartijID, Aantal , Datum) #dim HalffabContext As DOM.PM.Maatwerk.Calc.HF.HalffabContext = ..GeefHalffabContextVoorIngegevenKenmerken(IngegevenKenmerkenDomain, BerekeningSpecificatie) #dim HalffabSpec As DOM.PM.Maatwerk.Calc.HF.HalffabSpec = HalffabContext.GeefHalffabSpec() - #dim IngegevenKenmerkenAPI As DOM.PM.IngegevenKenmerkenAPI = ##class(DOM.DomeinContext).Instance().GeefIngegevenKenmerkenAPI() + #dim IngegevenKenmerkenAPI As DOM.PM.IngegevenKenmerkenAPI = ##class(DOM.DomeinContext).Instance().GeefIngegevenKenmerkenAPI() - Set IngegevenKenmerkenDomain = IngegevenKenmerkenAPI.GeefIngegevenKenmerkenVersie(IngegevenKenmerkenDomain, HalffabSpec.GeefVersieNrIngegevenKenmerken()) Try { @@ -122,14 +130,11 @@ Do Problemen.Insert(..MaakStringVanMaatwerkProblemen(HalffabContext.GeefBerekeningProblemen())) Set HalffabItemsBoom = HalffabContext.HalffabItemsBoom - #dim HalffabrikatenVisitor As DOM.PM.Maatwerk.Calc.HF.impl.HalffabItemNaarDtoVisitor = ##class(DOM.PM.Maatwerk.Calc.HF.impl.HalffabItemNaarDtoVisitor).%New() - Do HalffabItemsBoom.Wortel.Accept(HalffabrikatenVisitor) Set MaatwerkDetails.Halffabrikaten = HalffabrikatenVisitor.GeefHalffabItem() #dim KostContext As DOM.PM.Maatwerk.Calc.Kost.KostContext = ##class(DOM.PM.Maatwerk.Calc.Kost.KostContext).%New(IngegevenKenmerkenDomain.GeefFamilie(), IngegevenKenmerkenDomain.GeefVariant(), BerekeningSpecificatie) - Set KostItem = KostContext.GeefKostSpec().BerekenKostDetails(KostContext,HalffabItemsBoom,IngegevenKenmerkenDomain, MaatwerkAanpassing) - #dim KostenVisitor As DOM.PM.Maatwerk.Calc.Kost.impl.KostItemNaarDtoVisitor = ##class(DOM.PM.Maatwerk.Calc.Kost.impl.KostItemNaarDtoVisitor).%New() + Set KostItem = KostContext.GeefKostSpec().BerekenKostDetails(KostContext,HalffabItemsBoom,IngegevenKenmerkenDomain, MaatwerkAanpassing) Do KostItem.Accept(KostenVisitor) Set MaatwerkDetails.Kosten = KostenVisitor.GeefKostItem() @@ -152,7 +157,7 @@ 0) { + If $$$HasLength(Problemen) { #dim Iterator As TECH.Iterator = ##class(TECH.ListIterator).%New(Problemen) While (Iterator.HasNext()) { Index: EXTERN/PM/Maatwerk/MaatwerkService.cls.xml =================================================================== diff -u -r64366 -r64428 --- EXTERN/PM/Maatwerk/MaatwerkService.cls.xml (.../MaatwerkService.cls.xml) (revision 64366) +++ EXTERN/PM/Maatwerk/MaatwerkService.cls.xml (.../MaatwerkService.cls.xml) (revision 64428) @@ -56,7 +56,7 @@ #dim BerekeningSpecificatie As DOM.PM.Maatwerk.Calc.Common.BerekeningsSpecificatie = ##class(DOM.PM.Maatwerk.Calc.Common.BerekeningsSpecificatie).%New(Aantal, PartijID, Personality) #dim Bepaler As DOM.PM.Maatwerk.GenerischProductBepaler = ##class(DOM.PM.Maatwerk.GenerischProductBepaler).%New() #dim VerkoopPrijsAPI As DOM.VKP.VerkoopPrijsAPI = ##class(DOM.DomeinContext).Instance().GeefVerkoopPrijsAPI() - #dim VerkoopPrijsInfo As DOM.VKP.info.VerkoopPrijsInfo = VerkoopPrijsAPI.GeefVerkoopPrijsInfo(Bepaler.GeefGenerischProductID(IngegevenKenmerken), KostItem.GeefKost(), BerekeningSpecificatie) + #dim VerkoopPrijsInfo As DOM.VKP.info.VerkoopPrijsInfo = VerkoopPrijsAPI.GeefVerkoopPrijsInfo(Bepaler.GeefGenerischProductID(IngegevenKenmerken), KostItem.KostGet(), BerekeningSpecificatie) set Result.VerkoopPrijs = $$ROUND^KPRIJS(VerkoopPrijsInfo.GeefVerkoopPrijs()) set Result.IsFout = 0 @@ -178,16 +178,22 @@ @@ -255,6 +261,7 @@ #dim KlasseNaam As %String = IngegevenKenmerken.%ClassName(1) Set CompiledClass = ##class(%Dictionary.CompiledClass).%OpenId(KlasseNaam) Set PropertiesIterator = ##class(TECH.ListIterator).%New(CompiledClass.Properties) + Set IngegevenKenmerkenAPI = ##class(DOM.PM.impl.IngegevenKenmerkenAPIimpl).%New() #dim Namen As %String = "" #dim Waarden As %String = "" @@ -275,11 +282,24 @@ ) { If (PropertyNaam = "GekoppeldeIngegevenKenmerken") { - Set PropertyWaarde = ##class(TECH.ListUtils).IteratorToPieces(##class(TECH.KeyListIterator).%New(PropertyWaarde),"`") + If (IngegevenKenmerkenAPI.HeeftGekoppeldeMat(IngegevenKenmerken)) + { + If ($IsObject(IngegevenKenmerken.GekoppeldeIngegevenKenmerken.GetAt(##class(DOM.PM.Maatwerk.Calc.Common.enu.GekoppeldIKType).MatX()))) { + Set Namen = Namen _ Delimiter _ "MatMateriaal" + Set Waarden = Waarden _ Delimiter _ IngegevenKenmerken.GekoppeldeIngegevenKenmerken.GetAt(##class(DOM.PM.Maatwerk.Calc.Common.enu.GekoppeldIKType).MatX()).Materiaal + Set Namen = Namen _ Delimiter _ "MatKleur" + Set Waarden = Waarden _ Delimiter _ IngegevenKenmerken.GekoppeldeIngegevenKenmerken.GetAt(##class(DOM.PM.Maatwerk.Calc.Common.enu.GekoppeldIKType).MatX()).Kleur + } + } Else { + Set PropertyWaarde = ##class(TECH.ListUtils).IteratorToPieces(##class(TECH.KeyListIterator).%New(PropertyWaarde),"`") + Set Namen = Namen _ Delimiter _ PropertyNaam + Set Waarden = Waarden _ Delimiter _ PropertyWaarde + } } - - Set Namen = Namen _ Delimiter _ PropertyNaam - Set Waarden = Waarden _ Delimiter _ PropertyWaarde + Else { + Set Namen = Namen _ Delimiter _ PropertyNaam + Set Waarden = Waarden _ Delimiter _ PropertyWaarde + } } If (PropertyNaam = "NietMeeleveren") { Set Result.NietMeeleveren = ##class(TECH.ListUtils).ListToPieces(PropertyWaarde,"\") @@ -298,13 +318,17 @@ Familie:DOM.PM.enu.Familie,Variant:DOM.PM.enu.Variant,Result:EXTERN.PM.Maatwerk.dto.MaatwerkInfo,Delimiter:%String 1