[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] (no subject)
From: |
Greg Chicares |
Subject: |
[lmi-commits] (no subject) |
Date: |
Wed, 15 Jun 2016 17:15:45 +0000 (UTC) |
branch: master
commit 968ab786c69d0ca504ecdc371b2e93a684ec7764
Author: Gregory W. Chicares <address@hidden>
Date: Wed Jun 15 17:15:12 2016 +0000
Remove defective commission calculation [429]
Compensation generally varies for different categories of producers.
Without knowing which category the producer belongs to, lmi cannot
calculate compensation correctly. The old calculation, now removed,
was suitable for only one producer category at best, but just plain
wrong for others. Commit a0d3b6d39f32f601618f7340f15352710567c1ca
made that calculation conditional, and it was disabled in 2015 for
all supported products; now the broken code is expunged.
---
dbnames.xpp | 2 +-
ihs_acctval.cpp | 30 ++----------------------------
ledger_invariant.cpp | 3 +--
ledger_xml_io.cpp | 2 +-
4 files changed, 5 insertions(+), 32 deletions(-)
diff --git a/dbnames.xpp b/dbnames.xpp
index 547ff00..f63babf 100644
--- a/dbnames.xpp
+++ b/dbnames.xpp
@@ -300,7 +300,7 @@
{DB_ErPremMethod,DB_Topic_Allocations,"ErPremMethod","Apportionment of
employer premiums between general and separate accounts: 0=follow input fund
allocation, 1=credit 'preferred' account",}, \
{DB_ErPremAcct,DB_Topic_Allocations,"ErPremAcct","Preferred account for
employer premiums if input overridden: 0=general account, 1=separate
account",}, \
{DB_Topic_Compensation,DB_FIRST,"Compensation","Commissions, asset-based
compensation, and chargebacks",}, \
-{DB_CalculateComp,DB_Topic_Compensation,"CalculateComp","Calculate
compensation [not fully implemented]",}, \
+{DB_CalculateComp,DB_Topic_Compensation,"CalculateComp","Calculate
compensation [not implemented]",}, \
{DB_CompTarget,DB_Topic_Compensation,"CompTarget","Producer-only compensation
on premium up to target",}, \
{DB_CompExcess,DB_Topic_Compensation,"CompExcess","Producer-only compensation
on premium in excess of target",}, \
{DB_CompChargeback,DB_Topic_Compensation,"CompChargeback","Compensation
chargeback for early termination",}, \
diff --git a/ihs_acctval.cpp b/ihs_acctval.cpp
index f46b579..6efa4dc 100644
--- a/ihs_acctval.cpp
+++ b/ihs_acctval.cpp
@@ -1543,35 +1543,9 @@ void AccountValue::FinalizeYear()
InvariantValues().GptForceout[Year] = YearsTotalGptForceout;
-// TODO ?? Not yet implemented.
+// SOMEDAY !! Not yet implemented.
// InvariantValues().NaarForceout[Year] =
InvariantValues().ErGrossPmt[Year];
-
- // Producer compensation is complicated, and generally varies
- // by producer type (which is unknown to lmi). It was probably
- // a mistake to attempt to calculate it in "simple" situations
- // because the result is incorrect otherwise.
- if(CalculateComp && yare_input_.EffectiveDate ==
yare_input_.InforceAsOfDate)
- {
- // This should also incorporate:
- // asset-tiered compensation
- // input 'extra' compensation (on premium and assets)
- double commission =
- InvariantValues().GrossPmt[Year]
- - TieredGrossToNet
- (InvariantValues().GrossPmt[Year]
- ,AnnualTargetPrem
- ,CompTarget[Year]
- ,CompExcess[Year]
- )
- ;
- InvariantValues().ProducerCompensation[Year] =
-// This would normally be expected:
-// AssetComp[Year] * AVSepAcct
-// but some obsolete product needed this instead:
- AssetComp[Year] * (AVSepAcct + AVGenAcct)
- + commission
- ;
- }
+// InvariantValues().ProducerCompensation[Year] =
}
}
diff --git a/ledger_invariant.cpp b/ledger_invariant.cpp
index 5481c9e..1b0377e 100644
--- a/ledger_invariant.cpp
+++ b/ledger_invariant.cpp
@@ -106,8 +106,7 @@ void LedgerInvariant::Alloc(int len)
EndYearVectors ["TermSpecAmt" ] = &TermSpecAmt ;
EndYearVectors ["SpecAmt" ] = &SpecAmt ;
- // SOMEDAY !! This contradicts the "ProducerCompensation" comment in the
header.
- BegYearVectors ["ProducerCompensation" ] = &ProducerCompensation ;
+ EndYearVectors ["ProducerCompensation" ] = &ProducerCompensation ;
OtherVectors ["IndvTaxBracket" ] = &IndvTaxBracket ;
OtherVectors ["CorpTaxBracket" ] = &CorpTaxBracket ;
diff --git a/ledger_xml_io.cpp b/ledger_xml_io.cpp
index 7c79e9c..60970e5 100644
--- a/ledger_xml_io.cpp
+++ b/ledger_xml_io.cpp
@@ -260,7 +260,7 @@ void Ledger::write(xml::element& x) const
title_map["PrefLoanBalance_Guaranteed" ] = "Guar Preferred Loan Bal";
title_map["PremTaxLoad_Current" ] = "Curr Premium Tax Load";
title_map["PremTaxLoad_Guaranteed" ] = "Guar Premium Tax Load";
-// TODO ?? Excluded because it's defectively implemented:
+// Excluded because it's unimplemented:
// title_map["ProducerCompensation" ] = " _____________ Producer
Compensation";
title_map["ProjectedCoiCharge_Current" ] = "Experience Rating
Projected COI Charge";
title_map["RefundableSalesLoad" ] = " _____________ Refundable
Sales Load";