lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [6464] Provide 'InitDBOpt'


From: Greg Chicares
Subject: [lmi-commits] [6464] Provide 'InitDBOpt'
Date: Thu, 07 Jan 2016 19:19:22 +0000

Revision: 6464
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=6464
Author:   chicares
Date:     2016-01-07 19:19:21 +0000 (Thu, 07 Jan 2016)
Log Message:
-----------
Provide 'InitDBOpt'

Modified Paths:
--------------
    lmi/trunk/ledger_invariant.cpp
    lmi/trunk/ledger_invariant.hpp
    lmi/trunk/product_data.cpp
    lmi/trunk/product_data.hpp

Modified: lmi/trunk/ledger_invariant.cpp
===================================================================
--- lmi/trunk/ledger_invariant.cpp      2016-01-05 01:46:18 UTC (rev 6463)
+++ lmi/trunk/ledger_invariant.cpp      2016-01-07 19:19:21 UTC (rev 6464)
@@ -339,6 +339,10 @@
     Strings["SupplementalReportColumn10"    ] = &SupplementalReportColumn10    
;
     Strings["SupplementalReportColumn11"    ] = &SupplementalReportColumn11    
;
 
+    // Special-case strings.
+
+    Strings["InitDBOpt"                     ] = &InitDBOpt                     
;
+
     LedgerBase::Alloc();
 
     // Scalar or vector data not compatible with type 'double' can't
@@ -391,6 +395,7 @@
     EffDate                = obj.EffDate               ;
     DateOfBirth            = obj.DateOfBirth           ;
     InitErMode             = obj.InitErMode            ;
+    InitDBOpt              = obj.InitDBOpt             ;
 
     FullyInitialized       = obj.FullyInitialized      ;
 }
@@ -657,6 +662,11 @@
     SplitMinPrem            = b->Database_->Query(DB_SplitMinPrem);
     AllowDbo3               = b->Database_->Query(DB_AllowDbo3);
 
