From 3759c6f55ce4509cad81f3aebb52e6a7293f8400 Mon Sep 17 00:00:00 2001 From: Chika Date: Sun, 25 Oct 2020 20:27:04 +0300 Subject: [PATCH] fix InsuranceBonusExpensesColumn --- .../.idea/workspace.xml | 231 +++++++++--------- .../Columns/AgentComissionExpensesColumn.cs | 2 - .../Columns/ComissionBonusExpensesColumn.cs | 2 - .../Columns/InsuranceBonusExpensesColumn.cs | 35 ++- .../Columns/KaskoNmperGrColumn.cs | 8 +- .../Columns/NSIBExpensesColumn.cs | 2 - .../Columns/RatExpensesColumn.cs | 2 - .../Columns/RegistrExpensesColumn.cs | 2 - .../Columns/TLM_GrColumn.cs | 3 - .../Columns/TransExprensesColumn.cs | 2 - EvoCalculator.Core.Constants/Calculation.cs | 1 + .../Columns/InsuranceBonusExpensesTests.cs | 81 +++++- .../Calculation/Columns/KaskoNmperGrTests.cs | 10 +- .../Controllers/v1/CalculationController.cs | 4 +- 14 files changed, 225 insertions(+), 160 deletions(-) diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml index 4574f2f..307a2b9 100644 --- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml +++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml @@ -14,60 +14,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - + + - - @@ -89,10 +41,10 @@ - + @@ -103,14 +55,6 @@ @@ -228,7 +180,8 @@ - + + 1602593830686 @@ -251,7 +204,14 @@ - @@ -277,7 +237,8 @@ - @@ -292,94 +253,94 @@ - + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + @@ -388,10 +349,10 @@ - + - + @@ -400,22 +361,26 @@ - + - - + + - + + + + + - + - + @@ -426,11 +391,41 @@ + + + + file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs + 56 + + + + + + + + + file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs + 256 + + + + + + + + + - + diff --git a/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs index 9f4ec10..ebba9e7 100644 --- a/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs @@ -10,8 +10,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum + preparedValues.DeliverySum + preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum + diff --git a/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs index ba463e1..a287ca7 100644 --- a/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs @@ -10,8 +10,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - Values[1] = preparedValues.ComissionRub; Values[0] = Sum; } diff --git a/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs index 80c5a86..8f1be16 100644 --- a/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs @@ -8,26 +8,39 @@ namespace EvoCalculator.Core.Calculation.Columns { } - public void ComputeValues(PreparedValues preparedValues) + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - - for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) - if (i <= preparedValues.NmperInsurance) - { + if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) + { + Values[2] = preparedValues.InsuranceBonus; + } + else + { + /* + * +1 - компенсация того, что считается с 0 позиции + */ + for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) if (preparedValues.NmperInsurance - i >= 3) { - if (preparedValues.NmperInsurance - i < 16 - 1) + if ( + (preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3) || + (preparedValues.NmperInsurance > constants.MaxOnePolicePeriod && + preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod) + ) + { + Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; + } + else + { Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * (preparedValues.NmperInsurance - i + 1); - else - Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; + } } else { - Values[i] = 0; + // 0 } - } + } Values[0] = Sum; } diff --git a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs index 2fac7c6..3ad7864 100644 --- a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs @@ -9,16 +9,14 @@ namespace EvoCalculator.Core.Calculation.Columns { } - public void ComputeValues(PreparedValues preparedValues) + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - for (var i = 1; i < Values.Length; i += 12) if (i <= preparedValues.NmperInsurance) { - if (preparedValues.Nmper - i >= 3) + if (preparedValues.NmperInsurance - i >= 3) { - if (preparedValues.NmperInsurance - i < 16 - 1) + if (preparedValues.NmperInsurance - i < constants.MaxOnePolicePeriod - 1) Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1); else Values[i] = preparedValues.InsuranceKasko; diff --git a/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs index e13ffbb..3e7054f 100644 --- a/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs @@ -10,8 +10,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - for (var i = 1; i < Values.Length; i += 12) if (i <= preparedValues.Nmper) { diff --git a/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs index 31c06f3..dbafe7f 100644 --- a/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs @@ -10,8 +10,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - Values[1] = -preparedValues.BaseRatCost; Values[4] = preparedValues.RetroBonus; diff --git a/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs index fa9b466..ed8b8bc 100644 --- a/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs @@ -10,8 +10,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - Values[1] = -preparedValues.BaseRegistration; Values[0] = Sum; diff --git a/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs b/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs index 8f8a2cc..34878d6 100644 --- a/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs @@ -10,11 +10,8 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; - Values[0] = -XNPV; } } diff --git a/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs index 050ddab..4b38728 100644 --- a/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs +++ b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs @@ -11,8 +11,6 @@ namespace EvoCalculator.Core.Calculation.Columns public void ComputeValues(PreparedValues preparedValues) { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - for (var i = 0; i < Values.Length; i += 12) if (i > 0) Values[i] = -preparedValues.TransportTaxGrYear; diff --git a/EvoCalculator.Core.Constants/Calculation.cs b/EvoCalculator.Core.Constants/Calculation.cs index da6818b..422daae 100644 --- a/EvoCalculator.Core.Constants/Calculation.cs +++ b/EvoCalculator.Core.Constants/Calculation.cs @@ -6,5 +6,6 @@ public int DeliveryDays = 210; public double IncomeTaxValue = 0.2; public double VatValue = 0.2; + public int MaxOnePolicePeriod = 16; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs index 28626f3..aced5b6 100644 --- a/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs @@ -17,7 +17,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns }; var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -68,7 +68,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns }; var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -116,7 +116,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns }; var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -155,7 +155,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns }; var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - targetColumn.ComputeValues(preparedValues); + targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -180,6 +180,79 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns }; + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest5() + { + var preparedValues = new PreparedValues + { + InsuranceBonus = 26337.5m, + NmperInsurance = 49, + Nmper = 49 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + 26337.5m, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6987.5m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + }; + + Assert.Equal(expected.Length, targetColumn.Values.Length); Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); } diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs index 5f6dd5e..e7919a8 100644 --- a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs @@ -97,7 +97,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -229,7 +229,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -347,7 +347,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -479,7 +479,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] @@ -598,7 +598,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); var expected = new[] diff --git a/EvoCalculator.Core/Controllers/v1/CalculationController.cs b/EvoCalculator.Core/Controllers/v1/CalculationController.cs index 7061924..8ab84a8 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 kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues); + kaskoNmperGrColumn.ComputeValues(preparedValues, constants); var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, @@ -122,7 +122,7 @@ namespace EvoCalculator.Core.Controllers.V1 var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);