lmi-commits
[Top][All Lists]
Advanced

[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".



reply via email to

[Prev in Thread] Current Thread [Next in Thread]