+    // These are reassigned below based on product data if available.
+    std::string dbo_name_option1 = mc_str(mce_option1);
+    std::string dbo_name_option2 = mc_str(mce_option2);
+    std::string dbo_name_rop     = mc_str(mce_rop    );
+
     // The antediluvian branch has a null ProductData_ object.
     if(b->ProductData_)
         {
@@ -666,6 +676,9 @@
         // strings in class product_data vary across the same axes as
         // database_entity objects.
         bool alt_form = b->Database_->Query(DB_UsePolicyFormAlt);
+        dbo_name_option1               = p.datum("DboNameLevel"                
   );
+        dbo_name_option2               = p.datum("DboNameIncreasing"           
   );
+        dbo_name_rop                   = p.datum("DboNameReturnOfPremium"      
   );
         PolicyForm = p.datum(alt_form ? "PolicyFormAlternative" : 
"PolicyForm");
         PolicyMktgName                 = p.datum("PolicyMktgName"              
   );
         PolicyLegalName                = p.datum("PolicyLegalName"             
   );
@@ -852,6 +865,15 @@
     DateOfBirth             = calendar_date(b->yare_input_.DateOfBirth).str();
     DateOfBirthJdn          = 
calendar_date(b->yare_input_.DateOfBirth).julian_day_number();
     InitErMode              = mc_str(b->Outlay_->er_premium_modes()[0]);
+
+    mcenum_dbopt const init_dbo = b->DeathBfts_->dbopt()[0];
+    InitDBOpt =
+         (mce_option1 == init_dbo) ? dbo_name_option1
+        :(mce_option2 == init_dbo) ? dbo_name_option2
+        :(mce_rop     == init_dbo) ? dbo_name_rop
+        :throw std::logic_error("Unrecognized initial death benefit option.")
+        ;
+
     DefnLifeIns             = mc_str(b->yare_input_.DefinitionOfLifeInsurance);
     DefnMaterialChange      = 
mc_str(b->yare_input_.DefinitionOfMaterialChange);
     AvoidMec                = mc_str(b->yare_input_.AvoidMecMethod);
@@ -967,6 +989,7 @@
     DateOfBirth                   = a_Addend.DateOfBirth;
     DateOfBirthJdn                = a_Addend.DateOfBirthJdn;
     InitErMode                    = a_Addend.InitErMode;
+    InitDBOpt                     = a_Addend.InitDBOpt;
     Age                           = std::min(Age, a_Addend.Age);
     RetAge                        = std::min(RetAge, a_Addend.RetAge); // TODO 
?? Does this make sense?
     EndtAge                       = std::max(EndtAge, a_Addend.EndtAge);

Modified: lmi/trunk/ledger_invariant.hpp
===================================================================
--- lmi/trunk/ledger_invariant.hpp      2016-01-05 01:46:18 UTC (rev 6463)
+++ lmi/trunk/ledger_invariant.hpp      2016-01-07 19:19:21 UTC (rev 6464)
@@ -379,6 +379,7 @@
     // is not visible across a shared-library boundary. For now, this
     // kludge solves an immediate problem for premium quotes.
     std::string     InitErMode;
+    std::string     InitDBOpt;
 
   private:
     void Alloc(int len);

Modified: lmi/trunk/product_data.cpp
===================================================================
--- lmi/trunk/product_data.cpp  2016-01-05 01:46:18 UTC (rev 6463)
+++ lmi/trunk/product_data.cpp  2016-01-07 19:19:21 UTC (rev 6464)
@@ -216,6 +216,9 @@
     ascribe("CsvHeaderName"                 , &product_data::CsvHeaderName     
            );
     ascribe("NoLapseProvisionName"          , 
&product_data::NoLapseProvisionName          );
     ascribe("ContractName"                  , &product_data::ContractName      
            );
+    ascribe("DboNameLevel"                  , &product_data::DboNameLevel      
            );
+    ascribe("DboNameIncreasing"             , &product_data::DboNameIncreasing 
            );
+    ascribe("DboNameReturnOfPremium"        , 
&product_data::DboNameReturnOfPremium        );
     ascribe("AccountValueFootnote"          , 
&product_data::AccountValueFootnote          );
     ascribe("AttainedAgeFootnote"           , 
&product_data::AttainedAgeFootnote           );
     ascribe("CashSurrValueFootnote"         , 
&product_data::CashSurrValueFootnote         );
@@ -469,6 +472,9 @@
     z.CsvHeaderName              = glossed_string("Cash Surr");
     z.NoLapseProvisionName       = glossed_string("No-lapse Provision");
     z.ContractName               = glossed_string("contract"); // 
Alternatively, "policy" or "certificate".
+    z.DboNameLevel               = glossed_string("A");
+    z.DboNameIncreasing          = glossed_string("B");
+    z.DboNameReturnOfPremium     = glossed_string("ROP");
     z.MarketingNameFootnote      = glossed_string("Policy form UL32768-NY is 
marketed as 'UL Supreme'.");
 
     z.GroupQuoteShortProductName = glossed_string("UL SUPREMEĀ®");

Modified: lmi/trunk/product_data.hpp
===================================================================
--- lmi/trunk/product_data.hpp  2016-01-05 01:46:18 UTC (rev 6463)
+++ lmi/trunk/product_data.hpp  2016-01-07 19:19:21 UTC (rev 6464)
@@ -183,12 +183,15 @@
     glossed_string CoUnderwriterAddress;
 
     // Terms defined in the contract, which must be used for column
-    // headers according to the illustration reg.
+    // headers, footnotes, etc. according to the illustration reg.
     glossed_string AvName;
     glossed_string CsvName;
     glossed_string CsvHeaderName;
     glossed_string NoLapseProvisionName;
     glossed_string ContractName;
+    glossed_string DboNameLevel;
+    glossed_string DboNameIncreasing;
+    glossed_string DboNameReturnOfPremium;
 
     // TODO ?? Most of the following are missing from the GUI.
 




reply via email to

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