[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master 89e684c 4/4: Implement 'IsSinglePremium' data
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master 89e684c 4/4: Implement 'IsSinglePremium' database entity |
Date: |
Sat, 3 Aug 2019 08:47:53 -0400 (EDT) |
branch: master
commit 89e684ceae89234dd83d716df1d8ad9fffdc5a69
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Implement 'IsSinglePremium' database entity
For now, PDF generation is unchanged; it's merely asserted that this
database entity is equivalent to the MST kludge.
---
ledger_evaluator.cpp | 1 +
ledger_invariant.cpp | 3 +++
ledger_invariant.hpp | 1 +
ledger_invariant_init.cpp | 1 +
pdf_command_wx.cpp | 7 ++++++-
5 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/ledger_evaluator.cpp b/ledger_evaluator.cpp
index 0a747d2..b21e62c 100644
--- a/ledger_evaluator.cpp
+++ b/ledger_evaluator.cpp
@@ -528,6 +528,7 @@ format_map_t static_formats()
,{"SplitFundAllocation" , f1}
,{"SplitMinPrem" , f1}
,{"ErNotionallyPaysTerm" , f1}
+ ,{"IsSinglePremium" , f1}
,{"SpouseIssueAge" , f1}
,{"SupplementalReport" , f1}
,{"AllowExperienceRating" , f1}
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index b2e62e4..fa9e544 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -167,6 +167,7 @@ void LedgerInvariant::Alloc(int len)
OtherScalars ["PostHoneymoonSpread" ] = &PostHoneymoonSpread ;
OtherScalars ["SplitMinPrem" ] = &SplitMinPrem ;
OtherScalars ["ErNotionallyPaysTerm" ] = &ErNotionallyPaysTerm ;
+ OtherScalars ["IsSinglePremium" ] = &IsSinglePremium ;
OtherScalars ["MaxAnnGuarLoanSpread" ] = &MaxAnnGuarLoanSpread ;
OtherScalars ["MaxAnnCurrLoanDueRate" ] = &MaxAnnCurrLoanDueRate ;
OtherScalars ["IsInforce" ] = &IsInforce ;
@@ -451,6 +452,7 @@ void LedgerInvariant::Init()
SupplementalReport = true;
NoLongerIssued = false;
AllowGroupQuote = true;
+ IsSinglePremium = true;
irr_precision_ = 0;
irr_initialized_ = false;
@@ -756,6 +758,7 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
SplitMinPrem = SplitMinPrem || a_Addend.SplitMinPrem ;
ErNotionallyPaysTerm = ErNotionallyPaysTerm ||
a_Addend.ErNotionallyPaysTerm;
+ IsSinglePremium = IsSinglePremium && a_Addend.IsSinglePremium;
MaxAnnGuarLoanSpread = std::max(a_Addend.MaxAnnGuarLoanSpread ,
MaxAnnGuarLoanSpread );
MaxAnnCurrLoanDueRate = std::max(a_Addend.MaxAnnCurrLoanDueRate,
MaxAnnCurrLoanDueRate);
diff --git a/ledger_invariant.hpp b/ledger_invariant.hpp
index 24302be..fa74052 100644
--- a/ledger_invariant.hpp
+++ b/ledger_invariant.hpp
@@ -191,6 +191,7 @@ class LMI_SO LedgerInvariant final
double PostHoneymoonSpread;
double SplitMinPrem;
double ErNotionallyPaysTerm;
+ double IsSinglePremium;
double MaxAnnGuarLoanSpread;
double MaxAnnCurrLoanDueRate;
double IsInforce;
diff --git a/ledger_invariant_init.cpp b/ledger_invariant_init.cpp
index b25ff79..088e9b6 100644
--- a/ledger_invariant_init.cpp
+++ b/ledger_invariant_init.cpp
@@ -277,6 +277,7 @@ void LedgerInvariant::Init(BasicValues const* b)
PostHoneymoonSpread = b->yare_input_.PostHoneymoonSpread;
b->database().query_into(DB_SplitMinPrem , SplitMinPrem);
b->database().query_into(DB_ErNotionallyPaysTerm, ErNotionallyPaysTerm);
+ b->database().query_into(DB_IsSinglePremium , IsSinglePremium);
// 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 bfcbf95..c43a359 100644
--- a/pdf_command_wx.cpp
+++ b/pdf_command_wx.cpp
@@ -2214,9 +2214,14 @@ class pdf_illustration_naic : public pdf_illustration
||test_variable("ModifiedSinglePremium0")
);
+ bool const is_single_premium =
+ starts_with(policy_name, "Single")
+ || starts_with(policy_name, "Modified")
+ ;
+ LMI_ASSERT(is_single_premium == invar.IsSinglePremium);
add_variable
("SinglePremium"
- ,starts_with(policy_name, "Single") || starts_with(policy_name,
"Modified")
+ ,is_single_premium
);
// Variable representing the premium payment frequency with the