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/).
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": {}, 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 fd7524ee..3cd1de4a 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. " ], @@ -543,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": [ @@ -679,7 +693,7 @@ { "cell_type": "markdown", "source": [ - "### Data Node State" + "# Data Node State" ], "metadata": {}, "execution_count": 0, @@ -763,7 +777,7 @@ { "cell_type": "markdown", "source": [ - "### DataNode Parameters" + "# Data Node Parameters" ], "metadata": {}, "execution_count": 0, @@ -877,46 +891,13 @@ { "cell_type": "markdown", "source": [ - "## Parse and Upload: Variables", + "# Cashflows", "\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). ", + "\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. ", - "\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. " - ], - "metadata": {}, - "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" + "\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, @@ -1035,7 +1016,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,21 +1134,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." - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, - { - "cell_type": "markdown", - "source": [ - "## Simple Value to Workspace" + "\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 variables are stored in the Database for being consumed in reports with our powerful reporting tooling." ], "metadata": {}, "execution_count": 0, @@ -1232,15 +1210,6 @@ "execution_count": 0, "outputs": [] }, - { - "cell_type": "markdown", - "source": [ - "## Simple Value as IfrsVariable" - ], - "metadata": {}, - "execution_count": 0, - "outputs": [] - }, { "cell_type": "code", "source": [ @@ -1272,7 +1241,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,