lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] master fadf752 2/2: Add a weird database entity; use


From: Greg Chicares
Subject: [lmi-commits] [lmi] master fadf752 2/2: Add a weird database entity; use it to control one report
Date: Thu, 31 Jan 2019 18:04:23 -0500 (EST)

branch: master
commit fadf752c1a3694139a0a3b9d1d479aee4dbd5974
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Add a weird database entity; use it to control one report
---
 dbdict.cpp                |  3 +++
 dbdict.hpp                |  1 +
 dbnames.hpp               |  1 +
 dbnames.xpp               |  1 +
 ledger_evaluator.cpp      |  1 +
 ledger_invariant.cpp      |  3 +++
 ledger_invariant.hpp      |  1 +
 ledger_invariant_init.cpp |  3 ++-
 pdf_command_wx.cpp        | 10 ++++++----
 9 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/dbdict.cpp b/dbdict.cpp
index b6046a2..9bd962a 100644
--- a/dbdict.cpp
+++ b/dbdict.cpp
@@ -358,6 +358,7 @@ void DBDictionary::ascribe_members()
     ascribe("MinPremIntSpread"    , &DBDictionary::MinPremIntSpread    );
     ascribe("SplitMinPrem"        , &DBDictionary::SplitMinPrem        );
     ascribe("UnsplitSplitMinPrem" , &DBDictionary::UnsplitSplitMinPrem );
+    ascribe("ErNotionallyPaysTerm", &DBDictionary::ErNotionallyPaysTerm);
     ascribe("TgtPremType"         , &DBDictionary::TgtPremType         );
     ascribe("TgtPremTable"        , &DBDictionary::TgtPremTable        );
     ascribe("TgtPremFixedAtIssue" , &DBDictionary::TgtPremFixedAtIssue );
@@ -965,6 +966,8 @@ void DBDictionary::write_database_files()
     // entities are 'true':
     z.Add({DB_SplitMinPrem        , true});
     z.Add({DB_TermIsNotRider      , true});
+    // Certain illustration columns are controlled by this:
+    z.Add({DB_ErNotionallyPaysTerm, true});
     // This fixed loan rate varies by duration.
     int dims_1111113[e_number_of_axes] = {1, 1, 1, 1, 1, 1, 3};
     double loanrate[3] = {0.06, 0.05, 0.04};
diff --git a/dbdict.hpp b/dbdict.hpp
index 7cf7f95..9b6597b 100644
--- a/dbdict.hpp
+++ b/dbdict.hpp
@@ -340,6 +340,7 @@ class LMI_SO DBDictionary
     database_entity MinPremIntSpread    ;
     database_entity SplitMinPrem        ;
     database_entity UnsplitSplitMinPrem ;
+    database_entity ErNotionallyPaysTerm;
     database_entity TgtPremType         ;
     database_entity TgtPremTable        ;
     database_entity TgtPremFixedAtIssue ;
diff --git a/dbnames.hpp b/dbnames.hpp
index 2755164..ec55daa 100644
--- a/dbnames.hpp
+++ b/dbnames.hpp
@@ -450,6 +450,7 @@ enum e_database_key
         ,DB_MinPremIntSpread
         ,DB_SplitMinPrem
         ,DB_UnsplitSplitMinPrem
+        ,DB_ErNotionallyPaysTerm
         ,DB_TgtPremType
         ,DB_TgtPremTable
         ,DB_TgtPremFixedAtIssue
