diff --git a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
index 8527655..b60cf60 100644
--- a/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
+++ b/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml
@@ -46,7 +46,9 @@
+
+
diff --git a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
index 6abc885..a9432a4 100644
--- a/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
+++ b/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml
@@ -14,33 +14,52 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -51,80 +70,89 @@
+
+
+
+
+
+
+
-
+
-
+
+
+
+
-
@@ -197,7 +225,8 @@
-
+
+
1602593830686
@@ -253,90 +282,94 @@
+
+
+
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -357,10 +390,10 @@
-
+
-
+
@@ -369,10 +402,10 @@
-
+
-
+
@@ -383,75 +416,6 @@
-
-
-
- file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs
- 92
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs
- 143
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs
- 183
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs
- 35
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs
- 17
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/EvoCalculator.Core.Calculation/Columns/AcceptInsuranceColumn.cs b/EvoCalculator.Core.Calculation/Columns/AcceptInsuranceColumn.cs
index 6907ef4..a5abe56 100644
--- a/EvoCalculator.Core.Calculation/Columns/AcceptInsuranceColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/AcceptInsuranceColumn.cs
@@ -1,8 +1,6 @@
-using System.Linq;
-
-namespace EvoCalculator.Core.Calculation.Columns
+namespace EvoCalculator.Core.Calculation.Columns
{
- public class AcceptInsuranceColumn : BaseColumn
+ public class AcceptInsuranceColumn : BaseColumnWithSum
{
public AcceptInsuranceColumn(int count) : base(count)
{
@@ -11,11 +9,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(AcceptKaskoColumn acceptKaskoColumn, AcceptOsagoColumn acceptOsagoColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] = acceptKaskoColumn.Values[i] + acceptOsagoColumn.Values[i];
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/AcceptKaskoColumn.cs b/EvoCalculator.Core.Calculation/Columns/AcceptKaskoColumn.cs
index ef43853..898f066 100644
--- a/EvoCalculator.Core.Calculation/Columns/AcceptKaskoColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/AcceptKaskoColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class AcceptKaskoColumn : BaseColumn
+ public class AcceptKaskoColumn : BaseColumnWithSum
{
public AcceptKaskoColumn(int count) : base(count)
{
@@ -13,10 +12,9 @@ namespace EvoCalculator.Core.Calculation.Columns
{
Values[1] = 0;
for (var i = 2; i < Values.Length; i++)
- {
Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1);
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/AcceptOsagoColumn.cs b/EvoCalculator.Core.Calculation/Columns/AcceptOsagoColumn.cs
index ae30f6a..9d35581 100644
--- a/EvoCalculator.Core.Calculation/Columns/AcceptOsagoColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/AcceptOsagoColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class AcceptOsagoColumn : BaseColumn
+ public class AcceptOsagoColumn : BaseColumnWithSum
{
public AcceptOsagoColumn(int count) : base(count)
{
@@ -12,11 +11,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 0; i < Values.Length; i++)
- {
Values[i] = i > 1 && i <= 12 ? preparedValues.InsuranceOsago / 11 : 0;
- }
- Values[0] = Values.Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/AcceptSumColumn.cs b/EvoCalculator.Core.Calculation/Columns/AcceptSumColumn.cs
index bd67918..e2ae810 100644
--- a/EvoCalculator.Core.Calculation/Columns/AcceptSumColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/AcceptSumColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class AcceptSumColumn : BaseColumn
+ public class AcceptSumColumn : BaseColumnWithSum
{
public AcceptSumColumn(int count) : base(count)
{
@@ -16,12 +15,10 @@ namespace EvoCalculator.Core.Calculation.Columns
, SumWithVATColumn sumWithVatColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] /
(sumWithVatColumn.Values[0] - vatColumn.Values[0]);
- }
- Values[0] = Values.Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs
index 4b2d75c..9f4ec10 100644
--- a/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class AgentComissionExpensesColumn : BaseColumn
+ public class AgentComissionExpensesColumn : BaseColumnWithSum
{
public AgentComissionExpensesColumn(int count) : base(count)
{
@@ -11,10 +10,7 @@ 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++) Values[i] = 0;
var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum +
preparedValues.DeliverySum +
@@ -23,7 +19,7 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[2] = -agentComission;
- Values[0] = Values.Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs b/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs
index 836f0be..c823bb7 100644
--- a/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs
@@ -2,11 +2,11 @@
{
public abstract class BaseColumn
{
- public T[] Values { get; set; }
-
protected BaseColumn(int count)
{
Values = new T[count];
}
+
+ public T[] Values { get; set; }
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/BaseColumnWithSum.cs b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithSum.cs
new file mode 100644
index 0000000..eef9dc4
--- /dev/null
+++ b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithSum.cs
@@ -0,0 +1,16 @@
+using System.Linq;
+
+namespace EvoCalculator.Core.Calculation.Columns
+{
+ public class BaseColumnWithSum : BaseColumn
+ {
+ public BaseColumnWithSum(int count) : base(count)
+ {
+ }
+
+ protected double Sum
+ {
+ get { return Values.Skip(1).Sum(x => x); }
+ }
+ }
+}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs
index ac2033f..5bbced0 100644
--- a/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs
+++ b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs
@@ -4,34 +4,38 @@ using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.Columns
{
- //TODO: GET IRR HERE
public class BaseColumnWithXIRR : BaseColumn
{
- public double IRR { get; set; }
- protected DateTime[] Dates { get; set; }
-
-
- public BaseColumnWithXIRR(int count, DateTempColumn dateTempColumn) : base(count)
+ protected BaseColumnWithXIRR(int count, DateTempColumn dateTempColumn) : base(count)
{
Dates = dateTempColumn.Values;
}
- protected Flow[] Flows
+ private DateTime[] Dates { get; }
+
+ private Flow[] Flows
{
get
{
- Flow[] flows = new Flow[Values.Length];
+ var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
- {
- flows[i] = new Flow()
+ flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
- }
return flows;
}
}
+
+ public double IRR
+ {
+ get
+ {
+ var XIRR = new XIRR(Flows);
+ return XIRR.GetResult();
+ }
+ }
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXNPV.cs b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXNPV.cs
new file mode 100644
index 0000000..527c83b
--- /dev/null
+++ b/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXNPV.cs
@@ -0,0 +1,44 @@
+using System;
+using EvoCalculator.Core.FinanceFormulas;
+using EvoCalculator.Core.Models.Calculation.Models;
+
+namespace EvoCalculator.Core.Calculation.Columns
+{
+ public class BaseColumnWithXNPV : BaseColumn
+ {
+ private readonly double rate;
+
+ public BaseColumnWithXNPV(int count, DateTempColumn dateTempColumn, double rate) : base(count)
+ {
+ Dates = dateTempColumn.Values;
+ this.rate = rate;
+ }
+
+ private DateTime[] Dates { get; }
+
+ private Flow[] Flows
+ {
+ get
+ {
+ var flows = new Flow[Values.Length];
+ for (var i = 0; i < Values.Length; i++)
+ flows[i] = new Flow
+ {
+ Date = Dates[i],
+ Value = Values[i]
+ };
+
+ return flows;
+ }
+ }
+
+ public double XNPV
+ {
+ get
+ {
+ var XNPV = new XNPV(Flows, rate);
+ return XNPV.GetResult();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/CashflowColumn.cs b/EvoCalculator.Core.Calculation/Columns/CashflowColumn.cs
index 1d9b8b6..10aa394 100644
--- a/EvoCalculator.Core.Calculation/Columns/CashflowColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/CashflowColumn.cs
@@ -1,5 +1,4 @@
-using EvoCalculator.Core.FinanceFormulas;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
@@ -14,13 +13,7 @@ namespace EvoCalculator.Core.Calculation.Columns
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1];
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i];
- }
-
- var XIRR = new XIRR(Flows);
- IRR = XIRR.GetResult();
+ for (var i = 2; i < Values.Length; i++) Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i];
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs
index 1c4f80b..ba463e1 100644
--- a/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class ComissionBonusExpensesColumn : BaseColumn
+ public class ComissionBonusExpensesColumn : BaseColumnWithSum
{
public ComissionBonusExpensesColumn(int count) : base(count)
{
@@ -11,13 +10,10 @@ 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++) Values[i] = 0;
Values[1] = preparedValues.ComissionRub;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/DateColumn.cs b/EvoCalculator.Core.Calculation/Columns/DateColumn.cs
index f146890..fb115ac 100644
--- a/EvoCalculator.Core.Calculation/Columns/DateColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/DateColumn.cs
@@ -26,7 +26,6 @@ namespace EvoCalculator.Core.Calculation.Columns
};
for (var i = 3; i < preparedValues.Nmper + 1; i++)
- {
Values[i] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew == null
@@ -35,7 +34,6 @@ namespace EvoCalculator.Core.Calculation.Columns
100000001 => Values[2].AddMonths(i - 2),
_ => Values[2]
};
- }
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs b/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs
index 44d1063..25f0a6f 100644
--- a/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs
@@ -16,11 +16,9 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);
for (var i = 3; i < Values.Length; i++)
- {
Values[i] = preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2);
- }
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/DeprecationColumn.cs b/EvoCalculator.Core.Calculation/Columns/DeprecationColumn.cs
index c304604..45e04d4 100644
--- a/EvoCalculator.Core.Calculation/Columns/DeprecationColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/DeprecationColumn.cs
@@ -1,8 +1,6 @@
-using System.Linq;
-
-namespace EvoCalculator.Core.Calculation.Columns
+namespace EvoCalculator.Core.Calculation.Columns
{
- public class DeprecationColumn : BaseColumn
+ public class DeprecationColumn : BaseColumnWithSum
{
public DeprecationColumn(int count) : base(count)
{
@@ -11,13 +9,11 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(DeprecationLPColumn deprecationLpColumn, DeprecationLDColumn deprecationLdColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] = i < deprecationLpColumn.Values.Length
? deprecationLpColumn.Values[i] + deprecationLdColumn.Values[i]
: 0 + deprecationLdColumn.Values[i];
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/DeprecationLDColumn.cs b/EvoCalculator.Core.Calculation/Columns/DeprecationLDColumn.cs
index 780a243..d4f583d 100644
--- a/EvoCalculator.Core.Calculation/Columns/DeprecationLDColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/DeprecationLDColumn.cs
@@ -3,7 +3,7 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class DeprecationLDColumn : BaseColumn
+ public class DeprecationLDColumn : BaseColumnWithSum
{
public DeprecationLDColumn(int count) : base(count)
{
@@ -13,12 +13,10 @@ namespace EvoCalculator.Core.Calculation.Columns
{
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
- {
Values[i] = preparedValues.BalanceHolder == 100000001
? preparedValues.DeprecationTime *
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
: 0;
- }
Values[^1] = preparedValues.BalanceHolder == 100000001
? preparedValues.AcceptSum - Values.Skip(2)
@@ -26,7 +24,7 @@ namespace EvoCalculator.Core.Calculation.Columns
.Sum(x => x)
: 0;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/DeprecationLPColumn.cs b/EvoCalculator.Core.Calculation/Columns/DeprecationLPColumn.cs
index 5275ebc..124b8a7 100644
--- a/EvoCalculator.Core.Calculation/Columns/DeprecationLPColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/DeprecationLPColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class DeprecationLPColumn : BaseColumn
+ public class DeprecationLPColumn : BaseColumnWithSum
{
public DeprecationLPColumn(int count) : base(count)
{
@@ -12,11 +11,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues, AcceptSumColumn acceptSumColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] = preparedValues.BalanceHolder == 100000000 ? acceptSumColumn.Values[i] : 0;
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs
index 6fe4e53..339a5b1 100644
--- a/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/ExpensesColumn.cs
@@ -1,9 +1,6 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
-
-namespace EvoCalculator.Core.Calculation.Columns
+namespace EvoCalculator.Core.Calculation.Columns
{
- public class ExpensesColumn : BaseColumn
+ public class ExpensesColumn : BaseColumnWithSum
{
public ExpensesColumn(int count) : base(count)
{
@@ -11,13 +8,12 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExprensesColumn transExprensesColumn,
- NsibExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
+ NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
@@ -29,9 +25,8 @@ namespace EvoCalculator.Core.Calculation.Columns
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i];
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs
index 3fc6d33..96be9ec 100644
--- a/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/GPSExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class GPSExpensesColumn : BaseColumn
+ public class GPSExpensesColumn : BaseColumnWithSum
{
public GPSExpensesColumn(int count) : base(count)
{
@@ -12,12 +11,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment);
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = -preparedPayments.Rows[i - 1].GpsBasePayment;
- }
+ for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].GpsBasePayment;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs b/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs
index 0f18b73..e866320 100644
--- a/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs
@@ -1,24 +1,18 @@
-using EvoCalculator.Core.FinanceFormulas;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class GPS_GrColumn : BaseColumnWithXIRR
+ public class GPS_GrColumn : BaseColumnWithXNPV
{
- public GPS_GrColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
+ public GPS_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
- for (var i = 1; i < Values.Length; i++)
- {
- Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
- }
+ for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
-
- var XNPV = new XNPV(base.Flows, preparedValues.IrrExpected);
- Values[0] = -XNPV.GetResult();
+ Values[0] = -XNPV;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs
index a52c39e..80c5a86 100644
--- a/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class InsuranceBonusExpensesColumn : BaseColumn
+ public class InsuranceBonusExpensesColumn : BaseColumnWithSum
{
public InsuranceBonusExpensesColumn(int count) : base(count)
{
@@ -11,35 +10,26 @@ 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++) Values[i] = 0;
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
- {
if (i <= preparedValues.NmperInsurance)
{
if (preparedValues.NmperInsurance - i >= 3)
{
if (preparedValues.NmperInsurance - i < 16 - 1)
- {
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
(preparedValues.NmperInsurance - i + 1);
- }
else
- {
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
- }
}
else
{
Values[i] = 0;
}
}
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs b/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs
index 3f67136..af9ab31 100644
--- a/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class KaskoBonusGrSumColumn : BaseColumn
+ public class KaskoBonusGrSumColumn : BaseColumnWithSum
{
public KaskoBonusGrSumColumn(int count) : base(count)
{
@@ -12,22 +11,14 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues, KaskoNmperGrColumn kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
if (i < 13)
- {
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
- }
else if (i <= 24)
- {
Values[i] = kaskoNmperGrColumn.Values[i] * 0.7;
- }
else
- {
Values[i] = kaskoNmperGrColumn.Values[i] * 0.5;
- }
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs
index 7f99a36..2fac7c6 100644
--- a/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs
@@ -1,47 +1,36 @@
-using EvoCalculator.Core.FinanceFormulas;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
-using TridentGoalSeek;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class KaskoNmperGrColumn : BaseColumnWithXIRR
+ public class KaskoNmperGrColumn : BaseColumnWithXNPV
{
- public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
+ public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn,
+ rate)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
- for (var i = 0; i < Values.Length; i++)
- {
- Values[i] = 0;
- }
+ 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 < 16 - 1)
- {
Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1);
- }
else
- {
Values[i] = preparedValues.InsuranceKasko;
- }
}
else
{
Values[i] = 0;
}
}
- }
- var XNPV = new XNPV(Flows, preparedValues.IrrExpected);
- Values[0] = -XNPV.GetResult();
+ Values[0] = -XNPV;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/NPVBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/NPVBonusExpensesColumn.cs
index 35d4ce1..2252d8d 100644
--- a/EvoCalculator.Core.Calculation/Columns/NPVBonusExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/NPVBonusExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class NPVBonusExpensesColumn : BaseColumn
+ public class NPVBonusExpensesColumn : BaseColumnWithSum
{
public NPVBonusExpensesColumn(int count) : base(count)
{
@@ -21,12 +20,9 @@ namespace EvoCalculator.Core.Calculation.Columns
(1 + preparedValues.MarketRate + preparedValues.DistrictRate);
- for (var i = 3; i < Values.Length; i++)
- {
- Values[i] = 0;
- }
+ for (var i = 3; i < Values.Length; i++) Values[i] = 0;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/NSIBBruttoGrColumn.cs b/EvoCalculator.Core.Calculation/Columns/NSIBBruttoGrColumn.cs
index 0c43098..7d1638f 100644
--- a/EvoCalculator.Core.Calculation/Columns/NSIBBruttoGrColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/NSIBBruttoGrColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class NSIBBruttoGrColumn : BaseColumn
+ public class NSIBBruttoGrColumn : BaseColumnWithSum
{
public NSIBBruttoGrColumn(int count) : base(count)
{
@@ -12,12 +11,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1);
- }
+ for (var i = 2; i < Values.Length; i++) Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1);
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs
similarity index 63%
rename from EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs
rename to EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs
index d33e4bd..d4675e0 100644
--- a/EvoCalculator.Core.Calculation/Columns/NsibExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs
@@ -1,45 +1,35 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class NsibExpensesColumn : BaseColumn
+ public class NSIBExpensesColumn : BaseColumnWithSum
{
- public NsibExpensesColumn(int count) : base(count)
+ public NSIBExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
- for (var i = 0; i < Values.Length; i++)
- {
- Values[i] = 0;
- }
+ for (var i = 0; i < Values.Length; i++) Values[i] = 0;
for (var i = 1; i < Values.Length; i += 12)
- {
if (i <= preparedValues.Nmper)
{
if (preparedValues.Nmper - i >= 3)
{
if (preparedValues.Nmper - i < 16 - 1)
- {
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper *
(preparedValues.Nmper - i + 1);
- }
else
- {
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12;
- }
}
else
{
Values[i] = 0;
}
}
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/NegativeCashflowColumn.cs b/EvoCalculator.Core.Calculation/Columns/NegativeCashflowColumn.cs
index 0a91307..eae23ec 100644
--- a/EvoCalculator.Core.Calculation/Columns/NegativeCashflowColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/NegativeCashflowColumn.cs
@@ -1,8 +1,6 @@
-using System.Linq;
-
-namespace EvoCalculator.Core.Calculation.Columns
+namespace EvoCalculator.Core.Calculation.Columns
{
- public class NegativeCashflowColumn : BaseColumn
+ public class NegativeCashflowColumn : BaseColumnWithSum
{
public NegativeCashflowColumn(int count) : base(count)
{
@@ -10,12 +8,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(KaskoNmperGrColumn kaskoNmperGrColumn)
{
- for (var i = 1; i < Values.Length; i++)
- {
- Values[i] = -kaskoNmperGrColumn.Values[i];
- }
+ for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i];
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs b/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs
index 5afc858..1899862 100644
--- a/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs
@@ -12,10 +12,7 @@ namespace EvoCalculator.Core.Calculation.Columns
{
Values[0] = 0;
Values[1] = 0;
- for (var i = 2; i < Values.Length - 1; i++)
- {
- Values[i] = preparedPayments.Rows[i - 1].PercentPayment;
- }
+ for (var i = 2; i < Values.Length - 1; i++) Values[i] = preparedPayments.Rows[i - 1].PercentPayment;
Values[^1] = 0;
}
diff --git a/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs
index 9295d99..31c06f3 100644
--- a/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class RatExpensesColumn : BaseColumn
+ public class RatExpensesColumn : BaseColumnWithSum
{
public RatExpensesColumn(int count) : base(count)
{
@@ -11,15 +10,12 @@ 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++) Values[i] = 0;
Values[1] = -preparedValues.BaseRatCost;
Values[4] = preparedValues.RetroBonus;
- Values[0] = Values.Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs
index 2a765ff..fa9b466 100644
--- a/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class RegistrExpensesColumn : BaseColumn
+ public class RegistrExpensesColumn : BaseColumnWithSum
{
public RegistrExpensesColumn(int count) : base(count)
{
@@ -11,14 +10,11 @@ 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++) Values[i] = 0;
Values[1] = -preparedValues.BaseRegistration;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/SumColumn.cs b/EvoCalculator.Core.Calculation/Columns/SumColumn.cs
index b96db64..8ecf2dc 100644
--- a/EvoCalculator.Core.Calculation/Columns/SumColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/SumColumn.cs
@@ -1,6 +1,4 @@
using System;
-using System.Linq;
-using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
@@ -8,48 +6,42 @@ namespace EvoCalculator.Core.Calculation.Columns
{
public class SumColumn : BaseColumnWithXIRR, IGoalSeekAlgorithm
{
- private readonly PreparedValues _preparedValues;
private readonly PercentPaymentColumn _percentPaymentColumn;
+ private readonly PreparedValues _preparedValues;
public SumColumn(int count, DateTempColumn dateTempColumn
, PreparedValues preparedValues
, PercentPaymentColumn percentPaymentColumn) : base(count, dateTempColumn)
{
- this._preparedValues = preparedValues;
- this._percentPaymentColumn = percentPaymentColumn;
- }
-
- public void ComputeValues(double x)
- {
- Values[0] = -this._preparedValues.BaseCost;
- Values[1] = this._preparedValues.FirstPaymentSum;
-
- for (var i = 2; i < Values.Length - 1; i++)
- {
- Values[i] = x * _percentPaymentColumn.Values[i] / 100;
- }
-
- Values[^1] = _preparedValues.LastPaymentSum;
+ _preparedValues = preparedValues;
+ _percentPaymentColumn = percentPaymentColumn;
}
public decimal Calculate(decimal inputVariable)
{
var x = Convert.ToDouble(inputVariable);
- this.ComputeValues(x);
- var XIRR = new XIRR(Flows);
- IRR = XIRR.GetResult();
-
+ ComputeValues(x);
return Convert.ToDecimal(IRR);
}
+ public void ComputeValues(double x)
+ {
+ Values[0] = -_preparedValues.BaseCost;
+ Values[1] = _preparedValues.FirstPaymentSum;
+
+ for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * _percentPaymentColumn.Values[i] / 100;
+
+ Values[^1] = _preparedValues.LastPaymentSum;
+ }
+
public void ComputeValues(decimal requiredIRR)
{
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredIRR,
new GoalSeekOptions(
startingStabPoint: Convert.ToDecimal(
- (this._preparedValues.BaseCost - this._preparedValues.FirstPaymentSum) /
- this._preparedValues.Nmper)
+ (_preparedValues.BaseCost - _preparedValues.FirstPaymentSum) /
+ _preparedValues.Nmper)
, tineExplorePercentage: 10
// , maximumAttempts: 10000
// , initialTineSpacing: 1
diff --git a/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs b/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs
index e714646..ff8fb99 100644
--- a/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class SumWithVATColumn : BaseColumn
+ public class SumWithVATColumn : BaseColumnWithSum
{
public SumWithVATColumn(int count) : base(count)
{
@@ -15,12 +14,9 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[1] = preparedValues.FirstPaymentWithNdsAbs > 0
? preparedValues.FirstPaymentWithNdsAbs
: (1 + constants.VatValue) * sumColumn.Values[1];
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = (1 + constants.VatValue) * sumColumn.Values[i];
- }
+ for (var i = 2; i < Values.Length; i++) Values[i] = (1 + constants.VatValue) * sumColumn.Values[i];
- Values[0] = Values.Sum();
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs
index c196b1d..d4505b1 100644
--- a/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/TLMExpensesColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class TLMExpensesColumn : BaseColumn
+ public class TLMExpensesColumn : BaseColumnWithSum
{
public TLMExpensesColumn(int count) : base(count)
{
@@ -12,12 +11,9 @@ namespace EvoCalculator.Core.Calculation.Columns
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment);
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = -preparedPayments.Rows[i - 1].TlmBasePayment;
- }
+ for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].TlmBasePayment;
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs b/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs
index 6e95469..8f8a2cc 100644
--- a/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs
@@ -1,29 +1,21 @@
-using EvoCalculator.Core.FinanceFormulas;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class TLM_GrColumn : BaseColumnWithXIRR
+ public class TLM_GrColumn : BaseColumnWithXNPV
{
- public TLM_GrColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
+ public TLM_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
- for (var i = 0; i < Values.Length; i++)
- {
- Values[i] = 0;
- }
+ 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;
- }
+ for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
- var XNPV = new XNPV(base.Flows, preparedValues.IrrExpected);
- Values[0] = -XNPV.GetResult();
+ Values[0] = -XNPV;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs b/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs
index 9389557..0520828 100644
--- a/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs
@@ -1,8 +1,6 @@
-using System.Linq;
-
-namespace EvoCalculator.Core.Calculation.Columns
+namespace EvoCalculator.Core.Calculation.Columns
{
- public class TaxColumn : BaseColumn
+ public class TaxColumn : BaseColumnWithSum
{
public TaxColumn(int count) : base(count)
{
@@ -17,7 +15,6 @@ namespace EvoCalculator.Core.Calculation.Columns
GPSExpensesColumn gpsExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
- {
Values[i] = constants.IncomeTaxValue * (sumColumn.Values[i]
- acceptInsuranceColumn.Values[i]
- deprecationColumn.Values[i]
@@ -31,10 +28,9 @@ namespace EvoCalculator.Core.Calculation.Columns
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
);
- }
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs
index ceb6f5b..050ddab 100644
--- a/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs
@@ -3,7 +3,7 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class TransExprensesColumn : BaseColumn
+ public class TransExprensesColumn : BaseColumnWithSum
{
public TransExprensesColumn(int count) : base(count)
{
@@ -11,21 +11,14 @@ 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++) Values[i] = 0;
for (var i = 0; i < Values.Length; i += 12)
- {
if (i > 0)
- {
Values[i] = -preparedValues.TransportTaxGrYear;
- }
- }
Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x));
- Values[0] = Values.Skip(1).Sum(x => x);
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/Columns/VATColumn.cs b/EvoCalculator.Core.Calculation/Columns/VATColumn.cs
index fca75df..246f347 100644
--- a/EvoCalculator.Core.Calculation/Columns/VATColumn.cs
+++ b/EvoCalculator.Core.Calculation/Columns/VATColumn.cs
@@ -1,9 +1,8 @@
-using System.Linq;
-using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
- public class VATColumn : BaseColumn
+ public class VATColumn : BaseColumnWithSum
{
public VATColumn(int count) : base(count)
{
@@ -15,12 +14,9 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
? preparedValues.FirstPaymentNdsAbs
: constants.VatValue * sumColumn.Values[1];
- for (var i = 2; i < Values.Length; i++)
- {
- Values[i] = constants.VatValue * sumColumn.Values[i];
- }
+ for (var i = 2; i < Values.Length; i++) Values[i] = constants.VatValue * sumColumn.Values[i];
- Values[0] = Values.Sum();
+ Values[0] = Sum;
}
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs
index fd9ede5..6742a91 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/ExpensesTests.cs
@@ -110,7 +110,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
}
};
- var NsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1)
+ var NsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/GPS_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/GPS_GrTests.cs
index 33a0103..a0e59c0 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/GPS_GrTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/GPS_GrTests.cs
@@ -96,129 +96,130 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
{
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
new PaymentRow
{
- TlmCostPayment = 800.00,
+ GpsCostPayment = 800.00,
},
}
};
- var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn);
+ var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
+ preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
var expected = new[]
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs
index 0100d0b..0061fee 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoBonusGrSumTests.cs
@@ -15,7 +15,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
var kaskoNmperGrColumn =
- new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper))
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper),
+ preparedValues.IrrExpected)
{
Values = new[]
{
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs
index b0a6cef..532713e 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs
@@ -95,7 +95,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
@@ -226,7 +227,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
@@ -343,7 +345,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
@@ -474,7 +477,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
@@ -592,7 +596,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/NSIBExpensesTests.cs
similarity index 90%
rename from EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs
rename to EvoCalculator.Core.Tests/Calculation/Columns/NSIBExpensesTests.cs
index 5216318..22c32ae 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/NsibExpensesTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/NSIBExpensesTests.cs
@@ -4,10 +4,10 @@ using Xunit;
namespace EvoCalculator.Core.Tests.Calculation.Columns
{
- public class NsibExpensesTests
+ public class NSIBExpensesTests
{
[Fact]
- public void NsibExpensesTest1()
+ public void NSIBExpensesTest1()
{
var preparedValues = new PreparedValues()
{
@@ -15,7 +15,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
Nmper = 30
};
- var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1);
+ var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var expected = new[]
@@ -58,7 +58,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
}
[Fact]
- public void NsibExpensesTest2()
+ public void NSIBExpensesTest2()
{
var preparedValues = new PreparedValues()
{
@@ -66,7 +66,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
Nmper = 15
};
- var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1);
+ var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var expected = new[]
@@ -94,7 +94,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
}
[Fact]
- public void NsibExpensesTest3()
+ public void NSIBExpensesTest3()
{
var preparedValues = new PreparedValues()
{
@@ -102,7 +102,7 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
Nmper = 17
};
- var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1);
+ var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var expected = new[]
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/NegativeCashflowTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/NegativeCashflowTests.cs
index c9ebf89..a05a867 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/NegativeCashflowTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/NegativeCashflowTests.cs
@@ -15,7 +15,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
var kaskoNmperGrColumn =
- new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper))
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper),
+ preparedValues.IrrExpected)
{
Values = new[]
{
diff --git a/EvoCalculator.Core.Tests/Calculation/Columns/TLM_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/Columns/TLM_GrTests.cs
index a9c2204..5d886ff 100644
--- a/EvoCalculator.Core.Tests/Calculation/Columns/TLM_GrTests.cs
+++ b/EvoCalculator.Core.Tests/Calculation/Columns/TLM_GrTests.cs
@@ -218,7 +218,8 @@ namespace EvoCalculator.Core.Tests.Calculation.Columns
};
- var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn);
+ var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
+ preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
var expected = new[]
diff --git a/EvoCalculator.Core/Controllers/v1/CalculationController.cs b/EvoCalculator.Core/Controllers/v1/CalculationController.cs
index 9e9b598..7061924 100644
--- a/EvoCalculator.Core/Controllers/v1/CalculationController.cs
+++ b/EvoCalculator.Core/Controllers/v1/CalculationController.cs
@@ -27,15 +27,18 @@ namespace EvoCalculator.Core.Controllers.V1
percentPaymentColumn.ComputeValues(preparedPayments);
- var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn);
+ var kaskoNmperGrColumn =
+ new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues);
- var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn);
+ var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
+ preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
- var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn);
+ var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
+ preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
var sumColumn = new SumColumn(
@@ -102,7 +105,7 @@ namespace EvoCalculator.Core.Controllers.V1
transExprensesColumn.ComputeValues(preparedValues);
- var nsibExpensesColumn = new NsibExpensesColumn(preparedValues.Nmper + 1);
+ var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);