lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5258] Use the input-sequence benefit types added 20110817


From: Greg Chicares
Subject: [lmi-commits] [5258] Use the input-sequence benefit types added 20110817T2009Z
Date: Wed, 17 Aug 2011 20:55:21 +0000

Revision: 5258
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5258
Author:   chicares
Date:     2011-08-17 20:55:21 +0000 (Wed, 17 Aug 2011)
Log Message:
-----------
Use the input-sequence benefit types added 20110817T2009Z

Modified Paths:
--------------
    lmi/trunk/datum_sequence.cpp
    lmi/trunk/input.hpp
    lmi/trunk/input_realization.cpp
    lmi/trunk/skin.xrc

Modified: lmi/trunk/datum_sequence.cpp
===================================================================
--- lmi/trunk/datum_sequence.cpp        2011-08-17 20:09:26 UTC (rev 5257)
+++ lmi/trunk/datum_sequence.cpp        2011-08-17 20:55:21 UTC (rev 5258)
@@ -264,6 +264,11 @@
     return *this;
 }
 
+// Cf. Input::permissible_specified_amount_strategy_keywords(), which
+// is marked as obsolete but may turn out to be necessary. The crucial
+// issue is how to restrict keywords in context. If they are somehow
+// restricted here, then perhaps the map shouldn't be static.
+
 std::map<std::string,std::string> const specamt_sequence::allowed_keywords() 
const
 {
     if(keyword_values_are_blocked())

Modified: lmi/trunk/input.hpp
===================================================================
--- lmi/trunk/input.hpp 2011-08-17 20:09:26 UTC (rev 5257)
+++ lmi/trunk/input.hpp 2011-08-17 20:55:21 UTC (rev 5258)
@@ -200,8 +200,7 @@
 
     void SetSolveDurations();
 
-    std::map<std::string,std::string> const 
permissible_specified_amount_strategy_keywords();
-    std::map<std::string,std::string> const 
permissible_death_benefit_option_keywords();
+    std::map<std::string,std::string> const 
permissible_specified_amount_strategy_keywords(); // Obsolete.
 
     std::string RealizeExtraMonthlyCustodialFee   ();
     std::string RealizeExtraCompensationOnAssets  ();
@@ -388,8 +387,8 @@
     numeric_sequence         CorporationTaxBracket           ;
     numeric_sequence         TaxBracket                      ;
     numeric_sequence         ProjectedSalary                 ;
-    datum_sequence           SpecifiedAmount                 ;
-    datum_sequence           DeathBenefitOption              ;
+    specamt_sequence         SpecifiedAmount                 ;
+    dbo_sequence             DeathBenefitOption              ;
     payment_sequence         Payment                         ;
     mode_sequence            PaymentMode                     ;
     payment_sequence         CorporationPayment              ;
@@ -496,9 +495,11 @@
     static DesiredType* reconstitute(any_member<Input>& m)
         {
         DesiredType* z = 0;
+        z = exact_cast<dbo_sequence            >(m); if(z) return z;
         z = exact_cast<mode_sequence           >(m); if(z) return z;
         z = exact_cast<numeric_sequence        >(m); if(z) return z;
         z = exact_cast<payment_sequence        >(m); if(z) return z;
+        z = exact_cast<specamt_sequence        >(m); if(z) return z;
         return z;
         }
 };

Modified: lmi/trunk/input_realization.cpp
===================================================================
--- lmi/trunk/input_realization.cpp     2011-08-17 20:09:26 UTC (rev 5257)
+++ lmi/trunk/input_realization.cpp     2011-08-17 20:55:21 UTC (rev 5258)
@@ -137,7 +137,14 @@
     return s.formatted_diagnostics(true);
 }
 
-//============================================================================
+// SpecifiedAmount.allowed_keywords() does more or less the same
+// thing, but without the 'specified_amount_indeterminate' test.
+// That test isn't actually correct: it's okay to use 'sevenpay'
+// for seven years, then solve on the interval [7, maturity).
+// However, other restrictions might be applied: e.g., if payment
+// strategy is 'sevenpay', then specamt strategy must not also be
+// 'sevenpay' in the same year.
+
 std::map<std::string,std::string> const
 Input::permissible_specified_amount_strategy_keywords()
 {
@@ -161,12 +168,7 @@
         permissible_keywords.insert(*i);
         }
 
-    bool specified_amount_indeterminate =
-           mce_solve_specamt == SolveType
-    // TODO ?? Further conditions to disallow improper input:
-    // need to compare corresponding years.
-    //  || payment strategy is anything but 'none'
-        ;
+    bool specified_amount_indeterminate = mce_solve_specamt == SolveType;
     if(specified_amount_indeterminate)
         {
         permissible_keywords.clear();
@@ -176,21 +178,6 @@
 }
 
 //============================================================================
