From b6a4fdeca7b191551ee3db73037139a2260dc597 Mon Sep 17 00:00:00 2001
From: Reinhold Kainhofer <reinhold@kainhofer.com>
Date: Sun, 3 Jan 2021 00:30:55 +0100
Subject: [PATCH] Contract: Switch order of value calculation (premium
 composition before balance sheet reserves)

For the balance sheet reserves we might need the net/gamma/Zillmer premium components (for single-premium contracts no unearned premiums are reported, but the premium is included in the reserve!), so we need to calculate it before.
---
 R/InsuranceContract.R | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/R/InsuranceContract.R b/R/InsuranceContract.R
index b74e310..4739898 100644
--- a/R/InsuranceContract.R
+++ b/R/InsuranceContract.R
@@ -618,7 +618,6 @@ InsuranceContract = R6Class(
             if (calculate == "absvalues") return(invisible(self));
 
             self$Values$reserves           = mergeValues(starting = self$Values$reserves,           ending = private$calculateReserves(), t = valuesFrom);
-            self$Values$reservesBalanceSheet = mergeValues(starting = self$Values$reservesBalanceSheet,ending = private$calculateReservesBalanceSheet(), t = valuesFrom);
             if (calculate == "reserves") return(invisible(self));
             self$Values$premiumComposition = mergeValues(starting = self$Values$premiumComposition, ending = private$premiumAnalysis(), t = valuesFrom);
             self$Values$premiumCompositionSums = mergeValues(starting = self$Values$premiumCompositionSums, ending = private$premiumCompositionSums(), t = valuesFrom);
@@ -626,6 +625,9 @@ InsuranceContract = R6Class(
             self$Values$basicData          = mergeValues(starting = self$Values$basicData,          ending = private$getBasicDataTimeseries(), t = valuesFrom);
             if (calculate == "premiumcomposition") return(invisible(self));
 
+            self$Values$reservesBalanceSheet = mergeValues(starting = self$Values$reservesBalanceSheet,ending = private$calculateReservesBalanceSheet(), t = valuesFrom);
+            if (calculate == "reservesbalancesheet") return(invisible(self));
+
             private$profitParticipation(calculateFrom = valuesFrom);
             if (calculate == "profitparticipation") return(invisible(self));
 
-- 
GitLab