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 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -78,10 +31,9 @@
+
-
-
@@ -89,10 +41,10 @@
-
+
@@ -103,14 +55,6 @@
@@ -228,7 +180,8 @@
-
+
+
1602593830686
@@ -251,7 +204,14 @@
1603451457395
-
+
+ 1603456459093
+
+
+
+ 1603456459093
+
+
@@ -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);