diff --git a/dbnames.xpp b/dbnames.xpp
index 0768236..d277d89 100644
--- a/dbnames.xpp
+++ b/dbnames.xpp
@@ -296,6 +296,7 @@
 {DB_MinPremIntSpread,DB_Topic_Premiums,"MinPremIntSpread","Interest spread 
from general-account rate used to capitalize monthly deductions for minimum 
premium calculation",}, \
 {DB_SplitMinPrem,DB_Topic_Premiums,"SplitMinPrem","Split monthly-deductions 
minimum premium by payor: 0=no, 1=yes",}, \
 {DB_UnsplitSplitMinPrem,DB_Topic_Premiums,"UnsplitSplitMinPrem","Payment 
strategies recombine split minimum premium: 0=no, 1=yes",}, \
+{DB_ErNotionallyPaysTerm ,DB_Topic_Premiums ,"ErNotionallyPaysTerm" ,"Employer 
notionally pays 'term' cost as a marketing concept, but reality may differ : 
0=no, 1=yes",}, \
 {DB_TgtPremType,DB_Topic_Premiums,"TgtPremType","Target premium: 0=based on 
monthly deductions, 1=7702A seven-pay premium, 2=read from table",}, \
 {DB_TgtPremTable,DB_Topic_Premiums,"TgtPremTable","Annual target premium rates 
per $1 (index in mortality table database)",}, \
 {DB_TgtPremFixedAtIssue,DB_Topic_Premiums,"TgtPremFixedAtIssue","Target 
premium set forever at issue: 0=no, 1=yes",}, \
diff --git a/ledger_evaluator.cpp b/ledger_evaluator.cpp
index 1ae82ff..d720a79 100644
--- a/ledger_evaluator.cpp
+++ b/ledger_evaluator.cpp
@@ -526,6 +526,7 @@ format_map_t static_formats()
     ,{"SmokerDistinct"                  , f1}
     ,{"SplitFundAllocation"             , f1}
     ,{"SplitMinPrem"                    , f1}
+    ,{"ErNotionallyPaysTerm"            , f1}
     ,{"SpouseIssueAge"                  , f1}
     ,{"SupplementalReport"              , f1}
     ,{"UseExperienceRating"             , f1}
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index cc30271..6d112b7 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -162,6 +162,7 @@ void LedgerInvariant::Alloc(int len)
     OtherScalars    ["HasHoneymoon"          ] = &HasHoneymoon           ;
     OtherScalars    ["PostHoneymoonSpread"   ] = &PostHoneymoonSpread    ;
     OtherScalars    ["SplitMinPrem"          ] = &SplitMinPrem           ;
+    OtherScalars    ["ErNotionallyPaysTerm"  ] = &ErNotionallyPaysTerm   ;
     OtherScalars    ["InitAnnLoanDueRate"    ] = &InitAnnLoanDueRate     ;
     OtherScalars    ["IsInforce"             ] = &IsInforce              ;
     OtherScalars    ["CurrentCoiMultiplier"  ] = &CurrentCoiMultiplier   ;
@@ -728,6 +729,8 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant 
const& a_Addend)
     PostHoneymoonSpread= a_Addend.PostHoneymoonSpread          ;
     SplitMinPrem       = SplitMinPrem || a_Addend.SplitMinPrem ;
 
+    ErNotionallyPaysTerm = ErNotionallyPaysTerm || 
a_Addend.ErNotionallyPaysTerm;
+
     NoLapseMinDur      = std::min(a_Addend.NoLapseMinDur, NoLapseMinDur);
     NoLapseMinAge      = std::min(a_Addend.NoLapseMinAge, NoLapseMinAge);
     NoLapseAlwaysActive= a_Addend.NoLapseAlwaysActive|| NoLapseAlwaysActive;
diff --git a/ledger_invariant.hpp b/ledger_invariant.hpp
index 25e3f0c..51840fc 100644
--- a/ledger_invariant.hpp
+++ b/ledger_invariant.hpp
@@ -188,6 +188,7 @@ class LMI_SO LedgerInvariant
     double          HasHoneymoon;
     double          PostHoneymoonSpread;
     double          SplitMinPrem;
+    double          ErNotionallyPaysTerm;
     double          IsInforce;
     double          CurrentCoiMultiplier;
     double          NoLapseAlwaysActive;
diff --git a/ledger_invariant_init.cpp b/ledger_invariant_init.cpp
index 98ce757..5d1eb02 100644
--- a/ledger_invariant_init.cpp
+++ b/ledger_invariant_init.cpp
@@ -261,7 +261,8 @@ void LedgerInvariant::Init(BasicValues const* b)
 
     HasHoneymoon            = b->yare_input_.HoneymoonEndorsement;
     PostHoneymoonSpread     = b->yare_input_.PostHoneymoonSpread;
-    b->database().query_into(DB_SplitMinPrem       , SplitMinPrem);
+    b->database().query_into(DB_SplitMinPrem        , SplitMinPrem);
+    b->database().query_into(DB_ErNotionallyPaysTerm, ErNotionallyPaysTerm);
 
     // These are reassigned below based on product data if available.
     std::string dbo_name_option1 = mc_str(mce_option1);
diff --git a/pdf_command_wx.cpp b/pdf_command_wx.cpp
index 5d6c373..d46f5a9 100644
--- a/pdf_command_wx.cpp
+++ b/pdf_command_wx.cpp
@@ -2730,12 +2730,14 @@ class finra_split_fund_report : public 
page_with_tabular_report
 
             case column_er_gross_payment:
             case column_ee_gross_payment:
-                // These columns only appear in split premiums case.
-                return !invar.SplitMinPrem;
+                // These columns appear only in this case (which,
+                // weirdly, differs from the SplitMinPrem case
+                // that governs elsewhere)...
+                return !invar.ErNotionallyPaysTerm;
 
             case column_premium_outlay:
-                // While this one replaces them in non-split premiums case.
-                return invar.SplitMinPrem;
+                // ...while this one replaces them otherwise.
+                return invar.ErNotionallyPaysTerm;
 
             case column_policy_year:
             case column_guar0_cash_surr_value:



reply via email to

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