lmi-commits
[Top][All Lists]
Advanced

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

[lmi-commits] [5704] Fix defect noted 20130418T2222Z


From: Greg Chicares
Subject: [lmi-commits] [5704] Fix defect noted 20130418T2222Z
Date: Fri, 19 Apr 2013 12:25:22 +0000

Revision: 5704
          http://svn.sv.gnu.org/viewvc/?view=rev&root=lmi&revision=5704
Author:   chicares
Date:     2013-04-19 12:25:21 +0000 (Fri, 19 Apr 2013)
Log Message:
-----------
Fix defect noted 20130418T2222Z

Modified Paths:
--------------
    lmi/trunk/ChangeLog
    lmi/trunk/premium_tax.cpp
    lmi/trunk/premium_tax.hpp

Modified: lmi/trunk/ChangeLog
===================================================================
--- lmi/trunk/ChangeLog 2013-04-19 11:07:13 UTC (rev 5703)
+++ lmi/trunk/ChangeLog 2013-04-19 12:25:21 UTC (rev 5704)
@@ -32121,3 +32121,25 @@
 in AK and SD: no product would pass premium tax through as a load in
 those two states only.
 
+20130419T1046Z <address@hidden> [544]
+
+  premium_tax.cpp
+Refactor.
+
+20130419T1100Z <address@hidden> [543]
+
+  premium_tax.cpp
+  premium_tax_test.cpp
+Fix defect noted 20130416T1214Z.
+
+20130419T1107Z <address@hidden> [543]
+
+  premium_tax.cpp
+Refactor.
+
+20130419T1225Z <address@hidden> [542]
+
+  premium_tax.cpp
+  premium_tax.hpp
+Fix defect noted 20130418T2222Z.
+

Modified: lmi/trunk/premium_tax.cpp
===================================================================
--- lmi/trunk/premium_tax.cpp   2013-04-19 11:07:13 UTC (rev 5703)
+++ lmi/trunk/premium_tax.cpp   2013-04-19 12:25:21 UTC (rev 5704)
@@ -100,9 +100,10 @@
     ,amortize_premium_load_  (amortize_premium_load)
     ,levy_rate_              (0.0)   // Reset below.
     ,load_rate_              (0.0)   // Reset below.
+    ,tax_state_load_rate_    (0.0)   // Reset below.
+    ,domiciliary_load_rate_  (0.0)   // Reset below.
     ,maximum_load_rate_      (0.0)   // Reset below.
     ,minimum_load_rate_      (0.0)   // Reset below.
-    ,domiciliary_load_rate_  (0.0)   // Reset below.
     ,is_tiered_in_tax_state_ (false) // Reset below.
     ,is_tiered_in_domicile_  (false) // Reset below.
     ,is_retaliatory_         (false) // Reset below.
@@ -122,12 +123,13 @@
 
     load_rate_is_levy_rate_ = db.are_equivalent(DB_PremTaxLoad, 
DB_PremTaxRate);
 
+    double tax_state_levy_rate   = 0.0;
     double domiciliary_levy_rate = 0.0;
     if(!amortize_premium_load_)
         {
         database_index index0 = db.index().state(tax_state_);
-        levy_rate_             = db.Query(DB_PremTaxRate, index0);
-        load_rate_             = db.Query(DB_PremTaxLoad, index0);
+        tax_state_levy_rate    = db.Query(DB_PremTaxRate, index0);
+        tax_state_load_rate_   = db.Query(DB_PremTaxLoad, index0);
         database_index index1 = db.index().state(domicile_);
         domiciliary_levy_rate  = db.Query(DB_PremTaxRate, index1);
         domiciliary_load_rate_ = db.Query(DB_PremTaxLoad, index1);
@@ -135,9 +137,14 @@
 
     if(is_retaliatory_)
         {
-        levy_rate_ = std::max(levy_rate_, domiciliary_levy_rate );
-        load_rate_ = std::max(load_rate_, domiciliary_load_rate_);
+        levy_rate_ = std::max(tax_state_levy_rate , domiciliary_levy_rate );
+        load_rate_ = std::max(tax_state_load_rate_, domiciliary_load_rate_);
         }
+    else
+        {
+        levy_rate_ = tax_state_levy_rate ;
+        load_rate_ = tax_state_load_rate_;
+        }
 
     maximum_load_rate_ = ascertain_maximum_load_rate(strata);
     minimum_load_rate_ = ascertain_minimum_load_rate(strata);
@@ -156,9 +163,10 @@
     ,amortize_premium_load_  (false)
     ,levy_rate_              (0.0) // Reset below.
     ,load_rate_              (0.0)
+    ,tax_state_load_rate_    (0.0)
+    ,domiciliary_load_rate_  (0.0)
     ,maximum_load_rate_      (0.0)
     ,minimum_load_rate_      (0.0)
-    ,domiciliary_load_rate_  (0.0)
     ,is_tiered_in_tax_state_ (false)
     ,is_tiered_in_domicile_  (false)
     ,is_retaliatory_         (false)
@@ -215,13 +223,13 @@
 
     if(is_tiered_in_tax_state_)
         {
-        if(0.0 != load_rate())
+        if(0.0 != tax_state_load_rate_)
             {
             fatal_error()
                 << "Premium-tax load is tiered in premium-tax state "
                 << mc_str(tax_state_)
                 << ", but the product database specifies a scalar load of "
-                << load_rate()
+                << tax_state_load_rate_
                 << " instead of zero as expected. Probably the database"
                 << " is incorrect."
                 << LMI_FLUSH
@@ -307,9 +315,7 @@
 
 double premium_tax::calculate_load(double payment, stratified_charges const& 
strata)
 {
-    // TODO ?? Incorrect: load_rate() isn't just the rate in the tax
-    // state: it already reflects retaliation.
-    double tax_in_tax_state = load_rate() * payment;
+    double tax_in_tax_state = tax_state_load_rate_ * payment;
     if(varies_by_state_ && is_tiered_in_tax_state_)
         {
         LMI_ASSERT(0.0 == tax_in_tax_state);

Modified: lmi/trunk/premium_tax.hpp
===================================================================
--- lmi/trunk/premium_tax.hpp   2013-04-19 11:07:13 UTC (rev 5703)
+++ lmi/trunk/premium_tax.hpp   2013-04-19 12:25:21 UTC (rev 5704)
@@ -130,9 +130,10 @@
 
     double levy_rate_;
     double load_rate_;
+    double tax_state_load_rate_;
+    double domiciliary_load_rate_;
     double maximum_load_rate_;
     double minimum_load_rate_;
-    double domiciliary_load_rate_;
     bool   is_tiered_in_tax_state_;
     bool   is_tiered_in_domicile_;
     bool   is_retaliatory_;




reply via email to

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