[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: