From 6ac3593a6af46e1c8b4566b78b3a8005604c42ac Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 11:40:02 +0100 Subject: [PATCH 1/6] Making a separate section for every Import Format. --- ifrs17/Import/Importers.ipynb | 99 ++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 47 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index fd7524ee..5db6e993 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -295,6 +295,15 @@ "execution_count": 0, "outputs": [] }, + { + "cell_type": "markdown", + "source": [ + "# Import helpers" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, { "cell_type": "markdown", "source": [ @@ -413,7 +422,21 @@ { "cell_type": "markdown", "source": [ - "# Importers" + "## Validation for Active Data Node States" + ], + "metadata": {}, + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "public async Task ValidateForDataNodeStateActiveAsync(IWorkspace workspace, Dictionary dataNodes) where T : BaseDataRecord", + "\n{", + "\n foreach(var item in (await workspace.Query().ToArrayAsync()).GroupBy(x => x.DataNode))", + "\n if(!dataNodes.ContainsKey(item.First().DataNode))", + "\n ApplicationMessage.Log(Error.InactiveDataNodeState, item.First().DataNode);", + "\n}" ], "metadata": {}, "execution_count": 0, @@ -422,7 +445,7 @@ { "cell_type": "markdown", "source": [ - "## Analysis of Change Configuration" + "# Analysis of Change Configuration" ], "metadata": {}, "execution_count": 0, @@ -535,7 +558,7 @@ { "cell_type": "markdown", "source": [ - "## Parse and Upload: Data Nodes", + "# Data Nodes", "\n", "\n[Portfolios](../DataModel/DataStructure#portfolios) and [Group of Contracts](../DataModel/DataStructure#group-of-contracts) are imported in the same file. " ], @@ -546,7 +569,7 @@ { "cell_type": "markdown", "source": [ - "### Portfolio and Group of contract" + "## Portfolio and Group of contract" ], "metadata": {}, "execution_count": 0, @@ -679,7 +702,7 @@ { "cell_type": "markdown", "source": [ - "### Data Node State" + "# Data Node State" ], "metadata": {}, "execution_count": 0, @@ -763,7 +786,7 @@ { "cell_type": "markdown", "source": [ - "### DataNode Parameters" + "# DataNode Parameters" ], "metadata": {}, "execution_count": 0, @@ -877,7 +900,13 @@ { "cell_type": "markdown", "source": [ - "## Parse and Upload: Variables", + "# Cashflows", + "\n", + "\nVariables are created upon import of Cash flow file.", + "\nCash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the calculation of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", + "\n", + "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import.", + "\nIn order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic.", "\n", "\nVariables are created upon import of Cash flow and Actual file.", "\n
Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", @@ -890,38 +919,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "### Validation for Active Data Node States" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "public async Task ValidateForDataNodeStateActiveAsync(IWorkspace workspace, Dictionary dataNodes) where T : BaseDataRecord", - "\n{", - "\n foreach(var item in (await workspace.Query().ToArrayAsync()).GroupBy(x => x.DataNode))", - "\n if(!dataNodes.ContainsKey(item.First().DataNode))", - "\n ApplicationMessage.Log(Error.InactiveDataNodeState, item.First().DataNode);", - "\n}" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "### Cash flow as Raw Variable and Ifrs Variable" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -1035,7 +1032,15 @@ { "cell_type": "markdown", "source": [ - "### Actuals as Ifrs Variable" + "# Actuals", + "\n", + "\nVariables are created upon import of Actual file.", + "\nActuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", + "\n", + "\n", + "\n", + "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import.", + "\nIn order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic." ], "metadata": {}, "execution_count": 0, @@ -1145,12 +1150,10 @@ { "cell_type": "markdown", "source": [ - "# Simple Value Import", + "# Simple Value", "\n", - "\nSimple Value import is a special import that imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", - "\n
It can be used in two very different scenarios: ", - "\n- Simple Value : to import final figures as computed by an independent tool. In this case our IFRS 17 calculation is not applied and variable are stored in the Database for being consumed in reports with our powerful reporting tooling. ", - "\n- Opening value : in the **fair value approach** this importer allows the import of in force opening values (AoC Step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA." + "\nSimple Value format imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable) computed by an independent tool.", + "\nIn this case our IFRS 17 calculation is not applied and variable are stored in the Database for being consumed in reports with our powerful reporting tooling." ], "metadata": {}, "execution_count": 0, @@ -1159,7 +1162,7 @@ { "cell_type": "markdown", "source": [ - "## Simple Value to Workspace" + "## Simple Value to workspace" ], "metadata": {}, "execution_count": 0, @@ -1272,7 +1275,9 @@ { "cell_type": "markdown", "source": [ - "## Openings as IfrsVariable" + "# Opening", + "\n", + "\nOpening format imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable) for the first period transition. It allows to import in force opening values (AoC Step BOP and novelty I) for EstimateTypes C, L, LR, AA, OA, DA." ], "metadata": {}, "execution_count": 0, From 42f333c565c1785cc8db198ac0016c752d58db92 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 11:44:02 +0100 Subject: [PATCH 2/6] A typo. --- ifrs17/Import/Importers.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 5db6e993..5ca849a4 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -786,7 +786,7 @@ { "cell_type": "markdown", "source": [ - "# DataNode Parameters" + "# Data Node Parameters" ], "metadata": {}, "execution_count": 0, From 4b764b5c6ebc58283c4ac921b95eb54d9719c302 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 13:29:51 +0100 Subject: [PATCH 3/6] Removed subsections from formats. --- ifrs17/Import/Importers.ipynb | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 5ca849a4..1c27ffe4 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -566,15 +566,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## Portfolio and Group of contract" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -1159,15 +1150,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## Simple Value to workspace" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -1235,15 +1217,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## Simple Value as IfrsVariable" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ From e3acec1e3602d296dbb6d7dd659d417e8532660a Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 15:33:45 +0100 Subject: [PATCH 4/6] Deleting duplicated text and updating "MapTemplateAndImportTest." --- ifrs17-template/Test/MapTemplateAndImportTest.ipynb | 6 +++--- ifrs17/Import/Importers.ipynb | 11 ++--------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/ifrs17-template/Test/MapTemplateAndImportTest.ipynb b/ifrs17-template/Test/MapTemplateAndImportTest.ipynb index 9a72bb31..cbb0166b 100644 --- a/ifrs17-template/Test/MapTemplateAndImportTest.ipynb +++ b/ifrs17-template/Test/MapTemplateAndImportTest.ipynb @@ -459,7 +459,8 @@ "\n", "\n// Test Validation", "\nActivity.Start();", - "\nawait ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);", + "\n", + "\nawait Workspace.ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);", "\nActivity.HasErrors().Should().Be(true);", "\nvar log = Activity.Finish().Errors.First().ToString().Substring(40);", "\n(log.Substring(0,log.Length-2) == Get(Error.ChangeDataNodeState, \"GIC1\")).Should().Be(true);" @@ -505,8 +506,7 @@ "\n// Reimport Data Node State for GIC1 with State unchanged", "\nawait Workspace.DeleteAsync(Workspace.Query().ToArray());", "\nawait Workspace.UpdateAsync(itemImport);", - "\n", - "\nawait ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);", + "\nawait Workspace.ValidateDataNodeStatesAsync(persistentDataNodeDataByDataNode);", "\n", "\n// Check that the new redundant State is removed from the Workspace", "\nWorkspace.Query().ToArray().Should().BeEmpty();" diff --git a/ifrs17/Import/Importers.ipynb b/ifrs17/Import/Importers.ipynb index 1c27ffe4..3cd1de4a 100644 --- a/ifrs17/Import/Importers.ipynb +++ b/ifrs17/Import/Importers.ipynb @@ -897,14 +897,7 @@ "\nCash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the calculation of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", "\n", "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import.", - "\nIn order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic.", - "\n", - "\nVariables are created upon import of Cash flow and Actual file.", - "\n
Cash flows are firstly mapped into [RawVariables](../DataModel/DataStructure#raw-variables). These are then used as input for the [calculation](ImportScopeCalculation) of the IFRS 17 business logic which computes [IfrsVariables](../DataModel/DataStructure#ifrs-variable).", - "\n
Actuals are directly mapped into [IfrsVariables](../DataModel/DataStructure#ifrs-variable). ", - "\n", - "\nSome computed variables depend on both cash flow and actual input, requiring recalculation at each new import. ", - "\n
In order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic. " + "\nIn order to improve performance and maximize computational efficiency, we only (re)compute the set of variables that are expected to change given the underlying business logic." ], "metadata": {}, "execution_count": 0, @@ -1144,7 +1137,7 @@ "# Simple Value", "\n", "\nSimple Value format imports [IfrsVariables](../DataModel/DataStructure#ifrs-variable) computed by an independent tool.", - "\nIn this case our IFRS 17 calculation is not applied and variable are stored in the Database for being consumed in reports with our powerful reporting tooling." + "\nIn this case our IFRS 17 calculation is not applied and variables are stored in the Database for being consumed in reports with our powerful reporting tooling." ], "metadata": {}, "execution_count": 0, From 20c9d27dbe906c6387260871b70a5eca6afb60eb Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 15:39:59 +0100 Subject: [PATCH 5/6] Adding the missing link to Systemorph webpage. --- ifrs17-template/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/README.md b/ifrs17-template/README.md index 3d9539ad..5e994ebe 100644 --- a/ifrs17-template/README.md +++ b/ifrs17-template/README.md @@ -57,7 +57,7 @@ Follow step by step our [Get Started](https://youtu.be/WQFn58gFhaM) video and ex -For more information on our IFRS 17 initiative check out our [IFRS 17 page](). +For more information on our IFRS 17 initiative check out our [IFRS 17 page](https://systemorph.com/).
From 2a278b8d9b7b33009ef911b3bc1abfd26c45e5d7 Mon Sep 17 00:00:00 2001 From: Teo Kukuljan Date: Fri, 25 Nov 2022 16:05:52 +0100 Subject: [PATCH 6/6] Semicolon in the DataFilter. --- ifrs17-template/Report/Reports.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ifrs17-template/Report/Reports.ipynb b/ifrs17-template/Report/Reports.ipynb index 0a884d4a..12250b90 100644 --- a/ifrs17-template/Report/Reports.ipynb +++ b/ifrs17-template/Report/Reports.ipynb @@ -99,7 +99,7 @@ "\npv.ReportingPeriod = (2021, 3);", "\npv.CurrencyType = CurrencyType.Contractual;", "\npv.ColumnSlices = new string[]{};//\"GroupOfContract\", \"AmountType\"", - "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") }", + "\npv.DataFilter = null; //new [] {(\"GroupOfContract\", \"DT1.2\"),(\"LiabilityType\", \"LIC\") };", "\n(await pv.ToReportAsync) with {Height = 720}" ], "metadata": {},