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)
}