From 8fac9b407a4a8d205e57d88220d561b7de03db1d Mon Sep 17 00:00:00 2001 From: Chika Date: Wed, 18 Nov 2020 17:44:54 +0300 Subject: [PATCH] fix error when nmper greater than nmperDeprecation --- .../.idea/contentModel.xml | 19 +- .../.idea/workspace.xml | 290 ++++++++---------- .../Columns/BaseColumn.cs | 14 +- .../Columns/CashflowNPVColumn.cs | 15 +- .../Columns/CashflowNPVFinal2Column.cs | 4 +- .../Columns/CashflowNPVFinalColumn.cs | 4 +- .../Columns/NPVColumn.cs | 2 +- .../Columns/NPVFinal2Column.cs | 2 +- .../Columns/NPVFinalColumn.cs | 2 +- .../Columns/TaxColumn.cs | 24 +- .../Controllers/v1/CalculationController.cs | 16 +- 11 files changed, 179 insertions(+), 213 deletions(-) diff --git a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml index c9c3487..147cde8 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml @@ -1,17 +1,18 @@ - + - - - - - - - - + + + + + + + + + diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml index 45d4cea..a75753d 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml @@ -14,15 +14,18 @@ + - - - - - - - + + + + + + + + + - - - - - - + - - + + + - - - - - - - - - + + + + + + + @@ -120,8 +117,8 @@ - - + + @@ -166,6 +163,11 @@ - - file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/RevenueColumn.cs - 10 - - - - - - - file://$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs - 201 - + 222 + - - - + + + diff --git a/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs b/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs index c823bb7..21cc600 100644 --- a/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs @@ -1,4 +1,6 @@ -namespace EvoCalculator.Core.Calculation.Columns +using System; + +namespace EvoCalculator.Core.Calculation.Columns { public abstract class BaseColumn { @@ -8,5 +10,15 @@ } public T[] Values { get; set; } + + public T GetValue(int i) + { + if (i < Values.Length) + { + return Values[i]; + } + + return (T) Convert.ChangeType(0.0, typeof(T)); + } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs b/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs index 130cd17..56c84b3 100644 --- a/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs @@ -15,14 +15,17 @@ namespace EvoCalculator.Core.Calculation.Columns TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn) { Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = sumColumn.Values[1] + npvBonusExpensesColumn.Values[1] + - agentComissionExpensesColumn.Values[1] - taxColumn.Values[1] + nsibExpensesColumn.Values[1]; + Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) + + agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1); for (var i = 2; i < Values.Length; i++) - Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + npvBonusExpensesColumn.Values[i] + - agentComissionExpensesColumn.Values[i] + ratExpensesColumn.Values[i] - taxColumn.Values[i] - - transExpensesColumn.Values[i] + nsibExpensesColumn.Values[i] + tlmExpensesColumn.Values[i] + - gpsExpensesColumn.Values[i]; + Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) - + taxColumn.GetValue(i) - + transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs b/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs index 99705cd..d5e50ad 100644 --- a/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs +++ b/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs @@ -13,9 +13,9 @@ namespace EvoCalculator.Core.Calculation.Columns DirectorBonusSumColumn directorBonusSumColumn) { Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowNpvFinalColumn.Values[1]; + Values[1] = cashflowNpvFinalColumn.GetValue(1); for (var i = 2; i < Values.Length; i++) - Values[i] = cashflowNpvFinalColumn.Values[i] + directorBonusSumColumn.Values[i]; + Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs b/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs index fb0f8a0..ca57992 100644 --- a/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs @@ -12,9 +12,9 @@ namespace EvoCalculator.Core.Calculation.Columns CashflowNPVColumn cashflowNpvColumn) { Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowNpvColumn.Values[1]; + Values[1] = cashflowNpvColumn.GetValue(1); for (var i = 2; i < Values.Length; i++) - Values[i] = extraBonusSumColumn.Values[i] + cashflowNpvColumn.Values[i]; + Values[i] = extraBonusSumColumn.GetValue(i) + cashflowNpvColumn.GetValue(i); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs b/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs index 8c49dc1..64989b4 100644 --- a/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs @@ -9,7 +9,7 @@ public void ComputeValues(CashflowNPVColumn cashflowNpvColumn, NPVWeightColumn npvWeightColumn) { for (var i = 0; i < Values.Length; i++) - Values[i] = cashflowNpvColumn.Values[i] * (decimal) npvWeightColumn.Values[i]; + Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs b/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs index 4623b14..9648d35 100644 --- a/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs +++ b/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs @@ -10,7 +10,7 @@ { for (var i = 0; i < Values.Length; i++) { - Values[i] = cashflowNpvFinal2Column.Values[i] * (decimal) npvWeightColumn.Values[i]; + Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } } diff --git a/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs b/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs index 33267fd..2a11a33 100644 --- a/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs @@ -9,7 +9,7 @@ public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn) { for (var i = 0; i < Values.Length; i++) - Values[i] = cashflowNpvFinalColumn.Values[i] * (decimal) npvWeightColumn.Values[i]; + Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs b/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs index fd5800b..9747681 100644 --- a/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs @@ -15,18 +15,18 @@ GPSExpensesColumn gpsExpensesColumn) { for (var i = 1; i < Values.Length; i++) - Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.Values[i] - - acceptInsuranceColumn.Values[i] - - deprecationColumn.Values[i] - + ratExpensesColumn.Values[i] - + registrExpensesColumn.Values[i] - + comissionBonusExpensesColumn.Values[i] - + transExpensesColumn.Values[i] - + npvBonusExpensesColumn.Values[i] - + agentComissionExpensesColumn.Values[i] - + insuranceBonusExpensesColumn.Values[i] - + tlmExpensesColumn.Values[i] - + gpsExpensesColumn.Values[i] + Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i) + - acceptInsuranceColumn.GetValue(i) + - deprecationColumn.GetValue(i) + + ratExpensesColumn.GetValue(i) + + registrExpensesColumn.GetValue(i) + + comissionBonusExpensesColumn.GetValue(i) + + transExpensesColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + + insuranceBonusExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i) ); diff --git a/EvoCalculator.Core/Controllers/v1/CalculationController.cs b/EvoCalculator.Core/Controllers/v1/CalculationController.cs index e441ce6..35ae081 100644 --- a/EvoCalculator.Core/Controllers/v1/CalculationController.cs +++ b/EvoCalculator.Core/Controllers/v1/CalculationController.cs @@ -29,7 +29,7 @@ namespace EvoCalculator.Core.Controllers.V1 var dateColumn = new DateColumn(requestCalculation.preparedValues.Nmper + 1); dateColumn.ComputeValues(preparedValues, constants); - var dateTempColumn = new DateTempColumn(67); + var dateTempColumn = new DateTempColumn(preparedValues.NmperDeprecation + 2); dateTempColumn.ComputeValues(preparedValues); var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); @@ -130,7 +130,7 @@ namespace EvoCalculator.Core.Controllers.V1 var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); nsibBruttoGrColumn.ComputeValues(preparedValues); - var taxColumn = new TaxColumn(preparedValues.Nmper + 1); + var taxColumn = new TaxColumn(preparedValues.NmperDeprecation + 2); taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn); @@ -146,7 +146,7 @@ namespace EvoCalculator.Core.Controllers.V1 cashflowMsfoColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn); - var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.Nmper + 1); + var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.NmperDeprecation + 2); cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn); @@ -154,7 +154,7 @@ namespace EvoCalculator.Core.Controllers.V1 var npvWeightColumn = new NPVWeightColumn(preparedValues.Nmper + 1); npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - var npvColumn = new NPVColumn(preparedValues.Nmper + 1, dateTempColumn); + var npvColumn = new NPVColumn(preparedValues.NmperDeprecation + 2, dateTempColumn); npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); @@ -197,10 +197,10 @@ namespace EvoCalculator.Core.Controllers.V1 var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.Nmper + 1); + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.NmperDeprecation + 2); cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); - var npvFinalColumn = new NPVFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + var npvFinalColumn = new NPVFinalColumn(preparedValues.NmperDeprecation + 2, dateTempColumn); npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); @@ -209,10 +209,10 @@ namespace EvoCalculator.Core.Controllers.V1 var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.Nmper + 1); + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.NmperDeprecation + 2); cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); - var npvFinal2Column = new NPVFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + var npvFinal2Column = new NPVFinal2Column(preparedValues.NmperDeprecation + 2, dateTempColumn); npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); postValues.PriceUP.ComputeValue(preparedValues, sumColumn);