lmi-commits
[Top][All Lists]
Advanced

[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



reply via email to

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