Index: DOM/PM/impl/MaatwerkCalcAPI.cls.xml =================================================================== diff -u -r63884 -r65111 --- DOM/PM/impl/MaatwerkCalcAPI.cls.xml (.../MaatwerkCalcAPI.cls.xml) (revision 63884) +++ DOM/PM/impl/MaatwerkCalcAPI.cls.xml (.../MaatwerkCalcAPI.cls.xml) (revision 65111) @@ -18,6 +18,26 @@ 1 + +WSimpl.PM.Maatwerk.MaatwerkService.DotNet.GeefMaatwerkDetails +1 + + + +DOM.PM.Maatwerk.Calc.Common.impl.OmleidingNaarDotNetBepaler +1 + + + +WSimpl.PM.Maatwerk.MaatwerkService.DotNet.MaatwerkDetailsFromJsonNaarDomConverter +1 + + + +APPS.PM.Maatwerk.impl.BerekeningServiceIngegevenKenmerken +1 + + CacheEenHalffabItemBoom:%Boolean=$$$false 1 @@ -28,6 +48,10 @@ Set ..LadeInfoAPI = ##class(DOM.PM.Maatwerk.impl.LadeInfoAPI).%New() Set ..IngegevenKenmerkenAPI = ##class(DOM.PM.impl.IngegevenKenmerkenAPIimpl).%New() Set ..CacheEenHalffabItemBoom = CacheEenHalffabItemBoom + Set ..DotNetMaatwerkService = ##class(WSimpl.PM.Maatwerk.MaatwerkService.DotNet.GeefMaatwerkDetails).%New() + Set ..MaatwerkDetailsConvertor = ##class(WSimpl.PM.Maatwerk.MaatwerkService.DotNet.MaatwerkDetailsFromJsonNaarDomConverter).%New() + Set ..OmleidingNaarDotNetBepaler = ##class(DOM.PM.Maatwerk.Calc.Common.impl.OmleidingNaarDotNetBepaler).%New() + Set ..BerekeningServiceIngegevenKenmerken = ##class(APPS.PM.Maatwerk.impl.BerekeningServiceIngegevenKenmerken).%New() Quit $$$OK ]]> @@ -153,12 +177,21 @@ ; Hou enkel de laatste bij, anders riskeert de cache te groot te worden (synchronize van winkelkarren > 89 maatwerk lijnen) ; de boom wordt een paar keer na elkaar opgevraagd, alleen de laatste cachen is dus in de meeste gevallen voldoende Do:(..CacheEenHalffabItemBoom) ..HalffabItemsBoomCache.Clear() - - #dim HalffabContext As DOM.PM.Maatwerk.Calc.HF.HalffabContext = ##class(DOM.PM.Maatwerk.Calc.HF.HalffabContext).%New(IngegevenKenmerken.GeefFamilie(), IngegevenKenmerken.GeefVariant(), BerekeningSpecificatie) - // TODO : te onderzoeken of we op dit niveau de OmleidingNaarDotNetBepaler.IsMaatwerkCalculatieInDotNet() moeten inlassen, of eerder in de implementatie van de oproepende gebruikers? - Do HalffabContext.GeefHalffabSpec().BerekenHalffabDetails(HalffabContext, IngegevenKenmerken) - Set HalffabItemsBoom = HalffabContext.HalffabItemsBoom + #dim KostItem As DOM.PM.Maatwerk.Calc.Kost.SamengesteldKostItem + + #dim IsBerekeningViaDotNetMaatwerkService As %Boolean = ..OmleidingNaarDotNetBepaler.IsMaatwerkCalculatieInDotNet(IngegevenKenmerken.GeefVariant(),IngegevenKenmerken.GeefVersieNr()) + If IsBerekeningViaDotNetMaatwerkService { + #dim MaatwerkDetails As APPS.PM.Maatwerk.dto.DotNet.MaatwerkDetailsParsedFromJson = ..DotNetMaatwerkService.GeefMaatwerkDetails(IngegevenKenmerken, KlantID, Hoeveelheid) + Set HalffabItemsBoom = ..MaatwerkDetailsConvertor.GeefHalffabItemsBoom(MaatwerkDetails) + Set KostItem = ..MaatwerkDetailsConvertor.GeefKostItems(MaatwerkDetails) + } Else { + #dim HalffabContext As DOM.PM.Maatwerk.Calc.HF.HalffabContext = ##class(DOM.PM.Maatwerk.Calc.HF.HalffabContext).%New(IngegevenKenmerken.GeefFamilie(), IngegevenKenmerken.GeefVariant(), BerekeningSpecificatie) + + Do HalffabContext.GeefHalffabSpec().BerekenHalffabDetails(HalffabContext, IngegevenKenmerken) + Set HalffabItemsBoom = HalffabContext.HalffabItemsBoom + } + Do ..HalffabItemsBoomCache.SetAt(HalffabItemsBoom, CacheKey) }