[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] master b2e4af3 08/15: Make 'IsSinglePremium' enumera
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] master b2e4af3 08/15: Make 'IsSinglePremium' enumerative |
Date: |
Tue, 27 Aug 2019 13:50:19 -0400 (EDT) |
branch: master
commit b2e4af394c23f676840cf18bc6f3ace741b8641f
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>
Make 'IsSinglePremium' enumerative
---
dbdict.cpp | 1 +
dbnames.xpp | 2 +-
ledger_invariant.cpp | 6 ++++--
oecumenic_enumerations.hpp | 20 ++++++++++++++++++++
pdf_command_wx.cpp | 3 ++-
5 files changed, 28 insertions(+), 4 deletions(-)
diff --git a/dbdict.cpp b/dbdict.cpp
index a093124..c1c7821 100644
--- a/dbdict.cpp
+++ b/dbdict.cpp
@@ -566,6 +566,7 @@ void DBDictionary::InitDB()
Add({DB_MaxWdDed , mce_twelve_times_last});
Add({DB_MinPremType , oe_monthly_deduction});
Add({DB_TgtPremType , oe_monthly_deduction});
+ Add({DB_IsSinglePremium , oe_flexible_premium});
Add({DB_DeductionMethod , oe_proportional});
Add({DB_DeductionAcct , oe_prefer_general_account});
Add({DB_DistributionMethod , oe_proportional});
diff --git a/dbnames.xpp b/dbnames.xpp
index 8df7b12..8123921 100644
--- a/dbnames.xpp
+++ b/dbnames.xpp
@@ -311,7 +311,7 @@
{DB_TgtPremFixedAtIssue,DB_Topic_Premiums,"TgtPremFixedAtIssue","Target
premium set forever at issue: 0=no, 1=yes",}, \
{DB_TgtPremIgnoreSubstd,DB_Topic_Premiums,"TgtPremIgnoreSubstd","Target
premium ignores substandard rating: 0=no, 1=yes",}, \
{DB_MinPmt,DB_Topic_Premiums,"MinPmt","Minimum initial payment [not
implemented]",}, \
-{DB_IsSinglePremium,DB_Topic_Premiums,"IsSinglePremium","Single-premium
product: 0=no, 1=yes",}, \
+{DB_IsSinglePremium,DB_Topic_Premiums,"IsSinglePremium","Premium flexibility:
0=flexible, 1=single, 2=modified single premium",}, \
{DB_Topic_SecondaryGuarantees,DB_FIRST,"Secondary
guarantees","Secondary-guarantee options and parameters",}, \
{DB_NoLapseMinDur,DB_Topic_SecondaryGuarantees,"NoLapseMinDur","Minimum number
of years no-lapse guarantee remains in effect if premium requirement
satisfied",}, \
{DB_NoLapseMinAge,DB_Topic_SecondaryGuarantees,"NoLapseMinAge","Minimum age to
which no-lapse guarantee remains in effect if premium requirement satisfied",},
\
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index 9b3b332..2291ba3 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -31,6 +31,7 @@
#include "ledger.hpp" // for CalculateIrrs()
#include "ledger_variant.hpp" // for CalculateIrrs()
#include "mc_enum_aux.hpp" // mc_e_vector_to_string_vector()
+#include "oecumenic_enumerations.hpp"
#include <algorithm> // max(), min()
#include <ostream>
@@ -481,7 +482,7 @@ void LedgerInvariant::Init()
SupplementalReport = true;
NoLongerIssued = false;
AllowGroupQuote = true;
- IsSinglePremium = true;
+ IsSinglePremium = oe_flexible_premium;
irr_precision_ = 0;
irr_initialized_ = false;
@@ -820,7 +821,8 @@ LedgerInvariant& LedgerInvariant::PlusEq(LedgerInvariant
const& a_Addend)
SplitMinPrem = SplitMinPrem || a_Addend.SplitMinPrem ;
ErNotionallyPaysTerm = ErNotionallyPaysTerm ||
a_Addend.ErNotionallyPaysTerm;
- IsSinglePremium = IsSinglePremium && a_Addend.IsSinglePremium;
+
+ IsSinglePremium = std::max(a_Addend.IsSinglePremium ,
IsSinglePremium );
MaxAnnGuarLoanSpread = std::max(a_Addend.MaxAnnGuarLoanSpread ,
MaxAnnGuarLoanSpread );
MaxAnnCurrLoanDueRate = std::max(a_Addend.MaxAnnCurrLoanDueRate,
MaxAnnCurrLoanDueRate);
diff --git a/oecumenic_enumerations.hpp b/oecumenic_enumerations.hpp
index ba19cbc..4691c11 100644
--- a/oecumenic_enumerations.hpp
+++ b/oecumenic_enumerations.hpp
@@ -126,6 +126,26 @@ enum oenum_mvc_dv_rc
,oe_mvc_dv_changed
};
+/// A regulatory association defines various types of life insurance here:
+///
https://www.insurancecompact.org/rulemaking_records/adopted_uniform_standards.pdf
+/// and "modified single premium" in particular here:
+///
https://www.insurancecompact.org/rulemaking_records/070930_mod_sp_adjustable.pdf
+/// but lists no non-"modified" category for single-premium UL.
+///
+/// At least one state apparently concludes that all single-premium UL
+/// must be captioned as "Modified". Use
+/// oe_modified_single_premium
+/// for states that require this "Modified" caption, and
+/// oe_plain_single_premium
+/// for states that allow captioning UL as "Single Premium" without
+/// the word "Modified".
+
+enum oenum_premium_flexibility
+ {oe_flexible_premium
+ ,oe_plain_single_premium
+ ,oe_modified_single_premium
+ };
+
/// Used only for backward compatibility with old versions that didn't
/// distinguish state of jurisdiction from premium-tax state.
diff --git a/pdf_command_wx.cpp b/pdf_command_wx.cpp
index b14801d..5da5b6e 100644
--- a/pdf_command_wx.cpp
+++ b/pdf_command_wx.cpp
@@ -2243,7 +2243,8 @@ class pdf_illustration_naic : public pdf_illustration
add_variable
("SinglePremium"
- ,bourn_cast<bool>(invar.IsSinglePremium)
+ , oe_plain_single_premium == invar.IsSinglePremium
+ || oe_modified_single_premium == invar.IsSinglePremium
);
// Variable representing the premium payment frequency with the
- [lmi-commits] [lmi] master updated (e0bf6c4 -> 80e47f2), Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master fee9d55 02/15: Support tabular minimum premiums, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master a1d772b 03/15: Prefer 'switch' to if...else_if...else, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 3d6e389 07/15: Simplify single-premium logic, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master a74799d 06/15: Add a 'GuarCoiWhence' database entity, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master e010c8f 04/15: Distinguish tabular minimum and target premiums, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 3e7a753 05/15: Resolve and document the policy-fee issue noted in the last commit, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 6b1abc0 11/15: Rework {flexible, single}-premium footnotes, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master b2e4af3 08/15: Make 'IsSinglePremium' enumerative,
Greg Chicares <=
- [lmi-commits] [lmi] master 6596a29 12/15: Reformat to highlight similarity, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 80e47f2 15/15: Substitute product-database strings for literal text, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 2994f27 13/15: Simplify and condense, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 04f9369 01/15: Add <MinPremFilename>, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master d684bec 14/15: Move mce_ill_reg product description into {{ProductDescription}}, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master 12f58cd 10/15: Simplify single-premium conditionals, Greg Chicares, 2019/08/27
- [lmi-commits] [lmi] master ed48b1d 09/15: Move a 'PolicyLegalName' adjustment into '.policy', Greg Chicares, 2019/08/27