-std::map<std::string,std::string> const
-Input::permissible_death_benefit_option_keywords()
-{
-    static std::map<std::string,std::string> all_keywords;
-    if(all_keywords.empty())
-        {
-        all_keywords["a"  ] = "A"  ;
-        all_keywords["b"  ] = "B"  ;
-        all_keywords["rop"] = "ROP";
-        }
-    std::map<std::string,std::string> permissible_keywords = all_keywords;
-    return permissible_keywords;
-}
-
-//============================================================================
 std::vector<std::string> Input::RealizeAllSequenceInput(bool report_errors)
 {
     LMI_ASSERT(years_to_maturity() == database_->length());
@@ -529,8 +516,8 @@
         ,SpecifiedAmountRealized_
         ,SpecifiedAmountStrategyRealized_
         ,SpecifiedAmount
-        ,permissible_specified_amount_strategy_keywords()
-        ,std::string("")
+        ,SpecifiedAmount.allowed_keywords()
+        ,SpecifiedAmount.default_keyword()
         );
 }
 
@@ -541,8 +528,8 @@
         (*this
         ,DeathBenefitOptionRealized_
         ,DeathBenefitOption
-        ,permissible_death_benefit_option_keywords()
-        ,std::string("a")
+        ,DeathBenefitOption.allowed_keywords()
+        ,DeathBenefitOption.default_keyword()
         );
     if(s.size())
         {

Modified: lmi/trunk/skin.xrc
===================================================================
--- lmi/trunk/skin.xrc  2011-08-17 20:09:26 UTC (rev 5257)
+++ lmi/trunk/skin.xrc  2011-08-17 20:55:21 UTC (rev 5258)
@@ -268,10 +268,10 @@
         </object>
         <object class="sizeritem">
             <flag>wxGROW</flag>
-            <object class="wxTextCtrl" name="ExtraMonthlyCustodialFee">
+            <object class="InputSequenceEntry" name="ExtraMonthlyCustodialFee">
+                <title>Additional monthly policy fee</title>
                 <help>Additional monthly policy fee (e.g., for fund custodian 
charges)</help>
                 <size>180,-1</size>
-                <value>0</value>
             </object>
         </object>
         <object class="sizeritem">
@@ -283,10 +283,10 @@
         </object>
         <object class="sizeritem">
             <flag>wxGROW</flag>
-            <object class="wxTextCtrl" name="ExtraCompensationOnAssets">
+            <object class="InputSequenceEntry" 
name="ExtraCompensationOnAssets">
+                <title>Additional separate-account asset charge</title>
                 <help>Additional separate-account asset charge (e.g., for 
negotiated asset-based compensation)</help>
                 <size>180,-1</size>
-                <value>0</value>
             </object>
         </object>
         <object class="sizeritem">
@@ -298,10 +298,10 @@
         </object>
         <object class="sizeritem">
             <flag>wxGROW</flag>
-            <object class="wxTextCtrl" name="ExtraCompensationOnPremium">
+            <object class="InputSequenceEntry" 
name="ExtraCompensationOnPremium">
+                <title>Additional premium load</title>
                 <help>Additional premium load (e.g., for negotiated 
premium-based compensation)</help>
                 <size>180,-1</size>
-                <value>0</value>
             </object>
         </object>
     </object>
@@ -644,7 +644,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="CurrentCoiMultiplier">
+                    <object class="InputSequenceEntry" 
name="CurrentCoiMultiplier">
+                        <title>Multiplier for current COI rates</title>
                         <help>Multiplier for current COI rates</help>
                         <size>180,-1</size>
                     </object>
@@ -658,7 +659,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" 
name="PartialMortalityMultiplier">
+                    <object class="InputSequenceEntry" 
name="PartialMortalityMultiplier">
+                        <title>Multiplier for partial mortality table</title>
                         <help>Multiplier for partial mortality table</help>
                         <size>180,-1</size>
                     </object>
@@ -1184,7 +1186,8 @@
                         </object>
                         <object class="sizeritem">
                             <flag>wxGROW</flag>
-                            <object class="wxTextCtrl" name="FlatExtra">
+                            <object class="InputSequenceEntry" 
name="FlatExtra">
+                                <title>Annual flat extra per thousand</title>
                                 <help>Annual flat extra per thousand</help>
                                 <size>10,-1</size>
                             </object>
@@ -1204,7 +1207,8 @@
                         </object>
                         <object class="sizeritem">
                             <flag>wxGROW</flag>
-                            <object class="wxTextCtrl" name="ProjectedSalary">
+                            <object class="InputSequenceEntry" 
name="ProjectedSalary">
+                                <title>Projected annual salary</title>
                                 <help>Projected annual salary</help>
                                 <size>10,-1</size>
                             </object>
@@ -1740,7 +1744,8 @@
                         </object>
                         <object class="sizeritem">
                             <flag>wxGROW</flag>
-                            <object class="wxTextCtrl" name="PremiumHistory">
+                            <object class="InputSequenceEntry" 
name="PremiumHistory">
+                                <title>"Amounts paid" history</title>
                                 <help>"Amounts paid" for each year since 
beginning of last seven-pay period--zero if not in a seven-pay period</help>
                                 <size>180,-1</size>
                             </object>
@@ -1754,7 +1759,8 @@
                         </object>
                         <object class="sizeritem">
                             <flag>wxGROW</flag>
-                            <object class="wxTextCtrl" name="SpecamtHistory">
+                            <object class="InputSequenceEntry" 
name="SpecamtHistory">
+                                <title>Specified-amount history</title>
                                 <help>Specified amount for each year since 
issue (needed for certain surrender charges)</help>
                                 <size>180,-1</size>
                             </object>
@@ -2176,7 +2182,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="SpecifiedAmount">
+                    <object class="InputSequenceEntry" name="SpecifiedAmount">
+                        <title>Specified amount</title>
                         <help>Specified amount, or corridor, glp, gsp, 
maximum, salary, sevenpay, target</help>
                         <size>180,-1</size>
                     </object>
@@ -2190,7 +2197,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="DeathBenefitOption">
+                    <object class="InputSequenceEntry" 
name="DeathBenefitOption">
+                        <title>Death benefit option</title>
                         <help>Death benefit option: a (level), b (increasing), 
or rop (return of premium)</help>
                         <size>180,-1</size>
                     </object>
@@ -2454,7 +2462,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="CorporationPayment">
+                    <object class="InputSequenceEntry" 
name="CorporationPayment">
+                        <title>Corporation payment</title>
                         <help>Corporation payment amount, or corridor, glp, 
gsp, minimum, sevenpay, table, target</help>
                         <size>180,-1</size>
                     </object>
@@ -2468,7 +2477,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="CorporationPaymentMode">
+                    <object class="InputSequenceEntry" 
name="CorporationPaymentMode">
+                        <title>Corporation payment mode</title>
                         <help>Corporation payment mode: annual, semiannual, 
quarterly, or monthly</help>
                         <size>180,-1</size>
                     </object>
@@ -2564,7 +2574,8 @@
                         <object class="sizeritem">
                             <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
                             <border>8</border>
-                            <object class="wxTextCtrl" 
name="GeneralAccountRate">
+                            <object class="InputSequenceEntry" 
name="GeneralAccountRate">
+                                <title>General-account interest rate</title>
                                 <help>General-account (non-loaned) interest 
rate</help>
                             </object>
                         </object>
@@ -2596,7 +2607,8 @@
                         <object class="sizeritem">
                             <flag>wxGROW|wxALIGN_CENTER_VERTICAL|wxALL</flag>
                             <border>8</border>
-                            <object class="wxTextCtrl" 
name="SeparateAccountRate">
+                            <object class="InputSequenceEntry" 
name="SeparateAccountRate">
+                                <title>Separate-account interest rate</title>
                                 <help>Separate-account interest rate</help>
                             </object>
                         </object>
@@ -2677,7 +2689,8 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="Withdrawal">
+                    <object class="InputSequenceEntry" name="Withdrawal">
+                        <title>Withdrawal</title>
                         <help>Withdrawal amount</help>
                         <size>180,-1</size>
                     </object>
@@ -2691,8 +2704,9 @@
                 </object>
                 <object class="sizeritem">
                     <flag>wxGROW</flag>
-                    <object class="wxTextCtrl" name="NewLoan">
-                        <help>Loan amount</help>
+                    <object class="InputSequenceEntry" name="NewLoan">
+                        <title>Loan</title>
+                        <help>New cash loan amount</help>
                         <size>180,-1</size>
                     </object>
                 </object>
@@ -3052,7 +3066,8 @@
                                 <object class="sizeritem">
                                     <flag>wxGROW</flag>
                                     <border>4</border>
-                                    <object class="wxTextCtrl" 
name="HoneymoonValueSpread">
+                                    <object class="InputSequenceEntry" 
name="HoneymoonValueSpread">
+                                        <title>Honeymoon-value spread</title>
                                         <help>Spread for honeymoon value</help>
                                         <size>60,-1</size>
                                     </object>




reply via email to

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