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 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - + + + + - @@ -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);