[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 0055b00 2/2: Add and use an experience-rating
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 0055b00 2/2: Add and use an experience-rating-available ledger variable |
Date: |
Tue, 5 Feb 2019 10:38:33 -0500 (EST) |
branch: master
commit 0055b0000f9f355deefd05d2eea2222c4a19c5b3
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Add and use an experience-rating-available ledger variable
The new variable replaces old XSL guesswork based on product name.
---
ill_reg_column_headings.mst | 16 ++++++++++------
ill_reg_narr_summary.mst | 8 +++++---
ill_reg_narr_summary2.mst | 4 ++--
ledger_evaluator.cpp | 1 +
ledger_invariant.cpp | 4 +++-
ledger_invariant.hpp | 1 +
ledger_invariant_init.cpp | 1 +
pdf_command_wx.cpp | 5 -----
8 files changed, 23 insertions(+), 17 deletions(-)
diff --git a/ill_reg_column_headings.mst b/ill_reg_column_headings.mst
index bfdb8fc..dc5c5fc 100644
--- a/ill_reg_column_headings.mst
+++ b/ill_reg_column_headings.mst
@@ -83,7 +83,11 @@ amount percentage for the insured's attained age at death
for a detailed schedule of death benefit factors.
</p>
<!-- Group Experience Rating Logic -->
-{{^GroupExperienceRating}}
+{{!
+ PDF !! Availability of DBO2 is unlikely to be correlated with experience
rating.
+ DBO3 !! Such text should be controlled by product-database DBO entities.
+}}
+{{^AllowExperienceRating}}
<p>
<b>Death Benefit Option 2:</b>
Option in which the death benefit is equal to the selected
@@ -98,9 +102,9 @@ on the insured's date of death multiplied
by the death benefit factor for the insured's attained age
at death (minimum face amount). Please refer to the contract
for a detailed schedule of death benefit factors.
-{{/GroupExperienceRating}}
+{{/AllowExperienceRating}}
<!-- Group Experience Rating Logic -->
-{{#GroupExperienceRating}}
+{{#AllowExperienceRating}}
</p>
<p>
<b>Experience Rating Risk Charge:</b>
@@ -110,16 +114,16 @@ assessed during the certificate year. It may be assessed
against
the account value once per certificate anniversary date
and upon surrender of the group policy.
</p>
-{{/GroupExperienceRating}}
+{{/AllowExperienceRating}}
<!-- Group Experience Rating Logic -->
-{{^GroupExperienceRating}}
+{{^AllowExperienceRating}}
{{#Has1035ExchCharge}}
<p>
<b>Exchange Charge:</b>
{{ExchangeChargeFootnote1}}
</p>
{{/Has1035ExchCharge}}
-{{/GroupExperienceRating}}
+{{/AllowExperienceRating}}
<!-- Single Premium Logic -->
{{^SinglePremium}}
diff --git a/ill_reg_narr_summary.mst b/ill_reg_narr_summary.mst
index 23b4f5d..88f0e44 100644
--- a/ill_reg_narr_summary.mst
+++ b/ill_reg_narr_summary.mst
@@ -37,19 +37,21 @@ although probably "certificate" is desired instead of
"contract".
If it is actually considered useful to have two distinct strings
that differ only in their capitalization, then both should reside
in the '.policy' file.
+
+Even more surprisingly, 'AllowExperienceRating' has the same effect.
}}
<p>
{{^SinglePremium}}
{{PolicyMktgName}} is a
- {{#GroupExperienceRating}}group{{/GroupExperienceRating}}
+ {{#AllowExperienceRating}}group{{/AllowExperienceRating}}
{{#GroupCarveout}}group{{/GroupCarveout}}
flexible premium adjustable life insurance contract.
- {{#GroupExperienceRating}}
+ {{#AllowExperienceRating}}
It is a no-load policy and is intended for large case sales.
It is primarily marketed to financial institutions
to fund certain corporate liabilities.
- {{/GroupExperienceRating}}
+ {{/AllowExperienceRating}}
It features accumulating account values, adjustable benefits,
and flexible premiums.
{{/SinglePremium}}
diff --git a/ill_reg_narr_summary2.mst b/ill_reg_narr_summary2.mst
index 770232b..b8681bf 100644
--- a/ill_reg_narr_summary2.mst
+++ b/ill_reg_narr_summary2.mst
@@ -126,7 +126,7 @@ in the Tabular Detail.
</p>
{{/StateIsMaryland}}
-{{#GroupExperienceRating}}
+{{#AllowExperienceRating}}
<p>
We may assess a Market Value Adjustment upon a surrender
of the certificate when the surrender proceeds are intended
@@ -155,7 +155,7 @@ in the Tabular Detail.
in the current, non-guaranteed values. Actual charges
and credits will be based on the actual experience of the group.
</p>
-{{/GroupExperienceRating}}
+{{/AllowExperienceRating}}
{{#Has1035ExchCharge}}
<p>
diff --git a/ledger_evaluator.cpp b/ledger_evaluator.cpp
index 2880ff7..2aa6423 100644
--- a/ledger_evaluator.cpp
+++ b/ledger_evaluator.cpp
@@ -530,6 +530,7 @@ format_map_t static_formats()
,{"ErNotionallyPaysTerm" , f1}
,{"SpouseIssueAge" , f1}
,{"SupplementalReport" , f1}
+ ,{"AllowExperienceRating" , f1}
,{"UseExperienceRating" , f1}
,{"GroupIndivSelection" , f1}
,{"UsePartialMort" , f1}
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index 088d985..a0e3802 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -142,6 +142,7 @@ void LedgerInvariant::Alloc(int len)
OtherScalars ["RetAge" ] = &RetAge ;
OtherScalars ["EndtAge" ] = &EndtAge ;
OtherScalars ["GroupIndivSelection" ] = &GroupIndivSelection ;
+ OtherScalars ["AllowExperienceRating" ] = &AllowExperienceRating ;
OtherScalars ["UseExperienceRating" ] = &UseExperienceRating ;
OtherScalars ["UsePartialMort" ] = &UsePartialMort ;
OtherScalars ["AvgFund" ] = &AvgFund ;
@@ -658,7 +659,8 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
StateOfJurisdiction = a_Addend.StateOfJurisdiction;
PremiumTaxState = a_Addend.PremiumTaxState;
GroupIndivSelection = GroupIndivSelection ||
a_Addend.GroupIndivSelection;
- UseExperienceRating = a_Addend.UseExperienceRating;
+ AllowExperienceRating = AllowExperienceRating ||
a_Addend.AllowExperienceRating;
+ UseExperienceRating = UseExperienceRating ||
a_Addend.UseExperienceRating;
UsePartialMort = a_Addend.UsePartialMort;
PartMortTableName = a_Addend.PartMortTableName;
GuarMaxMandE = std::max(GuarMaxMandE ,
a_Addend.GuarMaxMandE );
diff --git a/ledger_invariant.hpp b/ledger_invariant.hpp
index 406e3d3..ddb2835 100644
--- a/ledger_invariant.hpp
+++ b/ledger_invariant.hpp
@@ -166,6 +166,7 @@ class LMI_SO LedgerInvariant
double RetAge;
double EndtAge;
double GroupIndivSelection;
+ double AllowExperienceRating;
double UseExperienceRating;
double UsePartialMort;
double AvgFund;
diff --git a/ledger_invariant_init.cpp b/ledger_invariant_init.cpp
index 67feeb6..10fde49 100644
--- a/ledger_invariant_init.cpp
+++ b/ledger_invariant_init.cpp
@@ -257,6 +257,7 @@ void LedgerInvariant::Init(BasicValues const* b)
RetAge = b->yare_input_.RetirementAge;
EndtAge = b->yare_input_.IssueAge + b->GetLength();
b->database().query_into(DB_GroupIndivSelection, GroupIndivSelection);
+ AllowExperienceRating = b->database().query<bool>(DB_AllowExpRating);
UseExperienceRating = b->yare_input_.UseExperienceRating;
UsePartialMort = b->yare_input_.UsePartialMortality;
AvgFund = b->yare_input_.UseAverageOfAllFunds;
diff --git a/pdf_command_wx.cpp b/pdf_command_wx.cpp
index 7307c14..9063282 100644
--- a/pdf_command_wx.cpp
+++ b/pdf_command_wx.cpp
@@ -2206,11 +2206,6 @@ class pdf_illustration_naic : public pdf_illustration
,starts_with(policy_name, "Single") || starts_with(policy_name,
"Modified")
);
- add_variable
- ("GroupExperienceRating"
- ,policy_name == "Group Flexible Premium Adjustable Life Insurance
Policy"
- );
-
// Variable representing the premium payment frequency with the
// appropriate indefinite article preceding it, e.g. "an annual"
// or "a monthly".