diff --git a/EvoCalculator.Core.Base/Columns/BaseColumn.cs b/EvoCalculator.Core.Base/Columns/BaseColumn.cs index 750bcd8..fcd682d 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumn.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumn.cs @@ -1,35 +1,34 @@ using System; using System.Linq; -namespace EvoCalculator.Core.Base.Columns +namespace EvoCalculator.Core.Base.Columns; + +public abstract class BaseColumn { - public abstract class BaseColumn + protected BaseColumn(int count) { - protected BaseColumn(int count) + Values = new T[count]; + } + + protected BaseColumn() + { + } + + public T[] Values { get; set; } + + public T GetValue(int i) + { + if (i < Values.Length) return Values[i]; + + return (T) Convert.ChangeType(0.0, typeof(T)); + } + + public T[] GetValues(int from = 0) + { + return from switch { - Values = new T[count]; - } - - protected BaseColumn() - { - } - - public T[] Values { get; set; } - - public T GetValue(int i) - { - if (i < Values.Length) return Values[i]; - - return (T) Convert.ChangeType(0.0, typeof(T)); - } - - public T[] GetValues(int from = 0) - { - return from switch - { - 0 => Values, - _ => Values.Skip(from).ToArray() - }; - } + 0 => Values, + _ => Values.Skip(from).ToArray() + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs b/EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs index cc49aaa..7de977b 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs @@ -1,11 +1,10 @@ -namespace EvoCalculator.Core.Base.Columns -{ - public abstract class BaseColumnForGoalSeek : BaseColumn - { - protected BaseColumnForGoalSeek(int count) : base(count) - { - } +namespace EvoCalculator.Core.Base.Columns; - public abstract void ComputeValues(T x); +public abstract class BaseColumnForGoalSeek : BaseColumn +{ + protected BaseColumnForGoalSeek(int count) : base(count) + { } + + public abstract void ComputeValues(T x); } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithGoalSeek.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithGoalSeek.cs index ded7a1a..6982394 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithGoalSeek.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithGoalSeek.cs @@ -1,16 +1,15 @@ using System; using TridentGoalSeek; -namespace EvoCalculator.Core.Base.Columns -{ - public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm - { - public BaseColumnWithGoalSeek(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Base.Columns; - public abstract decimal Calculate(decimal inputVariable); - protected abstract void FillValues(decimal x); - public abstract void ComputeValues(decimal requiredValue); +public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm +{ + public BaseColumnWithGoalSeek(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) + { } + + public abstract decimal Calculate(decimal inputVariable); + protected abstract void FillValues(decimal x); + public abstract void ComputeValues(decimal requiredValue); } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs index cd8dfd2..dab1e25 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs @@ -1,21 +1,20 @@ using System; -namespace EvoCalculator.Core.Base.Columns +namespace EvoCalculator.Core.Base.Columns; + +public class BaseColumnWithNominal : BaseColumnWithXIRR { - public class BaseColumnWithNominal : BaseColumnWithXIRR + protected BaseColumnWithNominal(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) { - protected BaseColumnWithNominal(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) - { - } - - public BaseColumnWithNominal(int count) : base(count) - { - } - - protected BaseColumnWithNominal() - { - } - - public double Nominal => (Math.Pow(IRR + 1, (double) 1 / 12) - 1) * 12; } + + public BaseColumnWithNominal(int count) : base(count) + { + } + + protected BaseColumnWithNominal() + { + } + + public double Nominal => (Math.Pow(IRR + 1, (double) 1 / 12) - 1) * 12; } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs index db08e33..f5a82b2 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs @@ -1,16 +1,15 @@ using System.Linq; -namespace EvoCalculator.Core.Base.Columns -{ - public class BaseColumnWithSum : BaseColumn - { - public BaseColumnWithSum(int count) : base(count) - { - } +namespace EvoCalculator.Core.Base.Columns; - public decimal Sum - { - get { return Values.Skip(1).Sum(x => x); } - } +public class BaseColumnWithSum : BaseColumn +{ + public BaseColumnWithSum(int count) : base(count) + { + } + + public decimal Sum + { + get { return Values.Skip(1).Sum(x => x); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithXIRR.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithXIRR.cs index b9be4e9..1c097a4 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithXIRR.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithXIRR.cs @@ -3,53 +3,52 @@ using System.Linq; using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.Models.Common; -namespace EvoCalculator.Core.Base.Columns +namespace EvoCalculator.Core.Base.Columns; + +public class BaseColumnWithXIRR : BaseColumn { - public class BaseColumnWithXIRR : BaseColumn + protected BaseColumnWithXIRR(int count, BaseColumn dateTempColumn) : base(count) { - protected BaseColumnWithXIRR(int count, BaseColumn dateTempColumn) : base(count) + Dates = dateTempColumn.Values; + } + + protected BaseColumnWithXIRR(int count) : base(count) + { + } + + protected BaseColumnWithXIRR() + { + } + + public DateTime[] Dates { get; set; } + + private Flow[] Flows + { + get { - Dates = dateTempColumn.Values; - } + var flows = new Flow[Values.Length]; + for (var i = 0; i < Values.Length; i++) + flows[i] = new Flow + { + Date = Dates[i], + Value = Values[i] + }; - protected BaseColumnWithXIRR(int count) : base(count) - { - } - - protected BaseColumnWithXIRR() - { - } - - public DateTime[] Dates { get; set; } - - 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 IRR - { - get - { - var XIRR = new XIRR(Flows); - return XIRR.GetResult(); - } - } - - public void RoundValues(int precision = 2) - { - Values = Values.Select(x => Math.Round(x, precision)).ToArray(); + return flows; } } + + public double IRR + { + get + { + var XIRR = new XIRR(Flows); + return XIRR.GetResult(); + } + } + + public void RoundValues(int precision = 2) + { + Values = Values.Select(x => Math.Round(x, precision)).ToArray(); + } } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithXNPV.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithXNPV.cs index 1476e75..ca67755 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithXNPV.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithXNPV.cs @@ -2,43 +2,42 @@ using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.Models.Common; -namespace EvoCalculator.Core.Base.Columns +namespace EvoCalculator.Core.Base.Columns; + +public class BaseColumnWithXNPV : BaseColumn { - public class BaseColumnWithXNPV : BaseColumn + private readonly double rate; + + public BaseColumnWithXNPV(int count, BaseColumn dateTempColumn, double rate) : base(count) { - private readonly double rate; + Dates = dateTempColumn.Values; + this.rate = rate; + } - public BaseColumnWithXNPV(int count, BaseColumn dateTempColumn, double rate) : base(count) + private DateTime[] Dates { get; } + + private Flow[] Flows + { + get { - Dates = dateTempColumn.Values; - this.rate = rate; + 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; } + } - private DateTime[] Dates { get; } - - private Flow[] Flows + public decimal XNPV + { + get { - 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 decimal XNPV - { - get - { - var XNPV = new XNPV(Flows, rate); - return Convert.ToDecimal(XNPV.GetResult()); - } + var XNPV = new XNPV(Flows, rate); + return Convert.ToDecimal(XNPV.GetResult()); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/Interfaces/Columns/IColumnWithGoalSeek.cs b/EvoCalculator.Core.Base/Interfaces/Columns/IColumnWithGoalSeek.cs index 828cf0a..b2be016 100644 --- a/EvoCalculator.Core.Base/Interfaces/Columns/IColumnWithGoalSeek.cs +++ b/EvoCalculator.Core.Base/Interfaces/Columns/IColumnWithGoalSeek.cs @@ -1,10 +1,9 @@ using TridentGoalSeek; -namespace EvoCalculator.Core.Base.Interfaces.Columns +namespace EvoCalculator.Core.Base.Interfaces.Columns; + +public interface IColumnWithGoalSeek : IGoalSeekAlgorithm { - public interface IColumnWithGoalSeek : IGoalSeekAlgorithm - { - public new decimal Calculate(decimal inputVariable); - public void ComputeValues(decimal requiredValue); - } + public new decimal Calculate(decimal inputVariable); + public void ComputeValues(decimal requiredValue); } \ No newline at end of file diff --git a/EvoCalculator.Core.Base/PostValues/BasePostValue.cs b/EvoCalculator.Core.Base/PostValues/BasePostValue.cs index 0b3f550..10d8fd5 100644 --- a/EvoCalculator.Core.Base/PostValues/BasePostValue.cs +++ b/EvoCalculator.Core.Base/PostValues/BasePostValue.cs @@ -1,7 +1,6 @@ -namespace EvoCalculator.Core.Base.PostValues +namespace EvoCalculator.Core.Base.PostValues; + +public class BasePostValue { - public class BasePostValue - { - public T Value { get; set; } - } + public T Value { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/AcceptInsuranceColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/AcceptInsuranceColumn.cs index b92cb6d..a03349b 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/AcceptInsuranceColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/AcceptInsuranceColumn.cs @@ -1,19 +1,18 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class AcceptInsuranceColumn : BaseColumnWithSum { - public class AcceptInsuranceColumn : BaseColumnWithSum + public AcceptInsuranceColumn(int count) : base(count) { - public AcceptInsuranceColumn(int count) : base(count) - { - } + } - public void ComputeValues(AcceptKaskoColumn acceptKaskoColumn, AcceptOsagoColumn acceptOsagoColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = acceptKaskoColumn.Values[i] + acceptOsagoColumn.Values[i]; + 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/AcceptKaskoColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/AcceptKaskoColumn.cs index c5a8ec0..767ac82 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/AcceptKaskoColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/AcceptKaskoColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class AcceptKaskoColumn : BaseColumnWithSum { - public class AcceptKaskoColumn : BaseColumnWithSum + public AcceptKaskoColumn(int count) : base(count) { - public AcceptKaskoColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = 0; - for (var i = 2; i < Values.Length; i++) - Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1); + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = 0; + for (var i = 2; i < Values.Length; i++) + Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1); - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/AcceptOsagoColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/AcceptOsagoColumn.cs index b18349b..4094347 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/AcceptOsagoColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/AcceptOsagoColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class AcceptOsagoColumn : BaseColumnWithSum { - public class AcceptOsagoColumn : BaseColumnWithSum + public AcceptOsagoColumn(int count) : base(count) { - public AcceptOsagoColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - for (var i = 0; i < Values.Length; i++) - Values[i] = i > 1 && i <= 12 ? preparedValues.InsuranceOsago / 11 : 0; + 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/AcceptSumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/AcceptSumColumn.cs index 7738cba..8365e08 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/AcceptSumColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/AcceptSumColumn.cs @@ -1,25 +1,24 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class AcceptSumColumn : BaseColumnWithSum { - public class AcceptSumColumn : BaseColumnWithSum + public AcceptSumColumn(int count) : base(count) { - public AcceptSumColumn(int count) : base(count) - { - } + } - public void ComputeValues( - PreparedValues preparedValues - , SumColumn sumColumn - , VATColumn vatColumn - , BaseSumWithVATColumn sumWithVatColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] / - (sumWithVatColumn.Values[0] - vatColumn.Values[0]); + public void ComputeValues( + PreparedValues preparedValues + , SumColumn sumColumn + , VATColumn vatColumn + , BaseSumWithVATColumn sumWithVatColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] / + (sumWithVatColumn.Values[0] - vatColumn.Values[0]); - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/AgentComissionExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/AgentComissionExpensesColumn.cs index 310c1be..a04a86e 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/AgentComissionExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/AgentComissionExpensesColumn.cs @@ -1,24 +1,23 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class AgentComissionExpensesColumn : BaseColumnWithSum { - public class AgentComissionExpensesColumn : BaseColumnWithSum + public AgentComissionExpensesColumn(int count) : base(count) { - public AgentComissionExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum + - preparedValues.DeliverySum + - preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum + - preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum; + public void ComputeValues(PreparedValues preparedValues) + { + var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum + + preparedValues.DeliverySum + + preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum + + preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum; - Values[2] = -agentComission; + Values[2] = -agentComission; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowColumn.cs index bec2db6..3f36d3d 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowColumn : BaseColumnWithXIRR - { - public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn) - { - 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]; - } +public class CashflowColumn : BaseColumnWithXIRR +{ + public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn) + { + 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]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowLeasingColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowLeasingColumn.cs index ffc4c45..f076178 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowLeasingColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowLeasingColumn.cs @@ -1,26 +1,25 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowLeasingColumn : BaseColumnWithXIRR - { - public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, - NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn) - { - 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] - - nsibBruttoGrColumn.Values[i] - - tlmGrColumn.Values[i] - - gpsGrColumn.Values[i]; - } +public class CashflowLeasingColumn : BaseColumnWithXIRR +{ + public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, + NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn) + { + 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] + - nsibBruttoGrColumn.Values[i] + - tlmGrColumn.Values[i] + - gpsGrColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs index b76aaad..5b3fa67 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs @@ -3,68 +3,67 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class BaseCashflowMSFOColumn : BaseColumnWithNominal { - public class BaseCashflowMSFOColumn : BaseColumnWithNominal + protected readonly AgentComissionExpensesColumn _agentComissionExpensesColumn; + protected readonly BaseColumn _gpsGrColumn; + protected readonly NegativeCashflowColumn _negativeCashflowColumn; + protected readonly BaseColumnWithSum _npvBonusExpensesColumn; + protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn; + protected readonly PercentPaymentColumn _percentPaymentColumn; + protected readonly PostValues.PostValues _postValues; + protected readonly PreparedValues _preparedValues; + protected readonly BaseColumn _tlmGrColumn; + protected SumColumn _sumColumn; + + public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + BaseColumn tlmGrColumn, BaseColumn gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn) { - protected readonly AgentComissionExpensesColumn _agentComissionExpensesColumn; - protected readonly BaseColumn _gpsGrColumn; - protected readonly NegativeCashflowColumn _negativeCashflowColumn; - protected readonly BaseColumnWithSum _npvBonusExpensesColumn; - protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn; - protected readonly PercentPaymentColumn _percentPaymentColumn; - protected readonly PostValues.PostValues _postValues; - protected readonly PreparedValues _preparedValues; - protected readonly BaseColumn _tlmGrColumn; - protected SumColumn _sumColumn; + _postValues = postValues; + _preparedValues = preparedValues; + _percentPaymentColumn = percentPaymentColumn; + _sumColumn = sumColumn; + _negativeCashflowColumn = negativeCashflowColumn; + _nsibBruttoGrColumn = nsibBruttoGrColumn; + _tlmGrColumn = tlmGrColumn; + _gpsGrColumn = gpsGrColumn; + _npvBonusExpensesColumn = npvBonusExpensesColumn; + _agentComissionExpensesColumn = agentComissionExpensesColumn; + } - public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - BaseColumn tlmGrColumn, BaseColumn gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn) + protected virtual void FillValues() + { + Values[0] = -_preparedValues.AcquisitionExpenses; + Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] + + _agentComissionExpensesColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) + Values[i] = _sumColumn.Values[i] + + _negativeCashflowColumn.Values[i] + - _nsibBruttoGrColumn.Values[i] + - _tlmGrColumn.Values[i] + - _gpsGrColumn.Values[i] + + _npvBonusExpensesColumn.Values[i] + + _agentComissionExpensesColumn.Values[i]; + } + + public void PostCheck(AdditionalData additionalData) + { + if (additionalData != null) { - _postValues = postValues; - _preparedValues = preparedValues; - _percentPaymentColumn = percentPaymentColumn; - _sumColumn = sumColumn; - _negativeCashflowColumn = negativeCashflowColumn; - _nsibBruttoGrColumn = nsibBruttoGrColumn; - _tlmGrColumn = tlmGrColumn; - _gpsGrColumn = gpsGrColumn; - _npvBonusExpensesColumn = npvBonusExpensesColumn; - _agentComissionExpensesColumn = agentComissionExpensesColumn; - } + if (additionalData.MinCashflowMSFONominal != null) + if (Nominal < additionalData.MinCashflowMSFONominal / 100) + throw new Exception( + $"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}"); - protected virtual void FillValues() - { - Values[0] = -_preparedValues.AcquisitionExpenses; - Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] + - _agentComissionExpensesColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = _sumColumn.Values[i] - + _negativeCashflowColumn.Values[i] - - _nsibBruttoGrColumn.Values[i] - - _tlmGrColumn.Values[i] - - _gpsGrColumn.Values[i] - + _npvBonusExpensesColumn.Values[i] - + _agentComissionExpensesColumn.Values[i]; - } - - public void PostCheck(AdditionalData additionalData) - { - if (additionalData != null) - { - if (additionalData.MinCashflowMSFONominal != null) - if (Nominal < additionalData.MinCashflowMSFONominal / 100) - throw new Exception( - $"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}"); - - if (additionalData.MaxCashflowMSFONominal != null) - if (Nominal >= additionalData.MaxCashflowMSFONominal / 100) - throw new Exception( - $"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}"); - } + if (additionalData.MaxCashflowMSFONominal != null) + if (Nominal >= additionalData.MaxCashflowMSFONominal / 100) + throw new Exception( + $"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}"); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs index d8f48e8..bb0ac46 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs @@ -4,43 +4,42 @@ using EvoCalculator.Core.Base.Interfaces.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using TridentGoalSeek; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek { - public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek + public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, + gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) { - public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, - gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) - { - } + } - public decimal Calculate(decimal inputVariable) - { - _sumColumn.ComputeValues(inputVariable); - FillValues(); - return Convert.ToDecimal(Nominal); - } + public decimal Calculate(decimal inputVariable) + { + _sumColumn.ComputeValues(inputVariable); + FillValues(); + return Convert.ToDecimal(Nominal); + } - public void ComputeValues(decimal requiredValue) - { - var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values - .Skip(2) - .Take(_percentPaymentColumn.Values.Length - 1) - .Where(x => x >= 10).ToArray().Length; + public void ComputeValues(decimal requiredValue) + { + var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values + .Skip(2) + .Take(_percentPaymentColumn.Values.Length - 1) + .Where(x => x >= 10).ToArray().Length; - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: - (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS - , maximumAttempts: 1000 - , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper - // , focusPercentage: 50 - )); - } + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: + (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS + , maximumAttempts: 1000 + , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs index 46b14d5..b432c9f 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs @@ -1,22 +1,21 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn - { - public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, - gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues() - { - FillValues(); - } +public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn +{ + public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, + gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) + { + } + + public void ComputeValues() + { + FillValues(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinal2Column.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinal2Column.cs index e303283..0656665 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinal2Column.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinal2Column.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowMSFOFinal2Column : BaseColumnWithNominal - { - public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, BaseColumn directorBonusSumColumn, - CashflowMSFOFinalColumn cashflowMsfoFinalColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowMsfoFinalColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = cashflowMsfoFinalColumn.Values[i] + directorBonusSumColumn.Values[i]; - } +public class CashflowMSFOFinal2Column : BaseColumnWithNominal +{ + public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, BaseColumn directorBonusSumColumn, + CashflowMSFOFinalColumn cashflowMsfoFinalColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = cashflowMsfoFinalColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) + Values[i] = cashflowMsfoFinalColumn.Values[i] + directorBonusSumColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinalColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinalColumn.cs index e68c9be..06cd8f0 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinalColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOFinalColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowMSFOFinalColumn : BaseColumnWithNominal - { - public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn, - ExtraBonusSumColumn extraBonusSumColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowMsfoColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = cashflowMsfoColumn.Values[i] + extraBonusSumColumn.Values[i]; - } +public class CashflowMSFOFinalColumn : BaseColumnWithNominal +{ + public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn, + ExtraBonusSumColumn extraBonusSumColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = cashflowMsfoColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) + Values[i] = cashflowMsfoColumn.Values[i] + extraBonusSumColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVColumn.cs index 9ac181f..1638c1d 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVColumn.cs @@ -1,32 +1,31 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class CashflowNPVColumn : BaseColumn { - public class CashflowNPVColumn : BaseColumn + public CashflowNPVColumn(int count) : base(count) { - public CashflowNPVColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, - TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn, - RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, - TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) + - agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1); + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, + TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn, + RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, + TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) + + agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1); - for (var i = 2; i < Values.Length; i++) - Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) + - npvBonusExpensesColumn.GetValue(i) + - agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) - - taxColumn.GetValue(i) - - transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) + - tlmExpensesColumn.GetValue(i) + - gpsExpensesColumn.GetValue(i); - } + for (var i = 2; i < Values.Length; i++) + Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) - + taxColumn.GetValue(i) - + transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinal2Column.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinal2Column.cs index 50336fc..5f7a60a 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinal2Column.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinal2Column.cs @@ -1,22 +1,21 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class CashflowNPVFinal2Column : BaseColumn { - public class CashflowNPVFinal2Column : BaseColumn + public CashflowNPVFinal2Column(int count) : base(count) { - public CashflowNPVFinal2Column(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn, - BaseColumn directorBonusSumColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowNpvFinalColumn.GetValue(1); - for (var i = 2; i < Values.Length; i++) - Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i); - } + public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn, + BaseColumn directorBonusSumColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = cashflowNpvFinalColumn.GetValue(1); + for (var i = 2; i < Values.Length; i++) + Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinalColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinalColumn.cs index 45992f1..1709243 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinalColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNPVFinalColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class CashflowNPVFinalColumn : BaseColumn - { - public CashflowNPVFinalColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn, - BaseColumn cashflowNpvColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = cashflowNpvColumn.GetValue(1); - for (var i = 2; i < Values.Length; i++) - Values[i] = extraBonusSumColumn.GetValue(i) + cashflowNpvColumn.GetValue(i); - } +public class CashflowNPVFinalColumn : BaseColumn +{ + public CashflowNPVFinalColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn, + BaseColumn cashflowNpvColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = cashflowNpvColumn.GetValue(1); + for (var i = 2; i < Values.Length; i++) + Values[i] = extraBonusSumColumn.GetValue(i) + cashflowNpvColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNSIBColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNSIBColumn.cs index b101a38..d21153c 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowNSIBColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowNSIBColumn.cs @@ -3,46 +3,45 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Base.Interfaces.Columns; using TridentGoalSeek; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class CashflowNSIBColumn : BaseColumnWithNominal, IColumnWithGoalSeek { - public class CashflowNSIBColumn : BaseColumnWithNominal, IColumnWithGoalSeek + private readonly NSIBBruttoGrColumn _NSIBBruttoGrColumn; + private readonly NSIBExpensesColumn _NSIBExpensesColumn; + + public CashflowNSIBColumn(int count, DateTempColumn dateTempColumn, + NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn) : base(count, dateTempColumn) { - private readonly NSIBBruttoGrColumn _NSIBBruttoGrColumn; - private readonly NSIBExpensesColumn _NSIBExpensesColumn; + _NSIBBruttoGrColumn = nsibBruttoGrColumn; + _NSIBExpensesColumn = nsibExpensesColumn; + } - public CashflowNSIBColumn(int count, DateTempColumn dateTempColumn, - NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn) : base(count, dateTempColumn) - { - _NSIBBruttoGrColumn = nsibBruttoGrColumn; - _NSIBExpensesColumn = nsibExpensesColumn; - } + public decimal Calculate(decimal inputVariable) + { + FillValues(inputVariable); + return Convert.ToDecimal(IRR); + } - public decimal Calculate(decimal inputVariable) - { - FillValues(inputVariable); - return Convert.ToDecimal(IRR); - } + public void ComputeValues(decimal requiredValue) + { + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: Convert.ToDecimal(_NSIBBruttoGrColumn.Values[0] / 2) + , tineExplorePercentage: 10 + // , maximumAttempts: 10000 + // , initialTineSpacing: 1 + // , focusPercentage: 100 + // , trimFinalInputValue: true + )); + } - public void ComputeValues(decimal requiredValue) - { - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: Convert.ToDecimal(_NSIBBruttoGrColumn.Values[0] / 2) - , tineExplorePercentage: 10 - // , maximumAttempts: 10000 - // , initialTineSpacing: 1 - // , focusPercentage: 100 - // , trimFinalInputValue: true - )); - } - - private void FillValues(decimal x) - { - Values[1] = _NSIBBruttoGrColumn.Values[1] - x; - for (var i = 2; i < Values.Length; i++) - Values[i] = _NSIBBruttoGrColumn.Values[i] - - x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1]; - } + private void FillValues(decimal x) + { + Values[1] = _NSIBBruttoGrColumn.Values[1] - x; + for (var i = 2; i < Values.Length; i++) + Values[i] = _NSIBBruttoGrColumn.Values[i] - + x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/ComissionBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/ComissionBonusExpensesColumn.cs index 2ab706f..fd93715 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/ComissionBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/ComissionBonusExpensesColumn.cs @@ -1,18 +1,17 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class ComissionBonusExpensesColumn : BaseColumnWithSum - { - public ComissionBonusExpensesColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = preparedValues.ComissionRub; - Values[0] = Sum; - } +public class ComissionBonusExpensesColumn : BaseColumnWithSum +{ + public ComissionBonusExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = preparedValues.ComissionRub; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/DateColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DateColumn.cs index 6343416..c5c7c07 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DateColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DateColumn.cs @@ -2,35 +2,34 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class DateColumn : BaseColumn { - public class DateColumn : BaseColumn + public DateColumn(int count) : base(count) { - public DateColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) - { - Values[0] = preparedValues.DogDate; - Values[1] = Values[0]; + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) + { + Values[0] = preparedValues.DogDate; + Values[1] = Values[0]; - Values[2] = preparedValues.DeliveryTime switch + Values[2] = preparedValues.DeliveryTime switch + { + 100000000 => preparedValues.PaymentDateNew ?? Values[1].AddMonths(1), + 100000001 => preparedValues.PaymentDateNew ?? Values[1].AddDays(constants.DeliveryDays), + _ => Values[2] + }; + + for (var i = 3; i < preparedValues.Nmper + 1; i++) + Values[i] = preparedValues.DeliveryTime switch { - 100000000 => preparedValues.PaymentDateNew ?? Values[1].AddMonths(1), - 100000001 => preparedValues.PaymentDateNew ?? Values[1].AddDays(constants.DeliveryDays), + 100000000 => preparedValues.PaymentDateNew == null + ? Values[1].AddMonths(i - 1) + : Values[2].AddMonths(i - 2), + 100000001 => Values[2].AddMonths(i - 2), _ => Values[2] }; - - for (var i = 3; i < preparedValues.Nmper + 1; i++) - Values[i] = preparedValues.DeliveryTime switch - { - 100000000 => preparedValues.PaymentDateNew == null - ? Values[1].AddMonths(i - 1) - : Values[2].AddMonths(i - 2), - 100000001 => Values[2].AddMonths(i - 2), - _ => Values[2] - }; - } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/DateTempColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DateTempColumn.cs index 0c8751a..aa9ae9e 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DateTempColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DateTempColumn.cs @@ -2,26 +2,25 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class DateTempColumn : BaseColumn { - public class DateTempColumn : BaseColumn + public DateTempColumn(int count) : base(count) { - public DateTempColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001 - ? preparedValues.PaymentDateNew.Value.AddMonths(-1) - : preparedValues.DogDate; - Values[1] = Values[0]; - Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1); + public void ComputeValues(PreparedValues preparedValues) + { + Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001 + ? preparedValues.PaymentDateNew.Value.AddMonths(-1) + : preparedValues.DogDate; + Values[1] = Values[0]; + 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); - } + 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/v1/Columns/DeprecationColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationColumn.cs index 762da2b..b07bfcd 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DeprecationColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class DeprecationColumn : BaseColumnWithSum { - public class DeprecationColumn : BaseColumnWithSum + public DeprecationColumn(int count) : base(count) { - public DeprecationColumn(int count) : base(count) - { - } + } - 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]; + 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLDColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLDColumn.cs index e7407c3..3371737 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLDColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLDColumn.cs @@ -2,30 +2,29 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class DeprecationLDColumn : BaseColumnWithSum { - public class DeprecationLDColumn : BaseColumnWithSum + public DeprecationLDColumn(int count) : base(count) { - public DeprecationLDColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = 0; - for (var i = 2; i < Values.Length - 1; i++) - Values[i] = preparedValues.BalanceHolder == 100000001 - ? (decimal) 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) - .Take(Values.Length - 1) - .Sum(x => x) + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = 0; + for (var i = 2; i < Values.Length - 1; i++) + Values[i] = preparedValues.BalanceHolder == 100000001 + ? (decimal) preparedValues.DeprecationTime * + (preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100 : 0; - Values[0] = Sum; - } + Values[^1] = preparedValues.BalanceHolder == 100000001 + ? preparedValues.AcceptSum - Values.Skip(2) + .Take(Values.Length - 1) + .Sum(x => x) + : 0; + + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLPColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLPColumn.cs index 0e1b932..3e27348 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLPColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DeprecationLPColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class DeprecationLPColumn : BaseColumnWithSum { - public class DeprecationLPColumn : BaseColumnWithSum + public DeprecationLPColumn(int count) : base(count) { - public DeprecationLPColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, AcceptSumColumn acceptSumColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = preparedValues.BalanceHolder == 100000000 ? acceptSumColumn.Values[i] : 0; + 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/DirectorBonusSumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/DirectorBonusSumColumn.cs index 4d940d7..093f8d6 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/DirectorBonusSumColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/DirectorBonusSumColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class DirectorBonusSumColumn : BaseColumnWithSum - { - public DirectorBonusSumColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) - { - Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus * - (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; - Values[0] = Sum; - } +public class DirectorBonusSumColumn : BaseColumnWithSum +{ + public DirectorBonusSumColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) + { + Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus * + (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/ExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/ExpensesColumn.cs index b8dadc8..d617963 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/ExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/ExpensesColumn.cs @@ -1,34 +1,33 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class ExpensesColumn : BaseColumnWithSum { - public class ExpensesColumn : BaseColumnWithSum + public ExpensesColumn(int count) : base(count) { - public ExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn, - RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, - 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] - + transExpensesColumn.Values[i] - + nsibExpensesColumn.Values[i] - + tlmExpensesColumn.Values[i] - + gpsExpensesColumn.Values[i] - + registrExpensesColumn.Values[i] - + insuranceBonusExpensesColumn.Values[i] - + comissionBonusExpensesColumn.Values[i] - + npvBonusExpensesColumn.Values[i]; + public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn, + RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, + 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] + + transExpensesColumn.Values[i] + + nsibExpensesColumn.Values[i] + + tlmExpensesColumn.Values[i] + + gpsExpensesColumn.Values[i] + + registrExpensesColumn.Values[i] + + insuranceBonusExpensesColumn.Values[i] + + comissionBonusExpensesColumn.Values[i] + + npvBonusExpensesColumn.Values[i]; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/ExtraBonusSumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/ExtraBonusSumColumn.cs index 241e821..a8c488f 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/ExtraBonusSumColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/ExtraBonusSumColumn.cs @@ -1,24 +1,23 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class ExtraBonusSumColumn : BaseColumnWithSum - { - public ExtraBonusSumColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn, - PostValues.PostValues postValues) - { - Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan - ? -1 * postValues.BonusBase.Value * - (decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) * - (decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate - : 0; - Values[0] = Sum; - } +public class ExtraBonusSumColumn : BaseColumnWithSum +{ + public ExtraBonusSumColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn, + PostValues.PostValues postValues) + { + Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan + ? -1 * postValues.BonusBase.Value * + (decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) * + (decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate + : 0; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/GPSExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/GPSExpensesColumn.cs index 29a6021..c90b3e0 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/GPSExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/GPSExpensesColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class GPSExpensesColumn : BaseColumnWithSum { - public class GPSExpensesColumn : BaseColumnWithSum + public GPSExpensesColumn(int count) : base(count) { - public GPSExpensesColumn(int count) : base(count) - { - } + } - 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; + 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; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/GPS_GrColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/GPS_GrColumn.cs index 1dadbbc..c6cd1aa 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/GPS_GrColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/GPS_GrColumn.cs @@ -2,24 +2,23 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class GPS_GrColumn : BaseColumnWithXNPV { - public class GPS_GrColumn : BaseColumnWithXNPV + public GPS_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate) { - public GPS_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) - { - for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment; + public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) + { + for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment; - Values[0] = -XNPV; - } + Values[0] = -XNPV; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/IRRGrColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/IRRGrColumn.cs index 14afd8a..99dac1a 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/IRRGrColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/IRRGrColumn.cs @@ -1,19 +1,18 @@ using System; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class IRRGrColumn : BaseColumn - { - public IRRGrColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowMSFOColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = Math.Pow(1 + cashflowMSFOColumn.IRR, - (double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1; - } +public class IRRGrColumn : BaseColumn +{ + public IRRGrColumn(int count) : base(count) + { + } + + public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowMSFOColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = Math.Pow(1 + cashflowMSFOColumn.IRR, + (double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/InsuranceBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/InsuranceBonusExpensesColumn.cs index 8e442b9..99a4c11 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/InsuranceBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/InsuranceBonusExpensesColumn.cs @@ -1,37 +1,36 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class InsuranceBonusExpensesColumn : BaseColumnWithSum { - public class InsuranceBonusExpensesColumn : BaseColumnWithSum + public InsuranceBonusExpensesColumn(int count) : base(count) { - public InsuranceBonusExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) - { - if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) - Values[2] = preparedValues.InsuranceBonus; - else - /* - * +1 - компенсация того, что считается с 0 позиции - */ - for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) - if (preparedValues.NmperInsurance - i >= 3) - { - if ( - preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 || - preparedValues.NmperInsurance > constants.MaxOnePolicePeriod && - preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod - ) - Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; - else - Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * - (preparedValues.NmperInsurance - i + 1); - } + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) + { + if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) + Values[2] = preparedValues.InsuranceBonus; + else + /* + * +1 - компенсация того, что считается с 0 позиции + */ + for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) + if (preparedValues.NmperInsurance - i >= 3) + { + if ( + preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 || + preparedValues.NmperInsurance > constants.MaxOnePolicePeriod && + preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod + ) + Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; + else + Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * + (preparedValues.NmperInsurance - i + 1); + } - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs index 5fe4227..4274f4d 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs @@ -2,27 +2,26 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class InterestColumn : BaseColumn { - public class InterestColumn : BaseColumn + public InterestColumn(int count) : base(count) { - public InterestColumn(int count) : base(count) - { - } + } - public void PostCheck(SumColumn sumColumn) - { - for (var i = 3; i < Values.Skip(1).ToList().Count; i++) - if (Values[i] > sumColumn.Values[i]) - throw new Exception( - "Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж"); - } + public void PostCheck(SumColumn sumColumn) + { + for (var i = 3; i < Values.Skip(1).ToList().Count; i++) + if (Values[i] > sumColumn.Values[i]) + throw new Exception( + "Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж"); + } - public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn) - { - for (var i = 2; i < Values.Length; i++) - Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i]; - } + public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn) + { + for (var i = 2; i < Values.Length; i++) + Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/KaskoBonusGrSumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/KaskoBonusGrSumColumn.cs index ca1a034..9f043f9 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/KaskoBonusGrSumColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/KaskoBonusGrSumColumn.cs @@ -1,25 +1,24 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class KaskoBonusGrSumColumn : BaseColumnWithSum { - public class KaskoBonusGrSumColumn : BaseColumnWithSum + public KaskoBonusGrSumColumn(int count) : base(count) { - public KaskoBonusGrSumColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, BaseColumn 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] * (decimal) 0.7; - else - Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5; + public void ComputeValues(PreparedValues preparedValues, BaseColumn 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] * (decimal) 0.7; + else + Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/KaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/KaskoNmperGrColumn.cs index 1c57e64..b6997b2 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/KaskoNmperGrColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/KaskoNmperGrColumn.cs @@ -2,39 +2,38 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class KaskoNmperGrColumn : BaseColumnWithXNPV { - public class KaskoNmperGrColumn : BaseColumnWithXNPV + public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, + rate) { - public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, - rate) + } + + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } + + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) + { + if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) { + Values[1] = preparedValues.InsuranceKasko; + } + else + { + var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod + ? preparedValues.InsuranceKasko / 12 + : preparedValues.InsuranceKasko / preparedValues.NmperInsurance; + for (var i = 1; i < preparedValues.NmperInsurance; i += 12) + if (i <= preparedValues.NmperInsurance) + Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod + ? InsuranceKaskoMonth * 12 + : InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1); } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } - - public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) - { - if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) - { - Values[1] = preparedValues.InsuranceKasko; - } - else - { - var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod - ? preparedValues.InsuranceKasko / 12 - : preparedValues.InsuranceKasko / preparedValues.NmperInsurance; - for (var i = 1; i < preparedValues.NmperInsurance; i += 12) - if (i <= preparedValues.NmperInsurance) - Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod - ? InsuranceKaskoMonth * 12 - : InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1); - } - - Values[0] = -XNPV; - } + Values[0] = -XNPV; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NIColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NIColumn.cs index bd9bde1..5eb67e0 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NIColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NIColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class NIColumn : BaseColumn - { - public NIColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, BaseColumn cashflowMSFOColumn, - IRRGrColumn irrGrColumn) - { - Values[1] = -cashflowMSFOColumn.GetValue(0) - cashflowMSFOColumn.GetValue(1); - for (var i = 2; i < Values.Length; i++) - Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] - - cashflowMSFOColumn.Values[i]; - } +public class NIColumn : BaseColumn +{ + public NIColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, BaseColumn cashflowMSFOColumn, + IRRGrColumn irrGrColumn) + { + Values[1] = -cashflowMSFOColumn.GetValue(0) - cashflowMSFOColumn.GetValue(1); + for (var i = 2; i < Values.Length; i++) + Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] - + cashflowMSFOColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NPVBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NPVBonusExpensesColumn.cs index 2613754..69e80f8 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NPVBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NPVBonusExpensesColumn.cs @@ -2,30 +2,29 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class NPVBonusExpensesColumn : BaseColumnWithSum { - public class NPVBonusExpensesColumn : BaseColumnWithSum + public NPVBonusExpensesColumn(int count) : base(count) { - public NPVBonusExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) - { - Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) * - (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; + public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) + { + Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) * + (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; - Values[2] = preparedValues.BonusFix > 0 - ? -preparedValues.BonusFix - : -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) * - (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; + Values[2] = preparedValues.BonusFix > 0 + ? -preparedValues.BonusFix + : -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) * + (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NPVColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NPVColumn.cs index 636c862..5adfa53 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NPVColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NPVColumn.cs @@ -1,17 +1,16 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class NPVColumn : BaseColumnWithNominal - { - public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(BaseColumn cashflowNpvColumn, NPVWeightColumn npvWeightColumn) - { - for (var i = 0; i < Values.Length; i++) - Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); - } +public class NPVColumn : BaseColumnWithNominal +{ + public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(BaseColumn cashflowNpvColumn, NPVWeightColumn npvWeightColumn) + { + for (var i = 0; i < Values.Length; i++) + Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NPVFinal2Column.cs b/EvoCalculator.Core.Calculation/v1/Columns/NPVFinal2Column.cs index c6dae32..8a44363 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NPVFinal2Column.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NPVFinal2Column.cs @@ -1,17 +1,16 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class NPVFinal2Column : BaseColumnWithNominal - { - public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn) - { - for (var i = 0; i < Values.Length; i++) - Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); - } +public class NPVFinal2Column : BaseColumnWithNominal +{ + public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn) + { + for (var i = 0; i < Values.Length; i++) + Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NPVFinalColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NPVFinalColumn.cs index f21169c..18a54a3 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NPVFinalColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NPVFinalColumn.cs @@ -1,17 +1,16 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class NPVFinalColumn : BaseColumnWithNominal - { - public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn) - { - for (var i = 0; i < Values.Length; i++) - Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); - } +public class NPVFinalColumn : BaseColumnWithNominal +{ + public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn) + { + for (var i = 0; i < Values.Length; i++) + Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NPVWeightColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NPVWeightColumn.cs index 2c45356..c9e8707 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NPVWeightColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NPVWeightColumn.cs @@ -2,21 +2,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class NPVWeightColumn : BaseColumn - { - public NPVWeightColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(PreparedValues preparedValues, DateTempColumn dateTempColumn) - { - Values[0] = 1; - for (var i = 1; i < Values.Length; i++) - Values[i] = Values[i - 1] / Math.Pow( - 1 + preparedValues.LoanRate / 365, - (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days); - } +public class NPVWeightColumn : BaseColumn +{ + public NPVWeightColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, DateTempColumn dateTempColumn) + { + Values[0] = 1; + for (var i = 1; i < Values.Length; i++) + Values[i] = Values[i - 1] / Math.Pow( + 1 + preparedValues.LoanRate / 365, + (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NSIBBruttoGrColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NSIBBruttoGrColumn.cs index 50b8ecd..5985d2f 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NSIBBruttoGrColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NSIBBruttoGrColumn.cs @@ -1,21 +1,20 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class NSIBBruttoGrColumn : BaseColumnWithSum { - public class NSIBBruttoGrColumn : BaseColumnWithSum + public NSIBBruttoGrColumn(int count) : base(count) { - public NSIBBruttoGrColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = 0; - for (var i = 2; i < Values.Length - 1; i++) - Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1); + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = 0; + for (var i = 2; i < Values.Length - 1; i++) + Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1); - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NSIBExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NSIBExpensesColumn.cs index 3a65333..4360446 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NSIBExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NSIBExpensesColumn.cs @@ -1,34 +1,33 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class NSIBExpensesColumn : BaseColumnWithSum { - public class NSIBExpensesColumn : BaseColumnWithSum + public NSIBExpensesColumn(int count) : base(count) { - public NSIBExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - for (var i = 1; i < Values.Length; i += 12) - if (i <= preparedValues.Nmper) + public void ComputeValues(PreparedValues preparedValues) + { + for (var i = 1; i < Values.Length; i += 12) + if (i <= preparedValues.Nmper) + { + if (preparedValues.Nmper - i >= 3) { - 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; - } + if (preparedValues.Nmper - i < 16 - 1) + Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * + (preparedValues.Nmper - i + 1); else - { - Values[i] = 0; - } + Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12; } + else + { + Values[i] = 0; + } + } - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/NegativeCashflowColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/NegativeCashflowColumn.cs index 16dbefc..d38d39d 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/NegativeCashflowColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/NegativeCashflowColumn.cs @@ -1,18 +1,17 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class NegativeCashflowColumn : BaseColumnWithSum { - public class NegativeCashflowColumn : BaseColumnWithSum + public NegativeCashflowColumn(int count) : base(count) { - public NegativeCashflowColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn kaskoNmperGrColumn) - { - for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i]; + public void ComputeValues(BaseColumn kaskoNmperGrColumn) + { + for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i]; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/PercentPaymentColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/PercentPaymentColumn.cs index debf4c3..863b161 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/PercentPaymentColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/PercentPaymentColumn.cs @@ -1,22 +1,21 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class PercentPaymentColumn : BaseColumn { - public class PercentPaymentColumn : BaseColumn + public PercentPaymentColumn(int count) : base(count) { - public PercentPaymentColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedPayments preparedPayments) - { - Values[0] = 0; - Values[1] = 0; - for (var i = 2; i < Values.Length - 1; i++) - Values[i] = preparedPayments.Rows[i - 1].PercentPayment; + public void ComputeValues(PreparedPayments preparedPayments) + { + Values[0] = 0; + Values[1] = 0; + for (var i = 2; i < Values.Length - 1; i++) + Values[i] = preparedPayments.Rows[i - 1].PercentPayment; - Values[^1] = 0; - } + Values[^1] = 0; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/RatExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/RatExpensesColumn.cs index 07ad80c..cbc3f2f 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/RatExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/RatExpensesColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class RatExpensesColumn : BaseColumnWithSum { - public class RatExpensesColumn : BaseColumnWithSum + public RatExpensesColumn(int count) : base(count) { - public RatExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = -preparedValues.BaseRatCost; - Values[4] = preparedValues.RetroBonus; + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = -preparedValues.BaseRatCost; + Values[4] = preparedValues.RetroBonus; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/RegistrExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/RegistrExpensesColumn.cs index b0a0bc2..036c9ae 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/RegistrExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/RegistrExpensesColumn.cs @@ -1,19 +1,18 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class RegistrExpensesColumn : BaseColumnWithSum { - public class RegistrExpensesColumn : BaseColumnWithSum + public RegistrExpensesColumn(int count) : base(count) { - public RegistrExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - Values[1] = -preparedValues.BaseRegistration; + public void ComputeValues(PreparedValues preparedValues) + { + Values[1] = -preparedValues.BaseRegistration; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/RevenueColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/RevenueColumn.cs index 79a2b99..82a5165 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/RevenueColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/RevenueColumn.cs @@ -1,26 +1,25 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class RevenueColumn : BaseColumn - { - public RevenueColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn, - CashflowNSIBColumn cashflowNsibColumn) +public class RevenueColumn : BaseColumn +{ + public RevenueColumn(int count) : base(count) + { + } + + public void ComputeValues(NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn, + CashflowNSIBColumn cashflowNsibColumn) + { + if (nsibBruttoGrColumn.Sum == 0) { - if (nsibBruttoGrColumn.Sum == 0) - { - for (var i = 0; i < Values.Length; i++) Values[i] = 0; - } - else - { - Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = Values[1] * nsibExpensesColumn.Values[i] / nsibExpensesColumn.Values[1]; - } + for (var i = 0; i < Values.Length; i++) Values[i] = 0; + } + else + { + Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) + Values[i] = Values[1] * nsibExpensesColumn.Values[i] / nsibExpensesColumn.Values[1]; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs index 6e063a8..f2c2ad2 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs @@ -4,47 +4,46 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class SumColumn : BaseColumnWithXIRR { - public class SumColumn : BaseColumnWithXIRR + protected readonly BaseColumn _nsibBruttoGrColumn; + protected readonly PercentPaymentColumn _percentPaymentColumn; + protected readonly PostValues.PostValues _postValues; + protected readonly PreparedValues _preparedValues; + + public SumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + PercentPaymentColumn percentPaymentColumn, + PostValues.PostValues postValues, BaseColumn nsibBruttoGrColumn) : base(count, dateTempColumn) { - protected readonly BaseColumn _nsibBruttoGrColumn; - protected readonly PercentPaymentColumn _percentPaymentColumn; - protected readonly PostValues.PostValues _postValues; - protected readonly PreparedValues _preparedValues; + _preparedValues = preparedValues; + _percentPaymentColumn = percentPaymentColumn; + _postValues = postValues; + _nsibBruttoGrColumn = nsibBruttoGrColumn; + } - public SumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - PercentPaymentColumn percentPaymentColumn, - PostValues.PostValues postValues, BaseColumn nsibBruttoGrColumn) : base(count, dateTempColumn) - { - _preparedValues = preparedValues; - _percentPaymentColumn = percentPaymentColumn; - _postValues = postValues; - _nsibBruttoGrColumn = nsibBruttoGrColumn; - } + public virtual void ComputeValues(decimal x) + { + Values[0] = -_postValues.BaseCost.Value; + Values[1] = _preparedValues.FirstPaymentSum; - public virtual void ComputeValues(decimal x) - { - Values[0] = -_postValues.BaseCost.Value; - Values[1] = _preparedValues.FirstPaymentSum; + for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100; - for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100; + Values[^1] = _preparedValues.LastPaymentSum; + } - Values[^1] = _preparedValues.LastPaymentSum; - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); + if (Values[1] / Values.Skip(1).Sum() >= 0.5m) + throw new Exception( + "Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж"); - if (Values[1] / Values.Skip(1).Sum() >= 0.5m) + for (var i = 2; i < Values.Length - 1; i++) + if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i)) throw new Exception( - "Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж"); - - for (var i = 2; i < Values.Length - 1; i++) - if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i)) - throw new Exception( - "Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи"); - } + "Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentColumn.cs index adaa3b6..540187e 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentColumn.cs @@ -1,17 +1,16 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class SumCurrentColumn : BaseColumn - { - public SumCurrentColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(BaseSumWithVATColumn sumWithVatColumn) - { - for (var i = 1; i < Values.Length; i++) Values[i] = sumWithVatColumn.Values.Skip(i).Sum(x => x); - } +public class SumCurrentColumn : BaseColumn +{ + public SumCurrentColumn(int count) : base(count) + { + } + + public void ComputeValues(BaseSumWithVATColumn sumWithVatColumn) + { + for (var i = 1; i < Values.Length; i++) Values[i] = sumWithVatColumn.Values.Skip(i).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentInterestColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentInterestColumn.cs index eb68d24..a10b1ff 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentInterestColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentInterestColumn.cs @@ -1,17 +1,16 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class SumCurrentInterestColumn : BaseColumn - { - public SumCurrentInterestColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(InterestColumn interestColumn) - { - for (var i = 1; i < Values.Length; i++) Values[i] = interestColumn.Values.Skip(i + 1).Sum(x => x); - } +public class SumCurrentInterestColumn : BaseColumn +{ + public SumCurrentInterestColumn(int count) : base(count) + { + } + + public void ComputeValues(InterestColumn interestColumn) + { + for (var i = 1; i < Values.Length; i++) Values[i] = interestColumn.Values.Skip(i + 1).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentNegativeColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentNegativeColumn.cs index 47a33cd..5584f6b 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentNegativeColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentNegativeColumn.cs @@ -1,17 +1,16 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class SumCurrentNegativeColumn : BaseColumn - { - public SumCurrentNegativeColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(NegativeCashflowColumn negativeCashflowColumn) - { - for (var i = 1; i < Values.Length; i++) Values[i] = negativeCashflowColumn.Values.Skip(i).Sum(x => x); - } +public class SumCurrentNegativeColumn : BaseColumn +{ + public SumCurrentNegativeColumn(int count) : base(count) + { + } + + public void ComputeValues(NegativeCashflowColumn negativeCashflowColumn) + { + for (var i = 1; i < Values.Length; i++) Values[i] = negativeCashflowColumn.Values.Skip(i).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentTLMColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentTLMColumn.cs index c3969da..a50edba 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentTLMColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumCurrentTLMColumn.cs @@ -1,18 +1,17 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class SumCurrentTLMColumn : BaseColumn - { - public SumCurrentTLMColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues(BaseColumn tlmGrColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x); - } +public class SumCurrentTLMColumn : BaseColumn +{ + public SumCurrentTLMColumn(int count) : base(count) + { + } + + public void ComputeValues(BaseColumn tlmGrColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumRepaymentColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumRepaymentColumn.cs index e3c3aa4..b40e092 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumRepaymentColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumRepaymentColumn.cs @@ -2,28 +2,27 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class SumRepaymentColumn : BaseColumn { - public class SumRepaymentColumn : BaseColumn + public SumRepaymentColumn(int count) : base(count) { - public SumRepaymentColumn(int count) : base(count) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues, - SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn, - SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn) - { - for (var i = 7; i < Values.Length; i++) - Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] - - sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) - - sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) * - (decimal) preparedValues.Repayment; - } + public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues, + SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn, + SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn) + { + for (var i = 7; i < Values.Length; i++) + Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] - + sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) - + sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) * + (decimal) preparedValues.Repayment; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/BaseSumWithVATColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/BaseSumWithVATColumn.cs index 0af215d..b84bcdb 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/BaseSumWithVATColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/BaseSumWithVATColumn.cs @@ -2,37 +2,36 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class BaseSumWithVATColumn : BaseColumnWithSum { - public class BaseSumWithVATColumn : BaseColumnWithSum + protected readonly Constants.Calculation _constants; + protected readonly PreparedValues _preparedValues; + protected SumColumn _sumColumn; + + protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues, + Constants.Calculation constants) : base(count) { - protected readonly Constants.Calculation _constants; - protected readonly PreparedValues _preparedValues; - protected SumColumn _sumColumn; + _sumColumn = sumColumn; + _preparedValues = preparedValues; + _constants = constants; + } - protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues, - Constants.Calculation constants) : base(count) - { - _sumColumn = sumColumn; - _preparedValues = preparedValues; - _constants = constants; - } + protected void FillValues() + { + Values[0] = 0; + Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0 + ? _preparedValues.FirstPaymentWithNdsAbs + : (decimal) (1 + _constants.VatValue) * _sumColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) + Values[i] = (decimal) (1 + _constants.VatValue) * _sumColumn.Values[i]; - protected void FillValues() - { - Values[0] = 0; - Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0 - ? _preparedValues.FirstPaymentWithNdsAbs - : (decimal) (1 + _constants.VatValue) * _sumColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = (decimal) (1 + _constants.VatValue) * _sumColumn.Values[i]; + Values[0] = Sum; + } - Values[0] = Sum; - } - - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT1.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT1.cs index fd45ba5..b2d5d33 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT1.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT1.cs @@ -1,17 +1,16 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns -{ - public class SumWithVATColumnVT1 : BaseSumWithVATColumn - { - public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues, - Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants) - { - } +namespace EvoCalculator.Core.Calculation.v1.Columns; - public void ComputeValues() - { - FillValues(); - } +public class SumWithVATColumnVT1 : BaseSumWithVATColumn +{ + public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues, + Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants) + { + } + + public void ComputeValues() + { + FillValues(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT2.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT2.cs index b5ae82c..c264424 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT2.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/SumWithVATColumn/SumWithVATColumnVT2.cs @@ -4,46 +4,45 @@ using EvoCalculator.Core.Base.Interfaces.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using TridentGoalSeek; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek { - public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek + private readonly PercentPaymentColumn _percentPaymentColumn; + private readonly PostValues.PostValues _postValues; + + public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues, + Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn, + PostValues.PostValues postValues) : base( + count, sumColumn, + preparedValues, constants) { - private readonly PercentPaymentColumn _percentPaymentColumn; - private readonly PostValues.PostValues _postValues; + _percentPaymentColumn = percentPaymentColumn; + _postValues = postValues; + } - public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues, - Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn, - PostValues.PostValues postValues) : base( - count, sumColumn, - preparedValues, constants) - { - _percentPaymentColumn = percentPaymentColumn; - _postValues = postValues; - } + public decimal Calculate(decimal inputVariable) + { + _sumColumn.ComputeValues(inputVariable); + FillValues(); + return Convert.ToDecimal(Sum); + } - public decimal Calculate(decimal inputVariable) - { - _sumColumn.ComputeValues(inputVariable); - FillValues(); - return Convert.ToDecimal(Sum); - } + public void ComputeValues(decimal requiredValue) + { + var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values + .Skip(2) + .Take(_percentPaymentColumn.Values.Length - 1) + .Where(x => x >= 10).ToArray().Length; - public void ComputeValues(decimal requiredValue) - { - var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values - .Skip(2) - .Take(_percentPaymentColumn.Values.Length - 1) - .Where(x => x >= 10).ToArray().Length; - - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: - (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS - , maximumAttempts: 1000 - , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper - // , focusPercentage: 50 - )); - } + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: + (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS + , maximumAttempts: 1000 + , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/TLMExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/TLMExpensesColumn.cs index 9b5bc90..3754a5e 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/TLMExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/TLMExpensesColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class TLMExpensesColumn : BaseColumnWithSum { - public class TLMExpensesColumn : BaseColumnWithSum + public TLMExpensesColumn(int count) : base(count) { - public TLMExpensesColumn(int count) : base(count) - { - } + } - 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; + 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; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/TLM_GrColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/TLM_GrColumn.cs index bc924a0..e243ae8 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/TLM_GrColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/TLM_GrColumn.cs @@ -2,24 +2,23 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class TLM_GrColumn : BaseColumnWithXNPV { - public class TLM_GrColumn : BaseColumnWithXNPV + public TLM_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate) { - public TLM_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) - { - for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; + public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) + { + for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; - Values[0] = -XNPV; - } + Values[0] = -XNPV; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/TaxColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/TaxColumn.cs index f585d85..58cf270 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/TaxColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/TaxColumn.cs @@ -1,38 +1,37 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class TaxColumn : BaseColumnWithSum { - public class TaxColumn : BaseColumnWithSum + public TaxColumn(int count) : base(count) { - public TaxColumn(int count) : base(count) - { - } + } - public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, - AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn, - RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn, - ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn, - NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, - InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn, - GPSExpensesColumn gpsExpensesColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i) - - acceptInsuranceColumn.GetValue(i) - - deprecationColumn.GetValue(i) - + ratExpensesColumn.GetValue(i) - + registrExpensesColumn.GetValue(i) - + comissionBonusExpensesColumn.GetValue(i) - + transExpensesColumn.GetValue(i) - + npvBonusExpensesColumn.GetValue(i) - + agentComissionExpensesColumn.GetValue(i) - + insuranceBonusExpensesColumn.GetValue(i) - + tlmExpensesColumn.GetValue(i) - + gpsExpensesColumn.GetValue(i) - ); + public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, + AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn, + RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn, + ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn, + NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, + InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn, + GPSExpensesColumn gpsExpensesColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i) + - acceptInsuranceColumn.GetValue(i) + - deprecationColumn.GetValue(i) + + ratExpensesColumn.GetValue(i) + + registrExpensesColumn.GetValue(i) + + comissionBonusExpensesColumn.GetValue(i) + + transExpensesColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + + insuranceBonusExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i) + ); - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/TransExpensesColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/TransExpensesColumn.cs index 400edb1..c0c775c 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/TransExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/TransExpensesColumn.cs @@ -2,22 +2,21 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class TransExpensesColumn : BaseColumnWithSum { - public class TransExpensesColumn : BaseColumnWithSum + public TransExpensesColumn(int count) : base(count) { - public TransExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues) - { - for (var i = 0; i < Values.Length; i += 12) - if (i > 0) - Values[i] = -preparedValues.TransportTaxGrYear; + public void ComputeValues(PreparedValues preparedValues) + { + 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] = Sum; - } + Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x)); + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Columns/VATColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/VATColumn.cs index d1c55b4..39edcf7 100644 --- a/EvoCalculator.Core.Calculation/v1/Columns/VATColumn.cs +++ b/EvoCalculator.Core.Calculation/v1/Columns/VATColumn.cs @@ -2,28 +2,27 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v1.Columns +namespace EvoCalculator.Core.Calculation.v1.Columns; + +public class VATColumn : BaseColumnWithSum { - public class VATColumn : BaseColumnWithSum + public VATColumn(int count) : base(count) { - public VATColumn(int count) : base(count) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues) - { - Values[0] = 0; - Values[1] = preparedValues.FirstPaymentNdsAbs > 0 - ? preparedValues.FirstPaymentNdsAbs - : (decimal) constants.VatValue * sumColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i]; + public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues) + { + Values[0] = 0; + Values[1] = preparedValues.FirstPaymentNdsAbs > 0 + ? preparedValues.FirstPaymentNdsAbs + : (decimal) constants.VatValue * sumColumn.Values[1]; + for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i]; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs b/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs index c637569..48a7aad 100644 --- a/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs +++ b/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs @@ -5,317 +5,316 @@ using EvoCalculator.Core.Models.Calculation.Models.Manager; using EvoCalculator.Core.Models.Calculation.Models.Request; using EvoCalculator.Core.Tools.Validation; -namespace EvoCalculator.Core.Calculation.v1.Managers +namespace EvoCalculator.Core.Calculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) { - public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) + var preparedValues = requestCalculation.preparedValues; + var preparedPayments = requestCalculation.preparedPayments; + var additionalData = requestCalculation.additionalData; + + var validationErrors = new Validation().ValidatePreparedValues(preparedValues); + if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + + var constants = new Constants.Calculation(); + + var postValues = new PostValues.PostValues(); + + + var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation + ? preparedValues.Nmper + 1 + : preparedValues.NmperDeprecation + 2; + + try { - var preparedValues = requestCalculation.preparedValues; - var preparedPayments = requestCalculation.preparedPayments; - var additionalData = requestCalculation.additionalData; + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, constants); - var validationErrors = new Validation().ValidatePreparedValues(preparedValues); - if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + var dateTempColumn = new DateTempColumn(maxColumnLength); + dateTempColumn.ComputeValues(preparedValues); - var constants = new Constants.Calculation(); + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var postValues = new PostValues.PostValues(); + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, constants); + kaskoNmperGrColumn.PostCheck(); + + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + tlmGrColumn.PostCheck(); - var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation - ? preparedValues.Nmper + 1 - : preparedValues.NmperDeprecation + 2; + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + gpsGrColumn.PostCheck(); - try + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); + + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); + + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); + nsibBruttoGrColumn.ComputeValues(preparedValues); + + var sumColumn = new SumColumn( + preparedValues.Nmper + 1 + , dateColumn + , preparedValues + , percentPaymentColumn + , postValues + , nsibBruttoGrColumn); + + var sumWithVatColumn = + new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants, + percentPaymentColumn, postValues); + sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected)); + sumWithVatColumn.PostCheck(); + sumColumn.PostCheck(); + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); + negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); + + var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn); + cashflowMsfoColumn.ComputeValues(); + cashflowMsfoColumn.PostCheck(additionalData); + + var vatColumn = new VATColumn(preparedValues.Nmper + 1); + vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); + vatColumn.PostCheck(); + + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); + acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); + + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); + acceptKaskoColumn.ComputeValues(preparedValues); + + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); + acceptOsagoColumn.ComputeValues(preparedValues); + + var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); + acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); + deprecationLdColumn.ComputeValues(preparedValues); + + var deprecationColumn = new DeprecationColumn(maxColumnLength); + deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); + + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); + + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); + + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); + + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); + + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); + + var taxColumn = new TaxColumn(maxColumnLength); + taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + ratExpensesColumn, + registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn); + + var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn); + + var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn); + + var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); + cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, + ratExpensesColumn, + transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn); + + var npvWeightColumn = new NPVWeightColumn(maxColumnLength); + npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); + + var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); + npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); + + var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); + irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); + + var niColumn = new NIColumn(preparedValues.Nmper + 1); + niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); + + var interestColumn = new InterestColumn(preparedValues.Nmper + 1); + interestColumn.ComputeValues(irrGrColumn, niColumn); + interestColumn.PostCheck(sumColumn); + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn); + + if (nsibBruttoGrColumn.Sum != 0) + cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); + + var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); + revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); + + var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); + sumCurrentColumn.ComputeValues(sumWithVatColumn); + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); + sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); + sumCurrentInterestColumn.ComputeValues(interestColumn); + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); + sumCurrentTlmColumn.ComputeValues(tlmGrColumn); + + var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); + sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, + sumCurrentInterestColumn, sumCurrentTlmColumn); + sumRepaymentColumn.PostCheck(); + + var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); + extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); + + var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); + + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); + cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); + + var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); + npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); + + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); + + var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); + + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); + cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); + + var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); + npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); + + postValues.PriceUP.ComputeValue(preparedValues, sumColumn); + postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); + postValues.NPVNI.ComputeValue(preparedValues, npvColumn); + postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); + + + return new ManagerResult { - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, constants); - - var dateTempColumn = new DateTempColumn(maxColumnLength); - dateTempColumn.ComputeValues(preparedValues); - - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); - - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, constants); - kaskoNmperGrColumn.PostCheck(); - - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - tlmGrColumn.PostCheck(); - - - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - gpsGrColumn.PostCheck(); - - var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); - kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); - - postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); - - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); - nsibBruttoGrColumn.ComputeValues(preparedValues); - - var sumColumn = new SumColumn( - preparedValues.Nmper + 1 - , dateColumn - , preparedValues - , percentPaymentColumn - , postValues - , nsibBruttoGrColumn); - - var sumWithVatColumn = - new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants, - percentPaymentColumn, postValues); - sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected)); - sumWithVatColumn.PostCheck(); - sumColumn.PostCheck(); - - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); - negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - - var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn); - cashflowMsfoColumn.ComputeValues(); - cashflowMsfoColumn.PostCheck(additionalData); - - var vatColumn = new VATColumn(preparedValues.Nmper + 1); - vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); - vatColumn.PostCheck(); - - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); - acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); - - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); - acceptKaskoColumn.ComputeValues(preparedValues); - - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); - acceptOsagoColumn.ComputeValues(preparedValues); - - var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); - acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); - deprecationLdColumn.ComputeValues(preparedValues); - - var deprecationColumn = new DeprecationColumn(maxColumnLength); - deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); - - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); - ratExpensesColumn.ComputeValues(preparedValues); - - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); - - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); - tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); - gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); - registrExpensesColumn.ComputeValues(preparedValues); - - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); - - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); - comissionBonusExpensesColumn.ComputeValues(preparedValues); - - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); - - var taxColumn = new TaxColumn(maxColumnLength); - taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + PostValues = postValues.GetValues(), + PreparedValues = preparedValues, + Columns = new + { + dateColumn, + dateTempColumn, + percentPaymentColumn, + kaskoNmperGrColumn, + tlmGrColumn, + gpsGrColumn, + sumColumn, + vatColumn, + sumWithVatColumn, + acceptSumColumn, + acceptKaskoColumn, + acceptOsagoColumn, + acceptInsuranceColumn, + deprecationLpColumn, + deprecationLdColumn, + deprecationColumn, + npvBonusExpensesColumn, + kaskoBonusGrSumColumn, + agentComissionExpensesColumn, ratExpensesColumn, - registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn); - - var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn); - - var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + transExprensesColumn, + nsibExpensesColumn, + tlmExpensesColumn, + gpsExpensesColumn, + registrExpensesColumn, + insuranceBonusExpensesColumn, + comissionBonusExpensesColumn, + expensesColumn, + negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn); - - var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); - cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, - ratExpensesColumn, - transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn); - - var npvWeightColumn = new NPVWeightColumn(maxColumnLength); - npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - - var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); - npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); - - var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); - irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); - - var niColumn = new NIColumn(preparedValues.Nmper + 1); - niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); - - var interestColumn = new InterestColumn(preparedValues.Nmper + 1); - interestColumn.ComputeValues(irrGrColumn, niColumn); - interestColumn.PostCheck(sumColumn); - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn); - - if (nsibBruttoGrColumn.Sum != 0) - cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - - var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); - revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - - var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); - sumCurrentColumn.ComputeValues(sumWithVatColumn); - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); - sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); - sumCurrentInterestColumn.ComputeValues(interestColumn); - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); - sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - - var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); - sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, - sumCurrentInterestColumn, sumCurrentTlmColumn); - sumRepaymentColumn.PostCheck(); - - var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); - extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); - - var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); - - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); - cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); - - var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); - npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); - - var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); - - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); - cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); - - var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); - npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); - - postValues.PriceUP.ComputeValue(preparedValues, sumColumn); - postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); - postValues.NPVNI.ComputeValue(preparedValues, npvColumn); - postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); - - - return new ManagerResult - { - PostValues = postValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - dateColumn, - dateTempColumn, - percentPaymentColumn, - kaskoNmperGrColumn, - tlmGrColumn, - gpsGrColumn, - sumColumn, - vatColumn, - sumWithVatColumn, - acceptSumColumn, - acceptKaskoColumn, - acceptOsagoColumn, - acceptInsuranceColumn, - deprecationLpColumn, - deprecationLdColumn, - deprecationColumn, - npvBonusExpensesColumn, - kaskoBonusGrSumColumn, - agentComissionExpensesColumn, - ratExpensesColumn, - transExprensesColumn, - nsibExpensesColumn, - tlmExpensesColumn, - gpsExpensesColumn, - registrExpensesColumn, - insuranceBonusExpensesColumn, - comissionBonusExpensesColumn, - expensesColumn, - negativeCashflowColumn, - nsibBruttoGrColumn, - taxColumn, - cashflowColumn, - cashflowLeasingColumn, - cashflowMsfoColumn, - cashflowNpvColumn, - npvWeightColumn, - npvColumn, - irrGrColumn, - niColumn, - interestColumn, - cashflowNsibColumn, - revenueColumn, - sumCurrentColumn, - sumCurrentNegativeColumn, - sumCurrentInterestColumn, - sumCurrentTlmColumn, - sumRepaymentColumn, - extraBonusSumColumn, - cashflowMsfoFinalColumn, - cashflowNpvFinalColumn, - npvFinalColumn, - directorBonusSumColumn, - cashflowMsfoFinal2Column, - cashflowNpvFinal2Column, - npvFinal2Column - } - }; - } - catch (Exception ex) + taxColumn, + cashflowColumn, + cashflowLeasingColumn, + cashflowMsfoColumn, + cashflowNpvColumn, + npvWeightColumn, + npvColumn, + irrGrColumn, + niColumn, + interestColumn, + cashflowNsibColumn, + revenueColumn, + sumCurrentColumn, + sumCurrentNegativeColumn, + sumCurrentInterestColumn, + sumCurrentTlmColumn, + sumRepaymentColumn, + extraBonusSumColumn, + cashflowMsfoFinalColumn, + cashflowNpvFinalColumn, + npvFinalColumn, + directorBonusSumColumn, + cashflowMsfoFinal2Column, + cashflowNpvFinal2Column, + npvFinal2Column + } + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs b/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs index be1b2e3..ceae4a2 100644 --- a/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs +++ b/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs @@ -5,317 +5,316 @@ using EvoCalculator.Core.Models.Calculation.Models.Manager; using EvoCalculator.Core.Models.Calculation.Models.Request; using EvoCalculator.Core.Tools.Validation; -namespace EvoCalculator.Core.Calculation.v1.Managers +namespace EvoCalculator.Core.Calculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) { - public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) + var preparedValues = requestCalculation.preparedValues; + var preparedPayments = requestCalculation.preparedPayments; + var additionalData = requestCalculation.additionalData; + + var validationErrors = new Validation().ValidatePreparedValues(preparedValues); + + if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + + var constants = new Constants.Calculation(); + + var postValues = new PostValues.PostValues(); + + + var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation + ? preparedValues.Nmper + 1 + : preparedValues.NmperDeprecation + 2; + + try { - var preparedValues = requestCalculation.preparedValues; - var preparedPayments = requestCalculation.preparedPayments; - var additionalData = requestCalculation.additionalData; + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, constants); - var validationErrors = new Validation().ValidatePreparedValues(preparedValues); + var dateTempColumn = new DateTempColumn(maxColumnLength); + dateTempColumn.ComputeValues(preparedValues); - if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var constants = new Constants.Calculation(); + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, constants); + kaskoNmperGrColumn.PostCheck(); - var postValues = new PostValues.PostValues(); + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + tlmGrColumn.PostCheck(); - var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation - ? preparedValues.Nmper + 1 - : preparedValues.NmperDeprecation + 2; + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + gpsGrColumn.PostCheck(); - try + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); + + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); + negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); + + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); + nsibBruttoGrColumn.ComputeValues(preparedValues); + + var sumColumn = new SumColumn( + preparedValues.Nmper + 1 + , dateColumn + , preparedValues + , percentPaymentColumn + , postValues + , nsibBruttoGrColumn); + + var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn); + cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected)); + cashflowMsfoColumn.PostCheck(additionalData); + sumColumn.PostCheck(); + + var vatColumn = new VATColumn(preparedValues.Nmper + 1); + vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); + vatColumn.PostCheck(); + + var sumWithVatColumn = + new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants); + sumWithVatColumn.ComputeValues(); + sumWithVatColumn.PostCheck(); + + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); + acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); + + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); + acceptKaskoColumn.ComputeValues(preparedValues); + + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); + acceptOsagoColumn.ComputeValues(preparedValues); + + var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); + acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); + deprecationLdColumn.ComputeValues(preparedValues); + + var deprecationColumn = new DeprecationColumn(maxColumnLength); + deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); + + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); + + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); + + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); + + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); + + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); + + var taxColumn = new TaxColumn(maxColumnLength); + taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + ratExpensesColumn, + registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn); + + var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn); + + var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn); + + var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); + cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, + ratExpensesColumn, + transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn); + + var npvWeightColumn = new NPVWeightColumn(maxColumnLength); + npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); + + var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); + npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); + + var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); + irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); + + var niColumn = new NIColumn(preparedValues.Nmper + 1); + niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); + + var interestColumn = new InterestColumn(preparedValues.Nmper + 1); + interestColumn.ComputeValues(irrGrColumn, niColumn); + interestColumn.PostCheck(sumColumn); + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn); + + if (nsibBruttoGrColumn.Sum != 0) + cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); + + var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); + revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); + + var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); + sumCurrentColumn.ComputeValues(sumWithVatColumn); + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); + sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); + sumCurrentInterestColumn.ComputeValues(interestColumn); + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); + sumCurrentTlmColumn.ComputeValues(tlmGrColumn); + + var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); + sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, + sumCurrentInterestColumn, sumCurrentTlmColumn); + sumRepaymentColumn.PostCheck(); + + var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); + extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); + + var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); + + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); + cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); + + var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); + npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); + + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); + + var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); + + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); + cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); + + var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); + npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); + + postValues.PriceUP.ComputeValue(preparedValues, sumColumn); + postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); + postValues.NPVNI.ComputeValue(preparedValues, npvColumn); + postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); + + + return new ManagerResult { - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, constants); - - var dateTempColumn = new DateTempColumn(maxColumnLength); - dateTempColumn.ComputeValues(preparedValues); - - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); - - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, constants); - kaskoNmperGrColumn.PostCheck(); - - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - tlmGrColumn.PostCheck(); - - - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - gpsGrColumn.PostCheck(); - - var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); - kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); - - postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); - - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); - negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); - nsibBruttoGrColumn.ComputeValues(preparedValues); - - var sumColumn = new SumColumn( - preparedValues.Nmper + 1 - , dateColumn - , preparedValues - , percentPaymentColumn - , postValues - , nsibBruttoGrColumn); - - var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn); - cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected)); - cashflowMsfoColumn.PostCheck(additionalData); - sumColumn.PostCheck(); - - var vatColumn = new VATColumn(preparedValues.Nmper + 1); - vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); - vatColumn.PostCheck(); - - var sumWithVatColumn = - new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants); - sumWithVatColumn.ComputeValues(); - sumWithVatColumn.PostCheck(); - - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); - acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); - - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); - acceptKaskoColumn.ComputeValues(preparedValues); - - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); - acceptOsagoColumn.ComputeValues(preparedValues); - - var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); - acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); - deprecationLdColumn.ComputeValues(preparedValues); - - var deprecationColumn = new DeprecationColumn(maxColumnLength); - deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); - - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); - ratExpensesColumn.ComputeValues(preparedValues); - - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); - - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); - tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); - gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); - registrExpensesColumn.ComputeValues(preparedValues); - - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); - - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); - comissionBonusExpensesColumn.ComputeValues(preparedValues); - - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); - - var taxColumn = new TaxColumn(maxColumnLength); - taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + PostValues = postValues.GetValues(), + PreparedValues = preparedValues, + Columns = new + { + dateColumn, + dateTempColumn, + percentPaymentColumn, + kaskoNmperGrColumn, + tlmGrColumn, + gpsGrColumn, + sumColumn, + vatColumn, + sumWithVatColumn, + acceptSumColumn, + acceptKaskoColumn, + acceptOsagoColumn, + acceptInsuranceColumn, + deprecationLpColumn, + deprecationLdColumn, + deprecationColumn, + npvBonusExpensesColumn, + kaskoBonusGrSumColumn, + agentComissionExpensesColumn, ratExpensesColumn, - registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn); - - var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn); - - var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + transExprensesColumn, + nsibExpensesColumn, + tlmExpensesColumn, + gpsExpensesColumn, + registrExpensesColumn, + insuranceBonusExpensesColumn, + comissionBonusExpensesColumn, + expensesColumn, + negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn); - - var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); - cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, - ratExpensesColumn, - transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn); - - var npvWeightColumn = new NPVWeightColumn(maxColumnLength); - npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - - var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); - npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); - - var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); - irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); - - var niColumn = new NIColumn(preparedValues.Nmper + 1); - niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); - - var interestColumn = new InterestColumn(preparedValues.Nmper + 1); - interestColumn.ComputeValues(irrGrColumn, niColumn); - interestColumn.PostCheck(sumColumn); - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn); - - if (nsibBruttoGrColumn.Sum != 0) - cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - - var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); - revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - - var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); - sumCurrentColumn.ComputeValues(sumWithVatColumn); - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); - sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); - sumCurrentInterestColumn.ComputeValues(interestColumn); - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); - sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - - var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); - sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, - sumCurrentInterestColumn, sumCurrentTlmColumn); - sumRepaymentColumn.PostCheck(); - - var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); - extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); - - var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); - - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); - cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); - - var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); - npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); - - var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); - - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); - cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); - - var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); - npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); - - postValues.PriceUP.ComputeValue(preparedValues, sumColumn); - postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); - postValues.NPVNI.ComputeValue(preparedValues, npvColumn); - postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); - - - return new ManagerResult - { - PostValues = postValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - dateColumn, - dateTempColumn, - percentPaymentColumn, - kaskoNmperGrColumn, - tlmGrColumn, - gpsGrColumn, - sumColumn, - vatColumn, - sumWithVatColumn, - acceptSumColumn, - acceptKaskoColumn, - acceptOsagoColumn, - acceptInsuranceColumn, - deprecationLpColumn, - deprecationLdColumn, - deprecationColumn, - npvBonusExpensesColumn, - kaskoBonusGrSumColumn, - agentComissionExpensesColumn, - ratExpensesColumn, - transExprensesColumn, - nsibExpensesColumn, - tlmExpensesColumn, - gpsExpensesColumn, - registrExpensesColumn, - insuranceBonusExpensesColumn, - comissionBonusExpensesColumn, - expensesColumn, - negativeCashflowColumn, - nsibBruttoGrColumn, - taxColumn, - cashflowColumn, - cashflowLeasingColumn, - cashflowMsfoColumn, - cashflowNpvColumn, - npvWeightColumn, - npvColumn, - irrGrColumn, - niColumn, - interestColumn, - cashflowNsibColumn, - revenueColumn, - sumCurrentColumn, - sumCurrentNegativeColumn, - sumCurrentInterestColumn, - sumCurrentTlmColumn, - sumRepaymentColumn, - extraBonusSumColumn, - cashflowMsfoFinalColumn, - cashflowNpvFinalColumn, - npvFinalColumn, - directorBonusSumColumn, - cashflowMsfoFinal2Column, - cashflowNpvFinal2Column, - npvFinal2Column - } - }; - } - catch (Exception ex) + taxColumn, + cashflowColumn, + cashflowLeasingColumn, + cashflowMsfoColumn, + cashflowNpvColumn, + npvWeightColumn, + npvColumn, + irrGrColumn, + niColumn, + interestColumn, + cashflowNsibColumn, + revenueColumn, + sumCurrentColumn, + sumCurrentNegativeColumn, + sumCurrentInterestColumn, + sumCurrentTlmColumn, + sumRepaymentColumn, + extraBonusSumColumn, + cashflowMsfoFinalColumn, + cashflowNpvFinalColumn, + npvFinalColumn, + directorBonusSumColumn, + cashflowMsfoFinal2Column, + cashflowNpvFinal2Column, + npvFinal2Column + } + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/BaseCost.cs b/EvoCalculator.Core.Calculation/v1/PostValues/BaseCost.cs index bbef91d..beebb49 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/BaseCost.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/BaseCost.cs @@ -3,18 +3,17 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class BaseCost : BasePostValue { - public class BaseCost : BasePostValue + public void ComputeValue(PreparedValues preparedValues, BaseColumn kaskoNmperGrColumn, + BaseColumn tlmGrColumn, BaseColumn gpsGrColumn) { - public void ComputeValue(PreparedValues preparedValues, BaseColumn kaskoNmperGrColumn, - BaseColumn tlmGrColumn, BaseColumn gpsGrColumn) - { - Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0]) - + Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats + - preparedValues.Registration + preparedValues.TrackerCost + - preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K + - preparedValues.NsibBrutto; - } + Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0]) + + Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats + + preparedValues.Registration + preparedValues.TrackerCost + + preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K + + preparedValues.NsibBrutto; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/BonusBase.cs b/EvoCalculator.Core.Calculation/v1/PostValues/BonusBase.cs index 438ca82..38c0e46 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/BonusBase.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/BonusBase.cs @@ -3,14 +3,13 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class BonusBase : BasePostValue { - public class BonusBase : BasePostValue + public void ComputeValue(PreparedValues preparedValues, KaskoBonusGrSumColumn kaskoBonusGrSumColumn) { - public void ComputeValue(PreparedValues preparedValues, KaskoBonusGrSumColumn kaskoBonusGrSumColumn) - { - Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoBonusGrSumColumn.Values[0]) - - preparedValues.Discount - preparedValues.ComissionRub - preparedValues.FirstPaymentSum; - } + Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoBonusGrSumColumn.Values[0]) - + preparedValues.Discount - preparedValues.ComissionRub - preparedValues.FirstPaymentSum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/BonusResult.cs b/EvoCalculator.Core.Calculation/v1/PostValues/BonusResult.cs index e78aaf6..a0079dd 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/BonusResult.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/BonusResult.cs @@ -3,15 +3,14 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class BonusResult : BasePostValue { - public class BonusResult : BasePostValue + public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn) { - public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn) - { - Value = Math.Abs(npvBonusExpensesColumn.Values[0]) - - Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate / - (decimal) (1 + preparedValues.SalaryRate); - } + Value = Math.Abs(npvBonusExpensesColumn.Values[0]) - + Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate / + (decimal) (1 + preparedValues.SalaryRate); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/NPVNI.cs b/EvoCalculator.Core.Calculation/v1/PostValues/NPVNI.cs index 04af4b3..f7624cf 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/NPVNI.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/NPVNI.cs @@ -3,13 +3,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class NPVNI : BasePostValue { - public class NPVNI : BasePostValue + public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn) { - public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn) - { - Value = npvColumn.Values.Sum(x => (double) x) / (double) preparedValues.NpvBase; - } + Value = npvColumn.Values.Sum(x => (double) x) / (double) preparedValues.NpvBase; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/PostValues.cs b/EvoCalculator.Core.Calculation/v1/PostValues/PostValues.cs index 6245d25..ed1c097 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/PostValues.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/PostValues.cs @@ -1,41 +1,40 @@ -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class PostValues { - public class PostValues + public BaseCost BaseCost; + public BonusBase BonusBase; + public BonusResult BonusResult; + public NPVNI NPVNI; + public PriceUP PriceUP; + public PriceUP_PR PriceUP_PR; + public PriceUP_Year PriceUP_Year; + public PriceUP_Year_PR PriceUP_Year_PR; + + public PostValues() { - public BaseCost BaseCost; - public BonusBase BonusBase; - public BonusResult BonusResult; - public NPVNI NPVNI; - public PriceUP PriceUP; - public PriceUP_PR PriceUP_PR; - public PriceUP_Year PriceUP_Year; - public PriceUP_Year_PR PriceUP_Year_PR; + BaseCost = new BaseCost(); + BonusBase = new BonusBase(); + PriceUP = new PriceUP(); + PriceUP_PR = new PriceUP_PR(); + PriceUP_Year = new PriceUP_Year(); + PriceUP_Year_PR = new PriceUP_Year_PR(); + NPVNI = new NPVNI(); + BonusResult = new BonusResult(); + } - public PostValues() + public virtual object GetValues() + { + return new { - BaseCost = new BaseCost(); - BonusBase = new BonusBase(); - PriceUP = new PriceUP(); - PriceUP_PR = new PriceUP_PR(); - PriceUP_Year = new PriceUP_Year(); - PriceUP_Year_PR = new PriceUP_Year_PR(); - NPVNI = new NPVNI(); - BonusResult = new BonusResult(); - } - - public virtual object GetValues() - { - return new - { - BaseCost = BaseCost.Value, - BonusBase = BonusBase.Value, - PriceUP = PriceUP.Value, - PriceUP_PR = PriceUP_PR.Value, - PriceUP_Year = PriceUP_Year.Value, - PriceUP_Year_PR = PriceUP_Year_PR.Value, - NPVNI = NPVNI.Value, - BonusResult = BonusResult.Value - }; - } + BaseCost = BaseCost.Value, + BonusBase = BonusBase.Value, + PriceUP = PriceUP.Value, + PriceUP_PR = PriceUP_PR.Value, + PriceUP_Year = PriceUP_Year.Value, + PriceUP_Year_PR = PriceUP_Year_PR.Value, + NPVNI = NPVNI.Value, + BonusResult = BonusResult.Value + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP.cs b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP.cs index 42e6715..57bbd30 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP.cs @@ -3,13 +3,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class PriceUP : BasePostValue { - public class PriceUP : BasePostValue + public void ComputeValue(PreparedValues preparedValues, SumColumn sumColumn) { - public void ComputeValue(PreparedValues preparedValues, SumColumn sumColumn) - { - Value = sumColumn.Values.Skip(1).Sum(x => x) - preparedValues.PriceUpTotal; - } + Value = sumColumn.Values.Skip(1).Sum(x => x) - preparedValues.PriceUpTotal; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs index 3e7840a..0029cb9 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs @@ -1,13 +1,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class PriceUP_PR : BasePostValue { - public class PriceUP_PR : BasePostValue + public void ComputeValue(PreparedValues preparedValues, PostValues postValues) { - public void ComputeValue(PreparedValues preparedValues, PostValues postValues) - { - Value = (double) postValues.PriceUP.Value / (double) preparedValues.PriceUpTotal; - } + Value = (double) postValues.PriceUP.Value / (double) preparedValues.PriceUpTotal; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year.cs b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year.cs index 4c1d98f..3f1188f 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year.cs @@ -1,13 +1,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class PriceUP_Year : BasePostValue { - public class PriceUP_Year : BasePostValue + public void ComputeValue(PreparedValues preparedValues, PostValues postValues) { - public void ComputeValue(PreparedValues preparedValues, PostValues postValues) - { - Value = postValues.PriceUP.Value * 12 / preparedValues.Nmper; - } + Value = postValues.PriceUP.Value * 12 / preparedValues.Nmper; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year_PR.cs b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year_PR.cs index 40f6835..fa4ab3c 100644 --- a/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year_PR.cs +++ b/EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_Year_PR.cs @@ -1,13 +1,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v1.PostValues +namespace EvoCalculator.Core.Calculation.v1.PostValues; + +public class PriceUP_Year_PR : BasePostValue { - public class PriceUP_Year_PR : BasePostValue + public void ComputeValue(PreparedValues preparedValues, PostValues postValues) { - public void ComputeValue(PreparedValues preparedValues, PostValues postValues) - { - Value = (double) postValues.PriceUP_Year.Value / (double) preparedValues.PriceUpTotal; - } + Value = (double) postValues.PriceUP_Year.Value / (double) preparedValues.PriceUpTotal; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs index bfad8e3..b7c6806 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs @@ -2,21 +2,20 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class CashflowColumn : BaseColumnWithXIRR - { - public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) - Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + subsidyExpensesColumn.GetValue(i); - } +public class CashflowColumn : BaseColumnWithXIRR +{ + public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum; + for (var i = 2; i < Values.Length; i++) + Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + subsidyExpensesColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowLeasingColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowLeasingColumn.cs index 8030fbe..5af3971 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowLeasingColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowLeasingColumn.cs @@ -2,28 +2,27 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class CashflowLeasingColumn : BaseColumnWithXIRR - { - public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, - NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, - SubsidyExpensesColumn subsidyExpensesColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) - Values[i] = sumColumn.Values[i] - + negativeCashflowColumn.Values[i] - - nsibBruttoGrColumn.Values[i] - - tlmGrColumn.Values[i] - - gpsGrColumn.Values[i] - + subsidyExpensesColumn.GetValue(i); - } +public class CashflowLeasingColumn : BaseColumnWithXIRR +{ + public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, + NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, + SubsidyExpensesColumn subsidyExpensesColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum; + for (var i = 2; i < Values.Length; i++) + Values[i] = sumColumn.Values[i] + + negativeCashflowColumn.Values[i] + - nsibBruttoGrColumn.Values[i] + - tlmGrColumn.Values[i] + - gpsGrColumn.Values[i] + + subsidyExpensesColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs index e9fc1e9..e6cbb1e 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs @@ -2,39 +2,38 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn { - public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn + protected readonly SubsidyExpensesColumn _subsidyExpensesColumn; + + public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + BaseColumn tlmGrColumn, BaseColumn gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : + base(count, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, + tlmGrColumn, + gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) { - protected readonly SubsidyExpensesColumn _subsidyExpensesColumn; + _subsidyExpensesColumn = subsidyExpensesColumn; + } - public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - BaseColumn tlmGrColumn, BaseColumn gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : - base(count, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, - gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) - { - _subsidyExpensesColumn = subsidyExpensesColumn; - } - - protected override void FillValues() - { - Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum; - Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] + - _agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) - Values[i] = _sumColumn.Values[i] - + _negativeCashflowColumn.Values[i] - - _nsibBruttoGrColumn.Values[i] - - _tlmGrColumn.Values[i] - - _gpsGrColumn.Values[i] - + _npvBonusExpensesColumn.Values[i] - + _agentComissionExpensesColumn.Values[i] - + _subsidyExpensesColumn.Values[i]; - } + protected override void FillValues() + { + Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum; + Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] + + _agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum; + for (var i = 2; i < Values.Length; i++) + Values[i] = _sumColumn.Values[i] + + _negativeCashflowColumn.Values[i] + - _nsibBruttoGrColumn.Values[i] + - _tlmGrColumn.Values[i] + - _gpsGrColumn.Values[i] + + _npvBonusExpensesColumn.Values[i] + + _agentComissionExpensesColumn.Values[i] + + _subsidyExpensesColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs index 3ac3bef..e68a727 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT1.cs @@ -5,44 +5,43 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using TridentGoalSeek; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek { - public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek + public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : + base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn, + negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, subsidyExpensesColumn) { - public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : - base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn, - negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, subsidyExpensesColumn) - { - } + } - public decimal Calculate(decimal inputVariable) - { - _sumColumn.ComputeValues(inputVariable); - FillValues(); - return Convert.ToDecimal(Nominal); - } + public decimal Calculate(decimal inputVariable) + { + _sumColumn.ComputeValues(inputVariable); + FillValues(); + return Convert.ToDecimal(Nominal); + } - public void ComputeValues(decimal requiredValue) - { - var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values - .Skip(2) - .Take(_percentPaymentColumn.Values.Length - 1) - .Where(x => x >= 10).ToArray().Length; + public void ComputeValues(decimal requiredValue) + { + var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values + .Skip(2) + .Take(_percentPaymentColumn.Values.Length - 1) + .Where(x => x >= 10).ToArray().Length; - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: - (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS - , maximumAttempts: 1000 - , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper - // , focusPercentage: 50 - )); - } + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: + (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS + , maximumAttempts: 1000 + , initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs index cfc159c..ecad360 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/CashflowMSFOColumnVT2.cs @@ -1,24 +1,23 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn - { - public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, - PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, - NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, - TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : - base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn, - negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, subsidyExpensesColumn) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues() - { - FillValues(); - } +public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn +{ + public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues, + PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, + NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, + TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) : + base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn, + negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, subsidyExpensesColumn) + { + } + + public void ComputeValues() + { + FillValues(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CashflowNPVColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CashflowNPVColumn.cs index 9660d3f..85244a2 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowNPVColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowNPVColumn.cs @@ -2,39 +2,38 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class CashflowNPVColumn : BaseColumn { - public class CashflowNPVColumn : BaseColumn + public CashflowNPVColumn(int count) : base(count) { - public CashflowNPVColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, - NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, - TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn, - RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, - TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn, - SubsidyExpensesColumn subsidyExpensesColumn) - { - Values[0] = -preparedValues.AcquisitionExpenses; - Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) + - agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + - nsibExpensesColumn.GetValue(1) - - preparedValues.SubsidySum; + public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn, + NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn, + TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn, + RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, + TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn, + SubsidyExpensesColumn subsidyExpensesColumn) + { + Values[0] = -preparedValues.AcquisitionExpenses; + Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) + + agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + + nsibExpensesColumn.GetValue(1) - + preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) - Values[i] = sumColumn.GetValue(i) - + negativeCashflowColumn.GetValue(i) - + npvBonusExpensesColumn.GetValue(i) - + agentComissionExpensesColumn.GetValue(i) - + ratExpensesColumn.GetValue(i) - - taxColumn.GetValue(i) - + transExpensesColumn.GetValue(i) - + nsibExpensesColumn.GetValue(i) - + tlmExpensesColumn.GetValue(i) - + gpsExpensesColumn.GetValue(i) - + subsidyExpensesColumn.GetValue(i); - } + for (var i = 2; i < Values.Length; i++) + Values[i] = sumColumn.GetValue(i) + + negativeCashflowColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + + ratExpensesColumn.GetValue(i) + - taxColumn.GetValue(i) + + transExpensesColumn.GetValue(i) + + nsibExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i) + + subsidyExpensesColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs index 95a6d53..13f7a19 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs @@ -1,23 +1,22 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class CreditColumn : BaseColumnWithSum - { - public CreditColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn) - { - Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12; - for (var i = 2; i < Values.Length; i++) - if (GetValue(i - 1) < 0) - Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12; - else - Values[i] = 0; - Values[0] = Sum; - } +public class CreditColumn : BaseColumnWithSum +{ + public CreditColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn) + { + Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12; + for (var i = 2; i < Values.Length; i++) + if (GetValue(i - 1) < 0) + Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12; + else + Values[i] = 0; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/DirectorBonusSumColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/DirectorBonusSumColumn.cs index 3faad67..823e7a9 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/DirectorBonusSumColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/DirectorBonusSumColumn.cs @@ -1,22 +1,21 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class DirectorBonusSumColumn : BaseColumnWithSum - { - public DirectorBonusSumColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) - { - Values[2] = -1 * (postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus * - (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate - + preparedValues.DirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate) + - preparedValues.RegionalDirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate)); - Values[0] = Sum; - } +public class DirectorBonusSumColumn : BaseColumnWithSum +{ + public DirectorBonusSumColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) + { + Values[2] = -1 * (postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus * + (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate + + preparedValues.DirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate) + + preparedValues.RegionalDirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate)); + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs index 880867d..dd084c3 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs @@ -1,38 +1,37 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Calculation.v1.Columns; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class ExpensesColumn : BaseColumnWithSum { - public class ExpensesColumn : BaseColumnWithSum + public ExpensesColumn(int count) : base(count) { - public ExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn, - RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, - NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn, - GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn, - InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, - ComissionBonusExpensesColumn comissionBonusExpensesColumn, - NPVBonusExpensesColumn npvBonusExpensesColumn, - SubsidyExpensesColumn subsidyExpensesColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = - agentComissionExpensesColumn.Values[i] - + ratExpensesColumn.Values[i] - + transExpensesColumn.Values[i] - + nsibExpensesColumn.Values[i] - + tlmExpensesColumn.Values[i] - + gpsExpensesColumn.Values[i] - + registrExpensesColumn.Values[i] - + insuranceBonusExpensesColumn.Values[i] - + comissionBonusExpensesColumn.Values[i] - + npvBonusExpensesColumn.Values[i] - + subsidyExpensesColumn.Values[i]; + public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn, + RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn, + NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn, + GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn, + InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, + ComissionBonusExpensesColumn comissionBonusExpensesColumn, + NPVBonusExpensesColumn npvBonusExpensesColumn, + SubsidyExpensesColumn subsidyExpensesColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = + agentComissionExpensesColumn.Values[i] + + ratExpensesColumn.Values[i] + + transExpensesColumn.Values[i] + + nsibExpensesColumn.Values[i] + + tlmExpensesColumn.Values[i] + + gpsExpensesColumn.Values[i] + + registrExpensesColumn.Values[i] + + insuranceBonusExpensesColumn.Values[i] + + comissionBonusExpensesColumn.Values[i] + + npvBonusExpensesColumn.Values[i] + + subsidyExpensesColumn.Values[i]; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs index 53d5abe..a95e7b5 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs @@ -2,24 +2,23 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class GPS_GrColumn : BaseColumnWithSum { - public class GPS_GrColumn : BaseColumnWithSum + public GPS_GrColumn(int count) : base(count) { - public GPS_GrColumn(int count) : base(count) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) - { - for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment; + public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) + { + for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment; - Values[0] = -Sum; - } + Values[0] = -Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/KaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/KaskoNmperGrColumn.cs index 31eec09..dda0e9a 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/KaskoNmperGrColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/KaskoNmperGrColumn.cs @@ -2,38 +2,37 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class KaskoNmperGrColumn : BaseColumnWithSum { - public class KaskoNmperGrColumn : BaseColumnWithSum + public KaskoNmperGrColumn(int count) : base(count) { - public KaskoNmperGrColumn(int count) : base(count) + } + + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } + + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) + { + if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) { + Values[1] = preparedValues.InsuranceKasko; + } + else + { + var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod + ? preparedValues.InsuranceKasko / 12 + : preparedValues.InsuranceKasko / preparedValues.NmperInsurance; + for (var i = 1; i < preparedValues.NmperInsurance; i += 12) + if (i <= preparedValues.NmperInsurance) + Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod + ? InsuranceKaskoMonth * 12 + : InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1); } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } - - public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) - { - if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) - { - Values[1] = preparedValues.InsuranceKasko; - } - else - { - var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod - ? preparedValues.InsuranceKasko / 12 - : preparedValues.InsuranceKasko / preparedValues.NmperInsurance; - for (var i = 1; i < preparedValues.NmperInsurance; i += 12) - if (i <= preparedValues.NmperInsurance) - Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod - ? InsuranceKaskoMonth * 12 - : InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1); - } - - Values[0] = -Sum; - } + Values[0] = -Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/NPVBonusExpensesColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/NPVBonusExpensesColumn.cs index 2fa1fc9..5214ba1 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/NPVBonusExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/NPVBonusExpensesColumn.cs @@ -2,29 +2,28 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class NPVBonusExpensesColumn : BaseColumnWithSum { - public class NPVBonusExpensesColumn : BaseColumnWithSum + public NPVBonusExpensesColumn(int count) : base(count) { - public NPVBonusExpensesColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) - { - Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) * - (decimal) (1 + preparedValues.SalaryRate); + public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues) + { + Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) * + (decimal) (1 + preparedValues.SalaryRate); - Values[2] = preparedValues.BonusFix > 0 - ? -preparedValues.BonusFix - : -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) * - (decimal) (1 + preparedValues.SalaryRate) * - (decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; + Values[2] = preparedValues.BonusFix > 0 + ? -preparedValues.BonusFix + : -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) * + (decimal) (1 + preparedValues.SalaryRate) * + (decimal) preparedValues.MarketRate * (decimal) 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] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/SubsidyExpensesColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/SubsidyExpensesColumn.cs index a02adbb..17e64a4 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/SubsidyExpensesColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/SubsidyExpensesColumn.cs @@ -1,18 +1,17 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns -{ - public class SubsidyExpensesColumn : BaseColumnWithSum - { - public SubsidyExpensesColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.Calculation.v2.Columns; - public void ComputeValues(PreparedValues preparedValues) - { - Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum; - Values[0] = Sum; - } +public class SubsidyExpensesColumn : BaseColumnWithSum +{ + public SubsidyExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs index 028f2e0..0bf573e 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs @@ -3,25 +3,24 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class SumColumn : v1.Columns.SumColumn { - public class SumColumn : v1.Columns.SumColumn + public SumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + PercentPaymentColumn percentPaymentColumn, v1.PostValues.PostValues postValues, + BaseColumn nsibBruttoGrColumn) : base(count, dateTempColumn, preparedValues, percentPaymentColumn, + postValues, nsibBruttoGrColumn) { - public SumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - PercentPaymentColumn percentPaymentColumn, v1.PostValues.PostValues postValues, - BaseColumn nsibBruttoGrColumn) : base(count, dateTempColumn, preparedValues, percentPaymentColumn, - postValues, nsibBruttoGrColumn) - { - } + } - public override void ComputeValues(decimal x) - { - Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum; - Values[1] = _preparedValues.FirstPaymentSum; + public override void ComputeValues(decimal x) + { + Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum; + Values[1] = _preparedValues.FirstPaymentSum; - for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100; + for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100; - Values[^1] = _preparedValues.LastPaymentSum; - } + Values[^1] = _preparedValues.LastPaymentSum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs index fb56d5d..092eeff 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs @@ -1,25 +1,24 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class SumCreditColumn : BaseColumn { - public class SumCreditColumn : BaseColumn + public SumCreditColumn(int count) : base(count) { - public SumCreditColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues - , Constants.Calculation constants, SumColumn sumColumn) - { - Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue); - Values[2] = Values[1]; + public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues + , Constants.Calculation constants, SumColumn sumColumn) + { + Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue); + Values[2] = Values[1]; - for (var i = 3; i < Values.Length; i++) - if (GetValue(i - 1) > 0) - Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod; - else - Values[i] = 0; - } + for (var i = 3; i < Values.Length; i++) + if (GetValue(i - 1) > 0) + Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod; + else + Values[i] = 0; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs index 248c1c1..ae58bb8 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs @@ -2,24 +2,23 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class TLM_GrColumn : BaseColumnWithSum { - public class TLM_GrColumn : BaseColumnWithSum + public TLM_GrColumn(int count) : base(count) { - public TLM_GrColumn(int count) : base(count) - { - } + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); + } - public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) - { - for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; + public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) + { + for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment; - Values[0] = -Sum; - } + Values[0] = -Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs index be6cef3..87afae6 100644 --- a/EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs +++ b/EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs @@ -2,44 +2,43 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Calculation.v2.Columns +namespace EvoCalculator.Core.Calculation.v2.Columns; + +public class TaxColumn : BaseColumnWithSum { - public class TaxColumn : BaseColumnWithSum + public TaxColumn(int count) : base(count) { - public TaxColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn, - AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn, - RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn, - ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn, - NPVBonusExpensesColumn npvBonusExpensesColumn, - AgentComissionExpensesColumn agentComissionExpensesColumn, - InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn, - GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i) - - acceptInsuranceColumn.GetValue(i) - - deprecationColumn.GetValue(i) - + ratExpensesColumn.GetValue(i) - + registrExpensesColumn.GetValue(i) - + comissionBonusExpensesColumn.GetValue(i) - + transExpensesColumn.GetValue(i) - + npvBonusExpensesColumn.GetValue(i) - + agentComissionExpensesColumn.GetValue(i) - + insuranceBonusExpensesColumn.GetValue(i) - + tlmExpensesColumn.GetValue(i) - + gpsExpensesColumn.GetValue(i) - + subsidyExpensesColumn.GetValue(i) - - (i == 1 - ? preparedValues.SubsidySum - : 0) - ); + public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn, + AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn, + RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn, + ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn, + NPVBonusExpensesColumn npvBonusExpensesColumn, + AgentComissionExpensesColumn agentComissionExpensesColumn, + InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn, + GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i) + - acceptInsuranceColumn.GetValue(i) + - deprecationColumn.GetValue(i) + + ratExpensesColumn.GetValue(i) + + registrExpensesColumn.GetValue(i) + + comissionBonusExpensesColumn.GetValue(i) + + transExpensesColumn.GetValue(i) + + npvBonusExpensesColumn.GetValue(i) + + agentComissionExpensesColumn.GetValue(i) + + insuranceBonusExpensesColumn.GetValue(i) + + tlmExpensesColumn.GetValue(i) + + gpsExpensesColumn.GetValue(i) + + subsidyExpensesColumn.GetValue(i) + - (i == 1 + ? preparedValues.SubsidySum + : 0) + ); - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs index ebe1097..7a802d3 100644 --- a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs +++ b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs @@ -18,329 +18,328 @@ using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn; using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn; using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn; -namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation +namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) { - public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) + var preparedValues = requestCalculation.preparedValues; + var preparedPayments = requestCalculation.preparedPayments; + var additionalData = requestCalculation.additionalData; + + var validationErrors = new Validation().ValidatePreparedValues(preparedValues); + if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + + var constants = new Constants.Calculation(); + + var postValues = new PostValues.PostValues(); + + + var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation + ? preparedValues.Nmper + 1 + : preparedValues.NmperDeprecation + 2; + + try { - var preparedValues = requestCalculation.preparedValues; - var preparedPayments = requestCalculation.preparedPayments; - var additionalData = requestCalculation.additionalData; + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, constants); - var validationErrors = new Validation().ValidatePreparedValues(preparedValues); - if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + var dateTempColumn = new DateTempColumn(maxColumnLength); + dateTempColumn.ComputeValues(preparedValues); - var constants = new Constants.Calculation(); + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var postValues = new PostValues.PostValues(); + var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1); + kaskoNmperGrColumn.ComputeValues(preparedValues, constants); + kaskoNmperGrColumn.PostCheck(); + + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + tlmGrColumn.PostCheck(); - var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation - ? preparedValues.Nmper + 1 - : preparedValues.NmperDeprecation + 2; + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + gpsGrColumn.PostCheck(); - try + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); + + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); + + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); + nsibBruttoGrColumn.ComputeValues(preparedValues); + + var sumColumn = new SumColumn( + preparedValues.Nmper + 1 + , dateTempColumn + , preparedValues + , percentPaymentColumn + , postValues + , nsibBruttoGrColumn); + + var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); + subsidyExpensesColumn.ComputeValues(preparedValues); + + var sumWithVatColumn = + new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants, + percentPaymentColumn, postValues); + sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected)); + sumWithVatColumn.PostCheck(); + sumColumn.PostCheck(); + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); + negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); + + var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, + subsidyExpensesColumn); + cashflowMsfoColumn.ComputeValues(); + cashflowMsfoColumn.PostCheck(additionalData); + + var vatColumn = new VATColumn(preparedValues.Nmper + 1); + vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); + vatColumn.PostCheck(); + + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); + acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); + + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); + acceptKaskoColumn.ComputeValues(preparedValues); + + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); + acceptOsagoColumn.ComputeValues(preparedValues); + + var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); + acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); + deprecationLdColumn.ComputeValues(preparedValues); + + var deprecationColumn = new DeprecationColumn(maxColumnLength); + deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); + + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); + + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); + + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); + + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); + + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, + subsidyExpensesColumn); + + var taxColumn = new TaxColumn(maxColumnLength); + taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, + npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn, + tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn); + + var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn); + + var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn); + + var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); + cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, + ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn, + subsidyExpensesColumn); + + var npvWeightColumn = new NPVWeightColumn(maxColumnLength); + npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); + + var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); + npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); + + var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); + irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); + + var niColumn = new NIColumn(preparedValues.Nmper + 1); + niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); + + var interestColumn = new InterestColumn(preparedValues.Nmper + 1); + interestColumn.ComputeValues(irrGrColumn, niColumn); + interestColumn.PostCheck(sumColumn); + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn); + + if (nsibBruttoGrColumn.Sum != 0) + cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); + + var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); + revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); + + var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); + sumCurrentColumn.ComputeValues(sumWithVatColumn); + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); + sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); + sumCurrentInterestColumn.ComputeValues(interestColumn); + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); + sumCurrentTlmColumn.ComputeValues(tlmGrColumn); + + var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); + sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, + sumCurrentInterestColumn, sumCurrentTlmColumn); + sumRepaymentColumn.PostCheck(); + + var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); + extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); + + var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); + + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); + cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); + + var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); + npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); + + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); + + var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); + + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); + cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); + + var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); + npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); + + var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn); + + var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + creditColumn.ComputeValues(preparedValues, sumCreditColumn); + + postValues.PriceUP.ComputeValue(preparedValues, sumColumn); + postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); + postValues.NPVNI.ComputeValue(preparedValues, npvColumn); + postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); + postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn); + postValues.ContractEconomy.Validate(); + + + return new ManagerResult { - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, constants); - - var dateTempColumn = new DateTempColumn(maxColumnLength); - dateTempColumn.ComputeValues(preparedValues); - - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); - - var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1); - kaskoNmperGrColumn.ComputeValues(preparedValues, constants); - kaskoNmperGrColumn.PostCheck(); - - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - tlmGrColumn.PostCheck(); - - - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - gpsGrColumn.PostCheck(); - - var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); - kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); - - postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); - - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); - nsibBruttoGrColumn.ComputeValues(preparedValues); - - var sumColumn = new SumColumn( - preparedValues.Nmper + 1 - , dateTempColumn - , preparedValues - , percentPaymentColumn - , postValues - , nsibBruttoGrColumn); - - var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); - subsidyExpensesColumn.ComputeValues(preparedValues); - - var sumWithVatColumn = - new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants, - percentPaymentColumn, postValues); - sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected)); - sumWithVatColumn.PostCheck(); - sumColumn.PostCheck(); - - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); - negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - - var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, - subsidyExpensesColumn); - cashflowMsfoColumn.ComputeValues(); - cashflowMsfoColumn.PostCheck(additionalData); - - var vatColumn = new VATColumn(preparedValues.Nmper + 1); - vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); - vatColumn.PostCheck(); - - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); - acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); - - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); - acceptKaskoColumn.ComputeValues(preparedValues); - - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); - acceptOsagoColumn.ComputeValues(preparedValues); - - var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); - acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); - deprecationLdColumn.ComputeValues(preparedValues); - - var deprecationColumn = new DeprecationColumn(maxColumnLength); - deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); - - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); - ratExpensesColumn.ComputeValues(preparedValues); - - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); - - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); - tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); - gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); - registrExpensesColumn.ComputeValues(preparedValues); - - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); - - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); - comissionBonusExpensesColumn.ComputeValues(preparedValues); - - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, - subsidyExpensesColumn); - - var taxColumn = new TaxColumn(maxColumnLength); - taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn, - ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, - npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn, - tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn); - - var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn); - - var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, - nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn); - - var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); - cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, - ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn, - subsidyExpensesColumn); - - var npvWeightColumn = new NPVWeightColumn(maxColumnLength); - npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - - var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); - npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); - - var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); - irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); - - var niColumn = new NIColumn(preparedValues.Nmper + 1); - niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); - - var interestColumn = new InterestColumn(preparedValues.Nmper + 1); - interestColumn.ComputeValues(irrGrColumn, niColumn); - interestColumn.PostCheck(sumColumn); - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn); - - if (nsibBruttoGrColumn.Sum != 0) - cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - - var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); - revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - - var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); - sumCurrentColumn.ComputeValues(sumWithVatColumn); - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); - sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); - sumCurrentInterestColumn.ComputeValues(interestColumn); - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); - sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - - var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); - sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, - sumCurrentInterestColumn, sumCurrentTlmColumn); - sumRepaymentColumn.PostCheck(); - - var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); - extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); - - var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); - - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); - cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); - - var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); - npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); - - var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); - - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); - cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); - - var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); - npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); - - var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn); - - var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - creditColumn.ComputeValues(preparedValues, sumCreditColumn); - - postValues.PriceUP.ComputeValue(preparedValues, sumColumn); - postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); - postValues.NPVNI.ComputeValue(preparedValues, npvColumn); - postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); - postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn); - postValues.ContractEconomy.Validate(); - - - return new ManagerResult + PostValues = postValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - PostValues = postValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - dateColumn, - dateTempColumn, - percentPaymentColumn, - kaskoNmperGrColumn, - tlmGrColumn, - gpsGrColumn, - sumColumn, - vatColumn, - sumWithVatColumn, - acceptSumColumn, - acceptKaskoColumn, - acceptOsagoColumn, - acceptInsuranceColumn, - deprecationLpColumn, - deprecationLdColumn, - deprecationColumn, - npvBonusExpensesColumn, - kaskoBonusGrSumColumn, - agentComissionExpensesColumn, - ratExpensesColumn, - transExprensesColumn, - nsibExpensesColumn, - tlmExpensesColumn, - gpsExpensesColumn, - registrExpensesColumn, - insuranceBonusExpensesColumn, - comissionBonusExpensesColumn, - expensesColumn, - negativeCashflowColumn, - nsibBruttoGrColumn, - taxColumn, - cashflowColumn, - cashflowLeasingColumn, - cashflowMsfoColumn, - cashflowNpvColumn, - npvWeightColumn, - npvColumn, - irrGrColumn, - niColumn, - interestColumn, - cashflowNsibColumn, - revenueColumn, - sumCurrentColumn, - sumCurrentNegativeColumn, - sumCurrentInterestColumn, - sumCurrentTlmColumn, - sumRepaymentColumn, - extraBonusSumColumn, - cashflowMsfoFinalColumn, - cashflowNpvFinalColumn, - npvFinalColumn, - directorBonusSumColumn, - cashflowMsfoFinal2Column, - cashflowNpvFinal2Column, - npvFinal2Column, - sumCreditColumn, - creditColumn, - subsidyExpensesColumn - } - }; - } - catch (Exception ex) + dateColumn, + dateTempColumn, + percentPaymentColumn, + kaskoNmperGrColumn, + tlmGrColumn, + gpsGrColumn, + sumColumn, + vatColumn, + sumWithVatColumn, + acceptSumColumn, + acceptKaskoColumn, + acceptOsagoColumn, + acceptInsuranceColumn, + deprecationLpColumn, + deprecationLdColumn, + deprecationColumn, + npvBonusExpensesColumn, + kaskoBonusGrSumColumn, + agentComissionExpensesColumn, + ratExpensesColumn, + transExprensesColumn, + nsibExpensesColumn, + tlmExpensesColumn, + gpsExpensesColumn, + registrExpensesColumn, + insuranceBonusExpensesColumn, + comissionBonusExpensesColumn, + expensesColumn, + negativeCashflowColumn, + nsibBruttoGrColumn, + taxColumn, + cashflowColumn, + cashflowLeasingColumn, + cashflowMsfoColumn, + cashflowNpvColumn, + npvWeightColumn, + npvColumn, + irrGrColumn, + niColumn, + interestColumn, + cashflowNsibColumn, + revenueColumn, + sumCurrentColumn, + sumCurrentNegativeColumn, + sumCurrentInterestColumn, + sumCurrentTlmColumn, + sumRepaymentColumn, + extraBonusSumColumn, + cashflowMsfoFinalColumn, + cashflowNpvFinalColumn, + npvFinalColumn, + directorBonusSumColumn, + cashflowMsfoFinal2Column, + cashflowNpvFinal2Column, + npvFinal2Column, + sumCreditColumn, + creditColumn, + subsidyExpensesColumn + } + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs index c563bfc..8f640b6 100644 --- a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs +++ b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs @@ -18,328 +18,327 @@ using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn; using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn; using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn; -namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation +namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) { - public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) + var preparedValues = requestCalculation.preparedValues; + var preparedPayments = requestCalculation.preparedPayments; + var additionalData = requestCalculation.additionalData; + + var validationErrors = new Validation().ValidatePreparedValues(preparedValues); + if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + + var constants = new Constants.Calculation(); + + var postValues = new PostValues.PostValues(); + + + var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation + ? preparedValues.Nmper + 1 + : preparedValues.NmperDeprecation + 2; + + try { - var preparedValues = requestCalculation.preparedValues; - var preparedPayments = requestCalculation.preparedPayments; - var additionalData = requestCalculation.additionalData; + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, constants); - var validationErrors = new Validation().ValidatePreparedValues(preparedValues); - if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors}; + var dateTempColumn = new DateTempColumn(maxColumnLength); + dateTempColumn.ComputeValues(preparedValues); - var constants = new Constants.Calculation(); + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var postValues = new PostValues.PostValues(); + var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1); + kaskoNmperGrColumn.ComputeValues(preparedValues, constants); + kaskoNmperGrColumn.PostCheck(); + + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + tlmGrColumn.PostCheck(); - var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation - ? preparedValues.Nmper + 1 - : preparedValues.NmperDeprecation + 2; + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + gpsGrColumn.PostCheck(); - try + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); + + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); + + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); + negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); + + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); + nsibBruttoGrColumn.ComputeValues(preparedValues); + + var sumColumn = new SumColumn( + preparedValues.Nmper + 1 + , dateTempColumn + , preparedValues + , percentPaymentColumn + , postValues + , nsibBruttoGrColumn); + + var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); + subsidyExpensesColumn.ComputeValues(preparedValues); + + var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues, + preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, + tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, + subsidyExpensesColumn); + cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected)); + cashflowMsfoColumn.PostCheck(additionalData); + sumColumn.PostCheck(); + + var vatColumn = new VATColumn(preparedValues.Nmper + 1); + vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); + vatColumn.PostCheck(); + + var sumWithVatColumn = + new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants); + sumWithVatColumn.ComputeValues(); + sumWithVatColumn.PostCheck(); + + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); + acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); + + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); + acceptKaskoColumn.ComputeValues(preparedValues); + + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); + acceptOsagoColumn.ComputeValues(preparedValues); + + var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); + acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); + deprecationLdColumn.ComputeValues(preparedValues); + + var deprecationColumn = new DeprecationColumn(maxColumnLength); + deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); + + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); + + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); + + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); + + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); + + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); + + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, + subsidyExpensesColumn); + + var taxColumn = new TaxColumn(maxColumnLength); + taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn, + ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, + npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn, + tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn); + + var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn); + + var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, + nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn); + + var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); + cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, + agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, + ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn, + subsidyExpensesColumn); + + var npvWeightColumn = new NPVWeightColumn(maxColumnLength); + npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); + + var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); + npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); + + var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); + irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); + + var niColumn = new NIColumn(preparedValues.Nmper + 1); + niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); + + var interestColumn = new InterestColumn(preparedValues.Nmper + 1); + interestColumn.ComputeValues(irrGrColumn, niColumn); + interestColumn.PostCheck(sumColumn); + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn); + + if (nsibBruttoGrColumn.Sum != 0) + cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); + + var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); + revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); + + var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); + sumCurrentColumn.ComputeValues(sumWithVatColumn); + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); + sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); + sumCurrentInterestColumn.ComputeValues(interestColumn); + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); + sumCurrentTlmColumn.ComputeValues(tlmGrColumn); + + var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); + sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, + sumCurrentInterestColumn, sumCurrentTlmColumn); + sumRepaymentColumn.PostCheck(); + + var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); + extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); + + var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); + + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); + cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); + + var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); + npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); + + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); + + var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); + + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); + cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); + + var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); + npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); + + var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn); + + var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + creditColumn.ComputeValues(preparedValues, sumCreditColumn); + + postValues.PriceUP.ComputeValue(preparedValues, sumColumn); + postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); + postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); + postValues.NPVNI.ComputeValue(preparedValues, npvColumn); + postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); + postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn); + postValues.ContractEconomy.Validate(); + + + return new ManagerResult { - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, constants); - - var dateTempColumn = new DateTempColumn(maxColumnLength); - dateTempColumn.ComputeValues(preparedValues); - - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); - - var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1); - kaskoNmperGrColumn.ComputeValues(preparedValues, constants); - kaskoNmperGrColumn.PostCheck(); - - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - tlmGrColumn.PostCheck(); - - - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - gpsGrColumn.PostCheck(); - - var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); - kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); - - postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn); - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn); - - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); - negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); - nsibBruttoGrColumn.ComputeValues(preparedValues); - - var sumColumn = new SumColumn( - preparedValues.Nmper + 1 - , dateTempColumn - , preparedValues - , percentPaymentColumn - , postValues - , nsibBruttoGrColumn); - - var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); - subsidyExpensesColumn.ComputeValues(preparedValues); - - var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues, - preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, - tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn, - subsidyExpensesColumn); - cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected)); - cashflowMsfoColumn.PostCheck(additionalData); - sumColumn.PostCheck(); - - var vatColumn = new VATColumn(preparedValues.Nmper + 1); - vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues); - vatColumn.PostCheck(); - - var sumWithVatColumn = - new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants); - sumWithVatColumn.ComputeValues(); - sumWithVatColumn.PostCheck(); - - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1); - acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn); - - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); - acceptKaskoColumn.ComputeValues(preparedValues); - - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); - acceptOsagoColumn.ComputeValues(preparedValues); - - var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); - acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength); - deprecationLdColumn.ComputeValues(preparedValues); - - var deprecationColumn = new DeprecationColumn(maxColumnLength); - deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); - - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); - ratExpensesColumn.ComputeValues(preparedValues); - - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); - - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); - tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); - gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); - - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); - registrExpensesColumn.ComputeValues(preparedValues); - - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants); - - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); - comissionBonusExpensesColumn.ComputeValues(preparedValues); - - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, - subsidyExpensesColumn); - - var taxColumn = new TaxColumn(maxColumnLength); - taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn, - ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, - npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn, - tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn); - - var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn); - - var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, - nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn); - - var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength); - cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn, - agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, - ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn, - subsidyExpensesColumn); - - var npvWeightColumn = new NPVWeightColumn(maxColumnLength); - npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - - var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn); - npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); - - var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1); - irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); - - var niColumn = new NIColumn(preparedValues.Nmper + 1); - niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn); - - var interestColumn = new InterestColumn(preparedValues.Nmper + 1); - interestColumn.ComputeValues(irrGrColumn, niColumn); - interestColumn.PostCheck(sumColumn); - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn); - - if (nsibBruttoGrColumn.Sum != 0) - cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - - var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); - revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - - var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1); - sumCurrentColumn.ComputeValues(sumWithVatColumn); - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); - sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); - sumCurrentInterestColumn.ComputeValues(interestColumn); - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); - sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - - var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); - sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn, - sumCurrentInterestColumn, sumCurrentTlmColumn); - sumRepaymentColumn.PostCheck(); - - var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1); - extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues); - - var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn); - - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength); - cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn); - - var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn); - npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); - - var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn); - cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn); - - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength); - cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn); - - var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn); - npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); - - var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn); - - var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - creditColumn.ComputeValues(preparedValues, sumCreditColumn); - - postValues.PriceUP.ComputeValue(preparedValues, sumColumn); - postValues.PriceUP_PR.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year.ComputeValue(preparedValues, postValues); - postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues); - postValues.NPVNI.ComputeValue(preparedValues, npvColumn); - postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn); - postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn); - postValues.ContractEconomy.Validate(); - - - return new ManagerResult + PostValues = postValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - PostValues = postValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - dateColumn, - dateTempColumn, - percentPaymentColumn, - kaskoNmperGrColumn, - tlmGrColumn, - gpsGrColumn, - sumColumn, - vatColumn, - sumWithVatColumn, - acceptSumColumn, - acceptKaskoColumn, - acceptOsagoColumn, - acceptInsuranceColumn, - deprecationLpColumn, - deprecationLdColumn, - deprecationColumn, - npvBonusExpensesColumn, - kaskoBonusGrSumColumn, - agentComissionExpensesColumn, - ratExpensesColumn, - transExprensesColumn, - nsibExpensesColumn, - tlmExpensesColumn, - gpsExpensesColumn, - registrExpensesColumn, - insuranceBonusExpensesColumn, - comissionBonusExpensesColumn, - expensesColumn, - negativeCashflowColumn, - nsibBruttoGrColumn, - taxColumn, - cashflowColumn, - cashflowLeasingColumn, - cashflowMsfoColumn, - cashflowNpvColumn, - npvWeightColumn, - npvColumn, - irrGrColumn, - niColumn, - interestColumn, - cashflowNsibColumn, - revenueColumn, - sumCurrentColumn, - sumCurrentNegativeColumn, - sumCurrentInterestColumn, - sumCurrentTlmColumn, - sumRepaymentColumn, - extraBonusSumColumn, - cashflowMsfoFinalColumn, - cashflowNpvFinalColumn, - npvFinalColumn, - directorBonusSumColumn, - cashflowMsfoFinal2Column, - cashflowNpvFinal2Column, - npvFinal2Column, - sumCreditColumn, - creditColumn, - subsidyExpensesColumn - } - }; - } - catch (Exception ex) + dateColumn, + dateTempColumn, + percentPaymentColumn, + kaskoNmperGrColumn, + tlmGrColumn, + gpsGrColumn, + sumColumn, + vatColumn, + sumWithVatColumn, + acceptSumColumn, + acceptKaskoColumn, + acceptOsagoColumn, + acceptInsuranceColumn, + deprecationLpColumn, + deprecationLdColumn, + deprecationColumn, + npvBonusExpensesColumn, + kaskoBonusGrSumColumn, + agentComissionExpensesColumn, + ratExpensesColumn, + transExprensesColumn, + nsibExpensesColumn, + tlmExpensesColumn, + gpsExpensesColumn, + registrExpensesColumn, + insuranceBonusExpensesColumn, + comissionBonusExpensesColumn, + expensesColumn, + negativeCashflowColumn, + nsibBruttoGrColumn, + taxColumn, + cashflowColumn, + cashflowLeasingColumn, + cashflowMsfoColumn, + cashflowNpvColumn, + npvWeightColumn, + npvColumn, + irrGrColumn, + niColumn, + interestColumn, + cashflowNsibColumn, + revenueColumn, + sumCurrentColumn, + sumCurrentNegativeColumn, + sumCurrentInterestColumn, + sumCurrentTlmColumn, + sumRepaymentColumn, + extraBonusSumColumn, + cashflowMsfoFinalColumn, + cashflowNpvFinalColumn, + npvFinalColumn, + directorBonusSumColumn, + cashflowMsfoFinal2Column, + cashflowNpvFinal2Column, + npvFinal2Column, + sumCreditColumn, + creditColumn, + subsidyExpensesColumn + } + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/PostValues/ContractEconomy.cs b/EvoCalculator.Core.Calculation/v2/PostValues/ContractEconomy.cs index 7953cfe..57c1414 100644 --- a/EvoCalculator.Core.Calculation/v2/PostValues/ContractEconomy.cs +++ b/EvoCalculator.Core.Calculation/v2/PostValues/ContractEconomy.cs @@ -2,22 +2,21 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Base.PostValues; -namespace EvoCalculator.Core.Calculation.v2.PostValues -{ - public class ContractEconomy : BasePostValue - { - public void ComputeValue(BaseColumn cashflowMSFOColumn, BaseColumn creditColumn, - BaseColumn directorBonusSumColumn) - { - Value = cashflowMSFOColumn.Values.Sum() + creditColumn.GetValue(0) + - directorBonusSumColumn.GetValue(0); - } +namespace EvoCalculator.Core.Calculation.v2.PostValues; - public void Validate() - { - // if (Value < 0) - // throw new Exception( - // "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ"); - } +public class ContractEconomy : BasePostValue +{ + public void ComputeValue(BaseColumn cashflowMSFOColumn, BaseColumn creditColumn, + BaseColumn directorBonusSumColumn) + { + Value = cashflowMSFOColumn.Values.Sum() + creditColumn.GetValue(0) + + directorBonusSumColumn.GetValue(0); + } + + public void Validate() + { + // if (Value < 0) + // throw new Exception( + // "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Calculation/v2/PostValues/PostValues.cs b/EvoCalculator.Core.Calculation/v2/PostValues/PostValues.cs index 881753a..d6d9bbd 100644 --- a/EvoCalculator.Core.Calculation/v2/PostValues/PostValues.cs +++ b/EvoCalculator.Core.Calculation/v2/PostValues/PostValues.cs @@ -1,28 +1,27 @@ -namespace EvoCalculator.Core.Calculation.v2.PostValues +namespace EvoCalculator.Core.Calculation.v2.PostValues; + +public class PostValues : v1.PostValues.PostValues { - public class PostValues : v1.PostValues.PostValues + public ContractEconomy ContractEconomy; + + public PostValues() { - public ContractEconomy ContractEconomy; + ContractEconomy = new ContractEconomy(); + } - public PostValues() + public override object GetValues() + { + return new { - ContractEconomy = new ContractEconomy(); - } - - public override object GetValues() - { - return new - { - BaseCost = BaseCost.Value, - BonusBase = BonusBase.Value, - PriceUP = PriceUP.Value, - PriceUP_PR = PriceUP_PR.Value, - PriceUP_Year = PriceUP_Year.Value, - PriceUP_Year_PR = PriceUP_Year_PR.Value, - NPVNI = NPVNI.Value, - BonusResult = BonusResult.Value, - ContractEconomy = ContractEconomy.Value - }; - } + BaseCost = BaseCost.Value, + BonusBase = BonusBase.Value, + PriceUP = PriceUP.Value, + PriceUP_PR = PriceUP_PR.Value, + PriceUP_Year = PriceUP_Year.Value, + PriceUP_Year_PR = PriceUP_Year_PR.Value, + NPVNI = NPVNI.Value, + BonusResult = BonusResult.Value, + ContractEconomy = ContractEconomy.Value + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Constants/Calculation.cs b/EvoCalculator.Core.Constants/Calculation.cs index f6b5156..6502922 100644 --- a/EvoCalculator.Core.Constants/Calculation.cs +++ b/EvoCalculator.Core.Constants/Calculation.cs @@ -1,11 +1,10 @@ -namespace EvoCalculator.Core.Constants +namespace EvoCalculator.Core.Constants; + +public class Calculation { - public class Calculation - { - // TODO: create constants service - public int DeliveryDays = 210; - public double IncomeTaxValue = 0.2; - public int MaxOnePolicePeriod = 16; - public double VatValue = 0.2; - } + // TODO: create constants service + public int DeliveryDays = 210; + public double IncomeTaxValue = 0.2; + public int MaxOnePolicePeriod = 16; + public double VatValue = 0.2; } \ No newline at end of file diff --git a/EvoCalculator.Core.FinanceFormulas/XIRR.cs b/EvoCalculator.Core.FinanceFormulas/XIRR.cs index 4e79bd3..82da462 100644 --- a/EvoCalculator.Core.FinanceFormulas/XIRR.cs +++ b/EvoCalculator.Core.FinanceFormulas/XIRR.cs @@ -3,178 +3,177 @@ using System.Collections.Generic; using System.Linq; using EvoCalculator.Core.Models.Common; -namespace EvoCalculator.Core.FinanceFormulas +namespace EvoCalculator.Core.FinanceFormulas; + +public class XIRR { - public class XIRR + private const int MaxIterations = 100; + private const double DefaultTolerance = 1E-6; + private const double DefaultGuess = 0.1; + private readonly Flow[] _flows; + private readonly double _guess = 0.1; + + private readonly Func, double> BisectionMethod = + cf => BisectionMethodImplementation(cf); + + private readonly Func, double> NewthonsMethod = + cf => NewtonsMethodImplementation(cf); + + public XIRR(Flow[] flows) { - private const int MaxIterations = 100; - private const double DefaultTolerance = 1E-6; - private const double DefaultGuess = 0.1; - private readonly Flow[] _flows; - private readonly double _guess = 0.1; + _flows = flows; + } - private readonly Func, double> BisectionMethod = - cf => BisectionMethodImplementation(cf); + public XIRR(Flow[] flows, double guess) + { + _flows = flows; + _guess = guess; + } - private readonly Func, double> NewthonsMethod = - cf => NewtonsMethodImplementation(cf); - public XIRR(Flow[] flows) + private static double NewtonsMethodImplementation(IEnumerable flows, + double guess = DefaultGuess, + double tolerance = DefaultTolerance, + int maxIterations = MaxIterations) + { + var x0 = guess; + var i = 0; + double error; + do { - _flows = flows; - } + var dfx0 = new XNPV(flows, x0).GetResultPrime(); + if (Math.Abs(dfx0 - 0) < double.Epsilon) + throw new InvalidOperationException("Could not calculate: No solution found. df(x) = 0"); - public XIRR(Flow[] flows, double guess) + var fx0 = new XNPV(flows, x0).GetResultPrime(); + var x1 = x0 - fx0 / dfx0; + error = Math.Abs(x1 - x0); + + x0 = x1; + } while (error > tolerance && ++i < maxIterations); + + if (i == maxIterations) + throw new InvalidOperationException("Could not calculate: No solution found. Max iterations reached."); + + return x0; + } + + + private static double BisectionMethodImplementation(IEnumerable flows, + double tolerance = DefaultTolerance, + int maxIterations = MaxIterations) + { + // From "Applied Numerical Analysis" by Gerald + var brackets = Brackets.Find(flows); + if (Math.Abs(brackets.First - brackets.Second) < double.Epsilon) + throw new ArgumentException("Could not calculate: bracket failed"); + + double f3; + double result; + var x1 = brackets.First; + var x2 = brackets.Second; + + var i = 0; + do { - _flows = flows; - _guess = guess; - } + var f1 = new XNPV(flows, x1).GetResult(); + var f2 = new XNPV(flows, x2).GetResult(); - - private static double NewtonsMethodImplementation(IEnumerable flows, - double guess = DefaultGuess, - double tolerance = DefaultTolerance, - int maxIterations = MaxIterations) - { - var x0 = guess; - var i = 0; - double error; - do - { - var dfx0 = new XNPV(flows, x0).GetResultPrime(); - if (Math.Abs(dfx0 - 0) < double.Epsilon) - throw new InvalidOperationException("Could not calculate: No solution found. df(x) = 0"); - - var fx0 = new XNPV(flows, x0).GetResultPrime(); - var x1 = x0 - fx0 / dfx0; - error = Math.Abs(x1 - x0); - - x0 = x1; - } while (error > tolerance && ++i < maxIterations); - - if (i == maxIterations) - throw new InvalidOperationException("Could not calculate: No solution found. Max iterations reached."); - - return x0; - } - - - private static double BisectionMethodImplementation(IEnumerable flows, - double tolerance = DefaultTolerance, - int maxIterations = MaxIterations) - { - // From "Applied Numerical Analysis" by Gerald - var brackets = Brackets.Find(flows); - if (Math.Abs(brackets.First - brackets.Second) < double.Epsilon) - throw new ArgumentException("Could not calculate: bracket failed"); - - double f3; - double result; - var x1 = brackets.First; - var x2 = brackets.Second; - - var i = 0; - do - { - var f1 = new XNPV(flows, x1).GetResult(); - var f2 = new XNPV(flows, x2).GetResult(); - - if (Math.Abs(f1) < double.Epsilon && Math.Abs(f2) < double.Epsilon) - throw new InvalidOperationException("Could not calculate: No solution found"); - - if (f1 * f2 > 0) - throw new ArgumentException("Could not calculate: bracket failed for x1, x2"); - - result = (x1 + x2) / 2; - f3 = new XNPV(flows, result).GetResult(); - - if (f3 * f1 < 0) - x2 = result; - else - x1 = result; - } while (Math.Abs(x1 - x2) / 2 > tolerance && Math.Abs(f3) > double.Epsilon && ++i < maxIterations); - - if (i == maxIterations) + if (Math.Abs(f1) < double.Epsilon && Math.Abs(f2) < double.Epsilon) throw new InvalidOperationException("Could not calculate: No solution found"); - return result; - } + if (f1 * f2 > 0) + throw new ArgumentException("Could not calculate: bracket failed for x1, x2"); - private double CalcXirr(IEnumerable flows, Func, double> method) - { - if (flows.Count(cf => cf.Value > 0) == 0) - throw new ArgumentException("Add at least one positive item"); + result = (x1 + x2) / 2; + f3 = new XNPV(flows, result).GetResult(); - if (flows.Count(c => c.Value < 0) == 0) - throw new ArgumentException("Add at least one negative item"); + if (f3 * f1 < 0) + x2 = result; + else + x1 = result; + } while (Math.Abs(x1 - x2) / 2 > tolerance && Math.Abs(f3) > double.Epsilon && ++i < maxIterations); - var result = method(flows); + if (i == maxIterations) + throw new InvalidOperationException("Could not calculate: No solution found"); - if (double.IsInfinity(result)) - throw new InvalidOperationException("Could not calculate: Infinity"); + return result; + } - if (double.IsNaN(result)) - throw new InvalidOperationException("Could not calculate: Not a number"); + private double CalcXirr(IEnumerable flows, Func, double> method) + { + if (flows.Count(cf => cf.Value > 0) == 0) + throw new ArgumentException("Add at least one positive item"); - return result; - } + if (flows.Count(c => c.Value < 0) == 0) + throw new ArgumentException("Add at least one negative item"); - public double GetResult() + var result = method(flows); + + if (double.IsInfinity(result)) + throw new InvalidOperationException("Could not calculate: Infinity"); + + if (double.IsNaN(result)) + throw new InvalidOperationException("Could not calculate: Not a number"); + + return result; + } + + public double GetResult() + { + try { try { - try - { - return CalcXirr(_flows, NewthonsMethod); - } - catch (InvalidOperationException) - { - // Failed: try another algorithm - return CalcXirr(_flows, BisectionMethod); - } + return CalcXirr(_flows, NewthonsMethod); } - catch (ArgumentException e) + catch (InvalidOperationException) { - Console.WriteLine(e.Message); + // Failed: try another algorithm + return CalcXirr(_flows, BisectionMethod); } - catch (InvalidOperationException exception) - { - Console.WriteLine(exception.Message); - } - - return 0; + } + catch (ArgumentException e) + { + Console.WriteLine(e.Message); + } + catch (InvalidOperationException exception) + { + Console.WriteLine(exception.Message); } - public struct Brackets + return 0; + } + + public struct Brackets + { + public readonly double First; + public readonly double Second; + + private Brackets(double first, double second) { - public readonly double First; - public readonly double Second; + First = first; + Second = second; + } - private Brackets(double first, double second) + internal static Brackets Find(IEnumerable flows, + double guess = DefaultGuess, + int maxIterations = MaxIterations) + { + const double bracketStep = 0.5; + var leftBracket = guess - bracketStep; + var rightBracket = guess + bracketStep; + var i = 0; + while (new XNPV(flows, leftBracket).GetResult() * new XNPV(flows, rightBracket).GetResult() > 0 && + i++ < maxIterations) { - First = first; - Second = second; + leftBracket -= bracketStep; + rightBracket += bracketStep; } - internal static Brackets Find(IEnumerable flows, - double guess = DefaultGuess, - int maxIterations = MaxIterations) - { - const double bracketStep = 0.5; - var leftBracket = guess - bracketStep; - var rightBracket = guess + bracketStep; - var i = 0; - while (new XNPV(flows, leftBracket).GetResult() * new XNPV(flows, rightBracket).GetResult() > 0 && - i++ < maxIterations) - { - leftBracket -= bracketStep; - rightBracket += bracketStep; - } - - return i >= maxIterations - ? new Brackets(0, 0) - : new Brackets(leftBracket, rightBracket); - } + return i >= maxIterations + ? new Brackets(0, 0) + : new Brackets(leftBracket, rightBracket); } } } \ No newline at end of file diff --git a/EvoCalculator.Core.FinanceFormulas/XNPV.cs b/EvoCalculator.Core.FinanceFormulas/XNPV.cs index d1287a9..9368fce 100644 --- a/EvoCalculator.Core.FinanceFormulas/XNPV.cs +++ b/EvoCalculator.Core.FinanceFormulas/XNPV.cs @@ -3,37 +3,36 @@ using System.Collections.Generic; using System.Linq; using EvoCalculator.Core.Models.Common; -namespace EvoCalculator.Core.FinanceFormulas +namespace EvoCalculator.Core.FinanceFormulas; + +public class XNPV { - public class XNPV + private readonly IEnumerable _flows; + private double _rate; + + public XNPV(IEnumerable flows, double rate) { - private readonly IEnumerable _flows; - private double _rate; + _flows = flows; + _rate = rate; + } - public XNPV(IEnumerable flows, double rate) - { - _flows = flows; - _rate = rate; - } + public double GetResult() + { + if (_rate <= -1) + _rate = -1 + 1E-10; // Very funky ... Better check what an IRR <= -100% means - public double GetResult() - { - if (_rate <= -1) - _rate = -1 + 1E-10; // Very funky ... Better check what an IRR <= -100% means + var startDate = _flows.OrderBy(i => i.Date).First().Date; + return + (from item in _flows + let days = -(item.Date - startDate).Days + select (double) item.Value * Math.Pow(1 + _rate, (double) days / 365)).Sum(); + } - var startDate = _flows.OrderBy(i => i.Date).First().Date; - return - (from item in _flows - let days = -(item.Date - startDate).Days - select (double) item.Value * Math.Pow(1 + _rate, (double) days / 365)).Sum(); - } - - public double GetResultPrime() - { - var startDate = _flows.OrderBy(i => i.Date).First().Date; - return (from item in _flows - let daysRatio = -(item.Date - startDate).Days / 365 - select (double) item.Value * daysRatio * Math.Pow(1.0 + _rate, daysRatio - 1)).Sum(); - } + public double GetResultPrime() + { + var startDate = _flows.OrderBy(i => i.Date).First().Date; + return (from item in _flows + let daysRatio = -(item.Date - startDate).Days / 365 + select (double) item.Value * daysRatio * Math.Pow(1.0 + _rate, daysRatio - 1)).Sum(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Manager/ManagerResult.cs b/EvoCalculator.Core.Models/Calculation/Models/Manager/ManagerResult.cs index e5b812e..719da59 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Manager/ManagerResult.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Manager/ManagerResult.cs @@ -1,13 +1,12 @@ using System.Collections.Generic; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Models.Calculation.Models.Manager +namespace EvoCalculator.Core.Models.Calculation.Models.Manager; + +public class ManagerResult { - public class ManagerResult - { - public PreparedValues PreparedValues { get; set; } - public object PostValues { get; set; } - public object Columns { get; set; } - public List Errors { get; set; } - } + public PreparedValues PreparedValues { get; set; } + public object PostValues { get; set; } + public object Columns { get; set; } + public List Errors { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs index fe3f805..3e0687c 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs @@ -1,18 +1,17 @@ -namespace EvoCalculator.Core.Models.Calculation.Models.Prepared -{ - public class PaymentRow - { - public int NumberPayment { get; set; } - public double PercentPayment { get; set; } - public decimal SumPayment { get; set; } - public decimal GpsBasePayment { get; set; } - public decimal GpsCostPayment { get; set; } - public decimal TlmBasePayment { get; set; } - public decimal TlmCostPayment { get; set; } - } +namespace EvoCalculator.Core.Models.Calculation.Models.Prepared; - public class PreparedPayments - { - public PaymentRow[] Rows { get; set; } - } +public class PaymentRow +{ + public int NumberPayment { get; set; } + public double PercentPayment { get; set; } + public decimal SumPayment { get; set; } + public decimal GpsBasePayment { get; set; } + public decimal GpsCostPayment { get; set; } + public decimal TlmBasePayment { get; set; } + public decimal TlmCostPayment { get; set; } +} + +public class PreparedPayments +{ + public PaymentRow[] Rows { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs index 380abea..6ee5415 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs @@ -1,163 +1,162 @@ using System; -namespace EvoCalculator.Core.Models.Calculation.Models.Prepared +namespace EvoCalculator.Core.Models.Calculation.Models.Prepared; + +public class PreparedValues { - public class PreparedValues + private DateTime _dogDate; + + private DateTime? _paymentDateNew; + public DateTime CalcDate { get; set; } = DateTime.Now; + public int CalcType { get; set; } + public double IrrExpected { get; set; } + public double NpvniExpected { get; set; } + public double TotalExpected { get; set; } + public double Leasing0K { get; set; } + public double LoanRate { get; set; } + public int BalanceHolder { get; set; } + + public DateTime DogDate { - private DateTime _dogDate; + get => _dogDate.ToUniversalTime(); + set => _dogDate = value; + } - private DateTime? _paymentDateNew; - public DateTime CalcDate { get; set; } = DateTime.Now; - public int CalcType { get; set; } - public double IrrExpected { get; set; } - public double NpvniExpected { get; set; } - public double TotalExpected { get; set; } - public double Leasing0K { get; set; } - public double LoanRate { get; set; } - public int BalanceHolder { get; set; } + public DateTime? PaymentDateNew + { + get => _paymentDateNew?.ToUniversalTime(); + set => _paymentDateNew = value; + } - public DateTime DogDate - { - get => _dogDate.ToUniversalTime(); - set => _dogDate = value; - } + public int DeliveryTime { get; set; } + public string Cityc { get; set; } + public int Nmper { get; set; } + public double FirstPayment { get; set; } + public decimal FirstPaymentSum { get; set; } + public decimal FirstPaymentAbs { get; set; } + public decimal FirstPaymentNdsAbs { get; set; } + public decimal FirstPaymentWithNdsAbs { get; set; } + public double LastPayment { get; set; } + public decimal LastPaymentSum { get; set; } + public int ScheduleOfPayments { get; set; } + public decimal ComissionRub { get; set; } + public decimal PlPrice { get; set; } + public decimal Discount { get; set; } + public decimal AcceptSum { get; set; } + public string PlTypeId { get; set; } + public string BrandId { get; set; } + public string ModelId { get; set; } + public string ConfigurationId { get; set; } + public int PlYear { get; set; } + public double CarCapacity { get; set; } + public double MotorVolume { get; set; } + public int? PlEngineType { get; set; } + public double CarCarrying { get; set; } + public int CarSeats { get; set; } + public double Bonus { get; set; } + public decimal BonusFix { get; set; } + public double MarketRate { get; set; } + public double DistrictRate { get; set; } + public double SalaryRate { get; set; } + public double BonusRatPr { get; set; } + public double BonusNsPr { get; set; } + public double BonusNsibPr { get; set; } + public decimal Rats { get; set; } + public decimal BaseRatCost { get; set; } + public decimal RetroBonus { get; set; } + public decimal Registration { get; set; } + public decimal BaseRegistration { get; set; } + public decimal TransTax { get; set; } + public bool TransIncludeGr { get; set; } + public decimal TrackerCost { get; set; } + public decimal InsuranceKasko { get; set; } + public int NmperInsurance { get; set; } + public decimal InsuranceOsago { get; set; } + public decimal Insurance => InsuranceOsago + InsuranceKasko; + public decimal InsuranceKaskoNmper { get; set; } + public decimal InsuranceContract { get; set; } + public decimal InsuranceBonus { get; set; } + public double NsibBruttoPr { get; set; } + public double NsibNettoPr { get; set; } + public decimal NsibBase { get; set; } + public double Repayment { get; set; } + public double NpvniDelta { get; set; } + public decimal TransportTaxGrYear { get; set; } + public decimal TransportTaxGr { get; set; } + public decimal NsibBrutto { get; set; } + public decimal NsibNetto { get; set; } + public int NmperDeprecation { get; set; } + public double DeprecationTime { get; set; } + public decimal RatBonus { get; set; } + public decimal NsBonus { get; set; } + public decimal NsibBonus { get; set; } + public decimal NiAtInception => AcquisitionExpenses - FirstPaymentSum; + public decimal AgentsSum { get; set; } + public decimal DoubleAgentsSum { get; set; } + public decimal DeliverySum { get; set; } + public decimal BrokerSum { get; set; } + public decimal BrokerOfDeliverySum { get; set; } + public decimal FinancialDeptOfDeliverySum { get; set; } + public decimal ImporterSum { get; set; } - public DateTime? PaymentDateNew - { - get => _paymentDateNew?.ToUniversalTime(); - set => _paymentDateNew = value; - } + public decimal CalculationCost => PlPrice + + (Insurance + Rats + Registration + TrackerCost + + TLMCost + TransportTaxGr) * (decimal) Leasing0K; - public int DeliveryTime { get; set; } - public string Cityc { get; set; } - public int Nmper { get; set; } - public double FirstPayment { get; set; } - public decimal FirstPaymentSum { get; set; } - public decimal FirstPaymentAbs { get; set; } - public decimal FirstPaymentNdsAbs { get; set; } - public decimal FirstPaymentWithNdsAbs { get; set; } - public double LastPayment { get; set; } - public decimal LastPaymentSum { get; set; } - public int ScheduleOfPayments { get; set; } - public decimal ComissionRub { get; set; } - public decimal PlPrice { get; set; } - public decimal Discount { get; set; } - public decimal AcceptSum { get; set; } - public string PlTypeId { get; set; } - public string BrandId { get; set; } - public string ModelId { get; set; } - public string ConfigurationId { get; set; } - public int PlYear { get; set; } - public double CarCapacity { get; set; } - public double MotorVolume { get; set; } - public int? PlEngineType { get; set; } - public double CarCarrying { get; set; } - public int CarSeats { get; set; } - public double Bonus { get; set; } - public decimal BonusFix { get; set; } - public double MarketRate { get; set; } - public double DistrictRate { get; set; } - public double SalaryRate { get; set; } - public double BonusRatPr { get; set; } - public double BonusNsPr { get; set; } - public double BonusNsibPr { get; set; } - public decimal Rats { get; set; } - public decimal BaseRatCost { get; set; } - public decimal RetroBonus { get; set; } - public decimal Registration { get; set; } - public decimal BaseRegistration { get; set; } - public decimal TransTax { get; set; } - public bool TransIncludeGr { get; set; } - public decimal TrackerCost { get; set; } - public decimal InsuranceKasko { get; set; } - public int NmperInsurance { get; set; } - public decimal InsuranceOsago { get; set; } - public decimal Insurance => InsuranceOsago + InsuranceKasko; - public decimal InsuranceKaskoNmper { get; set; } - public decimal InsuranceContract { get; set; } - public decimal InsuranceBonus { get; set; } - public double NsibBruttoPr { get; set; } - public double NsibNettoPr { get; set; } - public decimal NsibBase { get; set; } - public double Repayment { get; set; } - public double NpvniDelta { get; set; } - public decimal TransportTaxGrYear { get; set; } - public decimal TransportTaxGr { get; set; } - public decimal NsibBrutto { get; set; } - public decimal NsibNetto { get; set; } - public int NmperDeprecation { get; set; } - public double DeprecationTime { get; set; } - public decimal RatBonus { get; set; } - public decimal NsBonus { get; set; } - public decimal NsibBonus { get; set; } - public decimal NiAtInception => AcquisitionExpenses - FirstPaymentSum; - public decimal AgentsSum { get; set; } - public decimal DoubleAgentsSum { get; set; } - public decimal DeliverySum { get; set; } - public decimal BrokerSum { get; set; } - public decimal BrokerOfDeliverySum { get; set; } - public decimal FinancialDeptOfDeliverySum { get; set; } - public decimal ImporterSum { get; set; } + public decimal TlmCostPaymentSum { get; set; } + public decimal GpsCostPaymentSum { get; set; } - public decimal CalculationCost => PlPrice + - (Insurance + Rats + Registration + TrackerCost + - TLMCost + TransportTaxGr) * (decimal) Leasing0K; - - public decimal TlmCostPaymentSum { get; set; } - public decimal GpsCostPaymentSum { get; set; } - - public decimal PriceUpTotal => PlPrice + - TrackerCost + - TLMCost + - TlmCostPaymentSum + - GpsCostPaymentSum + - Registration + - InsuranceContract + - Rats + - NsibBrutto + - TransportTaxGr; - - public decimal AcquisitionExpenses => PlPrice + Insurance - ComissionRub - Discount + TrackerCost + TLMCost + - BaseRegistration + Rats + TransportTaxGr; - - public decimal NpvBase => PlPrice + - (NsibNetto * 12 / Nmper + - Insurance + - BaseRegistration + + public decimal PriceUpTotal => PlPrice + TrackerCost + TLMCost + - Rats - - Discount - - ComissionRub - - FirstPaymentSum); + TlmCostPaymentSum + + GpsCostPaymentSum + + Registration + + InsuranceContract + + Rats + + NsibBrutto + + TransportTaxGr; - public decimal TLMCost { get; set; } - public double IRR_MSFO_Plan { get; set; } - public double ExtraBonus { get; set; } - public double DirectorBonus { get; set; } + public decimal AcquisitionExpenses => PlPrice + Insurance - ComissionRub - Discount + TrackerCost + TLMCost + + BaseRegistration + Rats + TransportTaxGr; - public decimal DogCredit => PlPrice + - (Insurance + Rats + Registration + TrackerCost + TLMCost + TransportTaxGr) * - (decimal) Leasing0K - - FirstPaymentSum + - NsibNetto * 12 / Nmper - - (Leasing0K != 1 ? 0 : Discount); + public decimal NpvBase => PlPrice + + (NsibNetto * 12 / Nmper + + Insurance + + BaseRegistration + + TrackerCost + + TLMCost + + Rats - + Discount - + ComissionRub - + FirstPaymentSum); - public decimal DogCreditLeasing => PlPrice + - Insurance + - Registration + - TrackerCost + - TLMCost + - Rats - - Discount - - ComissionRub - - FirstPaymentSum; + public decimal TLMCost { get; set; } + public double IRR_MSFO_Plan { get; set; } + public double ExtraBonus { get; set; } + public double DirectorBonus { get; set; } - public decimal DirectorBonusNsib { get; set; } - public decimal RegionalDirectorBonusNsib { get; set; } - public int LoanRatePeriod { get; set; } - public int SubsidyPaymentNumber { get; set; } - public decimal SubsidySum { get; set; } - public decimal FuelCardSum { get; set; } - } + public decimal DogCredit => PlPrice + + (Insurance + Rats + Registration + TrackerCost + TLMCost + TransportTaxGr) * + (decimal) Leasing0K - + FirstPaymentSum + + NsibNetto * 12 / Nmper - + (Leasing0K != 1 ? 0 : Discount); + + public decimal DogCreditLeasing => PlPrice + + Insurance + + Registration + + TrackerCost + + TLMCost + + Rats - + Discount - + ComissionRub - + FirstPaymentSum; + + public decimal DirectorBonusNsib { get; set; } + public decimal RegionalDirectorBonusNsib { get; set; } + public int LoanRatePeriod { get; set; } + public int SubsidyPaymentNumber { get; set; } + public decimal SubsidySum { get; set; } + public decimal FuelCardSum { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Request/RequestCalculation.cs b/EvoCalculator.Core.Models/Calculation/Models/Request/RequestCalculation.cs index 8a2e8c0..8297faa 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Request/RequestCalculation.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Request/RequestCalculation.cs @@ -1,12 +1,11 @@ #nullable enable using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Models.Calculation.Models.Request +namespace EvoCalculator.Core.Models.Calculation.Models.Request; + +public class RequestCalculation { - public class RequestCalculation - { - public PreparedValues preparedValues { get; set; } - public PreparedPayments preparedPayments { get; set; } - public AdditionalData? additionalData { get; set; } - } + public PreparedValues preparedValues { get; set; } + public PreparedPayments preparedPayments { get; set; } + public AdditionalData? additionalData { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Calculation/Models/Request/lib/AdditionalData.cs b/EvoCalculator.Core.Models/Calculation/Models/Request/lib/AdditionalData.cs index bb306ea..f8a01f3 100644 --- a/EvoCalculator.Core.Models/Calculation/Models/Request/lib/AdditionalData.cs +++ b/EvoCalculator.Core.Models/Calculation/Models/Request/lib/AdditionalData.cs @@ -1,8 +1,7 @@ -namespace EvoCalculator.Core.Models.Calculation.Models +namespace EvoCalculator.Core.Models.Calculation.Models; + +public class AdditionalData { - public class AdditionalData - { - public double? MinCashflowMSFONominal { get; set; } - public double? MaxCashflowMSFONominal { get; set; } - } + public double? MinCashflowMSFONominal { get; set; } + public double? MaxCashflowMSFONominal { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/Common/Flow.cs b/EvoCalculator.Core.Models/Common/Flow.cs index 7563e2a..8a18119 100644 --- a/EvoCalculator.Core.Models/Common/Flow.cs +++ b/EvoCalculator.Core.Models/Common/Flow.cs @@ -1,10 +1,9 @@ using System; -namespace EvoCalculator.Core.Models.Common +namespace EvoCalculator.Core.Models.Common; + +public class Flow { - public class Flow - { - public DateTime Date; - public decimal Value; - } + public DateTime Date; + public decimal Value; } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Manager/ManagerResult.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Manager/ManagerResult.cs index 62ac5f9..fc9c9ff 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Manager/ManagerResult.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Manager/ManagerResult.cs @@ -1,13 +1,12 @@ using System.Collections.Generic; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Manager +namespace EvoCalculator.Core.Models.PostCalculation.Models.Manager; + +public class ManagerResult { - public class ManagerResult - { - public PreparedValues PreparedValues { get; set; } - public object NextValues { get; set; } - public object Columns { get; set; } - public List Errors { get; set; } - } + public PreparedValues PreparedValues { get; set; } + public object NextValues { get; set; } + public object Columns { get; set; } + public List Errors { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableInsurance.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableInsurance.cs index ae3a9ca..447cc5f 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableInsurance.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableInsurance.cs @@ -1,13 +1,12 @@ using System; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +public class TableInsuranceRow { - public class TableInsuranceRow - { - public string TypeRiskInsurance { get; set; } - public int PeriodNumberInsurance { get; set; } - public DateTime DateStartPeriodInsurance { get; set; } - public decimal CostInsurance { get; set; } - public decimal BaseInsurance { get; set; } - } + public string TypeRiskInsurance { get; set; } + public int PeriodNumberInsurance { get; set; } + public DateTime DateStartPeriodInsurance { get; set; } + public decimal CostInsurance { get; set; } + public decimal BaseInsurance { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TablePayments.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TablePayments.cs index b019105..da72240 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TablePayments.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TablePayments.cs @@ -1,22 +1,21 @@ using System; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +public class TablePaymentsRow { - public class TablePaymentsRow - { - public int NumberPayment { get; set; } - public DateTime DatePayment { get; set; } - public decimal SumPayment { get; set; } - public decimal VATPayment { get; set; } - public decimal SumWithVATPayment { get; set; } - public decimal RepaymentPayment { get; set; } - public double PercentPayment { get; set; } - public decimal NSIBBruttoPayment { get; set; } - public decimal NSIBExpensesPayment { get; set; } - public decimal NSIBRevenuePayment { get; set; } - public decimal NSIBCashflowPayment { get; set; } - public decimal SubsidyPayment { get; set; } - public decimal BaseTLMPayment { get; set; } - public decimal CostTLMPayment { get; set; } - } + public int NumberPayment { get; set; } + public DateTime DatePayment { get; set; } + public decimal SumPayment { get; set; } + public decimal VATPayment { get; set; } + public decimal SumWithVATPayment { get; set; } + public decimal RepaymentPayment { get; set; } + public double PercentPayment { get; set; } + public decimal NSIBBruttoPayment { get; set; } + public decimal NSIBExpensesPayment { get; set; } + public decimal NSIBRevenuePayment { get; set; } + public decimal NSIBCashflowPayment { get; set; } + public decimal SubsidyPayment { get; set; } + public decimal BaseTLMPayment { get; set; } + public decimal CostTLMPayment { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableTLMTracker.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableTLMTracker.cs index a34b1e1..01445af 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableTLMTracker.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedTables/TableTLMTracker.cs @@ -1,12 +1,11 @@ using System; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +public class TableTLMTrackerRow { - public class TableTLMTrackerRow - { - public int NumberTLM { get; set; } - public DateTime DateTLM { get; set; } - public decimal BaseTLM { get; set; } - public decimal CostTLM { get; set; } - } + public int NumberTLM { get; set; } + public DateTime DateTLM { get; set; } + public decimal BaseTLM { get; set; } + public decimal CostTLM { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedValues.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedValues.cs index a6ff795..c546b31 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedValues.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/PreparedValues.cs @@ -2,69 +2,68 @@ using System.ComponentModel.DataAnnotations; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared; + +public class PreparedValues { - public class PreparedValues - { - public DateTime DateInput { get; set; } - public DateTime DogDate { get; set; } - public decimal Leasing0K { get; set; } - public int DeliveryTime { get; set; } + public DateTime DateInput { get; set; } + public DateTime DogDate { get; set; } + public decimal Leasing0K { get; set; } + public int DeliveryTime { get; set; } - [Required] public int CalcType { get; set; } - public decimal TotalExpected { get; set; } - public decimal InceptDelta { get; set; } - public decimal IRRDelta { get; set; } + [Required] public int CalcType { get; set; } + public decimal TotalExpected { get; set; } + public decimal InceptDelta { get; set; } + public decimal IRRDelta { get; set; } - [Range(2, 60)] public int EditPaymentNumber { get; set; } - [Required] public ChangingValue EditPaymentDate { get; set; } + [Range(2, 60)] public int EditPaymentNumber { get; set; } + [Required] public ChangingValue EditPaymentDate { get; set; } - [Required] public bool ChangeTrackerTLM { get; set; } - public int MonthOffset { get; set; } - [Required] public bool LastPaymentFix { get; set; } - public bool LastDayMonth { get; set; } + [Required] public bool ChangeTrackerTLM { get; set; } + public int MonthOffset { get; set; } + [Required] public bool LastPaymentFix { get; set; } + public bool LastDayMonth { get; set; } - public double Repayment { get; set; } - public bool ChangeRepayment { get; set; } - public double LoanRate { get; set; } - public int LoanRatePeriod { get; set; } - public ChangingValue BalanceHolder { get; set; } + public double Repayment { get; set; } + public bool ChangeRepayment { get; set; } + public double LoanRate { get; set; } + public int LoanRatePeriod { get; set; } + public ChangingValue BalanceHolder { get; set; } - public ChangingValue Nmper { get; set; } - public ChangingValue PlPrice { get; set; } - public ChangingValue Discount { get; set; } + public ChangingValue Nmper { get; set; } + public ChangingValue PlPrice { get; set; } + public ChangingValue Discount { get; set; } - public decimal AgentFLSum { get; set; } - public decimal AgentULSum { get; set; } - public decimal BonusManagerLeasing { get; set; } - public decimal BonusManagerProducts { get; set; } - public decimal BonusManagerLeasingExtra { get; set; } - public decimal BonusDirector { get; set; } + public decimal AgentFLSum { get; set; } + public decimal AgentULSum { get; set; } + public decimal BonusManagerLeasing { get; set; } + public decimal BonusManagerProducts { get; set; } + public decimal BonusManagerLeasingExtra { get; set; } + public decimal BonusDirector { get; set; } - public ChangingValue TrackerCost { get; set; } - [Required] public int TypeChangeTracker { get; set; } - public decimal TrackerCostRemove { get; set; } - public ChangingValue TLMCost { get; set; } - [Required] public int TypeChangeTLM { get; set; } - public decimal TLMCostRemove { get; set; } + public ChangingValue TrackerCost { get; set; } + [Required] public int TypeChangeTracker { get; set; } + public decimal TrackerCostRemove { get; set; } + public ChangingValue TLMCost { get; set; } + [Required] public int TypeChangeTLM { get; set; } + public decimal TLMCostRemove { get; set; } - public decimal ComissionRub { get; set; } - public decimal SubsidySum { get; set; } - public int SubsidyPaymentNumber { get; set; } + public decimal ComissionRub { get; set; } + public decimal SubsidySum { get; set; } + public int SubsidyPaymentNumber { get; set; } - public decimal TechnicalCardSum { get; set; } - public decimal TechnicalBaseCost { get; set; } - public decimal TechnicalRetroBonus { get; set; } - public decimal FuelCardSum { get; set; } + public decimal TechnicalCardSum { get; set; } + public decimal TechnicalBaseCost { get; set; } + public decimal TechnicalRetroBonus { get; set; } + public decimal FuelCardSum { get; set; } - public ChangingValue Registration { get; set; } - public ChangingValue BaseRegistration { get; set; } - [Required] public int TypeChangeRegistration { get; set; } - public ChangingValue TransportTaxGrYear { get; set; } - public ChangingValue TransportTaxGr { get; set; } + public ChangingValue Registration { get; set; } + public ChangingValue BaseRegistration { get; set; } + [Required] public int TypeChangeRegistration { get; set; } + public ChangingValue TransportTaxGrYear { get; set; } + public ChangingValue TransportTaxGr { get; set; } - [Range(10000, int.MaxValue)] public decimal BaseCost { get; set; } - [Range(10000, int.MaxValue)] public decimal AcquisitionExpenses { get; set; } - public decimal NiAtInception { get; set; } - } + [Range(10000, int.MaxValue)] public decimal BaseCost { get; set; } + [Range(10000, int.MaxValue)] public decimal AcquisitionExpenses { get; set; } + public decimal NiAtInception { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/Validation/Required.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/Validation/Required.cs index 135daf7..7bab800 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/Validation/Required.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/Validation/Required.cs @@ -1,32 +1,31 @@ using System.ComponentModel.DataAnnotations; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.Validation +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.Validation; + +public class Required : ValidationAttribute { - public class Required : ValidationAttribute + private readonly bool _current; + private readonly bool _next; + + public Required(bool current, bool next, string errorMessage) { - private readonly bool _current; - private readonly bool _next; + _current = current; + _next = next; + ErrorMessage = errorMessage; + } - public Required(bool current, bool next, string errorMessage) - { - _current = current; - _next = next; - ErrorMessage = errorMessage; - } + public override bool IsValid(object? o) + { + if (o == null) return false; - public override bool IsValid(object? o) - { - if (o == null) return false; + var targetObj = (dynamic) o; + if (_current && targetObj.Current == null) + return false; - var targetObj = (dynamic) o; - if (_current && targetObj.Current == null) - return false; - - if (_next && targetObj.Next == null) - return false; + if (_next && targetObj.Next == null) + return false; - return true; - } + return true; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/lib/ChangingValue.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/lib/ChangingValue.cs index 1f31bcd..3f7ba86 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/lib/ChangingValue.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Prepared/lib/ChangingValue.cs @@ -1,8 +1,7 @@ -namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib +namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib; + +public class ChangingValue { - public class ChangingValue - { - public T Current { get; set; } - public T Next { get; set; } - } + public T Current { get; set; } + public T Next { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Models/PostCalculation/Models/Request/RequestCalculation.cs b/EvoCalculator.Core.Models/PostCalculation/Models/Request/RequestCalculation.cs index 897bdef..04d32de 100644 --- a/EvoCalculator.Core.Models/PostCalculation/Models/Request/RequestCalculation.cs +++ b/EvoCalculator.Core.Models/PostCalculation/Models/Request/RequestCalculation.cs @@ -4,36 +4,35 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.Models.PostCalculation.Models.Request +namespace EvoCalculator.Core.Models.PostCalculation.Models.Request; + +public class RequestCalculation : IValidatableObject { - public class RequestCalculation : IValidatableObject + [Required] public PreparedValues PreparedValues { get; set; } + + [Prepared.Validation.Required(true, false, "Отсутствует таблица текущих платежей")] + public ChangingValue TablePayments { get; set; } + + public ChangingValue TableInsurance { get; set; } = new(); + + public ChangingValue TableTLMTracker { get; set; } + + + public IEnumerable Validate(ValidationContext validationContext) { - [Required] public PreparedValues PreparedValues { get; set; } + var errors = new List(); - [Prepared.Validation.Required(true, false, "Отсутствует таблица текущих платежей")] - public ChangingValue TablePayments { get; set; } + if (TablePayments.Current[0].SumPayment / + (PreparedValues.PlPrice.Next - PreparedValues.Discount.Next) >= 0.500001m) + errors.Add(new ValidationResult( + "Первый платеж по графику более 50% от стоимости ПЛ с учетом скидки. Необходимо уменьшить первый платеж")); - public ChangingValue TableInsurance { get; set; } = new(); - - public ChangingValue TableTLMTracker { get; set; } + if (PreparedValues.CalcType == 100000003 && + PreparedValues.Nmper.Next - PreparedValues.EditPaymentNumber > 1) + errors.Add( + new ValidationResult("При досрочном выкупе недопустимый срок сворачивания графика")); - public IEnumerable Validate(ValidationContext validationContext) - { - var errors = new List(); - - if (TablePayments.Current[0].SumPayment / - (PreparedValues.PlPrice.Next - PreparedValues.Discount.Next) >= 0.500001m) - errors.Add(new ValidationResult( - "Первый платеж по графику более 50% от стоимости ПЛ с учетом скидки. Необходимо уменьшить первый платеж")); - - if (PreparedValues.CalcType == 100000003 && - PreparedValues.Nmper.Next - PreparedValues.EditPaymentNumber > 1) - errors.Add( - new ValidationResult("При досрочном выкупе недопустимый срок сворачивания графика")); - - - return errors; - } + return errors; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateColumn.cs index bd3a8c2..8b03cd7 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateColumn.cs @@ -2,19 +2,18 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current; + +public class DateColumn : BaseColumn { - public class DateColumn : BaseColumn + public DateColumn(int count) : base(count) { - public DateColumn(int count) : base(count) - { - } + } - public void ComputeValues(TablePaymentsRow[] currentTablePayments) - { - for (var i = 1; i < Values.Length; i++) Values[i] = currentTablePayments[i - 1].DatePayment; + public void ComputeValues(TablePaymentsRow[] currentTablePayments) + { + for (var i = 1; i < Values.Length; i++) Values[i] = currentTablePayments[i - 1].DatePayment; - Values[0] = Values[1]; - } + Values[0] = Values[1]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateTempColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateTempColumn.cs index fb373e7..ee36d4f 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateTempColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/DateTempColumn.cs @@ -1,20 +1,19 @@ using System; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current; + +public class DateTempColumn : BaseColumn { - public class DateTempColumn : BaseColumn + public DateTempColumn(int count) : base(count) { - public DateTempColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn currentDateColumn) - { - Values[0] = Values[1] = currentDateColumn.GetValue(2).AddMonths(-1); + public void ComputeValues(BaseColumn currentDateColumn) + { + Values[0] = Values[1] = currentDateColumn.GetValue(2).AddMonths(-1); - for (var i = 2; i < Values.Length; i++) - Values[i] = currentDateColumn.GetValue(i); - } + for (var i = 2; i < Values.Length; i++) + Values[i] = currentDateColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/SumColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/SumColumn.cs index 9582a2f..961ff9b 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Current/SumColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Current/SumColumn.cs @@ -3,19 +3,18 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current -{ - public class SumColumn : BaseColumnWithXIRR - { - public SumColumn(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current; - public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) - { - Values[0] = -(preparedValues.BaseCost + preparedValues.FuelCardSum); - Values[1] = currentTablePayments[0].SumPayment + preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) Values[i] = currentTablePayments[i - 1].SumPayment; - } +public class SumColumn : BaseColumnWithXIRR +{ + public SumColumn(int count, BaseColumn dateTempColumn) : base(count, dateTempColumn) + { + } + + public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) + { + Values[0] = -(preparedValues.BaseCost + preparedValues.FuelCardSum); + Values[1] = currentTablePayments[0].SumPayment + preparedValues.SubsidySum; + for (var i = 2; i < Values.Length; i++) Values[i] = currentTablePayments[i - 1].SumPayment; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs index 0836683..4e9ac58 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs @@ -5,82 +5,81 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Array; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class CashflowMSFOColumn : BaseColumnWithNominal { - public class CashflowMSFOColumn : BaseColumnWithNominal + public void ComputeValues(NextValues.NextValues nextValues + , PreparedValues preparedValues + , BaseColumn nextSumColumn + , BaseColumn? nextTLMCostColumn + , BaseColumn nextSubsidyExpensesColumn + , BaseColumn nextNSIBBruttoGrColumn + , TableInsuranceRow[]? nextTableInsurance + , BaseColumn nextDateTempColumn + , BaseColumn? nextTLMDateColumn + ) { - public void ComputeValues(NextValues.NextValues nextValues - , PreparedValues preparedValues - , BaseColumn nextSumColumn - , BaseColumn? nextTLMCostColumn - , BaseColumn nextSubsidyExpensesColumn - , BaseColumn nextNSIBBruttoGrColumn - , TableInsuranceRow[]? nextTableInsurance - , BaseColumn nextDateTempColumn - , BaseColumn? nextTLMDateColumn - ) - { - var costInsurances = Array.Empty(); - if (nextTableInsurance != null) - costInsurances = nextTableInsurance - .Where(ins => - ins.PeriodNumberInsurance > 1 - && ins.TypeRiskInsurance is "KASKO" or "OSAGO" - && ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) - .OrderBy(x => x.TypeRiskInsurance) - .Select(x => -x.CostInsurance) - .ToArray(); + var costInsurances = Array.Empty(); + if (nextTableInsurance != null) + costInsurances = nextTableInsurance + .Where(ins => + ins.PeriodNumberInsurance > 1 + && ins.TypeRiskInsurance is "KASKO" or "OSAGO" + && ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) + .OrderBy(x => x.TypeRiskInsurance) + .Select(x => -x.CostInsurance) + .ToArray(); - var tlmCosts = Array.Empty(); - if (nextTLMCostColumn != null) tlmCosts = nextTLMCostColumn.Values.Skip(1).Select(x => -x).ToArray(); + var tlmCosts = Array.Empty(); + if (nextTLMCostColumn != null) tlmCosts = nextTLMCostColumn.Values.Skip(1).Select(x => -x).ToArray(); - Values = Array.Concat( - new[] {-nextValues.AcquisitionExpenses.Value - preparedValues.FuelCardSum} - , nextSumColumn.Values.Skip(1).ToArray() - , costInsurances - , nextNSIBBruttoGrColumn.Values.Skip(1).ToArray() - , new[] - { - -preparedValues.BonusManagerLeasing, -preparedValues.BonusManagerProducts, - -preparedValues.AgentFLSum - preparedValues.AgentULSum - } - , tlmCosts - , nextSubsidyExpensesColumn.Values.Skip(1).ToArray() - ); + Values = Array.Concat( + new[] {-nextValues.AcquisitionExpenses.Value - preparedValues.FuelCardSum} + , nextSumColumn.Values.Skip(1).ToArray() + , costInsurances + , nextNSIBBruttoGrColumn.Values.Skip(1).ToArray() + , new[] + { + -preparedValues.BonusManagerLeasing, -preparedValues.BonusManagerProducts, + -preparedValues.AgentFLSum - preparedValues.AgentULSum + } + , tlmCosts + , nextSubsidyExpensesColumn.Values.Skip(1).ToArray() + ); - var nextTLMDates = Array.Empty(); - if (nextTLMDateColumn != null) nextTLMDates = nextTLMDateColumn.Values.Skip(1).ToArray(); + var nextTLMDates = Array.Empty(); + if (nextTLMDateColumn != null) nextTLMDates = nextTLMDateColumn.Values.Skip(1).ToArray(); - var dateStartPeriodInsurances = Array.Empty(); - if (nextTableInsurance != null) - dateStartPeriodInsurances = nextTableInsurance - .Where(ins => - ins.PeriodNumberInsurance > 1 - && ins.TypeRiskInsurance is "KASKO" or "OSAGO" - && ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) - .OrderBy(x => x.TypeRiskInsurance) - .Select(x => x.DateStartPeriodInsurance) - .ToArray(); + var dateStartPeriodInsurances = Array.Empty(); + if (nextTableInsurance != null) + dateStartPeriodInsurances = nextTableInsurance + .Where(ins => + ins.PeriodNumberInsurance > 1 + && ins.TypeRiskInsurance is "KASKO" or "OSAGO" + && ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) + .OrderBy(x => x.TypeRiskInsurance) + .Select(x => x.DateStartPeriodInsurance) + .ToArray(); - Dates = Array.Concat( - new[] {nextDateTempColumn.GetValue(0)} - , nextDateTempColumn.Values.Skip(1).ToArray() - , dateStartPeriodInsurances - , nextDateTempColumn.Values.Skip(1).ToArray() - , new[] - { - nextDateTempColumn.GetValue(2), nextDateTempColumn.GetValue(1), nextDateTempColumn.GetValue(2) - } - , nextTLMDates - , nextDateTempColumn.Values.Skip(1).ToArray() - ); - } + Dates = Array.Concat( + new[] {nextDateTempColumn.GetValue(0)} + , nextDateTempColumn.Values.Skip(1).ToArray() + , dateStartPeriodInsurances + , nextDateTempColumn.Values.Skip(1).ToArray() + , new[] + { + nextDateTempColumn.GetValue(2), nextDateTempColumn.GetValue(1), nextDateTempColumn.GetValue(2) + } + , nextTLMDates + , nextDateTempColumn.Values.Skip(1).ToArray() + ); + } - public void PostCheck() - { - if (Values.Length != Dates.Length) - throw new Exception( - $"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений"); - } + public void PostCheck() + { + if (Values.Length != Dates.Length) + throw new Exception( + $"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinal2Column.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinal2Column.cs index 9c21bca..b120df4 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinal2Column.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinal2Column.cs @@ -3,17 +3,16 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Tools.Array; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class CashflowMSFOFinal2Column : BaseColumnWithNominal { - public class CashflowMSFOFinal2Column : BaseColumnWithNominal + public void ComputeValues(CashflowMSFOFinalColumn nextCashflowMSFOFinalColumn, + BaseColumn nextDateTempColumn, + PreparedValues preparedValues) { - public void ComputeValues(CashflowMSFOFinalColumn nextCashflowMSFOFinalColumn, - BaseColumn nextDateTempColumn, - PreparedValues preparedValues) - { - Dates = Array.Concat(nextCashflowMSFOFinalColumn.Dates, new[] {nextDateTempColumn.GetValue(2)}); - Values = Array.Concat(nextCashflowMSFOFinalColumn.Values, - new[] {-preparedValues.BonusDirector}); - } + Dates = Array.Concat(nextCashflowMSFOFinalColumn.Dates, new[] {nextDateTempColumn.GetValue(2)}); + Values = Array.Concat(nextCashflowMSFOFinalColumn.Values, + new[] {-preparedValues.BonusDirector}); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinalColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinalColumn.cs index 3e5dd85..5b16c2f 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinalColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOFinalColumn.cs @@ -3,16 +3,15 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Tools.Array; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class CashflowMSFOFinalColumn : BaseColumnWithNominal { - public class CashflowMSFOFinalColumn : BaseColumnWithNominal + public void ComputeValues(CashflowMSFOColumn nextCashflowMSFOColumn, BaseColumn nextDateTempColumn, + PreparedValues preparedValues) { - public void ComputeValues(CashflowMSFOColumn nextCashflowMSFOColumn, BaseColumn nextDateTempColumn, - PreparedValues preparedValues) - { - Dates = Array.Concat(nextCashflowMSFOColumn.Dates, new[] {nextDateTempColumn.GetValue(2)}); - Values = Array.Concat(nextCashflowMSFOColumn.Values, - new[] {-preparedValues.BonusManagerLeasingExtra}); - } + Dates = Array.Concat(nextCashflowMSFOColumn.Dates, new[] {nextDateTempColumn.GetValue(2)}); + Values = Array.Concat(nextCashflowMSFOColumn.Values, + new[] {-preparedValues.BonusManagerLeasingExtra}); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOForNIColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOForNIColumn.cs index 848cba1..f1c15db 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOForNIColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOForNIColumn.cs @@ -6,30 +6,29 @@ using EvoCalculator.Core.Tools.Array; using EvoCalculator.Core.Tools.GroupColumns; using EvoCalculator.Core.Tools.GroupColumns.Models; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class CashflowMSFOForNIColumn : BaseColumn { - public class CashflowMSFOForNIColumn : BaseColumn + public DateTime[] Dates; + + public void ComputeValues(PreparedValues preparedValues + , NextValues.NextValues nextValues + , BaseColumn nextDateTempColumn + , BaseColumnWithNominal nextcashflowMSFOColumn) { - public DateTime[] Dates; + var groupCashflowMSFOForNIColumn = GroupColumns.Sum(new SumRules + { + Day = (int) DayRule.MinInGroup, + Value = ValueRule.Sum + }, + GroupColumns.Create(nextcashflowMSFOColumn.Dates.Skip(1), nextcashflowMSFOColumn.Values.Skip(1))); - public void ComputeValues(PreparedValues preparedValues - , NextValues.NextValues nextValues - , BaseColumn nextDateTempColumn - , BaseColumnWithNominal nextcashflowMSFOColumn) - { - var groupCashflowMSFOForNIColumn = GroupColumns.Sum(new SumRules - { - Day = (int) DayRule.MinInGroup, - Value = ValueRule.Sum - }, - GroupColumns.Create(nextcashflowMSFOColumn.Dates.Skip(1), nextcashflowMSFOColumn.Values.Skip(1))); - - Dates = Array.Concat( - new[] {nextDateTempColumn.GetValue(0)} - , GroupColumns.Split(groupCashflowMSFOForNIColumn).Dates); - Values = Array.Concat( - new[] {-nextValues.AcquisitionExpenses.Value - preparedValues.FuelCardSum} - , GroupColumns.Split(groupCashflowMSFOForNIColumn).Values); - } + Dates = Array.Concat( + new[] {nextDateTempColumn.GetValue(0)} + , GroupColumns.Split(groupCashflowMSFOForNIColumn).Dates); + Values = Array.Concat( + new[] {-nextValues.AcquisitionExpenses.Value - preparedValues.FuelCardSum} + , GroupColumns.Split(groupCashflowMSFOForNIColumn).Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs index 2033fa4..908f1b8 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs @@ -1,17 +1,16 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class CashflowNSIBColumn : BaseColumn - { - public CashflowNSIBColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(NSIBBruttoGrColumn nextNsibBruttoGrColumn, RevenueColumn nextRevenueColumn) - { - for (var i = 0; i < nextNsibBruttoGrColumn.Values.Length; i++) - Values[i] = nextNsibBruttoGrColumn.Values[i] - nextRevenueColumn.Values[i]; - } +public class CashflowNSIBColumn : BaseColumn +{ + public CashflowNSIBColumn(int count) : base(count) + { + } + + public void ComputeValues(NSIBBruttoGrColumn nextNsibBruttoGrColumn, RevenueColumn nextRevenueColumn) + { + for (var i = 0; i < nextNsibBruttoGrColumn.Values.Length; i++) + Values[i] = nextNsibBruttoGrColumn.Values[i] - nextRevenueColumn.Values[i]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CreditColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CreditColumn.cs index dadf8a7..0f0593c 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CreditColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CreditColumn.cs @@ -1,24 +1,23 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class CreditColumn : BaseColumnWithSum { - public class CreditColumn : BaseColumnWithSum + public CreditColumn(int count) : base(count) { - public CreditColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, BaseColumn nextSumCreditColumn) - { - Values[1] = -nextSumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12; - for (var i = 2; i < Values.Length; i++) - if (GetValue(i - 1) < 0) - Values[i] = -nextSumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12; - else - Values[i] = 0; + public void ComputeValues(PreparedValues preparedValues, BaseColumn nextSumCreditColumn) + { + Values[1] = -nextSumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12; + for (var i = 2; i < Values.Length; i++) + if (GetValue(i - 1) < 0) + Values[i] = -nextSumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12; + else + Values[i] = 0; - Values[0] = Sum; - } + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT1.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT1.cs index 18eac07..c9fd8e2 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT1.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT1.cs @@ -3,24 +3,23 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class DateColumnVT1 : BaseColumn - { - public DateColumnVT1(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) - { - for (var i = 1; i < Values.Length; i++) - if (i < preparedValues.EditPaymentNumber) - Values[i] = currentTablePayments[i - 1].DatePayment; - else if (i == preparedValues.EditPaymentNumber) - Values[i] = preparedValues.EditPaymentDate.Next.AddMonths(preparedValues.MonthOffset); - else - Values[i] = Values[i - 1].AddMonths(1); - Values[0] = Values[1]; - } +public class DateColumnVT1 : BaseColumn +{ + public DateColumnVT1(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) + { + for (var i = 1; i < Values.Length; i++) + if (i < preparedValues.EditPaymentNumber) + Values[i] = currentTablePayments[i - 1].DatePayment; + else if (i == preparedValues.EditPaymentNumber) + Values[i] = preparedValues.EditPaymentDate.Next.AddMonths(preparedValues.MonthOffset); + else + Values[i] = Values[i - 1].AddMonths(1); + Values[0] = Values[1]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT2.cs index c5baa67..25522fa 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT2.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateColumn/DateColumnVT2.cs @@ -3,23 +3,22 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class DateColumnVT2 : BaseColumn { - public class DateColumnVT2 : BaseColumn + public DateColumnVT2(int count) : base(count) { - public DateColumnVT2(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) - { - for (var i = 1; i < Values.Length; i++) - if (i <= preparedValues.EditPaymentNumber) - Values[i] = currentTablePayments[i - 1].DatePayment; - else - Values[i] = Values[i - 1].AddMonths(1); + public void ComputeValues(PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments) + { + for (var i = 1; i < Values.Length; i++) + if (i <= preparedValues.EditPaymentNumber) + Values[i] = currentTablePayments[i - 1].DatePayment; + else + Values[i] = Values[i - 1].AddMonths(1); - Values[0] = Values[1]; - } + Values[0] = Values[1]; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateTempColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateTempColumn.cs index dfe79b7..223949c 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateTempColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/DateTempColumn.cs @@ -2,24 +2,23 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class DateTempColumn : BaseColumn { - public class DateTempColumn : BaseColumn + public DateTempColumn(int count) : base(count) { - public DateTempColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues, BaseColumn nextDateColumn) - { - if (preparedValues.DeliveryTime == 100000001) - Values[0] = Values[1] = nextDateColumn.GetValue(2).AddMonths(-1); - else - Values[0] = Values[1] = nextDateColumn.GetValue(1); + public void ComputeValues(PreparedValues preparedValues, BaseColumn nextDateColumn) + { + if (preparedValues.DeliveryTime == 100000001) + Values[0] = Values[1] = nextDateColumn.GetValue(2).AddMonths(-1); + else + Values[0] = Values[1] = nextDateColumn.GetValue(1); - for (var i = 2; i < nextDateColumn.Values.Length; i++) - Values[i] = nextDateColumn.GetValue(i); - } + for (var i = 2; i < nextDateColumn.Values.Length; i++) + Values[i] = nextDateColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/IRRGrColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/IRRGrColumn.cs index de1f2d9..29dcba1 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/IRRGrColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/IRRGrColumn.cs @@ -1,20 +1,19 @@ using System; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class IRRGrColumn : BaseColumn - { - public IRRGrColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(CashflowMSFOForNIColumn cashflowMSFOForNiColumn, - BaseColumnWithNominal nextCashflowMSFOColumn) - { - for (var i = 1; i < Values.Length; i++) - Values[i] = Math.Pow(1 + nextCashflowMSFOColumn.IRR, - (double) (cashflowMSFOForNiColumn.Dates[i] - cashflowMSFOForNiColumn.Dates[i - 1]).Days / 365) - 1; - } +public class IRRGrColumn : BaseColumn +{ + public IRRGrColumn(int count) : base(count) + { + } + + public void ComputeValues(CashflowMSFOForNIColumn cashflowMSFOForNiColumn, + BaseColumnWithNominal nextCashflowMSFOColumn) + { + for (var i = 1; i < Values.Length; i++) + Values[i] = Math.Pow(1 + nextCashflowMSFOColumn.IRR, + (double) (cashflowMSFOForNiColumn.Dates[i] - cashflowMSFOForNiColumn.Dates[i - 1]).Days / 365) - 1; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs index 8af0527..6a7f8c3 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs @@ -6,32 +6,31 @@ using EvoCalculator.Core.Tools.Check; using EvoCalculator.Core.Tools.GroupColumns; using EvoCalculator.Core.Tools.GroupColumns.Models; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class InterestColumn : BaseColumn { - public class InterestColumn : BaseColumn + public InterestColumn(int count) : base(count) { - public InterestColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn nextNIColumn, BaseColumn nextIRRGrColumn) - { - for (var i = 2; i < Values.Length; i++) - Values[i] = nextNIColumn.Values[i - 1] * (decimal) nextIRRGrColumn.Values[i]; - } + public void ComputeValues(BaseColumn nextNIColumn, BaseColumn nextIRRGrColumn) + { + for (var i = 2; i < Values.Length; i++) + Values[i] = nextNIColumn.Values[i - 1] * (decimal) nextIRRGrColumn.Values[i]; + } - public void PostCheck(BaseColumn nextSumColumn - , BaseColumn nextDateColumn - , IEnumerable cashflowMSFOForNIColumnDates) - { - var profit = GroupColumns.SumToMainGroup( - new SumRules() - , GroupColumns.Create(nextDateColumn.Values.Skip(3).SkipLast(1), - nextSumColumn.Values.Skip(3).SkipLast(1)) - , GroupColumns.Create(cashflowMSFOForNIColumnDates.Skip(1), Values.Skip(1).Select(x => -x))); + public void PostCheck(BaseColumn nextSumColumn + , BaseColumn nextDateColumn + , IEnumerable cashflowMSFOForNIColumnDates) + { + var profit = GroupColumns.SumToMainGroup( + new SumRules() + , GroupColumns.Create(nextDateColumn.Values.Skip(3).SkipLast(1), + nextSumColumn.Values.Skip(3).SkipLast(1)) + , GroupColumns.Create(cashflowMSFOForNIColumnDates.Skip(1), Values.Skip(1).Select(x => -x))); - new CheckTools().CheckColumnForLessThanZeroValue(GroupColumns.Split(profit).Values, - "Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж"); - } + new CheckTools().CheckColumnForLessThanZeroValue(GroupColumns.Split(profit).Values, + "Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NIColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NIColumn.cs index 4b449b7..c4927b8 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NIColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NIColumn.cs @@ -1,20 +1,19 @@ using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class NIColumn : BaseColumn { - public class NIColumn : BaseColumn + public NIColumn(int count) : base(count) { - public NIColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn nextCashflowMsfoForNIColumn, BaseColumn nextIRRGrColumn) - { - Values[1] = -nextCashflowMsfoForNIColumn.Values[0] - nextCashflowMsfoForNIColumn.Values[1]; + public void ComputeValues(BaseColumn nextCashflowMsfoForNIColumn, BaseColumn nextIRRGrColumn) + { + Values[1] = -nextCashflowMsfoForNIColumn.Values[0] - nextCashflowMsfoForNIColumn.Values[1]; - for (var i = 2; i < Values.Length; i++) - Values[i] = Values[i - 1] + Values[i - 1] * (decimal) nextIRRGrColumn.GetValue(i) - - nextCashflowMsfoForNIColumn.GetValue(i); - } + for (var i = 2; i < Values.Length; i++) + Values[i] = Values[i - 1] + Values[i - 1] * (decimal) nextIRRGrColumn.GetValue(i) - + nextCashflowMsfoForNIColumn.GetValue(i); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs index 70a2121..27c7f83 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs @@ -4,74 +4,73 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using TridentGoalSeek; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class NSIBBruttoGrColumn : BaseColumnWithSum, IGoalSeekAlgorithm { - public class NSIBBruttoGrColumn : BaseColumnWithSum, IGoalSeekAlgorithm + private readonly TablePaymentsRow[] _currentTablePayments; + private readonly BaseColumn _nextSumColumn; + private readonly PreparedValues _preparedValues; + + private readonly double[] _ratios; + + + public NSIBBruttoGrColumn(int count, PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments, + BaseColumn nextSumColumn) : base(count) { - private readonly TablePaymentsRow[] _currentTablePayments; - private readonly BaseColumn _nextSumColumn; - private readonly PreparedValues _preparedValues; + _preparedValues = preparedValues; + _currentTablePayments = currentTablePayments; + _nextSumColumn = nextSumColumn; + _ratios = new double[count]; + ComputeRatios(); + } - private readonly double[] _ratios; + public decimal Calculate(decimal x) + { + FillValues(x); + return Values.Skip(_preparedValues.EditPaymentNumber).Sum(v => v); + } + + private void ComputeRatios() + { + var targetMaxNextSumPayment = + _nextSumColumn.Values + .Where((x, i) => i >= _preparedValues.EditPaymentNumber) + .Max(x => x); + + for (var i = _preparedValues.EditPaymentNumber; i < Values.Length; i++) + _ratios[i] = (double) (_nextSumColumn.GetValue(i) / targetMaxNextSumPayment); + } - public NSIBBruttoGrColumn(int count, PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments, - BaseColumn nextSumColumn) : base(count) - { - _preparedValues = preparedValues; - _currentTablePayments = currentTablePayments; - _nextSumColumn = nextSumColumn; - _ratios = new double[count]; - ComputeRatios(); - } + private void FillValues(decimal x) + { + for (var i = 1; i < Values.Length - (_preparedValues.LastPaymentFix ? 1 : 0); i++) + if (i < _preparedValues.EditPaymentNumber) + Values[i] = _currentTablePayments[i - 1].NSIBBruttoPayment; + else + Values[i] = x * (decimal) _ratios[i]; - public decimal Calculate(decimal x) - { - FillValues(x); - return Values.Skip(_preparedValues.EditPaymentNumber).Sum(v => v); - } + Values[0] = Sum; + } - private void ComputeRatios() - { - var targetMaxNextSumPayment = - _nextSumColumn.Values - .Where((x, i) => i >= _preparedValues.EditPaymentNumber) - .Max(x => x); + public void ComputeValues(decimal requiredValue) + { + if (requiredValue == 0) return; - for (var i = _preparedValues.EditPaymentNumber; i < Values.Length; i++) - _ratios[i] = (double) (_nextSumColumn.GetValue(i) / targetMaxNextSumPayment); - } - - - private void FillValues(decimal x) - { - for (var i = 1; i < Values.Length - (_preparedValues.LastPaymentFix ? 1 : 0); i++) - if (i < _preparedValues.EditPaymentNumber) - Values[i] = _currentTablePayments[i - 1].NSIBBruttoPayment; - else - Values[i] = x * (decimal) _ratios[i]; - - Values[0] = Sum; - } - - public void ComputeValues(decimal requiredValue) - { - if (requiredValue == 0) return; - - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: - _currentTablePayments - .Select(x => x.NSIBBruttoPayment) - .Skip(_preparedValues.EditPaymentNumber) - .Average() - , maximumAttempts: 1000 - , initialTineSpacing: 100 - , trimFinalInputValue: true - , acceptanceToDecimalPlaces: 6 - // , focusPercentage: 50 - )); - } + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: + _currentTablePayments + .Select(x => x.NSIBBruttoPayment) + .Skip(_preparedValues.EditPaymentNumber) + .Average() + , maximumAttempts: 1000 + , initialTineSpacing: 100 + , trimFinalInputValue: true + , acceptanceToDecimalPlaces: 6 + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs index 77f48e8..7178876 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs @@ -3,33 +3,32 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class NSIBExpensesColumn : BaseColumnWithSum { - public class NSIBExpensesColumn : BaseColumnWithSum + public NSIBExpensesColumn(int count) : base(count) { - public NSIBExpensesColumn(int count) : base(count) + } + + public void ComputeValues(PreparedValues preparedValues, + TablePaymentsRow[] currentTablePayments, NextValues.NextValues nextValues) + { + for (var i = 1; i < Values.Length; i++) + if (i < nextValues.Nmper.Value + 1 && i < currentTablePayments.Length) + Values[i] = currentTablePayments[i - 1].NSIBExpensesPayment; + + var futureNSIBExpensesPayments = currentTablePayments + .Where((x, i) => i >= nextValues.Nmper.Value - 1) + .Sum(x => x.NSIBExpensesPayment); + if (preparedValues.LastPaymentFix) { + Values[^2] = futureNSIBExpensesPayments; + Values[^1] = 0; } - - public void ComputeValues(PreparedValues preparedValues, - TablePaymentsRow[] currentTablePayments, NextValues.NextValues nextValues) + else { - for (var i = 1; i < Values.Length; i++) - if (i < nextValues.Nmper.Value + 1 && i < currentTablePayments.Length) - Values[i] = currentTablePayments[i - 1].NSIBExpensesPayment; - - var futureNSIBExpensesPayments = currentTablePayments - .Where((x, i) => i >= nextValues.Nmper.Value - 1) - .Sum(x => x.NSIBExpensesPayment); - if (preparedValues.LastPaymentFix) - { - Values[^2] = futureNSIBExpensesPayments; - Values[^1] = 0; - } - else - { - Values[^1] = futureNSIBExpensesPayments; - } + Values[^1] = futureNSIBExpensesPayments; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs index ba76f07..c7b5745 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs @@ -3,33 +3,32 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class RevenueColumn : BaseColumn { - public class RevenueColumn : BaseColumn + public RevenueColumn(int count) : base(count) { - public RevenueColumn(int count) : base(count) + } + + public void ComputeValues(PreparedValues preparedValues, + TablePaymentsRow[] currentTablePayments, NextValues.NextValues nextValues) + { + for (var i = 1; i < Values.Length; i++) + if (i < nextValues.Nmper.Value + 1 && i < currentTablePayments.Length) + Values[i] = currentTablePayments[i - 1].NSIBRevenuePayment; + + var futureRevenuePayments = currentTablePayments + .Where((x, i) => i >= nextValues.Nmper.Value - 1) + .Sum(x => x.NSIBRevenuePayment); + if (preparedValues.LastPaymentFix) { + Values[^2] = futureRevenuePayments; + Values[^1] = 0; } - - public void ComputeValues(PreparedValues preparedValues, - TablePaymentsRow[] currentTablePayments, NextValues.NextValues nextValues) + else { - for (var i = 1; i < Values.Length; i++) - if (i < nextValues.Nmper.Value + 1 && i < currentTablePayments.Length) - Values[i] = currentTablePayments[i - 1].NSIBRevenuePayment; - - var futureRevenuePayments = currentTablePayments - .Where((x, i) => i >= nextValues.Nmper.Value - 1) - .Sum(x => x.NSIBRevenuePayment); - if (preparedValues.LastPaymentFix) - { - Values[^2] = futureRevenuePayments; - Values[^1] = 0; - } - else - { - Values[^1] = futureRevenuePayments; - } + Values[^1] = futureRevenuePayments; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SubsidyExpensesColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SubsidyExpensesColumn.cs index 9ad1bbe..5460b20 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SubsidyExpensesColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SubsidyExpensesColumn.cs @@ -1,18 +1,17 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class SubsidyExpensesColumn : BaseColumnWithSum - { - public SubsidyExpensesColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(PreparedValues preparedValues) - { - Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum; - Values[0] = Sum; - } +public class SubsidyExpensesColumn : BaseColumnWithSum +{ + public SubsidyExpensesColumn(int count) : base(count) + { + } + + public void ComputeValues(PreparedValues preparedValues) + { + Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum; + Values[0] = Sum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs index 6d3bfb1..85fd533 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs @@ -5,98 +5,97 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class BaseSumColumn : BaseColumnWithNominal { - public class BaseSumColumn : BaseColumnWithNominal + protected readonly TablePaymentsRow[] _currentTablePayments; + protected readonly TablePaymentsRow[] _nextTablePayments; + protected readonly NextValues.NextValues _nextValues; + protected readonly PreparedValues _preparedValues; + + protected double[] _ratios; + + public BaseSumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments + , TablePaymentsRow[] nextTablePayments) + : base(count, dateTempColumn) { - protected readonly TablePaymentsRow[] _currentTablePayments; - protected readonly TablePaymentsRow[] _nextTablePayments; - protected readonly NextValues.NextValues _nextValues; - protected readonly PreparedValues _preparedValues; + _preparedValues = preparedValues; + _nextValues = nextValues; + _currentTablePayments = currentTablePayments; + _nextTablePayments = nextTablePayments; - protected double[] _ratios; + _ratios = new double[count]; + ComputeRatios(); + } - public BaseSumColumn(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments - , TablePaymentsRow[] nextTablePayments) - : base(count, dateTempColumn) - { - _preparedValues = preparedValues; - _nextValues = nextValues; - _currentTablePayments = currentTablePayments; - _nextTablePayments = nextTablePayments; + public virtual void ComputeValues(decimal x) + { + } - _ratios = new double[count]; - ComputeRatios(); - } + private void ComputeRatios() + { + var targetCurrentPayments = + _currentTablePayments + .Where( + x => x.NumberPayment >= _preparedValues.EditPaymentNumber + && (_nextTablePayments == null + || !_nextTablePayments.Select(y => y.NumberPayment) + .Contains(x.NumberPayment)) + ) + .ToArray(); + var targetMaxSumPayment = targetCurrentPayments.Max(x => x.SumPayment); - public virtual void ComputeValues(decimal x) - { - } - - private void ComputeRatios() - { - var targetCurrentPayments = - _currentTablePayments - .Where( - x => x.NumberPayment >= _preparedValues.EditPaymentNumber - && (_nextTablePayments == null - || !_nextTablePayments.Select(y => y.NumberPayment) - .Contains(x.NumberPayment)) - ) - .ToArray(); - var targetMaxSumPayment = targetCurrentPayments.Max(x => x.SumPayment); - - for (var i = targetCurrentPayments[0].NumberPayment; i < _ratios.Length; i++) - if (i < _currentTablePayments.Length) - _ratios[i] = (double) (_currentTablePayments[i - 1].SumPayment / targetMaxSumPayment); - else - _ratios[i] = (double) (_currentTablePayments[^2].SumPayment / targetMaxSumPayment); - } + for (var i = targetCurrentPayments[0].NumberPayment; i < _ratios.Length; i++) + if (i < _currentTablePayments.Length) + _ratios[i] = (double) (_currentTablePayments[i - 1].SumPayment / targetMaxSumPayment); + else + _ratios[i] = (double) (_currentTablePayments[^2].SumPayment / targetMaxSumPayment); + } - protected virtual void FillValues(decimal x) - { - Values[0] = -(_nextValues.BaseCost.Value + _preparedValues.FuelCardSum); - Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; - for (var i = 2; i < Values.Length - 1; i++) - if (i < _preparedValues.EditPaymentNumber) - { - Values[i] = _currentTablePayments[i - 1].SumPayment; - } - else - { - if (_nextTablePayments != null && _nextTablePayments - .Select(tablePaymentsRow => tablePaymentsRow.NumberPayment) - .Contains(i)) - { - var numberPayment = _nextTablePayments - .FirstOrDefault(tablePaymentsRow => tablePaymentsRow.NumberPayment == i) - .NumberPayment; - Values[i] = _nextTablePayments.FirstOrDefault(x => x.NumberPayment == numberPayment).SumPayment; - } - else - { - Values[i] = x * (decimal) _ratios[i]; - } - } - - Values[^1] = _preparedValues.LastPaymentFix switch + protected virtual void FillValues(decimal x) + { + Values[0] = -(_nextValues.BaseCost.Value + _preparedValues.FuelCardSum); + Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; + for (var i = 2; i < Values.Length - 1; i++) + if (i < _preparedValues.EditPaymentNumber) { - true => _currentTablePayments[^1].SumPayment, - _ => x * (decimal) _ratios[^2] - }; - } + Values[i] = _currentTablePayments[i - 1].SumPayment; + } + else + { + if (_nextTablePayments != null && _nextTablePayments + .Select(tablePaymentsRow => tablePaymentsRow.NumberPayment) + .Contains(i)) + { + var numberPayment = _nextTablePayments + .FirstOrDefault(tablePaymentsRow => tablePaymentsRow.NumberPayment == i) + .NumberPayment; + Values[i] = _nextTablePayments.FirstOrDefault(x => x.NumberPayment == numberPayment).SumPayment; + } + else + { + Values[i] = x * (decimal) _ratios[i]; + } + } - public void PostCheck() + Values[^1] = _preparedValues.LastPaymentFix switch { - var checkTools = new CheckTools(); - checkTools.CheckColumnForLessThanZeroValue(Values); - checkTools.CheckColumnForZeroValue(Values.Skip(2)); + true => _currentTablePayments[^1].SumPayment, + _ => x * (decimal) _ratios[^2] + }; + } - if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5) - throw new Exception( - "Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж. Измените параметры для расчета."); - } + public void PostCheck() + { + var checkTools = new CheckTools(); + checkTools.CheckColumnForLessThanZeroValue(Values); + checkTools.CheckColumnForZeroValue(Values.Skip(2)); + + if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5) + throw new Exception( + "Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж. Измените параметры для расчета."); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT1.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT1.cs index 601be1a..95571ff 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT1.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT1.cs @@ -5,37 +5,36 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using TridentGoalSeek; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumColumnVT1 : BaseSumColumn, IColumnWithGoalSeek { - public class SumColumnVT1 : BaseSumColumn, IColumnWithGoalSeek + public SumColumnVT1(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, + TablePaymentsRow[] nextTablePayments) : base(count, dateTempColumn, preparedValues, nextValues, + currentTablePayments, nextTablePayments) { - public SumColumnVT1(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, - TablePaymentsRow[] nextTablePayments) : base(count, dateTempColumn, preparedValues, nextValues, - currentTablePayments, nextTablePayments) - { - } + } - public decimal Calculate(decimal x) - { - FillValues(x); - return (decimal) IRR; - } + public decimal Calculate(decimal x) + { + FillValues(x); + return (decimal) IRR; + } - public override void ComputeValues(decimal requiredValue) - { - var goalSeek = new GoalSeek(this); - // Чтобы IRR не получился меньше заданного - goalSeek.SeekResult(requiredValue + 0.00001m, - new GoalSeekOptions( - startingStabPoint: - (_nextValues.BaseCost.Value - _currentTablePayments[0].SumPayment) / - (_preparedValues.Nmper.Next - 1) - , maximumAttempts: 1000 - , initialTineSpacing: 100 - // , focusPercentage: 50 - )); - } + public override void ComputeValues(decimal requiredValue) + { + var goalSeek = new GoalSeek(this); + // Чтобы IRR не получился меньше заданного + goalSeek.SeekResult(requiredValue + 0.00001m, + new GoalSeekOptions( + startingStabPoint: + (_nextValues.BaseCost.Value - _currentTablePayments[0].SumPayment) / + (_preparedValues.Nmper.Next - 1) + , maximumAttempts: 1000 + , initialTineSpacing: 100 + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT2.cs index 0239e2a..d3d96bd 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT2.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT2.cs @@ -3,20 +3,19 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class SumColumnVT2 : BaseSumColumn - { - public SumColumnVT2(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, - TablePaymentsRow[] nextTablePayments) : base(count, dateTempColumn, preparedValues, nextValues, - currentTablePayments, nextTablePayments) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public override void ComputeValues(decimal x) - { - FillValues(x); - } +public class SumColumnVT2 : BaseSumColumn +{ + public SumColumnVT2(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, + TablePaymentsRow[] nextTablePayments) : base(count, dateTempColumn, preparedValues, nextValues, + currentTablePayments, nextTablePayments) + { + } + + public override void ComputeValues(decimal x) + { + FillValues(x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT3.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT3.cs index 900f652..391abad 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT3.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT3.cs @@ -3,59 +3,58 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumColumnVT3 : BaseSumColumn { - public class SumColumnVT3 : BaseSumColumn + private readonly Constants.Calculation _constants; + private readonly BaseColumn techNextSumRepaymentColumn; + + public SumColumnVT3(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, + TablePaymentsRow[] nextTablePayments, Constants.Calculation constants, + BaseColumn techNextSumRepaymentColumn) : base(count, dateTempColumn, + preparedValues, nextValues, + currentTablePayments, nextTablePayments) { - private readonly Constants.Calculation _constants; - private readonly BaseColumn techNextSumRepaymentColumn; + _constants = constants; + this.techNextSumRepaymentColumn = techNextSumRepaymentColumn; + } - public SumColumnVT3(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, - NextValues.NextValues nextValues, TablePaymentsRow[] currentTablePayments, - TablePaymentsRow[] nextTablePayments, Constants.Calculation constants, - BaseColumn techNextSumRepaymentColumn) : base(count, dateTempColumn, - preparedValues, nextValues, - currentTablePayments, nextTablePayments) - { - _constants = constants; - this.techNextSumRepaymentColumn = techNextSumRepaymentColumn; - } - - // TODO: use override - // Что здесь происходит знает только Аня - protected void FillValues() - { - Values[0] = -(_nextValues.BaseCost.Value + _preparedValues.FuelCardSum); - Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; - for (var i = 2; i < Values.Length; i++) - if (i < _preparedValues.EditPaymentNumber) - { - Values[i] = _currentTablePayments[i - 1].SumPayment; - } - else if (i == _preparedValues.EditPaymentNumber) - { - if (_preparedValues.ChangeRepayment == false) - Values[i] = _currentTablePayments[i - 1].RepaymentPayment / - (decimal) (1 + _constants.VatValue); - else - Values[i] = techNextSumRepaymentColumn.GetValue(i) / (decimal) (1 + _constants.VatValue); - - if (_preparedValues.LastPaymentFix) - Values[i] -= _currentTablePayments[^1].SumPayment; - } - else if (_preparedValues.LastPaymentFix) - { - Values[i] = _currentTablePayments[^1].SumPayment; - } + // TODO: use override + // Что здесь происходит знает только Аня + protected void FillValues() + { + Values[0] = -(_nextValues.BaseCost.Value + _preparedValues.FuelCardSum); + Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; + for (var i = 2; i < Values.Length; i++) + if (i < _preparedValues.EditPaymentNumber) + { + Values[i] = _currentTablePayments[i - 1].SumPayment; + } + else if (i == _preparedValues.EditPaymentNumber) + { + if (_preparedValues.ChangeRepayment == false) + Values[i] = _currentTablePayments[i - 1].RepaymentPayment / + (decimal) (1 + _constants.VatValue); else - { - Values[i] = Values[_preparedValues.EditPaymentNumber]; - } - } + Values[i] = techNextSumRepaymentColumn.GetValue(i) / (decimal) (1 + _constants.VatValue); - public void ComputeValues() - { - FillValues(); - } + if (_preparedValues.LastPaymentFix) + Values[i] -= _currentTablePayments[^1].SumPayment; + } + else if (_preparedValues.LastPaymentFix) + { + Values[i] = _currentTablePayments[^1].SumPayment; + } + else + { + Values[i] = Values[_preparedValues.EditPaymentNumber]; + } + } + + public void ComputeValues() + { + FillValues(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCreditColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCreditColumn.cs index 6841ba2..2b54765 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCreditColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCreditColumn.cs @@ -1,28 +1,27 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumCreditColumn : BaseColumn { - public class SumCreditColumn : BaseColumn + public SumCreditColumn(int count) : base(count) { - public SumCreditColumn(int count) : base(count) - { - } + } - public void ComputeValues(PreparedValues preparedValues - , NextValues.NextValues nextValues - , Constants.Calculation constants - , BaseColumn nextSumColumn) - { - Values[1] = Values[2] = (nextValues.BaseCost.Value - nextSumColumn.GetValue(1)) * - (1 + (decimal) constants.VatValue); + public void ComputeValues(PreparedValues preparedValues + , NextValues.NextValues nextValues + , Constants.Calculation constants + , BaseColumn nextSumColumn) + { + Values[1] = Values[2] = (nextValues.BaseCost.Value - nextSumColumn.GetValue(1)) * + (1 + (decimal) constants.VatValue); - for (var i = 3; i < Values.Length; i++) - if (GetValue(i - 1) > 0) - Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod; - else - Values[i] = 0; - } + for (var i = 3; i < Values.Length; i++) + if (GetValue(i - 1) > 0) + Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod; + else + Values[i] = 0; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentColumn.cs index 48f02ac..ce445fe 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentColumn.cs @@ -1,17 +1,16 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class SumCurrentColumn : BaseColumn - { - public SumCurrentColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(BaseColumn nextSumWithVatColumnVt1) - { - for (var i = 1; i < Values.Length; i++) Values[i] = nextSumWithVatColumnVt1.Values.Skip(i).Sum(x => x); - } +public class SumCurrentColumn : BaseColumn +{ + public SumCurrentColumn(int count) : base(count) + { + } + + public void ComputeValues(BaseColumn nextSumWithVatColumnVt1) + { + for (var i = 1; i < Values.Length; i++) Values[i] = nextSumWithVatColumnVt1.Values.Skip(i).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentInterestColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentInterestColumn.cs index 8c68558..e4b7b6a 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentInterestColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentInterestColumn.cs @@ -1,17 +1,16 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class SumCurrentInterestColumn : BaseColumn - { - public SumCurrentInterestColumn(int count) : base(count) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues(BaseColumn nextInterestColumn) - { - for (var i = 1; i < Values.Length; i++) Values[i] = nextInterestColumn.Values.Skip(i + 1).Sum(x => x); - } +public class SumCurrentInterestColumn : BaseColumn +{ + public SumCurrentInterestColumn(int count) : base(count) + { + } + + public void ComputeValues(BaseColumn nextInterestColumn) + { + for (var i = 1; i < Values.Length; i++) Values[i] = nextInterestColumn.Values.Skip(i + 1).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentNegativeColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentNegativeColumn.cs index 0485b23..7564957 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentNegativeColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentNegativeColumn.cs @@ -5,36 +5,35 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Array; using EvoCalculator.Core.Tools.GroupColumns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumCurrentNegativeColumn : BaseColumn { - public class SumCurrentNegativeColumn : BaseColumn + public SumCurrentNegativeColumn(int count) : base(count) { - public SumCurrentNegativeColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn nextDateTempColumn, TableInsuranceRow[] nextTableInsurance) - { - if (nextTableInsurance == null) - return; + public void ComputeValues(BaseColumn nextDateTempColumn, TableInsuranceRow[] nextTableInsurance) + { + if (nextTableInsurance == null) + return; - var targetInsurance = nextTableInsurance - .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO"); + var targetInsurance = nextTableInsurance + .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO"); - var groupSumCurrentNegativeColumn = GroupColumns.SumToMainGroup( - GroupColumns.Create(nextDateTempColumn.Values, ArraySegment.Empty), - GroupColumns.Create( - targetInsurance - .Where(x => x.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) - .Select(x => x.DateStartPeriodInsurance), - targetInsurance - .Where(x => x.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) - .Select(x => x.CostInsurance)) - ); + var groupSumCurrentNegativeColumn = GroupColumns.SumToMainGroup( + GroupColumns.Create(nextDateTempColumn.Values, ArraySegment.Empty), + GroupColumns.Create( + targetInsurance + .Where(x => x.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) + .Select(x => x.DateStartPeriodInsurance), + targetInsurance + .Where(x => x.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1]) + .Select(x => x.CostInsurance)) + ); - Values = Array.Concat( - new[] {0m} - , GroupColumns.Split(groupSumCurrentNegativeColumn).Values); - } + Values = Array.Concat( + new[] {0m} + , GroupColumns.Split(groupSumCurrentNegativeColumn).Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentTLMColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentTLMColumn.cs index 7acf3cb..0e246db 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentTLMColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumCurrentTLMColumn.cs @@ -1,20 +1,19 @@ using System.Linq; using EvoCalculator.Core.Base.Columns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumCurrentTLMColumn : BaseColumn { - public class SumCurrentTLMColumn : BaseColumn + public SumCurrentTLMColumn(int count) : base(count) { - public SumCurrentTLMColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn nextTLMGrColumn) - { - if (nextTLMGrColumn == null) - return; + public void ComputeValues(BaseColumn nextTLMGrColumn) + { + if (nextTLMGrColumn == null) + return; - for (var i = 1; i < Values.Length; i++) Values[i] = nextTLMGrColumn.Values.Skip(i + 1).Sum(x => x); - } + for (var i = 1; i < Values.Length; i++) Values[i] = nextTLMGrColumn.Values.Skip(i + 1).Sum(x => x); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs index 76e92d7..7dfa1f2 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs @@ -8,56 +8,55 @@ using EvoCalculator.Core.Tools.Check; using EvoCalculator.Core.Tools.GroupColumns; using EvoCalculator.Core.Tools.GroupColumns.Models; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumRepaymentColumn : BaseColumn { - public class SumRepaymentColumn : BaseColumn + public void ComputeValues(PreparedValues preparedValues + , TablePaymentsRow[] currentTablePayments + , BaseColumn nextSumCurrentNegativeColumn + , BaseColumn nextSumCurrentColumn + , BaseColumn nextSumCurrentTlmColumn + , BaseColumn nextSumCurrentInterestColumn + , BaseColumn nextSumWithVatColumn + , BaseColumn nextDateTempColumn + , CashflowMSFOForNIColumn nextCashflowMsfoForNiColumn + , Constants.Calculation constants + ) { - public void ComputeValues(PreparedValues preparedValues - , TablePaymentsRow[] currentTablePayments - , BaseColumn nextSumCurrentNegativeColumn - , BaseColumn nextSumCurrentColumn - , BaseColumn nextSumCurrentTlmColumn - , BaseColumn nextSumCurrentInterestColumn - , BaseColumn nextSumWithVatColumn - , BaseColumn nextDateTempColumn - , CashflowMSFOForNIColumn nextCashflowMsfoForNiColumn - , Constants.Calculation constants - ) - { - var firstPart = currentTablePayments - .Skip(1) - .Take(preparedValues.EditPaymentNumber - 2) - .Select(x => x.RepaymentPayment); + var firstPart = currentTablePayments + .Skip(1) + .Take(preparedValues.EditPaymentNumber - 2) + .Select(x => x.RepaymentPayment); - var secondPart = GroupColumns.SumToMainGroup( - new SumRules() - , GroupColumns.Create(nextDateTempColumn.GetValues(1), - ArraySegment.Empty) - , GroupColumns.Create(nextDateTempColumn.GetValues(1), nextSumCurrentColumn.GetValues(1)) - , GroupColumns.Create(nextDateTempColumn.GetValues(1), - nextSumCurrentNegativeColumn.GetValues(1).Select(x => -x).ToArray()) - , GroupColumns.Create(nextDateTempColumn.GetValues(1), - nextSumCurrentTlmColumn.GetValues(1) - .Select(x => -x * (1 + (decimal) constants.VatValue))) - , GroupColumns.Create(nextCashflowMsfoForNiColumn.Dates.Skip(1), nextSumCurrentInterestColumn - .GetValues(1) - .Select(x => -x * (1 + (decimal) constants.VatValue) * (decimal) preparedValues.Repayment)) - ); + var secondPart = GroupColumns.SumToMainGroup( + new SumRules() + , GroupColumns.Create(nextDateTempColumn.GetValues(1), + ArraySegment.Empty) + , GroupColumns.Create(nextDateTempColumn.GetValues(1), nextSumCurrentColumn.GetValues(1)) + , GroupColumns.Create(nextDateTempColumn.GetValues(1), + nextSumCurrentNegativeColumn.GetValues(1).Select(x => -x).ToArray()) + , GroupColumns.Create(nextDateTempColumn.GetValues(1), + nextSumCurrentTlmColumn.GetValues(1) + .Select(x => -x * (1 + (decimal) constants.VatValue))) + , GroupColumns.Create(nextCashflowMsfoForNiColumn.Dates.Skip(1), nextSumCurrentInterestColumn + .GetValues(1) + .Select(x => -x * (1 + (decimal) constants.VatValue) * (decimal) preparedValues.Repayment)) + ); - Values = Array.Concat( - new[] {0m, 0}, - firstPart, - GroupColumns.Split(secondPart.Skip(preparedValues.EditPaymentNumber - 1).SkipLast(1)).Values, - new[] {nextSumWithVatColumn.Values[^1]} - ); - } + Values = Array.Concat( + new[] {0m, 0}, + firstPart, + GroupColumns.Split(secondPart.Skip(preparedValues.EditPaymentNumber - 1).SkipLast(1)).Values, + new[] {nextSumWithVatColumn.Values[^1]} + ); + } - public void PostCheck() - { - var checkTools = new CheckTools(); - checkTools.CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + var checkTools = new CheckTools(); + checkTools.CheckColumnForLessThanZeroValue(Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs index b5a9e93..7b158c8 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs @@ -4,46 +4,45 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class BaseSumWithVATColumn : BaseColumnWithSum { - public class BaseSumWithVATColumn : BaseColumnWithSum + protected Constants.Calculation _constants; + protected TablePaymentsRow[] _currentTablePayments; + protected BaseSumColumn _nextSumColumn; + protected VATColumn _nextVATColumn; + protected PreparedValues _preparedValues; + + public BaseSumWithVATColumn(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, + TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, + Constants.Calculation constants) : base(count) { - protected Constants.Calculation _constants; - protected TablePaymentsRow[] _currentTablePayments; - protected BaseSumColumn _nextSumColumn; - protected VATColumn _nextVATColumn; - protected PreparedValues _preparedValues; + _preparedValues = preparedValues; + _nextSumColumn = nextSumColumn; + _currentTablePayments = currentTablePayments; + _nextVATColumn = nextVatColumn; + _constants = constants; + } - public BaseSumWithVATColumn(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, - TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, - Constants.Calculation constants) : base(count) - { - _preparedValues = preparedValues; - _nextSumColumn = nextSumColumn; - _currentTablePayments = currentTablePayments; - _nextVATColumn = nextVatColumn; - _constants = constants; - } + protected void FillValues() + { + Values[1] = _currentTablePayments[0].SumWithVATPayment + + _preparedValues.SubsidySum * (decimal) (1 + _constants.VatValue); - protected void FillValues() - { - Values[1] = _currentTablePayments[0].SumWithVATPayment + - _preparedValues.SubsidySum * (decimal) (1 + _constants.VatValue); + for (var i = 2; i < Values.Length; i++) + if (i < _preparedValues.EditPaymentNumber) + Values[i] = _currentTablePayments[i - 1].SumWithVATPayment; + else + Values[i] = _nextSumColumn.GetValue(i) + _nextVATColumn.GetValue(i); - for (var i = 2; i < Values.Length; i++) - if (i < _preparedValues.EditPaymentNumber) - Values[i] = _currentTablePayments[i - 1].SumWithVATPayment; - else - Values[i] = _nextSumColumn.GetValue(i) + _nextVATColumn.GetValue(i); + Values[0] = Sum; + } - Values[0] = Sum; - } - - public void PostCheck() - { - var checkTools = new CheckTools(); - checkTools.CheckColumnForLessThanZeroValue(Values); - checkTools.CheckColumnForZeroValue(Values.Skip(2)); - } + public void PostCheck() + { + var checkTools = new CheckTools(); + checkTools.CheckColumnForLessThanZeroValue(Values); + checkTools.CheckColumnForZeroValue(Values.Skip(2)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs index 06699a1..77a88be 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs @@ -1,19 +1,18 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next -{ - public class SumWithVATColumnVT1 : BaseSumWithVATColumn - { - public SumWithVATColumnVT1(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, - TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, Constants.Calculation constants) : base( - count, preparedValues, nextSumColumn, currentTablePayments, nextVatColumn, constants) - { - } +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; - public void ComputeValues() - { - FillValues(); - } +public class SumWithVATColumnVT1 : BaseSumWithVATColumn +{ + public SumWithVATColumnVT1(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, + TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, Constants.Calculation constants) : base( + count, preparedValues, nextSumColumn, currentTablePayments, nextVatColumn, constants) + { + } + + public void ComputeValues() + { + FillValues(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs index 46bd63f..3c48fd4 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs @@ -3,42 +3,41 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using TridentGoalSeek; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IGoalSeekAlgorithm { - public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IGoalSeekAlgorithm + private readonly NextValues.NextValues _nextValues; + + public SumWithVATColumnVT2(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, + TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, Constants.Calculation constants, + NextValues.NextValues nextValues) : base(count, preparedValues, nextSumColumn, currentTablePayments, + nextVatColumn, constants) { - private readonly NextValues.NextValues _nextValues; + _nextValues = nextValues; + } - public SumWithVATColumnVT2(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, - TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, Constants.Calculation constants, - NextValues.NextValues nextValues) : base(count, preparedValues, nextSumColumn, currentTablePayments, - nextVatColumn, constants) - { - _nextValues = nextValues; - } + public decimal Calculate(decimal inputVariable) + { + _nextSumColumn.ComputeValues(inputVariable); + _nextSumColumn.RoundValues(); + _nextVATColumn.ComputeValues(_preparedValues, _nextSumColumn, _currentTablePayments, _constants); - public decimal Calculate(decimal inputVariable) - { - _nextSumColumn.ComputeValues(inputVariable); - _nextSumColumn.RoundValues(); - _nextVATColumn.ComputeValues(_preparedValues, _nextSumColumn, _currentTablePayments, _constants); + FillValues(); + return Convert.ToDecimal(Sum); + } - FillValues(); - return Convert.ToDecimal(Sum); - } - - public void ComputeValues(decimal requiredValue) - { - var goalSeek = new GoalSeek(this); - goalSeek.SeekResult(requiredValue, - new GoalSeekOptions( - startingStabPoint: - (_nextValues.BaseCost.Value - _currentTablePayments[0].SumPayment) / - (_preparedValues.Nmper.Next - 1) - , maximumAttempts: 1000 - , initialTineSpacing: 100 - // , focusPercentage: 50 - )); - } + public void ComputeValues(decimal requiredValue) + { + var goalSeek = new GoalSeek(this); + goalSeek.SeekResult(requiredValue, + new GoalSeekOptions( + startingStabPoint: + (_nextValues.BaseCost.Value - _currentTablePayments[0].SumPayment) / + (_preparedValues.Nmper.Next - 1) + , maximumAttempts: 1000 + , initialTineSpacing: 100 + // , focusPercentage: 50 + )); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs index f32fdd0..b7d3f04 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs @@ -6,64 +6,63 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Array; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class TLMCostColumn : BaseColumnWithSum { - public class TLMCostColumn : BaseColumnWithSum + public TLMCostColumn(int count, DateTime[] dates) : base(count) { - public TLMCostColumn(int count, DateTime[] dates) : base(count) - { - Dates = dates; - } + Dates = dates; + } - public DateTime[] Dates { get; set; } + public DateTime[] Dates { get; set; } - public void ComputeValues( - PreparedValues preparedValues - , ChangingValue tableTLMTracker) + public void ComputeValues( + PreparedValues preparedValues + , ChangingValue tableTLMTracker) + { + if (preparedValues.ChangeTrackerTLM == false) { - if (preparedValues.ChangeTrackerTLM == false) + var lastValue = tableTLMTracker.Current[^1].CostTLM; + + if (Dates.Length <= tableTLMTracker.Current.Length + 1) { - var lastValue = tableTLMTracker.Current[^1].CostTLM; - - if (Dates.Length <= tableTLMTracker.Current.Length + 1) - { - Values = Array.Concat( - new decimal[] {0} - , tableTLMTracker.Current.Take(Dates.Length - 1).Select(x => x.CostTLM)); - } - else - { - var tailNumber = Dates.Length - tableTLMTracker.Current.Length - 1; - Values = Array.Concat( - new decimal[] {0} - , tableTLMTracker.Current.Select(x => x.CostTLM) - , Enumerable.Repeat(lastValue, tailNumber)); - } + Values = Array.Concat( + new decimal[] {0} + , tableTLMTracker.Current.Take(Dates.Length - 1).Select(x => x.CostTLM)); } else { - var currentIndex = tableTLMTracker.Current - .ToList() - .FindIndex(x => - x.DateTLM.Month == preparedValues.EditPaymentDate.Next.Month - && x.DateTLM.Year == preparedValues.EditPaymentDate.Next.Year - ); - var currentPart = tableTLMTracker.Current.Take(currentIndex); - + var tailNumber = Dates.Length - tableTLMTracker.Current.Length - 1; Values = Array.Concat( new decimal[] {0} - , currentPart.Select(x => x.CostTLM) - , tableTLMTracker.Next.Select(x => x.CostTLM)); + , tableTLMTracker.Current.Select(x => x.CostTLM) + , Enumerable.Repeat(lastValue, tailNumber)); } - - Values[0] = Sum; } - - public void PostCheck() + else { - if (Values.Length != Dates.Length) - throw new Exception( - $"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений"); + var currentIndex = tableTLMTracker.Current + .ToList() + .FindIndex(x => + x.DateTLM.Month == preparedValues.EditPaymentDate.Next.Month + && x.DateTLM.Year == preparedValues.EditPaymentDate.Next.Year + ); + var currentPart = tableTLMTracker.Current.Take(currentIndex); + + Values = Array.Concat( + new decimal[] {0} + , currentPart.Select(x => x.CostTLM) + , tableTLMTracker.Next.Select(x => x.CostTLM)); } + + Values[0] = Sum; + } + + public void PostCheck() + { + if (Values.Length != Dates.Length) + throw new Exception( + $"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMDateColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMDateColumn.cs index 779682e..7f32609 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMDateColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMDateColumn.cs @@ -2,29 +2,28 @@ using EvoCalculator.Core.Base.Columns; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class TLMDateColumn : BaseColumn { - public class TLMDateColumn : BaseColumn + public TLMDateColumn(int count) : base(count) { - public TLMDateColumn(int count) : base(count) + } + + public void ComputeValues(TLMData tlmData) + { + var currentDate = tlmData.StartDate; + var i = 1; + while (currentDate != tlmData.EndDate && i < Values.Length) { - } + var year = currentDate.Year; + var month = currentDate.Month; + var day = DateTime.DaysInMonth(year, month); - public void ComputeValues(TLMData tlmData) - { - var currentDate = tlmData.StartDate; - var i = 1; - while (currentDate != tlmData.EndDate && i < Values.Length) - { - var year = currentDate.Year; - var month = currentDate.Month; - var day = DateTime.DaysInMonth(year, month); + Values[i] = new DateTime(year, month, day); - Values[i] = new DateTime(year, month, day); - - currentDate = currentDate.AddMonths(1); - i++; - } + currentDate = currentDate.AddMonths(1); + i++; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMGrColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMGrColumn.cs index 19330ae..7e72cf7 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMGrColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMGrColumn.cs @@ -5,32 +5,31 @@ using EvoCalculator.Core.Tools.Array; using EvoCalculator.Core.Tools.Check; using EvoCalculator.Core.Tools.GroupColumns; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class TLMGrColumn : BaseColumnWithSum { - public class TLMGrColumn : BaseColumnWithSum + public TLMGrColumn(int count) : base(count) { - public TLMGrColumn(int count) : base(count) - { - } + } - public void ComputeValues(BaseColumn nextDateColumn - , BaseColumn nextTLMDateColumn - , BaseColumn nextTLMCostColumn) - { - var groupTLMGrColumn = GroupColumns.SumToMainGroupWithCompression( - GroupColumns.Create(nextDateColumn.Values.Skip(1), ArraySegment.Empty), - GroupColumns.Create(nextTLMDateColumn.Values, nextTLMCostColumn.Values) - ); + public void ComputeValues(BaseColumn nextDateColumn + , BaseColumn nextTLMDateColumn + , BaseColumn nextTLMCostColumn) + { + var groupTLMGrColumn = GroupColumns.SumToMainGroupWithCompression( + GroupColumns.Create(nextDateColumn.Values.Skip(1), ArraySegment.Empty), + GroupColumns.Create(nextTLMDateColumn.Values, nextTLMCostColumn.Values) + ); - Values = Array.Concat( - new[] {0m} - , GroupColumns.Split(groupTLMGrColumn).Values); - Values[0] = Sum; - } + Values = Array.Concat( + new[] {0m} + , GroupColumns.Split(groupTLMGrColumn).Values); + Values[0] = Sum; + } - public void PostCheck() - { - new CheckTools().CheckColumnForLessThanZeroValue(Values); - } + public void PostCheck() + { + new CheckTools().CheckColumnForLessThanZeroValue(Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs index 0fad5dd..0e90a77 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs @@ -5,33 +5,32 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools.Check; -namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class VATColumn : BaseColumnWithSum { - public class VATColumn : BaseColumnWithSum + public VATColumn(int count) : base(count) { - public VATColumn(int count) : base(count) - { - } + } - public void ComputeValues( - PreparedValues preparedValues - , BaseColumn nextSumColumn - , TablePaymentsRow[] currentTablePayments - , Constants.Calculation constants) - { - Values[1] = currentTablePayments[0].VATPayment + preparedValues.SubsidySum * (decimal) constants.VatValue; - for (var i = 2; i < Values.Length; i++) - if (i < preparedValues.EditPaymentNumber) - Values[i] = currentTablePayments[i - 1].VATPayment; - else - Values[i] = Math.Round(nextSumColumn.GetValue(i) * (decimal) constants.VatValue, 2); - } + public void ComputeValues( + PreparedValues preparedValues + , BaseColumn nextSumColumn + , TablePaymentsRow[] currentTablePayments + , Constants.Calculation constants) + { + Values[1] = currentTablePayments[0].VATPayment + preparedValues.SubsidySum * (decimal) constants.VatValue; + for (var i = 2; i < Values.Length; i++) + if (i < preparedValues.EditPaymentNumber) + Values[i] = currentTablePayments[i - 1].VATPayment; + else + Values[i] = Math.Round(nextSumColumn.GetValue(i) * (decimal) constants.VatValue, 2); + } - public void PostCheck() - { - var checkTools = new CheckTools(); - checkTools.CheckColumnForLessThanZeroValue(Values); - checkTools.CheckColumnForZeroValue(Values.Skip(2)); - } + public void PostCheck() + { + var checkTools = new CheckTools(); + checkTools.CheckColumnForLessThanZeroValue(Values); + checkTools.CheckColumnForZeroValue(Values.Skip(2)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs index 92aa0fa..075d19f 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs @@ -8,281 +8,280 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Next.DateTempColumn; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation) { - public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + + /* + * CURRENT + */ + var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); + currentDateColumn.ComputeValues(currentTablePayments); + + var currentDateTempColumn = + new DateTempColumn(preparedValues.Nmper.Current + 1); + currentDateTempColumn.ComputeValues(preparedValues, currentDateColumn); + + var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); + currentSumColumn.ComputeValues(preparedValues, currentTablePayments); + /* + * CURRENT + */ + + var nextValues = new NextValues.NextValues(); + + /* + * TECH + */ + var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Next + 1); + techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); + techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); + + + TLMDateColumn techNextTlmDateColumn = null; + TLMCostColumn techNextTlmCostColumn = null; + TLMGrColumn techNextTlmGrColumn = null; + + var techTlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , techNextDateColumn); + + if (techTlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; - - /* - * CURRENT - */ - var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); - currentDateColumn.ComputeValues(currentTablePayments); - - var currentDateTempColumn = - new DateTempColumn(preparedValues.Nmper.Current + 1); - currentDateTempColumn.ComputeValues(preparedValues, currentDateColumn); - - var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); - currentSumColumn.ComputeValues(preparedValues, currentTablePayments); - /* - * CURRENT - */ - - var nextValues = new NextValues.NextValues(); - - /* - * TECH - */ - var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Next + 1); - techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); - techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); - - - TLMDateColumn techNextTlmDateColumn = null; - TLMCostColumn techNextTlmCostColumn = null; - TLMGrColumn techNextTlmGrColumn = null; - - var techTlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , techNextDateColumn); - - if (techTlmData != null) - { - techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); - techNextTlmDateColumn.ComputeValues(techTlmData); - techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); - techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - techNextTlmCostColumn.PostCheck(); - techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); - } - - - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); - - var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, - techNextSumColumn, currentTablePayments, techNextVATColumn, constants); - techNextSumWithVATColumn.ComputeValues(); - /* - * TECH - */ - - /* - * NEXT - */ - var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - - - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; - - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); - - if (tlmData != null) - { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); - } - - - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - - var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - - var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); - nextSumWithVATColumn.ComputeValues(techNextSumWithVATColumn.GetValue(0)); - nextSumColumn.PostCheck(); - nextVATColumn.PostCheck(); - nextSumWithVATColumn.PostCheck(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - currentTablePayments, nextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - nextValues.Nmper.Value = preparedValues.Nmper.Next; - nextValues.Nmper.PostCheck(preparedValues); - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - /* - * NEXT - */ - - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - currentDateColumn, - currentDateTemp = currentDateTempColumn, - currentSumColumn, - - techNextDateColumn, - techNextDateTempColumn, - techNextTlmDateColumn, - techNextTlmCostColumn, - techNextTlmGrColumn, - techNextSumColumn, - techNextVATColumn, - techNextSumWithVATColumn, - - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - nextSumColumn, - nextVATColumn, - nextSumWithVATColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; + techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); + techNextTlmDateColumn.ComputeValues(techTlmData); + techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); + techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + techNextTlmCostColumn.PostCheck(); + techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); } - catch (Exception ex) + + + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); + + var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); + + var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); + + var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, + techNextSumColumn, currentTablePayments, techNextVATColumn, constants); + techNextSumWithVATColumn.ComputeValues(); + /* + * TECH + */ + + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + + + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; + + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); + + if (tlmData != null) { - return new ManagerResult - { - Errors = new List - { - ex.Message - } - }; + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); } + + + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + + var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + + var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + + var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); + nextSumWithVATColumn.ComputeValues(techNextSumWithVATColumn.GetValue(0)); + nextSumColumn.PostCheck(); + nextVATColumn.PostCheck(); + nextSumWithVATColumn.PostCheck(); + + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + currentTablePayments, nextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + nextValues.Nmper.Value = preparedValues.Nmper.Next; + nextValues.Nmper.PostCheck(preparedValues); + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + /* + * NEXT + */ + + + return new ManagerResult + { + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new + { + currentDateColumn, + currentDateTemp = currentDateTempColumn, + currentSumColumn, + + techNextDateColumn, + techNextDateTempColumn, + techNextTlmDateColumn, + techNextTlmCostColumn, + techNextTlmGrColumn, + techNextSumColumn, + techNextVATColumn, + techNextSumWithVATColumn, + + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + nextSumColumn, + nextVATColumn, + nextSumWithVATColumn, + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn + } + }; + } + catch (Exception ex) + { + return new ManagerResult + { + Errors = new List + { + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs index 7a1979f..97edc7b 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs @@ -6,202 +6,201 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) { - public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + + + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; + + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); + + if (tlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; - /* - * NEXT - */ - var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); + } - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; + var nextValues = new NextValues.NextValues(); + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); + var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - if (tlmData != null) + var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); + nextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected); + nextSumWithVATColumn.PostCheck(); + nextVATColumn.PostCheck(); + nextSumColumn.PostCheck(); + + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + currentTablePayments, nextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + + nextValues.Nmper.Value = preparedValues.Nmper.Next; + nextValues.Nmper.PostCheck(preparedValues); + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + /* + * NEXT + */ + + return new ManagerResult + { + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + nextSumColumn, + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextVATColumn, + nextSumWithVATColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn } - - - var nextValues = new NextValues.NextValues(); - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - - var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); - nextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected); - nextSumWithVATColumn.PostCheck(); - nextVATColumn.PostCheck(); - nextSumColumn.PostCheck(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - currentTablePayments, nextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - - nextValues.Nmper.Value = preparedValues.Nmper.Next; - nextValues.Nmper.PostCheck(preparedValues); - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - /* - * NEXT - */ - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - nextSumColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextVATColumn, - nextSumWithVATColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; - } - catch (Exception ex) + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs index 119c2dc..2d8b68d 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs @@ -8,229 +8,228 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) { - public static ManagerResult CalculateDefault(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + + + /* + * CURRENT + */ + var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); + currentDateColumn.ComputeValues(currentTablePayments); + + var currentDateTempColumn = + new DateTempColumn(preparedValues.Nmper.Current + 1); + currentDateTempColumn.ComputeValues(currentDateColumn); + + var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); + currentSumColumn.ComputeValues(preparedValues, currentTablePayments); + /* + * CURRENT + */ + + + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + + + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; + + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); + + if (tlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); + } - /* - * CURRENT - */ - var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); - currentDateColumn.ComputeValues(currentTablePayments); + var nextValues = new NextValues.NextValues(); + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); - var currentDateTempColumn = - new DateTempColumn(preparedValues.Nmper.Current + 1); - currentDateTempColumn.ComputeValues(currentDateColumn); + var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); + nextSumColumn.PostCheck(); + nextSumColumn.RoundValues(); - var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); - currentSumColumn.ComputeValues(preparedValues, currentTablePayments); - /* - * CURRENT - */ + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + currentTablePayments, nextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); + + var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants); + nextSumWithVATColumn.ComputeValues(); + nextVATColumn.PostCheck(); + nextSumWithVATColumn.PostCheck(); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + + nextValues.Nmper.Value = preparedValues.Nmper.Next; + nextValues.Nmper.PostCheck(preparedValues); + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - /* - * NEXT - */ - var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + /* + * NEXT + */ - var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - - - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; - - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); - - if (tlmData != null) + return new ManagerResult + { + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); + currentDateColumn, + currentDateTemp = currentDateTempColumn, + currentSumColumn, + + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + nextSumColumn, + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextVATColumn, + nextSumWithVATColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn } - - - var nextValues = new NextValues.NextValues(); - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - nextSumColumn.PostCheck(); - nextSumColumn.RoundValues(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - currentTablePayments, nextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); - - var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants); - nextSumWithVATColumn.ComputeValues(); - nextVATColumn.PostCheck(); - nextSumWithVATColumn.PostCheck(); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - - nextValues.Nmper.Value = preparedValues.Nmper.Next; - nextValues.Nmper.PostCheck(preparedValues); - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - /* - * NEXT - */ - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - currentDateColumn, - currentDateTemp = currentDateTempColumn, - currentSumColumn, - - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - nextSumColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextVATColumn, - nextSumWithVATColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; - } - catch (Exception ex) + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs index 3950bda..63b26e5 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs @@ -6,329 +6,328 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation) { - public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + + var nextValues = new NextValues.NextValues(); + + /* + * TECH + */ + var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Current + 1); + techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Current + 1); + techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); + + + TLMDateColumn techNextTlmDateColumn = null; + TLMCostColumn techNextTlmCostColumn = null; + TLMGrColumn techNextTlmGrColumn = null; + + var techTlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , techNextDateColumn); + + if (techTlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; - - var nextValues = new NextValues.NextValues(); - - /* - * TECH - */ - var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Current + 1); - techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Current + 1); - techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); + techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); + techNextTlmDateColumn.ComputeValues(techTlmData); + techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); + techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + techNextTlmCostColumn.PostCheck(); + techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Current + 1); + techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); + } - TLMDateColumn techNextTlmDateColumn = null; - TLMCostColumn techNextTlmCostColumn = null; - TLMGrColumn techNextTlmGrColumn = null; + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); - var techTlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , techNextDateColumn); + var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); - if (techTlmData != null) + var techNextVATColumn = new VATColumn(preparedValues.Nmper.Current + 1); + techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); + + var techNextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Current + 1, preparedValues, + techNextSumColumn, currentTablePayments, techNextVATColumn, constants, nextValues); + techNextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected); + + var techNextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Current + 1, + preparedValues, + currentTablePayments, techNextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + techNextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var techNextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Current + 1); + techNextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + + var techNextCashflowMSFOColumn = new CashflowMSFOColumn(); + techNextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, techNextSumColumn, + techNextTlmCostColumn, + techNextSubsidyExpensesColumn, techNextNSIBBruttoGrColumn, nextTableInsurance, + techNextDateTempColumn, + techNextTlmDateColumn); + + var techNextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + techNextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, techNextDateTempColumn, + techNextCashflowMSFOColumn); + techNextCashflowMSFOColumn.PostCheck(); + + var techNextIRRGrColumn = new IRRGrColumn(techNextCashflowMSFOForNIColumn.Values.Length); + techNextIRRGrColumn.ComputeValues(techNextCashflowMSFOForNIColumn, techNextCashflowMSFOColumn); + + var techNextNIColumn = new NIColumn(techNextCashflowMSFOForNIColumn.Values.Length); + techNextNIColumn.ComputeValues(techNextCashflowMSFOForNIColumn, techNextIRRGrColumn); + + var techNextInterestColumn = new InterestColumn(techNextCashflowMSFOForNIColumn.Values.Length); + techNextInterestColumn.ComputeValues(techNextNIColumn, techNextIRRGrColumn); + + var techNextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Current + 1); + techNextSumCurrentColumn.ComputeValues(techNextSumWithVATColumn); + + var techNextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Current + 1); + techNextSumCurrentNegativeColumn.ComputeValues(techNextDateTempColumn, nextTableInsurance); + + var techNextSumCurrentInterestColumn = + new SumCurrentInterestColumn(techNextCashflowMSFOForNIColumn.Values.Length); + techNextSumCurrentInterestColumn.ComputeValues(techNextInterestColumn); + + var techNextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Current + 1); + techNextSumCurrentTLMColumn.ComputeValues(techNextTlmGrColumn); + + var techNextSumRepaymentColumn = new SumRepaymentColumn(); + techNextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, + techNextSumCurrentNegativeColumn, + techNextSumCurrentColumn, techNextSumCurrentTLMColumn, techNextSumCurrentInterestColumn, + techNextSumWithVATColumn, + techNextDateTempColumn, techNextCashflowMSFOForNIColumn, constants); + + /* + * TECH + */ + + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + + + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; + + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); + + if (tlmData != null) + { + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); + } + + + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); + + var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments, constants, + techNextSumRepaymentColumn); + nextSumColumn.ComputeValues(); + nextSumColumn.PostCheck(); + nextSumColumn.RoundValues(); + + var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); + + var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants); + nextSumWithVATColumn.ComputeValues(); + nextVATColumn.PostCheck(); + nextSumWithVATColumn.PostCheck(); + + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + currentTablePayments, nextSumColumn); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + + nextValues.Nmper.Value = preparedValues.Nmper.Next; + nextValues.Nmper.PostCheck(preparedValues); + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + /* + * NEXT + */ + + + return new ManagerResult + { + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); - techNextTlmDateColumn.ComputeValues(techTlmData); - techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); - techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - techNextTlmCostColumn.PostCheck(); - techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Current + 1); - techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); - } - - - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Current + 1); - techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); - - var techNextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Current + 1, preparedValues, - techNextSumColumn, currentTablePayments, techNextVATColumn, constants, nextValues); - techNextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected); - - var techNextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Current + 1, - preparedValues, - currentTablePayments, techNextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - techNextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var techNextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Current + 1); - techNextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - - var techNextCashflowMSFOColumn = new CashflowMSFOColumn(); - techNextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, techNextSumColumn, - techNextTlmCostColumn, - techNextSubsidyExpensesColumn, techNextNSIBBruttoGrColumn, nextTableInsurance, + techNextDateColumn, techNextDateTempColumn, - techNextTlmDateColumn); - - var techNextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - techNextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, techNextDateTempColumn, - techNextCashflowMSFOColumn); - techNextCashflowMSFOColumn.PostCheck(); - - var techNextIRRGrColumn = new IRRGrColumn(techNextCashflowMSFOForNIColumn.Values.Length); - techNextIRRGrColumn.ComputeValues(techNextCashflowMSFOForNIColumn, techNextCashflowMSFOColumn); - - var techNextNIColumn = new NIColumn(techNextCashflowMSFOForNIColumn.Values.Length); - techNextNIColumn.ComputeValues(techNextCashflowMSFOForNIColumn, techNextIRRGrColumn); - - var techNextInterestColumn = new InterestColumn(techNextCashflowMSFOForNIColumn.Values.Length); - techNextInterestColumn.ComputeValues(techNextNIColumn, techNextIRRGrColumn); - - var techNextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Current + 1); - techNextSumCurrentColumn.ComputeValues(techNextSumWithVATColumn); - - var techNextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Current + 1); - techNextSumCurrentNegativeColumn.ComputeValues(techNextDateTempColumn, nextTableInsurance); - - var techNextSumCurrentInterestColumn = - new SumCurrentInterestColumn(techNextCashflowMSFOForNIColumn.Values.Length); - techNextSumCurrentInterestColumn.ComputeValues(techNextInterestColumn); - - var techNextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Current + 1); - techNextSumCurrentTLMColumn.ComputeValues(techNextTlmGrColumn); - - var techNextSumRepaymentColumn = new SumRepaymentColumn(); - techNextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, - techNextSumCurrentNegativeColumn, - techNextSumCurrentColumn, techNextSumCurrentTLMColumn, techNextSumCurrentInterestColumn, + techNextTlmDateColumn, + techNextTlmCostColumn, + techNextTlmGrColumn, + techNextSumColumn, + techNextVATColumn, techNextSumWithVATColumn, - techNextDateTempColumn, techNextCashflowMSFOForNIColumn, constants); - - /* - * TECH - */ - - /* - * NEXT - */ - var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - - - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; - - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); - - if (tlmData != null) - { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); + techNextNSIBBruttoGrColumn, + techNextSubsidyExpensesColumn, + techNextCashflowMSFOColumn, + techNextCashflowMSFOForNIColumn, + techNextIRRGrColumn, + techNextNIColumn, + techNextInterestColumn, + techNextSumCurrentColumn, + techNextSumCurrentNegativeColumn, + techNextSumCurrentInterestColumn, + techNextSumCurrentTLMColumn, + techNextSumRepaymentColumn, + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + nextSumColumn, + nextVATColumn, + nextSumWithVATColumn, + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn } - - - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments, constants, - techNextSumRepaymentColumn); - nextSumColumn.ComputeValues(); - nextSumColumn.PostCheck(); - nextSumColumn.RoundValues(); - - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); - - var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants); - nextSumWithVATColumn.ComputeValues(); - nextVATColumn.PostCheck(); - nextSumWithVATColumn.PostCheck(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - currentTablePayments, nextSumColumn); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - - nextValues.Nmper.Value = preparedValues.Nmper.Next; - nextValues.Nmper.PostCheck(preparedValues); - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - /* - * NEXT - */ - - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - techNextDateColumn, - techNextDateTempColumn, - techNextTlmDateColumn, - techNextTlmCostColumn, - techNextTlmGrColumn, - techNextSumColumn, - techNextVATColumn, - techNextSumWithVATColumn, - techNextNSIBBruttoGrColumn, - techNextSubsidyExpensesColumn, - techNextCashflowMSFOColumn, - techNextCashflowMSFOForNIColumn, - techNextIRRGrColumn, - techNextNIColumn, - techNextInterestColumn, - techNextSumCurrentColumn, - techNextSumCurrentNegativeColumn, - techNextSumCurrentInterestColumn, - techNextSumCurrentTLMColumn, - techNextSumRepaymentColumn, - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - nextSumColumn, - nextVATColumn, - nextSumWithVATColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; - } - catch (Exception ex) + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs index 4799cf5..414ba00 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs @@ -8,284 +8,283 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation) { - public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + + + /* + * CURRENT + */ + var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); + currentDateColumn.ComputeValues(currentTablePayments); + + var currentDateTempColumn = + new DateTempColumn(preparedValues.Nmper.Current + 1); + currentDateTempColumn.ComputeValues(currentDateColumn); + + var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); + currentSumColumn.ComputeValues(preparedValues, currentTablePayments); + /* + * CURRENT + */ + + var nextValues = new NextValues.NextValues(); + + /* + * TECH + */ + var techNextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var techNextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); + techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); + + + TLMDateColumn techNextTlmDateColumn = null; + TLMCostColumn techNextTlmCostColumn = null; + TLMGrColumn techNextTlmGrColumn = null; + + var techTlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , techNextDateColumn); + + if (techTlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); + techNextTlmDateColumn.ComputeValues(techTlmData); + techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); + techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + techNextTlmCostColumn.PostCheck(); + techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); + } - /* - * CURRENT - */ - var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); - currentDateColumn.ComputeValues(currentTablePayments); + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); - var currentDateTempColumn = - new DateTempColumn(preparedValues.Nmper.Current + 1); - currentDateTempColumn.ComputeValues(currentDateColumn); + var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); - currentSumColumn.ComputeValues(preparedValues, currentTablePayments); - /* - * CURRENT - */ + var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); - var nextValues = new NextValues.NextValues(); + var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, + techNextSumColumn, currentTablePayments, techNextVATColumn, constants); + techNextSumWithVATColumn.ComputeValues(); - /* - * TECH - */ - var techNextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - techNextDateColumn.ComputeValues(preparedValues, currentTablePayments); + nextValues.SumTotal.ComputeValue(preparedValues, techNextSumWithVATColumn); + nextValues.Nmper.ComputeValue(preparedValues, nextTablePayments, currentTablePayments); + /* + * TECH + */ - var techNextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); - techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn); + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(nextValues.Nmper.Value + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new Columns.Next.DateTempColumn(nextValues.Nmper.Value + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - TLMDateColumn techNextTlmDateColumn = null; - TLMCostColumn techNextTlmCostColumn = null; - TLMGrColumn techNextTlmGrColumn = null; + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; - var techTlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , techNextDateColumn); + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); - if (techTlmData != null) - { - techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1); - techNextTlmDateColumn.ComputeValues(techTlmData); - techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values); - techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - techNextTlmCostColumn.PostCheck(); - techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn); - } + if (tlmData != null) + { + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(nextValues.Nmper.Value + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); + } - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, techNextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); - var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); + var nextSumColumn = new SumColumnVT2(nextValues.Nmper.Value + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); + var nextVATColumn = new VATColumn(nextValues.Nmper.Value + 1); - var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, - techNextSumColumn, currentTablePayments, techNextVATColumn, constants); - techNextSumWithVATColumn.ComputeValues(); + var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper.Value + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); + nextSumWithVATColumn.ComputeValues(nextValues.SumTotal.Value); + nextSumWithVATColumn.PostCheck(); + nextVATColumn.PostCheck(); + nextSumColumn.PostCheck(); - nextValues.SumTotal.ComputeValue(preparedValues, techNextSumWithVATColumn); - nextValues.Nmper.ComputeValue(preparedValues, nextTablePayments, currentTablePayments); - /* - * TECH - */ + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(nextValues.Nmper.Value + 1, preparedValues, + currentTablePayments, nextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - /* + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(nextValues.Nmper.Value + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(nextValues.Nmper.Value + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper.Value + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper.Value + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + nextValues.Nmper.PostCheck(preparedValues); + /* * NEXT */ - var nextDateColumn = new DateColumnVT1(nextValues.Nmper.Value + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); - - var nextDateTempColumn = new Columns.Next.DateTempColumn(nextValues.Nmper.Value + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; - - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); - - if (tlmData != null) - { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(nextValues.Nmper.Value + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); - } - - - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - - var nextSumColumn = new SumColumnVT2(nextValues.Nmper.Value + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - - var nextVATColumn = new VATColumn(nextValues.Nmper.Value + 1); - - var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper.Value + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); - nextSumWithVATColumn.ComputeValues(nextValues.SumTotal.Value); - nextSumWithVATColumn.PostCheck(); - nextVATColumn.PostCheck(); - nextSumColumn.PostCheck(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(nextValues.Nmper.Value + 1, preparedValues, - currentTablePayments, nextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(nextValues.Nmper.Value + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(nextValues.Nmper.Value + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper.Value + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper.Value + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - nextValues.Nmper.PostCheck(preparedValues); - /* - * NEXT - */ - - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - currentDateColumn, - currentDateTemp = currentDateTempColumn, - currentSumColumn, - - techNextDateColumn, - techNextDateTempColumn, - techNextTlmDateColumn, - techNextTlmCostColumn, - techNextTlmGrColumn, - techNextSumColumn, - techNextVATColumn, - techNextSumWithVATColumn, - - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - nextSumColumn, - nextVATColumn, - nextSumWithVATColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; - } - catch (Exception ex) + return new ManagerResult { - return new ManagerResult + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - Errors = new List - { - ex.Message - } - }; - } + currentDateColumn, + currentDateTemp = currentDateTempColumn, + currentSumColumn, + + techNextDateColumn, + techNextDateTempColumn, + techNextTlmDateColumn, + techNextTlmCostColumn, + techNextTlmGrColumn, + techNextSumColumn, + techNextVATColumn, + techNextSumWithVATColumn, + + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + nextSumColumn, + nextVATColumn, + nextSumWithVATColumn, + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn + } + }; + } + catch (Exception ex) + { + return new ManagerResult + { + Errors = new List + { + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs index 71d10a8..08380f5 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs @@ -8,242 +8,241 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn; -namespace EvoCalculator.Core.PostCalculation.v1.Managers +namespace EvoCalculator.Core.PostCalculation.v1.Managers; + +public static partial class CalculateManager { - public static partial class CalculateManager + public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation) { - public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation) + try { - try + var constants = new Constants.Calculation(); + var preparedValues = requestCalculation.PreparedValues; + + var currentTablePayments = requestCalculation.TablePayments.Current; + var nextTablePayments = requestCalculation.TablePayments.Next; + + var currentTableInsurance = requestCalculation?.TableInsurance?.Current; + var nextTableInsurance = requestCalculation?.TableInsurance?.Next; + + var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; + var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + + + /* + * CURRENT + */ + var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); + currentDateColumn.ComputeValues(currentTablePayments); + + var currentDateTempColumn = + new DateTempColumn(preparedValues.Nmper.Current + 1); + currentDateTempColumn.ComputeValues(currentDateColumn); + + var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); + currentSumColumn.ComputeValues(preparedValues, currentTablePayments); + /* + * CURRENT + */ + + + /* + * NEXT + */ + var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + + var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); + nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); + + + TLMDateColumn nextTlmDateColumn = null; + TLMCostColumn nextTlmCostColumn = null; + TLMGrColumn nextTlmGrColumn = null; + + var tlmData = new Helper().GetTLMData(preparedValues + , currentTableTLMTracker, nextTableTLMTracker + , nextDateColumn); + + if (tlmData != null) { - var constants = new Constants.Calculation(); - var preparedValues = requestCalculation.PreparedValues; - - var currentTablePayments = requestCalculation.TablePayments.Current; - var nextTablePayments = requestCalculation.TablePayments.Next; - - var currentTableInsurance = requestCalculation?.TableInsurance?.Current; - var nextTableInsurance = requestCalculation?.TableInsurance?.Next; - - var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current; - var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next; + nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); + nextTlmDateColumn.ComputeValues(tlmData); + nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); + nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); + nextTlmCostColumn.PostCheck(); + nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); + nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); + nextTlmGrColumn.PostCheck(); + } - /* - * CURRENT - */ - var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1); - currentDateColumn.ComputeValues(currentTablePayments); + var nextValues = new NextValues.NextValues(); + nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + nextValues.BaseCost.PostCheck(); - var currentDateTempColumn = - new DateTempColumn(preparedValues.Nmper.Current + 1); - currentDateTempColumn.ComputeValues(currentDateColumn); + var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn); - currentSumColumn.ComputeValues(preparedValues, currentTablePayments); - /* - * CURRENT - */ + var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); + + var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, + techNextSumColumn, currentTablePayments, techNextVATColumn, constants); + techNextSumWithVATColumn.ComputeValues(); + + nextValues.SumTotal.ComputeValue(preparedValues, techNextSumWithVATColumn); + + var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, + nextValues, currentTablePayments, nextTablePayments); + var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + + var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, + nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); + nextSumWithVATColumn.ComputeValues(nextValues.SumTotal.Value); + nextSumColumn.PostCheck(); + nextSumWithVATColumn.PostCheck(); + nextVATColumn.PostCheck(); + + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + currentTablePayments, nextSumColumn); + var nsibRequiredValue = currentTablePayments + .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) + .Sum(x => x.NSIBBruttoPayment); + nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); + nextValues.AcquisitionExpenses.PostCheck(); + + var nextCashflowMSFOColumn = new CashflowMSFOColumn(); + nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, + nextTlmDateColumn); + + var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + nextCashflowMSFOColumn); + nextCashflowMSFOColumn.PostCheck(); + + var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); + + var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); + + var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); + nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); + + var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); + + var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); + + var nextSumCurrentInterestColumn = + new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); + nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); + nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); + + var nextSumRepaymentColumn = new SumRepaymentColumn(); + nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, + nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, + nextSumWithVATColumn, + nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); + nextSumRepaymentColumn.PostCheck(); + + var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); + nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); + + var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); + nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, + preparedValues); + + var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); + nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); + + var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); + + nextValues.Nmper.Value = preparedValues.Nmper.Next; + + var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - /* - * NEXT - */ - var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - nextDateColumn.ComputeValues(preparedValues, currentTablePayments); + nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); + nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); + nextValues.Nmper.PostCheck(preparedValues); + /* + * NEXT + */ - var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1); - nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn); - - - TLMDateColumn nextTlmDateColumn = null; - TLMCostColumn nextTlmCostColumn = null; - TLMGrColumn nextTlmGrColumn = null; - - var tlmData = new Helper().GetTLMData(preparedValues - , currentTableTLMTracker, nextTableTLMTracker - , nextDateColumn); - - if (tlmData != null) + return new ManagerResult + { + NextValues = nextValues.GetValues(), + PreparedValues = preparedValues, + Columns = new { - nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1); - nextTlmDateColumn.ComputeValues(tlmData); - nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values); - nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker); - nextTlmCostColumn.PostCheck(); - nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1); - nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn); - nextTlmGrColumn.PostCheck(); - } + currentDateColumn, + currentDateTemp = currentDateTempColumn, + currentSumColumn, - - var nextValues = new NextValues.NextValues(); - nextValues.BaseCost.ComputeValue(preparedValues, nextTableInsurance, nextTlmGrColumn, - currentTablePayments); - nextValues.BaseCost.PostCheck(); - - var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, - preparedValues, nextValues, currentTablePayments, nextTablePayments); - techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); - - var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, - techNextSumColumn, currentTablePayments, techNextVATColumn, constants); - techNextSumWithVATColumn.ComputeValues(); - - nextValues.SumTotal.ComputeValue(preparedValues, techNextSumWithVATColumn); - - var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, - nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); - - var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, - nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); - nextSumWithVATColumn.ComputeValues(nextValues.SumTotal.Value); - nextSumColumn.PostCheck(); - nextSumWithVATColumn.PostCheck(); - nextVATColumn.PostCheck(); - - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - currentTablePayments, nextSumColumn); - var nsibRequiredValue = currentTablePayments - .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) - .Sum(x => x.NSIBBruttoPayment); - nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); - nextSubsidyExpensesColumn.ComputeValues(preparedValues); - - nextValues.AcquisitionExpenses.ComputeValue(preparedValues, nextTableInsurance); - nextValues.AcquisitionExpenses.PostCheck(); - - var nextCashflowMSFOColumn = new CashflowMSFOColumn(); - nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, - nextTlmDateColumn); - - var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - nextCashflowMSFOColumn); - nextCashflowMSFOColumn.PostCheck(); - - var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn); - - var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn); - - var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn); - nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates); - - var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn); - - var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance); - - var nextSumCurrentInterestColumn = - new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length); - nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn); - - var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); - nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - - var nextSumRepaymentColumn = new SumRepaymentColumn(); - nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, - nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, + nextDateColumn, + nextDateTempColumn, + nextTlmDateColumn, + nextTlmCostColumn, + nextTlmGrColumn, + techNextSumColumn, + techNextVATColumn, + techNextSumWithVATColumn, + nextSumColumn, + nextVATColumn, nextSumWithVATColumn, - nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); - nextSumRepaymentColumn.PostCheck(); - - var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn(); - nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues); - - var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column(); - nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn, - preparedValues); - - var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2); - nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn); - - var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - - nextValues.Nmper.Value = preparedValues.Nmper.Next; - - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper.Value + 1); - nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper.Value + 1); - nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - - var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper.Value + 1); - nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); - - - nextValues.NiAtInception.ComputeValue(nextValues.AcquisitionExpenses.Value, currentTablePayments); - nextValues.NiAtInceptionMSFO.ComputeValue(preparedValues, nextValues); - nextValues.Nmper.PostCheck(preparedValues); - /* - * NEXT - */ - - return new ManagerResult - { - NextValues = nextValues.GetValues(), - PreparedValues = preparedValues, - Columns = new - { - currentDateColumn, - currentDateTemp = currentDateTempColumn, - currentSumColumn, - - nextDateColumn, - nextDateTempColumn, - nextTlmDateColumn, - nextTlmCostColumn, - nextTlmGrColumn, - techNextSumColumn, - techNextVATColumn, - techNextSumWithVATColumn, - nextSumColumn, - nextVATColumn, - nextSumWithVATColumn, - nextNSIBBruttoGrColumn, - nextSubsidyExpensesColumn, - nextCashflowMSFOColumn, - nextCashflowMSFOForNIColumn, - nextIRRGrColumn, - nextNIColumn, - nextInterestColumn, - nextSumCurrentColumn, - nextSumCurrentNegativeColumn, - nextSumCurrentInterestColumn, - nextSumCurrentTLMColumn, - nextSumRepaymentColumn, - nextCashflowMSFOFinalColumn, - nextCashflowMSFOFinal2Column, - nextSumCreditColumn, - nextCreditColumn, - nextNSIBExpensesColumn, - nextCashflowNSIBColumn, - nextRevenueColumn - } - }; - } - catch (Exception ex) + nextNSIBBruttoGrColumn, + nextSubsidyExpensesColumn, + nextCashflowMSFOColumn, + nextCashflowMSFOForNIColumn, + nextIRRGrColumn, + nextNIColumn, + nextInterestColumn, + nextSumCurrentColumn, + nextSumCurrentNegativeColumn, + nextSumCurrentInterestColumn, + nextSumCurrentTLMColumn, + nextSumRepaymentColumn, + nextCashflowMSFOFinalColumn, + nextCashflowMSFOFinal2Column, + nextSumCreditColumn, + nextCreditColumn, + nextNSIBExpensesColumn, + nextCashflowNSIBColumn, + nextRevenueColumn + } + }; + } + catch (Exception ex) + { + return new ManagerResult { - return new ManagerResult + Errors = new List { - Errors = new List - { - ex.Message - } - }; - } + ex.Message + } + }; } } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/lib/Helper/TLMLength.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/lib/Helper/TLMLength.cs index 6b707c8..60b1548 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/lib/Helper/TLMLength.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/lib/Helper/TLMLength.cs @@ -4,49 +4,48 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.Tools; -namespace EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper +namespace EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper; + +public class TLMData { - public class TLMData - { - public int Duration { get; set; } - public DateTime StartDate { get; set; } - public DateTime EndDate { get; set; } - } + public int Duration { get; set; } + public DateTime StartDate { get; set; } + public DateTime EndDate { get; set; } +} - public class Helper +public class Helper +{ + public TLMData GetTLMData(PreparedValues preparedValues + , TableTLMTrackerRow[] currentTableTLMTracker + , TableTLMTrackerRow[] nextTableTLMTracker + , BaseColumn nextDateColumn + ) { - public TLMData GetTLMData(PreparedValues preparedValues - , TableTLMTrackerRow[] currentTableTLMTracker - , TableTLMTrackerRow[] nextTableTLMTracker - , BaseColumn nextDateColumn - ) + if (currentTableTLMTracker == null && nextTableTLMTracker == null) return null; + if (preparedValues.ChangeTrackerTLM == false && currentTableTLMTracker == null) return null; + + DateTime startDate; + DateTime endDate; + if (preparedValues.ChangeTrackerTLM) { - if (currentTableTLMTracker == null && nextTableTLMTracker == null) return null; - if (preparedValues.ChangeTrackerTLM == false && currentTableTLMTracker == null) return null; - - DateTime startDate; - DateTime endDate; - if (preparedValues.ChangeTrackerTLM) - { - startDate = currentTableTLMTracker?[0]?.DateTLM ?? preparedValues.EditPaymentDate.Next; - endDate = nextTableTLMTracker != null - ? nextDateColumn.Values[^1] - : preparedValues.EditPaymentDate.Next; - } - else - { - startDate = currentTableTLMTracker[0].DateTLM; - endDate = nextDateColumn.Values[^1]; - } - - var monthsNumber = Dates.GetMonthDifference(startDate, endDate); - - return new TLMData - { - Duration = monthsNumber + 1, - StartDate = startDate, - EndDate = endDate - }; + startDate = currentTableTLMTracker?[0]?.DateTLM ?? preparedValues.EditPaymentDate.Next; + endDate = nextTableTLMTracker != null + ? nextDateColumn.Values[^1] + : preparedValues.EditPaymentDate.Next; } + else + { + startDate = currentTableTLMTracker[0].DateTLM; + endDate = nextDateColumn.Values[^1]; + } + + var monthsNumber = Dates.GetMonthDifference(startDate, endDate); + + return new TLMData + { + Duration = monthsNumber + 1, + StartDate = startDate, + EndDate = endDate + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/AcquisitionExpenses.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/AcquisitionExpenses.cs index c17e415..dc854de 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/AcquisitionExpenses.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/AcquisitionExpenses.cs @@ -4,66 +4,65 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class AcquisitionExpenses : BasePostValue { - public class AcquisitionExpenses : BasePostValue + public void ComputeValue(PreparedValues preparedValues, TableInsuranceRow[]? nextTableInsurance) { - public void ComputeValue(PreparedValues preparedValues, TableInsuranceRow[]? nextTableInsurance) - { - var tracker = 0m; - if (preparedValues.TrackerCost.Next == 0) - tracker = preparedValues.TrackerCost.Current; - else if (preparedValues.TypeChangeTracker == 100000000) - tracker = preparedValues.TrackerCost.Current + preparedValues.TrackerCost.Next; - else - tracker = preparedValues.TrackerCostRemove + preparedValues.TrackerCost.Next; + var tracker = 0m; + if (preparedValues.TrackerCost.Next == 0) + tracker = preparedValues.TrackerCost.Current; + else if (preparedValues.TypeChangeTracker == 100000000) + tracker = preparedValues.TrackerCost.Current + preparedValues.TrackerCost.Next; + else + tracker = preparedValues.TrackerCostRemove + preparedValues.TrackerCost.Next; - var tlm = 0m; - if (preparedValues.TLMCost.Next == 0) - tlm = preparedValues.TLMCost.Current; - else if (preparedValues.TypeChangeTLM == 100000000) - tlm = preparedValues.TLMCost.Current + preparedValues.TLMCost.Next; - else - tlm = preparedValues.TLMCostRemove + preparedValues.TLMCost.Next; + var tlm = 0m; + if (preparedValues.TLMCost.Next == 0) + tlm = preparedValues.TLMCost.Current; + else if (preparedValues.TypeChangeTLM == 100000000) + tlm = preparedValues.TLMCost.Current + preparedValues.TLMCost.Next; + else + tlm = preparedValues.TLMCostRemove + preparedValues.TLMCost.Next; - var baseRegistration = 0m; - if (preparedValues.BaseRegistration.Next == 0) - baseRegistration = preparedValues.BaseRegistration.Current; - else if (preparedValues.TypeChangeRegistration == 100000000) - baseRegistration = preparedValues.BaseRegistration.Next; - else - baseRegistration = preparedValues.BaseRegistration.Current + preparedValues.BaseRegistration.Next; + var baseRegistration = 0m; + if (preparedValues.BaseRegistration.Next == 0) + baseRegistration = preparedValues.BaseRegistration.Current; + else if (preparedValues.TypeChangeRegistration == 100000000) + baseRegistration = preparedValues.BaseRegistration.Next; + else + baseRegistration = preparedValues.BaseRegistration.Current + preparedValues.BaseRegistration.Next; - var nextCostInsurance = 0m; - if (nextTableInsurance != null) - nextCostInsurance = nextTableInsurance - .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO" && x.PeriodNumberInsurance == 1) - .Sum(x => x.CostInsurance); + var nextCostInsurance = 0m; + if (nextTableInsurance != null) + nextCostInsurance = nextTableInsurance + .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO" && x.PeriodNumberInsurance == 1) + .Sum(x => x.CostInsurance); - Value = preparedValues.PlPrice.Next - + nextCostInsurance - - preparedValues.ComissionRub - - preparedValues.Discount.Next - + tracker - + tlm - + preparedValues.TechnicalCardSum - + baseRegistration - + preparedValues.TransportTaxGr.Next switch - { - > 0 => preparedValues.TransportTaxGr.Next, - _ => preparedValues.TransportTaxGr.Current - } - + preparedValues.InceptDelta; - } + Value = preparedValues.PlPrice.Next + + nextCostInsurance + - preparedValues.ComissionRub + - preparedValues.Discount.Next + + tracker + + tlm + + preparedValues.TechnicalCardSum + + baseRegistration + + preparedValues.TransportTaxGr.Next switch + { + > 0 => preparedValues.TransportTaxGr.Next, + _ => preparedValues.TransportTaxGr.Current + } + + preparedValues.InceptDelta; + } - public void PostCheck() - { - if (Value <= 0) - throw new Exception( - "Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета."); - } + public void PostCheck() + { + if (Value <= 0) + throw new Exception( + "Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета."); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/BaseCost.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/BaseCost.cs index 6b1bd9d..aaaadd6 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/BaseCost.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/BaseCost.cs @@ -6,71 +6,70 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class BaseCost : BasePostValue { - public class BaseCost : BasePostValue + public void ComputeValue(PreparedValues preparedValues, TableInsuranceRow[]? nextTableInsurance, + BaseColumn? nextTLMGrColumn, TablePaymentsRow[] currentTablePayments) { - public void ComputeValue(PreparedValues preparedValues, TableInsuranceRow[]? nextTableInsurance, - BaseColumn? nextTLMGrColumn, TablePaymentsRow[] currentTablePayments) - { - var registration = 0m; - if (preparedValues.Registration.Next == 0) - registration = preparedValues.Registration.Current; - else if (preparedValues.TypeChangeRegistration == 100000000) - registration = preparedValues.Registration.Next; - else - registration = preparedValues.Registration.Current + preparedValues.Registration.Next; + var registration = 0m; + if (preparedValues.Registration.Next == 0) + registration = preparedValues.Registration.Current; + else if (preparedValues.TypeChangeRegistration == 100000000) + registration = preparedValues.Registration.Next; + else + registration = preparedValues.Registration.Current + preparedValues.Registration.Next; - var tracker = 0m; - if (preparedValues.TrackerCost.Next == 0) - tracker = preparedValues.TrackerCost.Current; - else if (preparedValues.TypeChangeTracker == 100000000) - tracker = preparedValues.TrackerCost.Current + preparedValues.TrackerCost.Next; - else - tracker = preparedValues.TrackerCostRemove + preparedValues.TrackerCost.Next; + var tracker = 0m; + if (preparedValues.TrackerCost.Next == 0) + tracker = preparedValues.TrackerCost.Current; + else if (preparedValues.TypeChangeTracker == 100000000) + tracker = preparedValues.TrackerCost.Current + preparedValues.TrackerCost.Next; + else + tracker = preparedValues.TrackerCostRemove + preparedValues.TrackerCost.Next; - var tlm = 0m; - if (preparedValues.TLMCost.Next == 0) - tlm = preparedValues.TLMCost.Current; - else if (preparedValues.TypeChangeTLM == 100000000) - tlm = preparedValues.TLMCost.Current + preparedValues.TLMCost.Next; - else - tlm = preparedValues.TLMCostRemove + preparedValues.TLMCost.Next; + var tlm = 0m; + if (preparedValues.TLMCost.Next == 0) + tlm = preparedValues.TLMCost.Current; + else if (preparedValues.TypeChangeTLM == 100000000) + tlm = preparedValues.TLMCost.Current + preparedValues.TLMCost.Next; + else + tlm = preparedValues.TLMCostRemove + preparedValues.TLMCost.Next; - var nextTlmGrValue = 0m; - if (nextTLMGrColumn != null) - nextTlmGrValue = nextTLMGrColumn.GetValue(0); + var nextTlmGrValue = 0m; + if (nextTLMGrColumn != null) + nextTlmGrValue = nextTLMGrColumn.GetValue(0); - var nextCostInsurance = 0m; - if (nextTableInsurance != null) - nextCostInsurance = nextTableInsurance - .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO") - .Sum(x => x.CostInsurance); + var nextCostInsurance = 0m; + if (nextTableInsurance != null) + nextCostInsurance = nextTableInsurance + .Where(x => x.TypeRiskInsurance is "KASKO" or "OSAGO") + .Sum(x => x.CostInsurance); - Value = (preparedValues.PlPrice.Next - + nextCostInsurance - + preparedValues.TechnicalCardSum - + registration - + preparedValues.TransportTaxGr.Next switch - { - > 0 => preparedValues.TransportTaxGr.Next, - _ => preparedValues.TransportTaxGr.Current - } - + tracker - + tlm - + nextTlmGrValue) - * preparedValues.Leasing0K - + currentTablePayments.Sum(x => x.NSIBBruttoPayment) - + preparedValues.InceptDelta; - } + Value = (preparedValues.PlPrice.Next + + nextCostInsurance + + preparedValues.TechnicalCardSum + + registration + + preparedValues.TransportTaxGr.Next switch + { + > 0 => preparedValues.TransportTaxGr.Next, + _ => preparedValues.TransportTaxGr.Current + } + + tracker + + tlm + + nextTlmGrValue) + * preparedValues.Leasing0K + + currentTablePayments.Sum(x => x.NSIBBruttoPayment) + + preparedValues.InceptDelta; + } - public void PostCheck() - { - if (Value <= 0) - throw new Exception( - "Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета."); - } + public void PostCheck() + { + if (Value <= 0) + throw new Exception( + "Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета."); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/NextValues.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/NextValues.cs index b958bcd..57f5d71 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/NextValues.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/NextValues.cs @@ -1,35 +1,34 @@ -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class NextValues { - public class NextValues + public AcquisitionExpenses AcquisitionExpenses; + public BaseCost BaseCost; + public NiAtInception NiAtInception; + public NiAtInceptionMSFO NiAtInceptionMSFO; + public Nmper Nmper; + public SumTotal SumTotal; + + public NextValues() { - public AcquisitionExpenses AcquisitionExpenses; - public BaseCost BaseCost; - public NiAtInception NiAtInception; - public NiAtInceptionMSFO NiAtInceptionMSFO; - public Nmper Nmper; - public SumTotal SumTotal; + BaseCost = new BaseCost(); + AcquisitionExpenses = new AcquisitionExpenses(); + NiAtInception = new NiAtInception(); + SumTotal = new SumTotal(); + Nmper = new Nmper(); + NiAtInceptionMSFO = new NiAtInceptionMSFO(); + } - public NextValues() + public virtual object GetValues() + { + return new { - BaseCost = new BaseCost(); - AcquisitionExpenses = new AcquisitionExpenses(); - NiAtInception = new NiAtInception(); - SumTotal = new SumTotal(); - Nmper = new Nmper(); - NiAtInceptionMSFO = new NiAtInceptionMSFO(); - } - - public virtual object GetValues() - { - return new - { - BaseCost = BaseCost.Value, - AcquisitionExpenses = AcquisitionExpenses.Value, - NiAtInception = NiAtInception.Value, - SumTotal = SumTotal.Value, - Nmper = Nmper.Value, - niAtInceptionMSFO = NiAtInceptionMSFO.Value - }; - } + BaseCost = BaseCost.Value, + AcquisitionExpenses = AcquisitionExpenses.Value, + NiAtInception = NiAtInception.Value, + SumTotal = SumTotal.Value, + Nmper = Nmper.Value, + niAtInceptionMSFO = NiAtInceptionMSFO.Value + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInception.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInception.cs index 405c7de..2d9e4a8 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInception.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInception.cs @@ -1,13 +1,12 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class NiAtInception : BasePostValue { - public class NiAtInception : BasePostValue + public void ComputeValue(decimal acquisitionExpenses, TablePaymentsRow[] currentTablePayments) { - public void ComputeValue(decimal acquisitionExpenses, TablePaymentsRow[] currentTablePayments) - { - Value = acquisitionExpenses - currentTablePayments[0].SumPayment; - } + Value = acquisitionExpenses - currentTablePayments[0].SumPayment; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInceptionMSFO.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInceptionMSFO.cs index 1c62005..6455a2a 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInceptionMSFO.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/NiAtInceptionMSFO.cs @@ -1,18 +1,17 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class NiAtInceptionMSFO : BasePostValue { - public class NiAtInceptionMSFO : BasePostValue + public void ComputeValue(PreparedValues preparedValues, NextValues nextValues) { - public void ComputeValue(PreparedValues preparedValues, NextValues nextValues) - { - Value = nextValues.NiAtInception.Value - + preparedValues.BonusManagerLeasing - + preparedValues.BonusManagerProducts - + preparedValues.BonusManagerLeasingExtra - + preparedValues.AgentFLSum - + preparedValues.AgentULSum; - } + Value = nextValues.NiAtInception.Value + + preparedValues.BonusManagerLeasing + + preparedValues.BonusManagerProducts + + preparedValues.BonusManagerLeasingExtra + + preparedValues.AgentFLSum + + preparedValues.AgentULSum; } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/Nmper.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/Nmper.cs index 394eca2..25e64f6 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/Nmper.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/Nmper.cs @@ -4,36 +4,35 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class Nmper : BasePostValue { - public class Nmper : BasePostValue + public void ComputeValue(PreparedValues preparedValues, TablePaymentsRow[] nextTablePayments, + TablePaymentsRow[] currentTablePayments) { - public void ComputeValue(PreparedValues preparedValues, TablePaymentsRow[] nextTablePayments, - TablePaymentsRow[] currentTablePayments) + var targetNextPaymentsRow = nextTablePayments.Last(); + var n = targetNextPaymentsRow.NumberPayment; + + var targetPaymentSum = targetNextPaymentsRow.SumPayment; + var i = 0; + while (targetPaymentSum >= currentTablePayments[i + n].SumPayment) { - var targetNextPaymentsRow = nextTablePayments.Last(); - var n = targetNextPaymentsRow.NumberPayment; - - var targetPaymentSum = targetNextPaymentsRow.SumPayment; - var i = 0; - while (targetPaymentSum >= currentTablePayments[i + n].SumPayment) - { - targetPaymentSum -= currentTablePayments[i + n].SumPayment; - i++; - } - - if (i == 0) - throw new Exception( - "Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП"); - - Value = preparedValues.Nmper.Current - i + 1; + targetPaymentSum -= currentTablePayments[i + n].SumPayment; + i++; } - public void PostCheck(PreparedValues preparedValues) - { - if (Value < 13 && preparedValues.BalanceHolder.Next == 100000001) - throw new Exception( - "По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета"); - } + if (i == 0) + throw new Exception( + "Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП"); + + Value = preparedValues.Nmper.Current - i + 1; + } + + public void PostCheck(PreparedValues preparedValues) + { + if (Value < 13 && preparedValues.BalanceHolder.Next == 100000001) + throw new Exception( + "По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета"); } } \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/NextValues/SumTotal.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues/SumTotal.cs index 4a2c38c..f2e5fc8 100644 --- a/EvoCalculator.Core.PostCalculation/v1/NextValues/SumTotal.cs +++ b/EvoCalculator.Core.PostCalculation/v1/NextValues/SumTotal.cs @@ -2,15 +2,14 @@ using EvoCalculator.Core.Base.PostValues; using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; -namespace EvoCalculator.Core.PostCalculation.v1.NextValues +namespace EvoCalculator.Core.PostCalculation.v1.NextValues; + +public class SumTotal : BasePostValue { - public class SumTotal : BasePostValue + public void ComputeValue(PreparedValues preparedValues, BaseColumn nextSumWithVATColumn) { - public void ComputeValue(PreparedValues preparedValues, BaseColumn nextSumWithVATColumn) - { - Value = preparedValues.TotalExpected - - (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0)) - * (decimal) preparedValues.Repayment; - } + Value = preparedValues.TotalExpected + - (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0)) + * (decimal) preparedValues.Repayment; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/ArrayComparer.cs b/EvoCalculator.Core.Tests/ArrayComparer.cs index 171b517..d8a6536 100644 --- a/EvoCalculator.Core.Tests/ArrayComparer.cs +++ b/EvoCalculator.Core.Tests/ArrayComparer.cs @@ -1,53 +1,52 @@ using System; using System.Collections.Generic; -namespace EvoCalculator.Core.Tests +namespace EvoCalculator.Core.Tests; + +public class DoubleArrayComparer : IEqualityComparer { - public class DoubleArrayComparer : IEqualityComparer + private readonly double _tolerance = 0.001; + + public DoubleArrayComparer(double tolerance) { - private readonly double _tolerance = 0.001; - - public DoubleArrayComparer(double tolerance) - { - _tolerance = tolerance; - } - - public DoubleArrayComparer() - { - } - - public bool Equals(double x, double y) - { - return Math.Abs(x - y) < _tolerance; - } - - public int GetHashCode(double obj) - { - return obj.GetHashCode(); - } + _tolerance = tolerance; } - public class DecimalArrayComparer : IEqualityComparer + public DoubleArrayComparer() { - private readonly double _tolerance = 0.001; + } - public DecimalArrayComparer(double tolerance) - { - _tolerance = tolerance; - } + public bool Equals(double x, double y) + { + return Math.Abs(x - y) < _tolerance; + } - public DecimalArrayComparer() - { - } + public int GetHashCode(double obj) + { + return obj.GetHashCode(); + } +} - public bool Equals(decimal x, decimal y) - { - return Math.Abs(x - y) < (decimal) _tolerance; - } +public class DecimalArrayComparer : IEqualityComparer +{ + private readonly double _tolerance = 0.001; - public int GetHashCode(decimal obj) - { - return obj.GetHashCode(); - } + public DecimalArrayComparer(double tolerance) + { + _tolerance = tolerance; + } + + public DecimalArrayComparer() + { + } + + public bool Equals(decimal x, decimal y) + { + return Math.Abs(x - y) < (decimal) _tolerance; + } + + public int GetHashCode(decimal obj) + { + return obj.GetHashCode(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs b/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs index 06698d1..ca5b0ab 100644 --- a/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs @@ -4,93 +4,92 @@ using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.Models.Common; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.FinanceFormulas +namespace EvoCalculator.Core.Tests.Calculation.FinanceFormulas; + +public class FinanceFormulasTests { - public class FinanceFormulasTests + private readonly Flow[] _flows = { - private readonly Flow[] _flows = + new() { - new() - { - Date = new DateTime(2020, 09, 01), - Value = -6500000 - }, - new() - { - Date = new DateTime(2020, 09, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2020, 10, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2020, 11, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2020, 12, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 1, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 2, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 3, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 4, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 5, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 6, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 7, 01), - Value = 608944.445718643m - }, - new() - { - Date = new DateTime(2021, 8, 01), - Value = 608944.445718643m - } - }; - - [Fact] - public void XNPVTest() + Date = new DateTime(2020, 09, 01), + Value = -6500000 + }, + new() { - var XNPV = new XNPV(_flows.Skip(1).ToArray(), 0.3); - var res = XNPV.GetResult(); - Assert.InRange(res, 6490000, 6590000); + Date = new DateTime(2020, 09, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2020, 10, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2020, 11, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2020, 12, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 1, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 2, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 3, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 4, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 5, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 6, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 7, 01), + Value = 608944.445718643m + }, + new() + { + Date = new DateTime(2021, 8, 01), + Value = 608944.445718643m } + }; - [Fact] - public void XIRRTest() - { - var XIRR = new XIRR(_flows); - var res = XIRR.GetResult(); - Assert.InRange(res, 0.29, 0.31); - } + [Fact] + public void XNPVTest() + { + var XNPV = new XNPV(_flows.Skip(1).ToArray(), 0.3); + var res = XNPV.GetResult(); + Assert.InRange(res, 6490000, 6590000); + } + + [Fact] + public void XIRRTest() + { + var XIRR = new XIRR(_flows); + var res = XIRR.GetResult(); + Assert.InRange(res, 0.29, 0.31); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs b/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs index 0ccb822..ee8b53b 100644 --- a/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs @@ -4,159 +4,158 @@ using EvoCalculator.Core.Models.Calculation.Models.Request; using EvoCalculator.Core.Tools.Validation; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation +namespace EvoCalculator.Core.Tests.Calculation; + +public class ValidationTests { - public class ValidationTests + [Fact] + public void ValidationTest1() { - [Fact] - public void ValidationTest1() + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 791666.6666666667m, - FirstPaymentSum = 395833.3333333334m, + AcceptSum = 791666.6666666667m, + FirstPaymentSum = 395833.3333333334m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.Empty(errors); - } + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.Empty(errors); + } - [Fact] - public void ValidationTest2() + [Fact] + public void ValidationTest2() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 691666.6666666667m, - FirstPaymentSum = 345833.3333333334m, + AcceptSum = 691666.6666666667m, + FirstPaymentSum = 345833.3333333334m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.Empty(errors); - } + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.Empty(errors); + } - [Fact] - public void ValidationTest3() + [Fact] + public void ValidationTest3() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 6862036.016666667m, - FirstPaymentSum = 3431018.0083333333m, + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3431018.0083333333m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.Empty(errors); - } + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.Empty(errors); + } - [Fact] - public void ValidationTest4() + [Fact] + public void ValidationTest4() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 6862036.016666667m, - FirstPaymentSum = 3431024.87036935m, + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3431024.87036935m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.Empty(errors); - } + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.Empty(errors); + } - [Fact] - public void ValidationTest5() + [Fact] + public void ValidationTest5() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 6862036.016666667m, - FirstPaymentSum = 3499645.23053601m, + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3499645.23053601m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.NotEmpty(errors); - } + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.NotEmpty(errors); + } - [Fact] - public void ValidationTest6() + [Fact] + public void ValidationTest6() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 6862036.016666667m, - FirstPaymentSum = 3498952.23351869m, + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3498952.23351869m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.NotEmpty(errors); - } + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.NotEmpty(errors); + } - [Fact] - public void ValidationTest7() + [Fact] + public void ValidationTest7() + { + var requestCalculation = new RequestCalculation { - var requestCalculation = new RequestCalculation + preparedValues = new PreparedValues { - preparedValues = new PreparedValues - { - AcceptSum = 6862036.016666667m, - FirstPaymentSum = 1372407.20333333m, + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 1372407.20333333m, - Nmper = 5, - IrrExpected = 5, - Discount = 5, ComissionRub = 5, - PaymentDateNew = DateTime.Today.AddDays(1), - DogDate = DateTime.Now - } - }; + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now + } + }; - var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); - Assert.Empty(errors); - } + var errors = new Validation().ValidatePreparedValues(requestCalculation.preparedValues); + Assert.Empty(errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptInsuranceTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptInsuranceTests.cs index dfac40e..f4d8a50 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptInsuranceTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptInsuranceTests.cs @@ -2,114 +2,35 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class AcceptInsuranceTests { - public class AcceptInsuranceTests + [Fact] + public void AcceptInsuranceTest1() { - [Fact] - public void AcceptInsuranceTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 30 + }; + + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 30 - }; - - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 123666.666666667m, - 0.00m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m, - 4264.36781609195m - } - }; - - - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 30000m, - 0.00m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 2727.27272727273m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; - - - var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); - acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); - - var expected = new[] - { - 153666.6666666666m, + 123666.666666667m, 0.00m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, - 6991.64054336468m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, 4264.36781609195m, 4264.36781609195m, 4264.36781609195m, @@ -128,9 +49,87 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 4264.36781609195m, 4264.36781609195m, 4264.36781609195m - }; + } + }; - Assert.Equal(expected, acceptInsuranceColumn.Values, new DecimalArrayComparer()); - } + + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 30000m, + 0.00m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 2727.27272727273m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; + + + var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1); + acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn); + + var expected = new[] + { + 153666.6666666666m, + 0.00m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 6991.64054336468m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m, + 4264.36781609195m + }; + + Assert.Equal(expected, acceptInsuranceColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptKaskoTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptKaskoTests.cs index deadc44..40c09ce 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptKaskoTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptKaskoTests.cs @@ -2,60 +2,59 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class AcceptKaskoTests { - public class AcceptKaskoTests + [Fact] + public void AcceptKaskoTest1() { - [Fact] - public void AcceptKaskoTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30, - InsuranceKaskoNmper = 123666.666666667m - }; + Nmper = 30, + InsuranceKaskoNmper = 123666.666666667m + }; - var expected = new[] - { - 123666.666666667m, - 0.00m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m, - 4264.367816091965m - }; + var expected = new[] + { + 123666.666666667m, + 0.00m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m, + 4264.367816091965m + }; - var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); - acceptKaskoColumn.ComputeValues(preparedValues); + var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1); + acceptKaskoColumn.ComputeValues(preparedValues); - Assert.Equal(expected, acceptKaskoColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, acceptKaskoColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptOsagoTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptOsagoTests.cs index 5ec0581..f754aee 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptOsagoTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AcceptOsagoTests.cs @@ -2,60 +2,59 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class AcceptOsagoTests { - public class AcceptOsagoTests + [Fact] + public void AcceptOsagoTest1() { - [Fact] - public void AcceptOsagoTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30, - InsuranceOsago = 30000 - }; + Nmper = 30, + InsuranceOsago = 30000 + }; - var expected = new[] - { - 30000.000000000004m, - 0.00m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 2727.2727272727275m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + 30000.000000000004m, + 0.00m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 2727.2727272727275m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); - acceptOsagoColumn.ComputeValues(preparedValues); + var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1); + acceptOsagoColumn.ComputeValues(preparedValues); - Assert.Equal(expected, acceptOsagoColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, acceptOsagoColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AgentComissionExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AgentComissionExpensesTests.cs index 6a73122..8449ecd 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/AgentComissionExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/AgentComissionExpensesTests.cs @@ -2,124 +2,123 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class AgentComissionExpensesTests { - public class AgentComissionExpensesTests + [Fact] + public void AgentComissionExpensesTest1() { - [Fact] - public void AgentComissionExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - AgentsSum = 47662.50m, - DoubleAgentsSum = 0.00m, - DeliverySum = 0.00m, - BrokerSum = 0.00m, - BrokerOfDeliverySum = 0.00m, - FinancialDeptOfDeliverySum = 0.00m, - ImporterSum = 0.00m, - Nmper = 30 - }; + AgentsSum = 47662.50m, + DoubleAgentsSum = 0.00m, + DeliverySum = 0.00m, + BrokerSum = 0.00m, + BrokerOfDeliverySum = 0.00m, + FinancialDeptOfDeliverySum = 0.00m, + ImporterSum = 0.00m, + Nmper = 30 + }; - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -47662.50m, - 0.00m, - -47662.50m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); - Assert.Equal(expected, agentComissionExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void AgentComissionExpensesTest2() + var expected = new[] { - var preparedValues = new PreparedValues - { - AgentsSum = 47662.50m, - DoubleAgentsSum = 31775, - DeliverySum = 50000, - BrokerSum = 75000, - BrokerOfDeliverySum = 100000, - FinancialDeptOfDeliverySum = 125000, - ImporterSum = 16666.6666666667m, - Nmper = 30 - }; + -47662.50m, + 0.00m, + -47662.50m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); - agentComissionExpensesColumn.ComputeValues(preparedValues); + Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); + Assert.Equal(expected, agentComissionExpensesColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void AgentComissionExpensesTest2() + { + var preparedValues = new PreparedValues + { + AgentsSum = 47662.50m, + DoubleAgentsSum = 31775, + DeliverySum = 50000, + BrokerSum = 75000, + BrokerOfDeliverySum = 100000, + FinancialDeptOfDeliverySum = 125000, + ImporterSum = 16666.6666666667m, + Nmper = 30 + }; + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1); + agentComissionExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -446104.166666667m, - 0.00m, - -446104.166666667m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + -446104.166666667m, + 0.00m, + -446104.166666667m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); - Assert.Equal(expected, agentComissionExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, agentComissionExpensesColumn.Values.Length); + Assert.Equal(expected, agentComissionExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/CashflowNSIB.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/CashflowNSIB.cs index dfaf6fa..340923c 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/CashflowNSIB.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/CashflowNSIB.cs @@ -3,200 +3,164 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class CashflowNsibTests { - public class CashflowNsibTests + [Fact] + public void CashflowNsibTest1() { - [Fact] - public void CashflowNsibTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn) + { + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; + -2507300m, + 625000m, + 117858.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 119758.04449644m, + 107480.86417874m, + 50064.1975120737m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 107480.86417874m, + 95203.6838610409m, + 95203.6838610409m, + 21986.2413194444m + } + }; - var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn) - { - Values = new[] - { - -2507300m, - 625000m, - 117858.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 119758.04449644m, - 107480.86417874m, - 50064.1975120737m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 107480.86417874m, - 95203.6838610409m, - 95203.6838610409m, - 21986.2413194444m - } - }; - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -4811.4375m, - -2309.49m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -2501.9475m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 26730.2083333333m, - 0, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m - } - }; - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn); - cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - - - var expected = new[] + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { + -4811.4375m, + -2309.49m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -2501.9475m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; + + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 26730.2083333333m, 0, - -10899.0991979689m, 1113.75868055556m, 1113.75868055556m, 1113.75868055556m, @@ -208,7 +172,7 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 1113.75868055556m, 1113.75868055556m, 1113.75868055556m, - -10693.5987839108m, + 1113.75868055556m, 1113.75868055556m, 1113.75868055556m, 1113.75868055556m, @@ -221,12 +185,47 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 1113.75868055556m, 1113.75868055556m, 1113.75868055556m - }; + } + }; + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn); + cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); - Assert.Equal(expected.Length, cashflowNsibColumn.Values.Length); - Assert.Equal(0.379046887159348, cashflowNsibColumn.IRR, new DoubleArrayComparer()); - Assert.Equal(expected, cashflowNsibColumn.Values, new DecimalArrayComparer(1)); - } + var expected = new[] + { + 0, + -10899.0991979689m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + -10693.5987839108m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m + }; + + + Assert.Equal(expected.Length, cashflowNsibColumn.Values.Length); + Assert.Equal(0.379046887159348, cashflowNsibColumn.IRR, new DoubleArrayComparer()); + Assert.Equal(expected, cashflowNsibColumn.Values, new DecimalArrayComparer(1)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/ComissionBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/ComissionBonusExpensesTests.cs index caacacb..481a3a3 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/ComissionBonusExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/ComissionBonusExpensesTests.cs @@ -2,55 +2,54 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class ComissionBonusExpensesTests { - public class ComissionBonusExpensesTests + [Fact] + public void ComissionBonusExpensesTest1() { - [Fact] - public void ComissionBonusExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - ComissionRub = 125000m, - Nmper = 24 - }; + ComissionRub = 125000m, + Nmper = 24 + }; - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); - comissionBonusExpensesColumn.ComputeValues(preparedValues); + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1); + comissionBonusExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - 125000.00m, - 125000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + 125000.00m, + 125000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected.Length, comissionBonusExpensesColumn.Values.Length); - Assert.Equal(expected, comissionBonusExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, comissionBonusExpensesColumn.Values.Length); + Assert.Equal(expected, comissionBonusExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateColumnTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateColumnTests.cs index 056e32d..2fb5e67 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateColumnTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateColumnTests.cs @@ -3,224 +3,223 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DateColumnTests { - public class DateColumnTests + [Fact] + public void DateColumnTest1() { - [Fact] - public void DateColumnTest1() - { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 28), - DeliveryTime = 100000000, - PaymentDateNew = null, - Nmper = 30 - }; - - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); - - var expected = new[] + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 28), - new DateTime(2018, 10, 28), - new DateTime(2018, 11, 28), - new DateTime(2018, 12, 28), - new DateTime(2019, 01, 28), - new DateTime(2019, 02, 28), - new DateTime(2019, 03, 28), - new DateTime(2019, 04, 28), - new DateTime(2019, 05, 28), - new DateTime(2019, 06, 28), - new DateTime(2019, 07, 28), - new DateTime(2019, 08, 28), - new DateTime(2019, 09, 28), - new DateTime(2019, 10, 28), - new DateTime(2019, 11, 28), - new DateTime(2019, 12, 28), - new DateTime(2020, 01, 28), - new DateTime(2020, 02, 28), - new DateTime(2020, 03, 28), - new DateTime(2020, 04, 28), - new DateTime(2020, 05, 28), - new DateTime(2020, 06, 28), - new DateTime(2020, 07, 28), - new DateTime(2020, 08, 28), - new DateTime(2020, 09, 28), - new DateTime(2020, 10, 28), - new DateTime(2020, 11, 28), - new DateTime(2020, 12, 28), - new DateTime(2021, 01, 28), - new DateTime(2021, 02, 28), - new DateTime(2021, 03, 28) + DogDate = new DateTime(2018, 10, 28), + DeliveryTime = 100000000, + PaymentDateNew = null, + Nmper = 30 }; - var res = dateColumn.Values; - Assert.Equal(expected, res); - } + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); - [Fact] - public void DateColumnTest2() + var expected = new[] { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 28), - DeliveryTime = 100000000, - PaymentDateNew = new DateTime(2018, 11, 13), - Nmper = 30 - }; + new DateTime(2018, 10, 28), + new DateTime(2018, 10, 28), + new DateTime(2018, 11, 28), + new DateTime(2018, 12, 28), + new DateTime(2019, 01, 28), + new DateTime(2019, 02, 28), + new DateTime(2019, 03, 28), + new DateTime(2019, 04, 28), + new DateTime(2019, 05, 28), + new DateTime(2019, 06, 28), + new DateTime(2019, 07, 28), + new DateTime(2019, 08, 28), + new DateTime(2019, 09, 28), + new DateTime(2019, 10, 28), + new DateTime(2019, 11, 28), + new DateTime(2019, 12, 28), + new DateTime(2020, 01, 28), + new DateTime(2020, 02, 28), + new DateTime(2020, 03, 28), + new DateTime(2020, 04, 28), + new DateTime(2020, 05, 28), + new DateTime(2020, 06, 28), + new DateTime(2020, 07, 28), + new DateTime(2020, 08, 28), + new DateTime(2020, 09, 28), + new DateTime(2020, 10, 28), + new DateTime(2020, 11, 28), + new DateTime(2020, 12, 28), + new DateTime(2021, 01, 28), + new DateTime(2021, 02, 28), + new DateTime(2021, 03, 28) + }; - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var res = dateColumn.Values; + Assert.Equal(expected, res); + } - var expected = new[] + [Fact] + public void DateColumnTest2() + { + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 28), - new DateTime(2018, 10, 28), - new DateTime(2018, 11, 13), - new DateTime(2018, 12, 13), - new DateTime(2019, 01, 13), - new DateTime(2019, 02, 13), - new DateTime(2019, 03, 13), - new DateTime(2019, 04, 13), - new DateTime(2019, 05, 13), - new DateTime(2019, 06, 13), - new DateTime(2019, 07, 13), - new DateTime(2019, 08, 13), - new DateTime(2019, 09, 13), - new DateTime(2019, 10, 13), - new DateTime(2019, 11, 13), - new DateTime(2019, 12, 13), - new DateTime(2020, 01, 13), - new DateTime(2020, 02, 13), - new DateTime(2020, 03, 13), - new DateTime(2020, 04, 13), - new DateTime(2020, 05, 13), - new DateTime(2020, 06, 13), - new DateTime(2020, 07, 13), - new DateTime(2020, 08, 13), - new DateTime(2020, 09, 13), - new DateTime(2020, 10, 13), - new DateTime(2020, 11, 13), - new DateTime(2020, 12, 13), - new DateTime(2021, 01, 13), - new DateTime(2021, 02, 13), - new DateTime(2021, 03, 13) + DogDate = new DateTime(2018, 10, 28), + DeliveryTime = 100000000, + PaymentDateNew = new DateTime(2018, 11, 13), + Nmper = 30 }; - var res = dateColumn.Values; - Assert.Equal(expected, res); - } + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); - [Fact] - public void DateColumnTest3() + var expected = new[] { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 28), - DeliveryTime = 100000001, - PaymentDateNew = null, - Nmper = 30 - }; + new DateTime(2018, 10, 28), + new DateTime(2018, 10, 28), + new DateTime(2018, 11, 13), + new DateTime(2018, 12, 13), + new DateTime(2019, 01, 13), + new DateTime(2019, 02, 13), + new DateTime(2019, 03, 13), + new DateTime(2019, 04, 13), + new DateTime(2019, 05, 13), + new DateTime(2019, 06, 13), + new DateTime(2019, 07, 13), + new DateTime(2019, 08, 13), + new DateTime(2019, 09, 13), + new DateTime(2019, 10, 13), + new DateTime(2019, 11, 13), + new DateTime(2019, 12, 13), + new DateTime(2020, 01, 13), + new DateTime(2020, 02, 13), + new DateTime(2020, 03, 13), + new DateTime(2020, 04, 13), + new DateTime(2020, 05, 13), + new DateTime(2020, 06, 13), + new DateTime(2020, 07, 13), + new DateTime(2020, 08, 13), + new DateTime(2020, 09, 13), + new DateTime(2020, 10, 13), + new DateTime(2020, 11, 13), + new DateTime(2020, 12, 13), + new DateTime(2021, 01, 13), + new DateTime(2021, 02, 13), + new DateTime(2021, 03, 13) + }; - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var res = dateColumn.Values; + Assert.Equal(expected, res); + } - var expected = new[] + [Fact] + public void DateColumnTest3() + { + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 28), - new DateTime(2018, 10, 28), - new DateTime(2019, 5, 26), - new DateTime(2019, 6, 26), - new DateTime(2019, 7, 26), - new DateTime(2019, 8, 26), - new DateTime(2019, 9, 26), - new DateTime(2019, 10, 26), - new DateTime(2019, 11, 26), - new DateTime(2019, 12, 26), - new DateTime(2020, 1, 26), - new DateTime(2020, 2, 26), - new DateTime(2020, 3, 26), - new DateTime(2020, 4, 26), - new DateTime(2020, 5, 26), - new DateTime(2020, 6, 26), - new DateTime(2020, 7, 26), - new DateTime(2020, 8, 26), - new DateTime(2020, 9, 26), - new DateTime(2020, 10, 26), - new DateTime(2020, 11, 26), - new DateTime(2020, 12, 26), - new DateTime(2021, 1, 26), - new DateTime(2021, 2, 26), - new DateTime(2021, 3, 26), - new DateTime(2021, 4, 26), - new DateTime(2021, 5, 26), - new DateTime(2021, 6, 26), - new DateTime(2021, 7, 26), - new DateTime(2021, 8, 26), - new DateTime(2021, 9, 26) + DogDate = new DateTime(2018, 10, 28), + DeliveryTime = 100000001, + PaymentDateNew = null, + Nmper = 30 }; - var res = dateColumn.Values; - Assert.Equal(expected, res); - } + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); - [Fact] - public void DateColumnTest4() + var expected = new[] { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 31), - DeliveryTime = 100000000, - PaymentDateNew = null, - Nmper = 30 - }; + new DateTime(2018, 10, 28), + new DateTime(2018, 10, 28), + new DateTime(2019, 5, 26), + new DateTime(2019, 6, 26), + new DateTime(2019, 7, 26), + new DateTime(2019, 8, 26), + new DateTime(2019, 9, 26), + new DateTime(2019, 10, 26), + new DateTime(2019, 11, 26), + new DateTime(2019, 12, 26), + new DateTime(2020, 1, 26), + new DateTime(2020, 2, 26), + new DateTime(2020, 3, 26), + new DateTime(2020, 4, 26), + new DateTime(2020, 5, 26), + new DateTime(2020, 6, 26), + new DateTime(2020, 7, 26), + new DateTime(2020, 8, 26), + new DateTime(2020, 9, 26), + new DateTime(2020, 10, 26), + new DateTime(2020, 11, 26), + new DateTime(2020, 12, 26), + new DateTime(2021, 1, 26), + new DateTime(2021, 2, 26), + new DateTime(2021, 3, 26), + new DateTime(2021, 4, 26), + new DateTime(2021, 5, 26), + new DateTime(2021, 6, 26), + new DateTime(2021, 7, 26), + new DateTime(2021, 8, 26), + new DateTime(2021, 9, 26) + }; - var dateColumn = new DateColumn(preparedValues.Nmper + 1); - dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var res = dateColumn.Values; + Assert.Equal(expected, res); + } - var expected = new[] + [Fact] + public void DateColumnTest4() + { + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 01, 31), - new DateTime(2019, 02, 28), - new DateTime(2019, 03, 31), - new DateTime(2019, 04, 30), - new DateTime(2019, 05, 31), - new DateTime(2019, 06, 30), - new DateTime(2019, 07, 31), - new DateTime(2019, 08, 31), - new DateTime(2019, 09, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 01, 31), - new DateTime(2020, 02, 29), - new DateTime(2020, 03, 31), - new DateTime(2020, 04, 30), - new DateTime(2020, 05, 31), - new DateTime(2020, 06, 30), - new DateTime(2020, 07, 31), - new DateTime(2020, 08, 31), - new DateTime(2020, 09, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 01, 31), - new DateTime(2021, 02, 28), - new DateTime(2021, 03, 31) + DogDate = new DateTime(2018, 10, 31), + DeliveryTime = 100000000, + PaymentDateNew = null, + Nmper = 30 }; - var res = dateColumn.Values; - Assert.Equal(expected, res); - } + var dateColumn = new DateColumn(preparedValues.Nmper + 1); + dateColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + var expected = new[] + { + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 01, 31), + new DateTime(2019, 02, 28), + new DateTime(2019, 03, 31), + new DateTime(2019, 04, 30), + new DateTime(2019, 05, 31), + new DateTime(2019, 06, 30), + new DateTime(2019, 07, 31), + new DateTime(2019, 08, 31), + new DateTime(2019, 09, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 01, 31), + new DateTime(2020, 02, 29), + new DateTime(2020, 03, 31), + new DateTime(2020, 04, 30), + new DateTime(2020, 05, 31), + new DateTime(2020, 06, 30), + new DateTime(2020, 07, 31), + new DateTime(2020, 08, 31), + new DateTime(2020, 09, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 01, 31), + new DateTime(2021, 02, 28), + new DateTime(2021, 03, 31) + }; + + var res = dateColumn.Values; + Assert.Equal(expected, res); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateTempTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateTempTests.cs index a60ce00..69711d5 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateTempTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DateTempTests.cs @@ -3,184 +3,183 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DateTempTests { - public class DateTempTests + [Fact] + public void DateTempTest1() { - [Fact] - public void DateTempTest1() - { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 31), - PaymentDateNew = null - }; - - var dateTempColumn = new DateTempColumn(67); - dateTempColumn.ComputeValues(preparedValues); - - var expected = new[] + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) + DogDate = new DateTime(2018, 10, 31), + PaymentDateNew = null }; - var res = dateTempColumn.Values; - Assert.Equal(expected, res); - } + var dateTempColumn = new DateTempColumn(67); + dateTempColumn.ComputeValues(preparedValues); - [Fact] - public void DateTempTest2() + var expected = new[] { - var preparedValues = - new PreparedValues - { - DogDate = new DateTime(2018, 10, 31), - PaymentDateNew = new DateTime(2018, 12, 11) - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + }; - var dateTempColumn = new DateTempColumn(67); - dateTempColumn.ComputeValues(preparedValues); + var res = dateTempColumn.Values; + Assert.Equal(expected, res); + } - var expected = new[] + [Fact] + public void DateTempTest2() + { + var preparedValues = + new PreparedValues { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 12, 11), - new DateTime(2019, 1, 11), - new DateTime(2019, 2, 11), - new DateTime(2019, 3, 11), - new DateTime(2019, 4, 11), - new DateTime(2019, 5, 11), - new DateTime(2019, 6, 11), - new DateTime(2019, 7, 11), - new DateTime(2019, 8, 11), - new DateTime(2019, 9, 11), - new DateTime(2019, 10, 11), - new DateTime(2019, 11, 11), - new DateTime(2019, 12, 11), - new DateTime(2020, 1, 11), - new DateTime(2020, 2, 11), - new DateTime(2020, 3, 11), - new DateTime(2020, 4, 11), - new DateTime(2020, 5, 11), - new DateTime(2020, 6, 11), - new DateTime(2020, 7, 11), - new DateTime(2020, 8, 11), - new DateTime(2020, 9, 11), - new DateTime(2020, 10, 11), - new DateTime(2020, 11, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11), - new DateTime(2022, 1, 11), - new DateTime(2022, 2, 11), - new DateTime(2022, 3, 11), - new DateTime(2022, 4, 11), - new DateTime(2022, 5, 11), - new DateTime(2022, 6, 11), - new DateTime(2022, 7, 11), - new DateTime(2022, 8, 11), - new DateTime(2022, 9, 11), - new DateTime(2022, 10, 11), - new DateTime(2022, 11, 11), - new DateTime(2022, 12, 11), - new DateTime(2023, 1, 11), - new DateTime(2023, 2, 11), - new DateTime(2023, 3, 11), - new DateTime(2023, 4, 11), - new DateTime(2023, 5, 11), - new DateTime(2023, 6, 11), - new DateTime(2023, 7, 11), - new DateTime(2023, 8, 11), - new DateTime(2023, 9, 11), - new DateTime(2023, 10, 11), - new DateTime(2023, 11, 11), - new DateTime(2023, 12, 11), - new DateTime(2024, 1, 11), - new DateTime(2024, 2, 11), - new DateTime(2024, 3, 11), - new DateTime(2024, 4, 11) + DogDate = new DateTime(2018, 10, 31), + PaymentDateNew = new DateTime(2018, 12, 11) }; - var res = dateTempColumn.Values; - Assert.Equal(expected, res); - } + var dateTempColumn = new DateTempColumn(67); + dateTempColumn.ComputeValues(preparedValues); + + var expected = new[] + { + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 12, 11), + new DateTime(2019, 1, 11), + new DateTime(2019, 2, 11), + new DateTime(2019, 3, 11), + new DateTime(2019, 4, 11), + new DateTime(2019, 5, 11), + new DateTime(2019, 6, 11), + new DateTime(2019, 7, 11), + new DateTime(2019, 8, 11), + new DateTime(2019, 9, 11), + new DateTime(2019, 10, 11), + new DateTime(2019, 11, 11), + new DateTime(2019, 12, 11), + new DateTime(2020, 1, 11), + new DateTime(2020, 2, 11), + new DateTime(2020, 3, 11), + new DateTime(2020, 4, 11), + new DateTime(2020, 5, 11), + new DateTime(2020, 6, 11), + new DateTime(2020, 7, 11), + new DateTime(2020, 8, 11), + new DateTime(2020, 9, 11), + new DateTime(2020, 10, 11), + new DateTime(2020, 11, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11) + }; + + var res = dateTempColumn.Values; + Assert.Equal(expected, res); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLDTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLDTests.cs index 4fff4e9..b041ea1 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLDTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLDTests.cs @@ -2,71 +2,70 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DeprecationLdTests { - public class DeprecationLdTests + [Fact] + public void DeprecationLdTest1() { - [Fact] - public void DeprecationLdTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - BalanceHolder = 100000001, - NmperDeprecation = 37, - DeprecationTime = 5.60, - AcceptSum = 2500000 - }; + BalanceHolder = 100000001, + NmperDeprecation = 37, + DeprecationTime = 5.60, + AcceptSum = 2500000 + }; - var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2); - deprecationLdColumn.ComputeValues(preparedValues); + var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2); + deprecationLdColumn.ComputeValues(preparedValues); - var expected = new[] - { - 2500000.00m, - 0.00m, - 140000.00m, - 132160.00m, - 124759.04m, - 117772.53376m, - 111177.27186944m, - 104951.344644751m, - 99074.0693446453m, - 93525.9214613451m, - 88288.4698595098m, - 83344.3155473772m, - 78677.0338767241m, - 74271.1199796276m, - 70111.9372607684m, - 66185.6687741654m, - 62479.2713228121m, - 58980.4321287346m, - 55677.5279295255m, - 52559.5863654721m, - 49616.2495290057m, - 46837.7395553813m, - 44214.82614028m, - 41738.7958764243m, - 39401.4233073445m, - 37194.9436021332m, - 35112.0267604138m, - 33145.7532618306m, - 31289.5910791681m, - 29537.3739787347m, - 27883.2810359255m, - 26321.8172979137m, - 24847.7955292305m, - 23456.3189795936m, - 22142.7651167364m, - 20902.7702701992m, - 19732.215135068m, - 18627.2110875042m, - 314001.558332213m - }; + var expected = new[] + { + 2500000.00m, + 0.00m, + 140000.00m, + 132160.00m, + 124759.04m, + 117772.53376m, + 111177.27186944m, + 104951.344644751m, + 99074.0693446453m, + 93525.9214613451m, + 88288.4698595098m, + 83344.3155473772m, + 78677.0338767241m, + 74271.1199796276m, + 70111.9372607684m, + 66185.6687741654m, + 62479.2713228121m, + 58980.4321287346m, + 55677.5279295255m, + 52559.5863654721m, + 49616.2495290057m, + 46837.7395553813m, + 44214.82614028m, + 41738.7958764243m, + 39401.4233073445m, + 37194.9436021332m, + 35112.0267604138m, + 33145.7532618306m, + 31289.5910791681m, + 29537.3739787347m, + 27883.2810359255m, + 26321.8172979137m, + 24847.7955292305m, + 23456.3189795936m, + 22142.7651167364m, + 20902.7702701992m, + 19732.215135068m, + 18627.2110875042m, + 314001.558332213m + }; - var values = deprecationLdColumn.Values; - Assert.Equal(expected, values, new DecimalArrayComparer()); - } + var values = deprecationLdColumn.Values; + Assert.Equal(expected, values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLPTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLPTests.cs index c8f3440..f7a0635 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLPTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationLPTests.cs @@ -2,188 +2,187 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DeprecationLpTests { - public class DeprecationLpTests + [Fact] + public void DeprecationLpTest1() { - [Fact] - public void DeprecationLpTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - BalanceHolder = 100000001, - Nmper = 30 - }; + BalanceHolder = 100000001, + Nmper = 30 + }; - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 2224393.53099731m, - 421159.029649596m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 16846.3611859838m - } - }; - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var expected = new[] - { - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - - var values = deprecationLpColumn.Values; - Assert.Equal(expected, values, new DecimalArrayComparer()); - } - - [Fact] - public void DeprecationLpTest2() + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1) { - var preparedValues = new PreparedValues + Values = new[] { - BalanceHolder = 100000000, - Nmper = 30 - }; - - var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 2224393.53099731m, - 421159.029649596m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 80862.533692722398m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 72776.280323450104m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 64690.026954177898m, - 16846.3611859838m - } - }; - - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); - deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); - - var expected = new[] - { - 2500000.00m, + 2224393.53099731m, 421159.029649596m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 80862.5336927224m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 72776.2803234501m, - 64690.0269541779m, - 64690.0269541779m, - 64690.0269541779m, - 64690.0269541779m, - 64690.0269541779m, - 64690.0269541779m, - 64690.0269541779m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, 16846.3611859838m - }; + } + }; + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var expected = new[] + { + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var values = deprecationLpColumn.Values; - Assert.Equal(expected, values, new DecimalArrayComparer()); - } + var values = deprecationLpColumn.Values; + Assert.Equal(expected, values, new DecimalArrayComparer()); + } + + [Fact] + public void DeprecationLpTest2() + { + var preparedValues = new PreparedValues + { + BalanceHolder = 100000000, + Nmper = 30 + }; + + var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 2224393.53099731m, + 421159.029649596m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 80862.533692722398m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 72776.280323450104m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 64690.026954177898m, + 16846.3611859838m + } + }; + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1); + deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn); + + var expected = new[] + { + 2500000.00m, + 421159.029649596m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 80862.5336927224m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 72776.2803234501m, + 64690.0269541779m, + 64690.0269541779m, + 64690.0269541779m, + 64690.0269541779m, + 64690.0269541779m, + 64690.0269541779m, + 64690.0269541779m, + 16846.3611859838m + }; + + + var values = deprecationLpColumn.Values; + Assert.Equal(expected, values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationTests.cs index 95b8257..f223469 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DeprecationTests.cs @@ -2,107 +2,60 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DeprecationTests { - public class DeprecationTests + [Fact] + public void DepreactionTest1() { - [Fact] - public void DepreactionTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + NmperDeprecation = 37, + Nmper = 30 + }; + + var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1) + { + Values = new[] { - NmperDeprecation = 37, - Nmper = 30 - }; + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; - - var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2) - { - Values = new[] - { - 2500000.00m, - 0.00m, - 140000.00m, - 132160.00m, - 124759.04m, - 117772.53376m, - 111177.27186944m, - 104951.344644751m, - 99074.0693446453m, - 93525.9214613451m, - 88288.4698595098m, - 83344.3155473772m, - 78677.0338767241m, - 74271.1199796276m, - 70111.9372607684m, - 66185.6687741654m, - 62479.2713228121m, - 58980.4321287346m, - 55677.5279295255m, - 52559.5863654721m, - 49616.2495290057m, - 46837.7395553813m, - 44214.82614028m, - 41738.7958764243m, - 39401.4233073445m, - 37194.9436021332m, - 35112.0267604138m, - 33145.7532618306m, - 31289.5910791681m, - 29537.3739787347m, - 27883.2810359255m, - 26321.8172979137m, - 24847.7955292305m, - 23456.3189795936m, - 22142.7651167364m, - 20902.7702701992m, - 19732.215135068m, - 18627.2110875042m, - 314001.558332213m - } - }; - - var deprecationColumn = new DeprecationColumn(preparedValues.NmperDeprecation + 2); - deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); - - var expected = new[] + var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2) + { + Values = new[] { 2500000.00m, 0.00m, @@ -143,11 +96,57 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 19732.215135068m, 18627.2110875042m, 314001.558332213m - }; + } + }; + + var deprecationColumn = new DeprecationColumn(preparedValues.NmperDeprecation + 2); + deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn); + + var expected = new[] + { + 2500000.00m, + 0.00m, + 140000.00m, + 132160.00m, + 124759.04m, + 117772.53376m, + 111177.27186944m, + 104951.344644751m, + 99074.0693446453m, + 93525.9214613451m, + 88288.4698595098m, + 83344.3155473772m, + 78677.0338767241m, + 74271.1199796276m, + 70111.9372607684m, + 66185.6687741654m, + 62479.2713228121m, + 58980.4321287346m, + 55677.5279295255m, + 52559.5863654721m, + 49616.2495290057m, + 46837.7395553813m, + 44214.82614028m, + 41738.7958764243m, + 39401.4233073445m, + 37194.9436021332m, + 35112.0267604138m, + 33145.7532618306m, + 31289.5910791681m, + 29537.3739787347m, + 27883.2810359255m, + 26321.8172979137m, + 24847.7955292305m, + 23456.3189795936m, + 22142.7651167364m, + 20902.7702701992m, + 19732.215135068m, + 18627.2110875042m, + 314001.558332213m + }; - var values = deprecationColumn.Values; - Assert.Equal(expected, values, new DecimalArrayComparer()); - } + var values = deprecationColumn.Values; + Assert.Equal(expected, values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DirectorBonusSum.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DirectorBonusSum.cs index bc96e00..c7c3ec9 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/DirectorBonusSum.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/DirectorBonusSum.cs @@ -3,67 +3,66 @@ using EvoCalculator.Core.Calculation.v1.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class DirectorBonusSumTests { - public class DirectorBonusSumTests + [Fact] + public void DirectorBonusSumTest1() { - [Fact] - public void DirectorBonusSumTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25, + DirectorBonus = 0.003, + SalaryRate = 0.3, + MarketRate = 0.01, + DistrictRate = 0.02 + }; + + var postValues = new Core.Calculation.v1.PostValues.PostValues + { + BonusBase = new BonusBase { - Nmper = 25, - DirectorBonus = 0.003, - SalaryRate = 0.3, - MarketRate = 0.01, - DistrictRate = 0.02 - }; + Value = 1873191.66666667m + } + }; - var postValues = new Core.Calculation.v1.PostValues.PostValues - { - BonusBase = new BonusBase - { - Value = 1873191.66666667m - } - }; - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); - var expected = new[] - { - -7524.610925m, - 0, - -7524.610925m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; + var expected = new[] + { + -7524.610925m, + 0, + -7524.610925m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; - Assert.Equal(expected.Length, directorBonusSumColumn.Values.Length); - Assert.Equal(expected, directorBonusSumColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, directorBonusSumColumn.Values.Length); + Assert.Equal(expected, directorBonusSumColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/ExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/ExpensesTests.cs index e0a5e0d..68408bf 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/ExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/ExpensesTests.cs @@ -2,377 +2,376 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class ExpensesTests { - public class ExpensesTests + [Fact] + public void ExpensesColumnTest1() { - [Fact] - public void ExpensesColumnTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 24 + }; + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 24 - }; + -446104.166666667m, + 0.00m, + -446104.166666667m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1) + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -446104.166666667m, - 0.00m, - -446104.166666667m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + -6000, + -12000, + 0.00m, + 0.00m, + 6000, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1) + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -6000, - -12000, - 0.00m, - 0.00m, - 6000, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + -18000, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -9000, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -9000 + } + }; - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1) + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -18000, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -9000, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -9000 - } - }; + -3376.08m, + -1688.04m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -1688.04m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -3376.08m, - -1688.04m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -1688.04m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + -33600.00m, + -20000, + -1600, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800, + -800 + } + }; - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1) + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -33600.00m, - -20000, - -1600, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800, - -800 - } - }; + -25200.00m, + -15000, + -1200, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600, + -600 + } + }; - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1) + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -25200.00m, - -15000, - -1200, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600, - -600 - } - }; + -2300, + -2300, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1) + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -2300, - -2300, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + 26337.50m, + 0.00m, + 13168.75m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 13168.75m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1) + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - 26337.50m, - 0.00m, - 13168.75m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 13168.75m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + 125000, + 125000, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1) + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - 125000, - 125000, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -19695.05642m, - -1355.97852m, - -18339.0779m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + -19695.05642m, + -1355.97852m, + -18339.0779m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn); - var expected = new[] - { - -412737.803086667m, - 72655.98148m, - -454074.494566667m, - -1400m, - 4600m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -10400m, - 10080.71m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -1400m, - -10400m - }; + var expected = new[] + { + -412737.803086667m, + 72655.98148m, + -454074.494566667m, + -1400m, + 4600m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -10400m, + 10080.71m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -1400m, + -10400m + }; - Assert.Equal(expected.Length, expensesColumn.Values.Length); - Assert.Equal(expected, expensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, expensesColumn.Values.Length); + Assert.Equal(expected, expensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPSExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPSExpensesTests.cs index 44af391..e879efa 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPSExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPSExpensesTests.cs @@ -2,123 +2,122 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class GpsExpensesTests { - public class GpsExpensesTests + [Fact] + public void GpsExpensesTest1() { - [Fact] - public void GpsExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 17, - TrackerCost = 15000 - }; + Nmper = 17, + TrackerCost = 15000 + }; - var preparedPayments = new PreparedPayments + var preparedPayments = new PreparedPayments + { + Rows = new[] { - Rows = new[] + new PaymentRow { - new PaymentRow - { - GpsBasePayment = 0.00m - }, - new PaymentRow - { - GpsBasePayment = 1200.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - }, - new PaymentRow - { - GpsBasePayment = 600.00m - } + GpsBasePayment = 0.00m + }, + new PaymentRow + { + GpsBasePayment = 1200.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m + }, + new PaymentRow + { + GpsBasePayment = 600.00m } - }; + } + }; - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); - gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1); + gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments); - var expected = new[] - { - -25200.00m, - -15000.00m, - -1200.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m, - -600.00m - }; + var expected = new[] + { + -25200.00m, + -15000.00m, + -1200.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m, + -600.00m + }; - Assert.Equal(expected.Length, gpsExpensesColumn.Values.Length); - Assert.Equal(expected, gpsExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, gpsExpensesColumn.Values.Length); + Assert.Equal(expected, gpsExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPS_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPS_GrTests.cs index 848e84e..6ad1723 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPS_GrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/GPS_GrTests.cs @@ -3,262 +3,261 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class GpsGrTests { - public class GpsGrTests + [Fact] + public void GPS_GrTest1() { - [Fact] - public void GPS_GrTest1() + var preparedValues = + new PreparedValues + { + IrrExpected = 0.22 + }; + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - IrrExpected = 0.22 - }; - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] + new DateTime(2020, 10, 12), + new DateTime(2020, 10, 12), + new DateTime(2020, 11, 12), + new DateTime(2020, 12, 12), + new DateTime(2021, 1, 12), + new DateTime(2021, 2, 12), + new DateTime(2021, 3, 12), + new DateTime(2021, 4, 12), + new DateTime(2021, 5, 12), + new DateTime(2021, 6, 12), + new DateTime(2021, 7, 12), + new DateTime(2021, 8, 12), + new DateTime(2021, 9, 12), + new DateTime(2021, 10, 12), + new DateTime(2021, 11, 12), + new DateTime(2021, 12, 12), + new DateTime(2022, 1, 12), + new DateTime(2022, 2, 12), + new DateTime(2022, 3, 12), + new DateTime(2022, 4, 12), + new DateTime(2022, 5, 12), + new DateTime(2022, 6, 12), + new DateTime(2022, 7, 12), + new DateTime(2022, 8, 12), + new DateTime(2022, 9, 12), + new DateTime(2022, 10, 12), + new DateTime(2022, 11, 12), + new DateTime(2022, 12, 12), + new DateTime(2023, 1, 12), + new DateTime(2023, 2, 12), + new DateTime(2023, 3, 12), + new DateTime(2023, 4, 12), + new DateTime(2023, 5, 12), + new DateTime(2023, 6, 12), + new DateTime(2023, 7, 12), + new DateTime(2023, 8, 12), + new DateTime(2023, 9, 12), + new DateTime(2023, 10, 12), + new DateTime(2023, 11, 12), + new DateTime(2023, 12, 12), + new DateTime(2024, 1, 12), + new DateTime(2024, 2, 12), + new DateTime(2024, 3, 12), + new DateTime(2024, 4, 12), + new DateTime(2024, 5, 12), + new DateTime(2024, 6, 12), + new DateTime(2024, 7, 12), + new DateTime(2024, 8, 12), + new DateTime(2024, 9, 12), + new DateTime(2024, 10, 12), + new DateTime(2024, 11, 12), + new DateTime(2024, 12, 12), + new DateTime(2025, 1, 12), + new DateTime(2025, 2, 12), + new DateTime(2025, 3, 12), + new DateTime(2025, 4, 12), + new DateTime(2025, 5, 12), + new DateTime(2025, 6, 12), + new DateTime(2025, 7, 12), + new DateTime(2025, 8, 12), + new DateTime(2025, 9, 12), + new DateTime(2025, 10, 12), + new DateTime(2025, 11, 12), + new DateTime(2025, 12, 12), + new DateTime(2026, 1, 12), + new DateTime(2026, 2, 12), + new DateTime(2026, 3, 12) + } + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow { - new DateTime(2020, 10, 12), - new DateTime(2020, 10, 12), - new DateTime(2020, 11, 12), - new DateTime(2020, 12, 12), - new DateTime(2021, 1, 12), - new DateTime(2021, 2, 12), - new DateTime(2021, 3, 12), - new DateTime(2021, 4, 12), - new DateTime(2021, 5, 12), - new DateTime(2021, 6, 12), - new DateTime(2021, 7, 12), - new DateTime(2021, 8, 12), - new DateTime(2021, 9, 12), - new DateTime(2021, 10, 12), - new DateTime(2021, 11, 12), - new DateTime(2021, 12, 12), - new DateTime(2022, 1, 12), - new DateTime(2022, 2, 12), - new DateTime(2022, 3, 12), - new DateTime(2022, 4, 12), - new DateTime(2022, 5, 12), - new DateTime(2022, 6, 12), - new DateTime(2022, 7, 12), - new DateTime(2022, 8, 12), - new DateTime(2022, 9, 12), - new DateTime(2022, 10, 12), - new DateTime(2022, 11, 12), - new DateTime(2022, 12, 12), - new DateTime(2023, 1, 12), - new DateTime(2023, 2, 12), - new DateTime(2023, 3, 12), - new DateTime(2023, 4, 12), - new DateTime(2023, 5, 12), - new DateTime(2023, 6, 12), - new DateTime(2023, 7, 12), - new DateTime(2023, 8, 12), - new DateTime(2023, 9, 12), - new DateTime(2023, 10, 12), - new DateTime(2023, 11, 12), - new DateTime(2023, 12, 12), - new DateTime(2024, 1, 12), - new DateTime(2024, 2, 12), - new DateTime(2024, 3, 12), - new DateTime(2024, 4, 12), - new DateTime(2024, 5, 12), - new DateTime(2024, 6, 12), - new DateTime(2024, 7, 12), - new DateTime(2024, 8, 12), - new DateTime(2024, 9, 12), - new DateTime(2024, 10, 12), - new DateTime(2024, 11, 12), - new DateTime(2024, 12, 12), - new DateTime(2025, 1, 12), - new DateTime(2025, 2, 12), - new DateTime(2025, 3, 12), - new DateTime(2025, 4, 12), - new DateTime(2025, 5, 12), - new DateTime(2025, 6, 12), - new DateTime(2025, 7, 12), - new DateTime(2025, 8, 12), - new DateTime(2025, 9, 12), - new DateTime(2025, 10, 12), - new DateTime(2025, 11, 12), - new DateTime(2025, 12, 12), - new DateTime(2026, 1, 12), - new DateTime(2026, 2, 12), - new DateTime(2026, 3, 12) + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m } - }; - - var preparedPayments = new PreparedPayments - { - Rows = new[] - { - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - } - } - }; + } + }; - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - var expected = new[] - { - -19068.29452640964m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m - }; + var expected = new[] + { + -19068.29452640964m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m + }; - var res = gpsGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var res = gpsGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/IRRGr.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/IRRGr.cs index c2aeeab..b97c1ae 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/IRRGr.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/IRRGr.cs @@ -3,203 +3,202 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class IrrGrTests { - public class IrrGrTests + [Fact] + public void IrrGrTest1() { - [Fact] - public void IrrGrTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(67) + var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn) + { + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; + -2507300m, + 625000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 120000m, + 108000m, + 50583.3333333333m, + 108000m, + 108000m, + 108000m, + 108000m, + 108000m, + 108000m, + 108000m, + 108000m, + 108000m, + 96000m, + 96000m, + 25000m + } + }; - var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn) - { - Values = new[] - { - -2507300m, - 625000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 120000m, - 108000m, - 50583.3333333333m, - 108000m, - 108000m, - 108000m, - 108000m, - 108000m, - 108000m, - 108000m, - 108000m, - 108000m, - 96000m, - 96000m, - 25000m - } - }; - - var irrGrColumn = new IRRGrColumn(67); - irrGrColumn.ComputeValues(dateTempColumn, cashflowColumn); + var irrGrColumn = new IRRGrColumn(67); + irrGrColumn.ComputeValues(dateTempColumn, cashflowColumn); - var expected = new[] - { - 0, - 0, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0263773400122931, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0263773400122931, - 0.0282219060742697 - }; + var expected = new[] + { + 0, + 0, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0263773400122931, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0263773400122931, + 0.0282219060742697 + }; - Assert.Equal(expected.Length, irrGrColumn.Values.Length); - Assert.Equal(expected, irrGrColumn.Values, new DoubleArrayComparer()); - } + Assert.Equal(expected.Length, irrGrColumn.Values.Length); + Assert.Equal(expected, irrGrColumn.Values, new DoubleArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/InsuranceBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/InsuranceBonusExpensesTests.cs index 31d174f..2c9651f 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/InsuranceBonusExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/InsuranceBonusExpensesTests.cs @@ -2,259 +2,258 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class InsuranceBonusExpensesTests { - public class InsuranceBonusExpensesTests + [Fact] + public void InsuranceBonusExpensesTest1() { - [Fact] - public void InsuranceBonusExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - InsuranceBonus = 26337.5m, - NmperInsurance = 27, - Nmper = 27 - }; + InsuranceBonus = 26337.5m, + NmperInsurance = 27, + Nmper = 27 + }; - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - 26337.50m, - 0.00m, - 11705.5555555556m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 14631.9444444444m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - - Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); - Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void InsuranceBonusExpensesTest2() + var expected = new[] { - var preparedValues = new PreparedValues - { - InsuranceBonus = 26337.5m, - NmperInsurance = 24, - Nmper = 24 - }; - - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); + 26337.50m, + 0.00m, + 11705.5555555556m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 14631.9444444444m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var expected = new[] - { - 26337.50m, - 0.00m, - 13168.75m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 13168.75m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); + Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); + } - - Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); - Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void InsuranceBonusExpensesTest3() + [Fact] + public void InsuranceBonusExpensesTest2() + { + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - InsuranceBonus = 32921.875m, - NmperInsurance = 15, - Nmper = 15 - }; + InsuranceBonus = 26337.5m, + NmperInsurance = 24, + Nmper = 24 + }; - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - 32921.875m, - 0.00m, - 32921.875m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - - Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); - Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void InsuranceBonusExpensesTest4() + var expected = new[] { - var preparedValues = new PreparedValues - { - InsuranceBonus = 26337.5m, - NmperInsurance = 16, - Nmper = 16 - }; - - var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); + 26337.50m, + 0.00m, + 13168.75m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 13168.75m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var expected = new[] - { - 26337.50m, - 0.00m, - 19753.125m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 6584.375m, - 0.00m, - 0.00m, - 0.00m - }; + Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); + Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); + } - - Assert.Equal(expected.Length, targetColumn.Values.Length); - Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void InsuranceBonusExpensesTest5() + [Fact] + public void InsuranceBonusExpensesTest3() + { + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - InsuranceBonus = 26337.5m, - NmperInsurance = 49, - Nmper = 49 - }; + InsuranceBonus = 32921.875m, + NmperInsurance = 15, + Nmper = 15 + }; - var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); - targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + insuranceBonusExpensesColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - 26337.5m, - 0, - 6450m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6450m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6450m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 6987.5m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; + var expected = new[] + { + 32921.875m, + 0.00m, + 32921.875m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected.Length, targetColumn.Values.Length); - Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, insuranceBonusExpensesColumn.Values.Length); + Assert.Equal(expected, insuranceBonusExpensesColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest4() + { + var preparedValues = new PreparedValues + { + InsuranceBonus = 26337.5m, + NmperInsurance = 16, + Nmper = 16 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + 26337.50m, + 0.00m, + 19753.125m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 6584.375m, + 0.00m, + 0.00m, + 0.00m + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void InsuranceBonusExpensesTest5() + { + var preparedValues = new PreparedValues + { + InsuranceBonus = 26337.5m, + NmperInsurance = 49, + Nmper = 49 + }; + + var targetColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1); + targetColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + 26337.5m, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6450m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 6987.5m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; + + + Assert.Equal(expected.Length, targetColumn.Values.Length); + Assert.Equal(expected, targetColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/Interest.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/Interest.cs index e09b4fc..e1ac960 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/Interest.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/Interest.cs @@ -2,163 +2,162 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class InterestTests { - public class InterestTests + [Fact] + public void InterestTest1() { - [Fact] - public void InterestTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 25 - }; + Nmper = 25 + }; - var irrGrColumn = new IRRGrColumn(67) - { - Values = new[] - { - 0, - 0, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0263773400122931, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0254562982413058, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0272992090422726, - 0.0282219060742697, - 0.0282219060742697, - 0.0263773400122931, - 0.0282219060742697 - } - }; - - var niColumn = new NIColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 1882300m, - 1813685.30118027m, - 1744870.95739846m, - 1674114.54166988m, - 1596731.30073274m, - 1521794.10152786m, - 1443337.87682477m, - 1364071.62281796m, - 1281309.69919789m, - 1197470.70118071m, - 1111265.60683612m, - 1033602.27893863m, - 1012189.17203965m, - 931821.135837486m, - 850118.904411111m, - 766110.880283362m, - 678318.847459713m, - 589462.298261128m, - 497554.152763897m, - 403596.079330063m, - 306613.933068336m, - 207267.162688453m, - 117116.637086127m, - 24313.8286442689m, - 0.0112325733425678m - } - }; - - - var interestColumn = new InterestColumn(preparedValues.Nmper + 1); - interestColumn.ComputeValues(irrGrColumn, niColumn); - - - var expected = new[] + var irrGrColumn = new IRRGrColumn(67) + { + Values = new[] { 0, 0, - 51385.3011802696m, - 51185.6562181931m, - 49243.5842714204m, - 42616.7590628555m, - 45062.8007951257m, - 41543.7752969065m, - 40733.7459931845m, - 37238.0763799393m, - 36161.0019828137m, - 33794.9056554118m, - 30336.6721025071m, - 29170.226434357m, - 27631.9637978352m, - 26297.7685736248m, - 23991.9758722514m, - 20207.9671763514m, - 19143.4508014149m, - 16091.854502769m, - 14041.9265661655m, - 11017.853738273m, - 8653.22962011698m, - 5849.47439767389m, - 3197.19155814215m, - 686.182588304444m - }; + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0263773400122931, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0254562982413058, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0272992090422726, + 0.0282219060742697, + 0.0282219060742697, + 0.0263773400122931, + 0.0282219060742697 + } + }; + + var niColumn = new NIColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 0, + 1882300m, + 1813685.30118027m, + 1744870.95739846m, + 1674114.54166988m, + 1596731.30073274m, + 1521794.10152786m, + 1443337.87682477m, + 1364071.62281796m, + 1281309.69919789m, + 1197470.70118071m, + 1111265.60683612m, + 1033602.27893863m, + 1012189.17203965m, + 931821.135837486m, + 850118.904411111m, + 766110.880283362m, + 678318.847459713m, + 589462.298261128m, + 497554.152763897m, + 403596.079330063m, + 306613.933068336m, + 207267.162688453m, + 117116.637086127m, + 24313.8286442689m, + 0.0112325733425678m + } + }; - Assert.Equal(expected.Length, interestColumn.Values.Length); - Assert.Equal(expected, interestColumn.Values, new DecimalArrayComparer()); - } + var interestColumn = new InterestColumn(preparedValues.Nmper + 1); + interestColumn.ComputeValues(irrGrColumn, niColumn); + + + var expected = new[] + { + 0, + 0, + 51385.3011802696m, + 51185.6562181931m, + 49243.5842714204m, + 42616.7590628555m, + 45062.8007951257m, + 41543.7752969065m, + 40733.7459931845m, + 37238.0763799393m, + 36161.0019828137m, + 33794.9056554118m, + 30336.6721025071m, + 29170.226434357m, + 27631.9637978352m, + 26297.7685736248m, + 23991.9758722514m, + 20207.9671763514m, + 19143.4508014149m, + 16091.854502769m, + 14041.9265661655m, + 11017.853738273m, + 8653.22962011698m, + 5849.47439767389m, + 3197.19155814215m, + 686.182588304444m + }; + + + Assert.Equal(expected.Length, interestColumn.Values.Length); + Assert.Equal(expected, interestColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoBonusGrSumTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoBonusGrSumTests.cs index b3c60f8..13efc14 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoBonusGrSumTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoBonusGrSumTests.cs @@ -2,100 +2,99 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class KaskoBonusGrSumTests { - public class KaskoBonusGrSumTests + [Fact] + public void KaskoBonusGrSumTest1() { - [Fact] - public void KaskoBonusGrSumTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30 - }; + Nmper = 30 + }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper), - preparedValues.IrrExpected) + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper), + preparedValues.IrrExpected) + { + Values = new[] { - Values = new[] - { - -97954.419342053m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 17666.6666666667m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; - - - var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); - kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); - - - var expected = new[] - { - 98933.3333333333m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 37100.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 8833.33333333333m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m + -97954.419342053m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 17666.6666666667m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } }; - Assert.Equal(expected, kaskoBonusGrSumColumn.Values, new DecimalArrayComparer()); - } + var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1); + kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn); + + + var expected = new[] + { + 98933.3333333333m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 37100.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 8833.33333333333m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + + Assert.Equal(expected, kaskoBonusGrSumColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoNmperGrTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoNmperGrTests.cs index e7a5856..0d76aed 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoNmperGrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/KaskoNmperGrTests.cs @@ -3,629 +3,628 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class KaskoNmperGrTests { - public class KaskoNmperGrTests + [Fact] + public void KaskoNmperGrTest1() { - [Fact] - public void KaskoNmperGrTest1() + var preparedValues = + new PreparedValues + { + InsuranceKasko = 53000, + NmperInsurance = 17, + IrrExpected = 0.22, + Nmper = 30 + }; + + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 53000, - NmperInsurance = 17, - IrrExpected = 0.22, - Nmper = 30 - }; - - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 12, 11), - new DateTime(2019, 1, 11), - new DateTime(2019, 2, 11), - new DateTime(2019, 3, 11), - new DateTime(2019, 4, 11), - new DateTime(2019, 5, 11), - new DateTime(2019, 6, 11), - new DateTime(2019, 7, 11), - new DateTime(2019, 8, 11), - new DateTime(2019, 9, 11), - new DateTime(2019, 10, 11), - new DateTime(2019, 11, 11), - new DateTime(2019, 12, 11), - new DateTime(2020, 1, 11), - new DateTime(2020, 2, 11), - new DateTime(2020, 3, 11), - new DateTime(2020, 4, 11), - new DateTime(2020, 5, 11), - new DateTime(2020, 6, 11), - new DateTime(2020, 7, 11), - new DateTime(2020, 8, 11), - new DateTime(2020, 9, 11), - new DateTime(2020, 10, 11), - new DateTime(2020, 11, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11), - new DateTime(2022, 1, 11), - new DateTime(2022, 2, 11), - new DateTime(2022, 3, 11), - new DateTime(2022, 4, 11), - new DateTime(2022, 5, 11), - new DateTime(2022, 6, 11), - new DateTime(2022, 7, 11), - new DateTime(2022, 8, 11), - new DateTime(2022, 9, 11), - new DateTime(2022, 10, 11), - new DateTime(2022, 11, 11), - new DateTime(2022, 12, 11), - new DateTime(2023, 1, 11), - new DateTime(2023, 2, 11), - new DateTime(2023, 3, 11), - new DateTime(2023, 4, 11), - new DateTime(2023, 5, 11), - new DateTime(2023, 6, 11), - new DateTime(2023, 7, 11), - new DateTime(2023, 8, 11), - new DateTime(2023, 9, 11), - new DateTime(2023, 10, 11), - new DateTime(2023, 11, 11), - new DateTime(2023, 12, 11), - new DateTime(2024, 1, 11), - new DateTime(2024, 2, 11), - new DateTime(2024, 3, 11), - new DateTime(2024, 4, 11) - } - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 12, 11), + new DateTime(2019, 1, 11), + new DateTime(2019, 2, 11), + new DateTime(2019, 3, 11), + new DateTime(2019, 4, 11), + new DateTime(2019, 5, 11), + new DateTime(2019, 6, 11), + new DateTime(2019, 7, 11), + new DateTime(2019, 8, 11), + new DateTime(2019, 9, 11), + new DateTime(2019, 10, 11), + new DateTime(2019, 11, 11), + new DateTime(2019, 12, 11), + new DateTime(2020, 1, 11), + new DateTime(2020, 2, 11), + new DateTime(2020, 3, 11), + new DateTime(2020, 4, 11), + new DateTime(2020, 5, 11), + new DateTime(2020, 6, 11), + new DateTime(2020, 7, 11), + new DateTime(2020, 8, 11), + new DateTime(2020, 9, 11), + new DateTime(2020, 10, 11), + new DateTime(2020, 11, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11) + } + }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - -70992.94167536501m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 22083.333333333336m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - var res = kaskoNmperGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } - - [Fact] - public void KaskoNmperGrTest2() + var expected = new[] { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 53000, - NmperInsurance = 16, - IrrExpected = 0.22, - Nmper = 16 - }; + -70992.94167536501m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 22083.333333333336m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + var res = kaskoNmperGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); + } - var dateTempColumn = new DateTempColumn(67) + [Fact] + public void KaskoNmperGrTest2() + { + var preparedValues = + new PreparedValues { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } + InsuranceKasko = 53000, + NmperInsurance = 16, + IrrExpected = 0.22, + Nmper = 16 }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - - - var expected = new[] - { - -67480.874316939895m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 17666.666666666668m, - 0.00m, - 0.00m, - 0.00m - }; - - var res = kaskoNmperGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } - - [Fact] - public void KaskoNmperGrTest3() + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 53000, - NmperInsurance = 30, - IrrExpected = 0.22, - Nmper = 30 - }; - - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - -114237.27950469786m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 26500.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - var res = kaskoNmperGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } - - [Fact] - public void KaskoNmperGrTest4() + var expected = new[] { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 53000, - NmperInsurance = 15, - IrrExpected = 0.22, - Nmper = 15 - }; + -67480.874316939895m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 17666.666666666668m, + 0.00m, + 0.00m, + 0.00m + }; + var res = kaskoNmperGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); + } - var dateTempColumn = new DateTempColumn(67) + [Fact] + public void KaskoNmperGrTest3() + { + var preparedValues = + new PreparedValues { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } + InsuranceKasko = 53000, + NmperInsurance = 30, + IrrExpected = 0.22, + Nmper = 30 }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - - - var expected = new[] - { - -53000m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - var res = kaskoNmperGrColumn.Values; - - Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); - Assert.Equal(expected, res, new DecimalArrayComparer()); - } - - [Fact] - public void KaskoNmperGrTest5() + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 53000, - NmperInsurance = 16, - IrrExpected = 0.22, - Nmper = 16 - }; - - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; + + + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + -114237.27950469786m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 26500.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + var res = kaskoNmperGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); + } + + [Fact] + public void KaskoNmperGrTest4() + { + var preparedValues = + new PreparedValues + { + InsuranceKasko = 53000, + NmperInsurance = 15, + IrrExpected = 0.22, + Nmper = 15 }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - - - var expected = new[] + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] { - -67480.8743169399m, - 53000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 17666.6666666667m, - 0.00m, - 0.00m, - 0.00m + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; + + + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + -53000m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + var res = kaskoNmperGrColumn.Values; + + Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); + Assert.Equal(expected, res, new DecimalArrayComparer()); + } + + [Fact] + public void KaskoNmperGrTest5() + { + var preparedValues = + new PreparedValues + { + InsuranceKasko = 53000, + NmperInsurance = 16, + IrrExpected = 0.22, + Nmper = 16 }; - var res = kaskoNmperGrColumn.Values; - Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] + { + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; + + + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + + + var expected = new[] + { + -67480.8743169399m, + 53000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 17666.6666666667m, + 0.00m, + 0.00m, + 0.00m + }; + + var res = kaskoNmperGrColumn.Values; + + Assert.Equal(expected.Length, kaskoNmperGrColumn.Values.Length); + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPV.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPV.cs index e36dda1..0c2b063 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPV.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPV.cs @@ -3,239 +3,238 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NpvTests { - public class NpvTests + [Fact] + public void NpvTest1() { - [Fact] - public void NpvTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; - - var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -2507300m, - 571313.823489742m, - -259747.895766236m, - 122856.029613764m, - 127656.029613764m, - 122856.029613764m, - 122856.029613764m, - 122856.029613764m, - 122856.029613764m, - 122856.029613764m, - 122856.029613764m, - 122856.029613764m, - 110604.985995822m, - 47401.8172837004m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 110059.531450367m, - 97808.4878324251m, - 97808.4878324251m, - 23404.3131074786m - } - }; - - var npvWeightColumn = new NPVWeightColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 1, - 1, - 0.994263643057415, - 0.98837064137184, - 0.982512567513616, - 0.977251253020835, - 0.97145908378937, - 0.965886447729637, - 0.960161637711399, - 0.954653807834909, - 0.948995573685451, - 0.943370875895905, - 0.937959363822527, - 0.93240007766075, - 0.927051498001993, - 0.921556862772709, - 0.916094794252359, - 0.911014429114697, - 0.905614845610017, - 0.900419915603094, - 0.895083125791432, - 0.889948609488607, - 0.884673883119589, - 0.879430420059453, - 0.874385693263824, - 0.869203208316068, - 0.864217148457527, - 0.859094932485813, - 0.854003075893692, - 0.849429924456607, - 0.844395352377508, - 0.83955159923561, - 0.834575576000758, - 0.829788152601254, - 0.824869997325142, - 0.81998099196066, - 0.815277288304638, - 0.810445138936875, - 0.80579613633755, - 0.801020181767729, - 0.796272534285798, - 0.792008527530705, - 0.787314292133165, - 0.78279797632749, - 0.778158331876872, - 0.773694537927379, - 0.769108849565985, - 0.764550340584458, - 0.76016460693029, - 0.755659110484519, - 0.751324380099863, - 0.746871279688058, - 0.7424445728072, - 0.738468812577606, - 0.734091907128381, - 0.729880893920429, - 0.725554889074355, - 0.721392847249186, - 0.717117151064894, - 0.712866796936501, - 0.708777538536756, - 0.704576613300819, - 0.700534910353527, - 0.696382839183729, - 0.692255377344236, - 0.688416353143374, - 0.684336108675241 - } - }; - - - var npvColumn = new NPVColumn(preparedValues.Nmper + 1, dateTempColumn); - npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); - - - var expected = new[] + var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.Nmper + 1) + { + Values = new[] { -2507300m, 571313.823489742m, - -258257.889121036m, - 121427.292785753m, - 125423.653414413m, - 120061.208881215m, - 119349.605966586m, - 118664.974025805m, - 117961.646596671m, - 117284.976486258m, - 116589.82830403m, - 115898.800265829m, - 103742.98230024m, - 44197.4581165829m, - 102030.85350046m, - 101426.116521635m, - 100824.963819535m, - 100265.821212887m, - 99671.545582335m, - 99099.7940198555m, - 98512.429433735m, - 97947.3269752218m, - 97366.7930625188m, - 86015.7595398495m, - 85522.3424404413m, - 20343.1040414542m - }; + -259747.895766236m, + 122856.029613764m, + 127656.029613764m, + 122856.029613764m, + 122856.029613764m, + 122856.029613764m, + 122856.029613764m, + 122856.029613764m, + 122856.029613764m, + 122856.029613764m, + 110604.985995822m, + 47401.8172837004m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 110059.531450367m, + 97808.4878324251m, + 97808.4878324251m, + 23404.3131074786m + } + }; + + var npvWeightColumn = new NPVWeightColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 1, + 1, + 0.994263643057415, + 0.98837064137184, + 0.982512567513616, + 0.977251253020835, + 0.97145908378937, + 0.965886447729637, + 0.960161637711399, + 0.954653807834909, + 0.948995573685451, + 0.943370875895905, + 0.937959363822527, + 0.93240007766075, + 0.927051498001993, + 0.921556862772709, + 0.916094794252359, + 0.911014429114697, + 0.905614845610017, + 0.900419915603094, + 0.895083125791432, + 0.889948609488607, + 0.884673883119589, + 0.879430420059453, + 0.874385693263824, + 0.869203208316068, + 0.864217148457527, + 0.859094932485813, + 0.854003075893692, + 0.849429924456607, + 0.844395352377508, + 0.83955159923561, + 0.834575576000758, + 0.829788152601254, + 0.824869997325142, + 0.81998099196066, + 0.815277288304638, + 0.810445138936875, + 0.80579613633755, + 0.801020181767729, + 0.796272534285798, + 0.792008527530705, + 0.787314292133165, + 0.78279797632749, + 0.778158331876872, + 0.773694537927379, + 0.769108849565985, + 0.764550340584458, + 0.76016460693029, + 0.755659110484519, + 0.751324380099863, + 0.746871279688058, + 0.7424445728072, + 0.738468812577606, + 0.734091907128381, + 0.729880893920429, + 0.725554889074355, + 0.721392847249186, + 0.717117151064894, + 0.712866796936501, + 0.708777538536756, + 0.704576613300819, + 0.700534910353527, + 0.696382839183729, + 0.692255377344236, + 0.688416353143374, + 0.684336108675241 + } + }; - Assert.Equal(expected.Length, npvColumn.Values.Length); - Assert.Equal(0.053786775, npvColumn.IRR, new DoubleArrayComparer()); - Assert.Equal(0.0525046595222296, npvColumn.Nominal, new DoubleArrayComparer()); - Assert.Equal(expected, npvColumn.Values, new DecimalArrayComparer()); - } + var npvColumn = new NPVColumn(preparedValues.Nmper + 1, dateTempColumn); + npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn); + + + var expected = new[] + { + -2507300m, + 571313.823489742m, + -258257.889121036m, + 121427.292785753m, + 125423.653414413m, + 120061.208881215m, + 119349.605966586m, + 118664.974025805m, + 117961.646596671m, + 117284.976486258m, + 116589.82830403m, + 115898.800265829m, + 103742.98230024m, + 44197.4581165829m, + 102030.85350046m, + 101426.116521635m, + 100824.963819535m, + 100265.821212887m, + 99671.545582335m, + 99099.7940198555m, + 98512.429433735m, + 97947.3269752218m, + 97366.7930625188m, + 86015.7595398495m, + 85522.3424404413m, + 20343.1040414542m + }; + + + Assert.Equal(expected.Length, npvColumn.Values.Length); + Assert.Equal(0.053786775, npvColumn.IRR, new DoubleArrayComparer()); + Assert.Equal(0.0525046595222296, npvColumn.Nominal, new DoubleArrayComparer()); + Assert.Equal(expected, npvColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVBonusExpensesTests.cs index a225ff2..f694c70 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVBonusExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVBonusExpensesTests.cs @@ -3,142 +3,141 @@ using EvoCalculator.Core.Calculation.v1.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NpvBonusExpensesTests { - public class NpvBonusExpensesTests + [Fact] + public void NpvBonusExpensesTest1() { - [Fact] - public void NpvBonusExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - SalaryRate = 0.3, - MarketRate = 0.01, - DistrictRate = 0.02, - RatBonus = 360.00m, - NsBonus = 90.00m, - NsibBonus = 97.014m, - BonusFix = 0.00m, - Bonus = 0.011, - Nmper = 30 - }; + SalaryRate = 0.3, + MarketRate = 0.01, + DistrictRate = 0.02, + RatBonus = 360.00m, + NsBonus = 90.00m, + NsibBonus = 97.014m, + BonusFix = 0.00m, + Bonus = 0.011, + Nmper = 30 + }; - var postValues = new Core.Calculation.v1.PostValues.PostValues - { - BonusBase = new BonusBase - { - Value = 2003933.33333333m - } - }; - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - var expected = new[] - { - -30248.3858126666m, - -732.451746m, - -29515.9340666666m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - - Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); - } - - - [Fact] - public void NpvBonusExpensesTest2() + var postValues = new Core.Calculation.v1.PostValues.PostValues { - var preparedValue = new PreparedValues + BonusBase = new BonusBase { - SalaryRate = 0.3, - MarketRate = 0.01, - DistrictRate = 0.02, - RatBonus = 360.00m, - NsBonus = 90.00m, - NsibBonus = 97.014m, - BonusFix = 20000.00m, - Bonus = 0.011, - Nmper = 30 - }; + Value = 2003933.33333333m + } + }; - var postValues = new Core.Calculation.v1.PostValues.PostValues + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + var expected = new[] + { + -30248.3858126666m, + -732.451746m, + -29515.9340666666m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + + Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); + } + + + [Fact] + public void NpvBonusExpensesTest2() + { + var preparedValue = new PreparedValues + { + SalaryRate = 0.3, + MarketRate = 0.01, + DistrictRate = 0.02, + RatBonus = 360.00m, + NsBonus = 90.00m, + NsibBonus = 97.014m, + BonusFix = 20000.00m, + Bonus = 0.011, + Nmper = 30 + }; + + var postValues = new Core.Calculation.v1.PostValues.PostValues + { + BonusBase = new BonusBase { - BonusBase = new BonusBase - { - Value = 2003933.33333333m - } - }; + Value = 2003933.33333333m + } + }; - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValue.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValue, postValues); + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValue.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValue, postValues); - var expected = new[] - { - -20732.451746m, - -732.451746m, - -20000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + -20732.451746m, + -732.451746m, + -20000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal.cs index afbf876..bca9cde 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal.cs @@ -3,238 +3,237 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NpvFinalTests { - public class NpvFinalTests + [Fact] + public void NpvFinalTest1() { - [Fact] - public void NpvFinalTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; - - var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -2507300m, - 562200.08956372m, - -310589.328673099m, - 135135.417631327m, - 139935.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 121656.435211628m, - 58453.266499507m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 107631.998246475m, - 107631.998246475m, - 23039.7637504377m - } - }; - - var npvWeightColumn = new NPVWeightColumn(67) - { - Values = new[] - { - 1, - 1, - 0.994263643057415, - 0.98837064137184, - 0.982512567513616, - 0.977251253020835, - 0.97145908378937, - 0.965886447729637, - 0.960161637711399, - 0.954653807834909, - 0.948995573685451, - 0.943370875895905, - 0.937959363822527, - 0.93240007766075, - 0.927051498001993, - 0.921556862772709, - 0.916094794252359, - 0.911014429114697, - 0.905614845610017, - 0.900419915603094, - 0.895083125791432, - 0.889948609488607, - 0.884673883119589, - 0.879430420059453, - 0.874385693263824, - 0.869203208316068, - 0.864217148457527, - 0.859094932485813, - 0.854003075893692, - 0.849429924456607, - 0.844395352377508, - 0.83955159923561, - 0.834575576000758, - 0.829788152601254, - 0.824869997325142, - 0.81998099196066, - 0.815277288304638, - 0.810445138936875, - 0.80579613633755, - 0.801020181767729, - 0.796272534285798, - 0.792008527530705, - 0.787314292133165, - 0.78279797632749, - 0.778158331876872, - 0.773694537927379, - 0.769108849565985, - 0.764550340584458, - 0.76016460693029, - 0.755659110484519, - 0.751324380099863, - 0.746871279688058, - 0.7424445728072, - 0.738468812577606, - 0.734091907128381, - 0.729880893920429, - 0.725554889074355, - 0.721392847249186, - 0.717117151064894, - 0.712866796936501, - 0.708777538536756, - 0.704576613300819, - 0.700534910353527, - 0.696382839183729, - 0.692255377344236, - 0.688416353143374, - 0.684336108675241 - } - }; - - var npvFinalColumn = new NPVFinalColumn(preparedValues.Nmper + 1, dateTempColumn); - npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - - - var expected = new[] + var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.Nmper + 1) + { + Values = new[] { -2507300m, 562200.08956372m, - -308807.677421272m, - 133563.879396326m, - 137488.306463045m, - 132061.256207708m, - 131278.528999622m, - 130525.468498383m, - 129751.843905708m, - 129007.541015107m, - 128242.913180264m, - 127482.817295423m, - 114108.792576015m, - 54501.8302236648m, - 112276.116051067m, - 111610.655390045m, - 110949.13891508m, - 110333.850911115m, - 109679.902057675m, - 109050.738990044m, - 108404.395142344m, - 107782.548837663m, - 107143.721554365m, - 94654.8534297361m, - 94111.879404115m, - 20026.2365707247m - }; + -310589.328673099m, + 135135.417631327m, + 139935.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 121656.435211628m, + 58453.266499507m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 107631.998246475m, + 107631.998246475m, + 23039.7637504377m + } + }; + + var npvWeightColumn = new NPVWeightColumn(67) + { + Values = new[] + { + 1, + 1, + 0.994263643057415, + 0.98837064137184, + 0.982512567513616, + 0.977251253020835, + 0.97145908378937, + 0.965886447729637, + 0.960161637711399, + 0.954653807834909, + 0.948995573685451, + 0.943370875895905, + 0.937959363822527, + 0.93240007766075, + 0.927051498001993, + 0.921556862772709, + 0.916094794252359, + 0.911014429114697, + 0.905614845610017, + 0.900419915603094, + 0.895083125791432, + 0.889948609488607, + 0.884673883119589, + 0.879430420059453, + 0.874385693263824, + 0.869203208316068, + 0.864217148457527, + 0.859094932485813, + 0.854003075893692, + 0.849429924456607, + 0.844395352377508, + 0.83955159923561, + 0.834575576000758, + 0.829788152601254, + 0.824869997325142, + 0.81998099196066, + 0.815277288304638, + 0.810445138936875, + 0.80579613633755, + 0.801020181767729, + 0.796272534285798, + 0.792008527530705, + 0.787314292133165, + 0.78279797632749, + 0.778158331876872, + 0.773694537927379, + 0.769108849565985, + 0.764550340584458, + 0.76016460693029, + 0.755659110484519, + 0.751324380099863, + 0.746871279688058, + 0.7424445728072, + 0.738468812577606, + 0.734091907128381, + 0.729880893920429, + 0.725554889074355, + 0.721392847249186, + 0.717117151064894, + 0.712866796936501, + 0.708777538536756, + 0.704576613300819, + 0.700534910353527, + 0.696382839183729, + 0.692255377344236, + 0.688416353143374, + 0.684336108675241 + } + }; + + var npvFinalColumn = new NPVFinalColumn(preparedValues.Nmper + 1, dateTempColumn); + npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn); - Assert.Equal(expected.Length, npvFinalColumn.Values.Length); - Assert.Equal(0.13361788392067, npvFinalColumn.IRR, new DoubleArrayComparer()); - Assert.Equal(0.126071837819239, npvFinalColumn.Nominal, new DoubleArrayComparer()); - Assert.Equal(expected, npvFinalColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + -2507300m, + 562200.08956372m, + -308807.677421272m, + 133563.879396326m, + 137488.306463045m, + 132061.256207708m, + 131278.528999622m, + 130525.468498383m, + 129751.843905708m, + 129007.541015107m, + 128242.913180264m, + 127482.817295423m, + 114108.792576015m, + 54501.8302236648m, + 112276.116051067m, + 111610.655390045m, + 110949.13891508m, + 110333.850911115m, + 109679.902057675m, + 109050.738990044m, + 108404.395142344m, + 107782.548837663m, + 107143.721554365m, + 94654.8534297361m, + 94111.879404115m, + 20026.2365707247m + }; + + + Assert.Equal(expected.Length, npvFinalColumn.Values.Length); + Assert.Equal(0.13361788392067, npvFinalColumn.IRR, new DoubleArrayComparer()); + Assert.Equal(0.126071837819239, npvFinalColumn.Nominal, new DoubleArrayComparer()); + Assert.Equal(expected, npvFinalColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal2.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal2.cs index 96e54a0..d5935c7 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal2.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVFinal2.cs @@ -3,239 +3,238 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NpvFinal2Tests { - public class NpvFinal2Tests + [Fact] + public void NpvFinal2Test1() { - [Fact] - public void NpvFinal2Test1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; - - var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.Nmper + 1) - { - Values = new[] - { - -2507300m, - 562200.08956372m, - -318113.939598099m, - 135135.417631327m, - 139935.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 135135.417631327m, - 121656.435211628m, - 58453.266499507m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 121110.980666174m, - 107631.998246475m, - 107631.998246475m, - 23039.7637504377m - } - }; - - var npvWeightColumn = new NPVWeightColumn(67) - { - Values = new[] - { - 1, - 1, - 0.994263643057415, - 0.98837064137184, - 0.982512567513616, - 0.977251253020835, - 0.97145908378937, - 0.965886447729637, - 0.960161637711399, - 0.954653807834909, - 0.948995573685451, - 0.943370875895905, - 0.937959363822527, - 0.93240007766075, - 0.927051498001993, - 0.921556862772709, - 0.916094794252359, - 0.911014429114697, - 0.905614845610017, - 0.900419915603094, - 0.895083125791432, - 0.889948609488607, - 0.884673883119589, - 0.879430420059453, - 0.874385693263824, - 0.869203208316068, - 0.864217148457527, - 0.859094932485813, - 0.854003075893692, - 0.849429924456607, - 0.844395352377508, - 0.83955159923561, - 0.834575576000758, - 0.829788152601254, - 0.824869997325142, - 0.81998099196066, - 0.815277288304638, - 0.810445138936875, - 0.80579613633755, - 0.801020181767729, - 0.796272534285798, - 0.792008527530705, - 0.787314292133165, - 0.78279797632749, - 0.778158331876872, - 0.773694537927379, - 0.769108849565985, - 0.764550340584458, - 0.76016460693029, - 0.755659110484519, - 0.751324380099863, - 0.746871279688058, - 0.7424445728072, - 0.738468812577606, - 0.734091907128381, - 0.729880893920429, - 0.725554889074355, - 0.721392847249186, - 0.717117151064894, - 0.712866796936501, - 0.708777538536756, - 0.704576613300819, - 0.700534910353527, - 0.696382839183729, - 0.692255377344236, - 0.688416353143374, - 0.684336108675241 - } - }; - - - var npvFinal2Column = new NPVFinal2Column(preparedValues.Nmper + 1, dateTempColumn); - npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); - - - var expected = new[] + var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.Nmper + 1) + { + Values = new[] { -2507300m, 562200.08956372m, - -316289.124492152m, - 133563.879396326m, - 137488.306463045m, - 132061.256207708m, - 131278.528999622m, - 130525.468498383m, - 129751.843905708m, - 129007.541015107m, - 128242.913180264m, - 127482.817295423m, - 114108.792576015m, - 54501.8302236648m, - 112276.116051067m, - 111610.655390045m, - 110949.13891508m, - 110333.850911115m, - 109679.902057675m, - 109050.738990044m, - 108404.395142344m, - 107782.548837663m, - 107143.721554365m, - 94654.8534297361m, - 94111.879404115m, - 20026.2365707247m - }; + -318113.939598099m, + 135135.417631327m, + 139935.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 135135.417631327m, + 121656.435211628m, + 58453.266499507m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 121110.980666174m, + 107631.998246475m, + 107631.998246475m, + 23039.7637504377m + } + }; + + var npvWeightColumn = new NPVWeightColumn(67) + { + Values = new[] + { + 1, + 1, + 0.994263643057415, + 0.98837064137184, + 0.982512567513616, + 0.977251253020835, + 0.97145908378937, + 0.965886447729637, + 0.960161637711399, + 0.954653807834909, + 0.948995573685451, + 0.943370875895905, + 0.937959363822527, + 0.93240007766075, + 0.927051498001993, + 0.921556862772709, + 0.916094794252359, + 0.911014429114697, + 0.905614845610017, + 0.900419915603094, + 0.895083125791432, + 0.889948609488607, + 0.884673883119589, + 0.879430420059453, + 0.874385693263824, + 0.869203208316068, + 0.864217148457527, + 0.859094932485813, + 0.854003075893692, + 0.849429924456607, + 0.844395352377508, + 0.83955159923561, + 0.834575576000758, + 0.829788152601254, + 0.824869997325142, + 0.81998099196066, + 0.815277288304638, + 0.810445138936875, + 0.80579613633755, + 0.801020181767729, + 0.796272534285798, + 0.792008527530705, + 0.787314292133165, + 0.78279797632749, + 0.778158331876872, + 0.773694537927379, + 0.769108849565985, + 0.764550340584458, + 0.76016460693029, + 0.755659110484519, + 0.751324380099863, + 0.746871279688058, + 0.7424445728072, + 0.738468812577606, + 0.734091907128381, + 0.729880893920429, + 0.725554889074355, + 0.721392847249186, + 0.717117151064894, + 0.712866796936501, + 0.708777538536756, + 0.704576613300819, + 0.700534910353527, + 0.696382839183729, + 0.692255377344236, + 0.688416353143374, + 0.684336108675241 + } + }; - Assert.Equal(expected.Length, npvFinal2Column.Values.Length); - Assert.Equal(0.129696124792099, npvFinal2Column.IRR, new DoubleArrayComparer()); - Assert.Equal(0.122570429842705, npvFinal2Column.Nominal, new DoubleArrayComparer()); - Assert.Equal(expected, npvFinal2Column.Values, new DecimalArrayComparer()); - } + var npvFinal2Column = new NPVFinal2Column(preparedValues.Nmper + 1, dateTempColumn); + npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn); + + + var expected = new[] + { + -2507300m, + 562200.08956372m, + -316289.124492152m, + 133563.879396326m, + 137488.306463045m, + 132061.256207708m, + 131278.528999622m, + 130525.468498383m, + 129751.843905708m, + 129007.541015107m, + 128242.913180264m, + 127482.817295423m, + 114108.792576015m, + 54501.8302236648m, + 112276.116051067m, + 111610.655390045m, + 110949.13891508m, + 110333.850911115m, + 109679.902057675m, + 109050.738990044m, + 108404.395142344m, + 107782.548837663m, + 107143.721554365m, + 94654.8534297361m, + 94111.879404115m, + 20026.2365707247m + }; + + + Assert.Equal(expected.Length, npvFinal2Column.Values.Length); + Assert.Equal(0.129696124792099, npvFinal2Column.IRR, new DoubleArrayComparer()); + Assert.Equal(0.122570429842705, npvFinal2Column.Nominal, new DoubleArrayComparer()); + Assert.Equal(expected, npvFinal2Column.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVWeight.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVWeight.cs index ede14a9..3430bc7 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVWeight.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NPVWeight.cs @@ -3,170 +3,169 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NpvWeightTests { - public class NpvWeightTests + [Fact] + public void NpvWeightTest1() { - [Fact] - public void NpvWeightTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + LoanRate = 0.07 + }; + + var dateTempColumn = new DateTempColumn(67) + { + Values = new[] { - LoanRate = 0.07 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - var dateTempColumn = new DateTempColumn(67) - { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; - - var npvWeightColumn = new NPVWeightColumn(67); - npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); + var npvWeightColumn = new NPVWeightColumn(67); + npvWeightColumn.ComputeValues(preparedValues, dateTempColumn); - var expected = new[] - { - 1, - 1, - 0.994263643057415, - 0.98837064137184, - 0.982512567513616, - 0.977251253020835, - 0.97145908378937, - 0.965886447729637, - 0.960161637711399, - 0.954653807834909, - 0.948995573685451, - 0.943370875895905, - 0.937959363822527, - 0.93240007766075, - 0.927051498001993, - 0.921556862772709, - 0.916094794252359, - 0.911014429114697, - 0.905614845610017, - 0.900419915603094, - 0.895083125791432, - 0.889948609488607, - 0.884673883119589, - 0.879430420059453, - 0.874385693263824, - 0.869203208316068, - 0.864217148457527, - 0.859094932485813, - 0.854003075893692, - 0.849429924456607, - 0.844395352377508, - 0.83955159923561, - 0.834575576000758, - 0.829788152601254, - 0.824869997325142, - 0.81998099196066, - 0.815277288304638, - 0.810445138936875, - 0.80579613633755, - 0.801020181767729, - 0.796272534285798, - 0.792008527530705, - 0.787314292133165, - 0.78279797632749, - 0.778158331876872, - 0.773694537927379, - 0.769108849565985, - 0.764550340584458, - 0.76016460693029, - 0.755659110484519, - 0.751324380099863, - 0.746871279688058, - 0.7424445728072, - 0.738468812577606, - 0.734091907128381, - 0.729880893920429, - 0.725554889074355, - 0.721392847249186, - 0.717117151064894, - 0.712866796936501, - 0.708777538536756, - 0.704576613300819, - 0.700534910353527, - 0.696382839183729, - 0.692255377344236, - 0.688416353143374, - 0.684336108675241 - }; + var expected = new[] + { + 1, + 1, + 0.994263643057415, + 0.98837064137184, + 0.982512567513616, + 0.977251253020835, + 0.97145908378937, + 0.965886447729637, + 0.960161637711399, + 0.954653807834909, + 0.948995573685451, + 0.943370875895905, + 0.937959363822527, + 0.93240007766075, + 0.927051498001993, + 0.921556862772709, + 0.916094794252359, + 0.911014429114697, + 0.905614845610017, + 0.900419915603094, + 0.895083125791432, + 0.889948609488607, + 0.884673883119589, + 0.879430420059453, + 0.874385693263824, + 0.869203208316068, + 0.864217148457527, + 0.859094932485813, + 0.854003075893692, + 0.849429924456607, + 0.844395352377508, + 0.83955159923561, + 0.834575576000758, + 0.829788152601254, + 0.824869997325142, + 0.81998099196066, + 0.815277288304638, + 0.810445138936875, + 0.80579613633755, + 0.801020181767729, + 0.796272534285798, + 0.792008527530705, + 0.787314292133165, + 0.78279797632749, + 0.778158331876872, + 0.773694537927379, + 0.769108849565985, + 0.764550340584458, + 0.76016460693029, + 0.755659110484519, + 0.751324380099863, + 0.746871279688058, + 0.7424445728072, + 0.738468812577606, + 0.734091907128381, + 0.729880893920429, + 0.725554889074355, + 0.721392847249186, + 0.717117151064894, + 0.712866796936501, + 0.708777538536756, + 0.704576613300819, + 0.700534910353527, + 0.696382839183729, + 0.692255377344236, + 0.688416353143374, + 0.684336108675241 + }; - Assert.Equal(expected.Length, npvWeightColumn.Values.Length); - Assert.Equal(expected, npvWeightColumn.Values, new DoubleArrayComparer()); - } + Assert.Equal(expected.Length, npvWeightColumn.Values.Length); + Assert.Equal(expected, npvWeightColumn.Values, new DoubleArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBBruttoGrTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBBruttoGrTests.cs index 258c6b1..01edcf9 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBBruttoGrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBBruttoGrTests.cs @@ -2,61 +2,60 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NsibBruttoGrTests { - public class NsibBruttoGrTests + [Fact] + public void NsibBruttoGrTest1() { - [Fact] - public void NsibBruttoGrTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30, - NsibBrutto = 23842.50m - }; + Nmper = 30, + NsibBrutto = 23842.50m + }; - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); - nsibBruttoGrColumn.ComputeValues(preparedValues); + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); + nsibBruttoGrColumn.ComputeValues(preparedValues); - var expected = new[] - { - 23842.5m, - 0, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m, - 822.155172413793m - }; + var expected = new[] + { + 23842.5m, + 0, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m, + 822.155172413793m + }; - Assert.Equal(expected.Length, nsibBruttoGrColumn.Values.Length); - Assert.Equal(expected, nsibBruttoGrColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, nsibBruttoGrColumn.Values.Length); + Assert.Equal(expected, nsibBruttoGrColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBExpensesTests.cs index fa06c0f..97cdc8a 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NSIBExpensesTests.cs @@ -2,133 +2,132 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NsibExpensesTests { - public class NsibExpensesTests + [Fact] + public void NsibExpensesTest1() { - [Fact] - public void NsibExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - NsibNetto = 4186.80m, - Nmper = 30 - }; + NsibNetto = 4186.80m, + Nmper = 30 + }; - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -4186.80m, - -1674.72m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -1674.72m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -837.36m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); - Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void NsibExpensesTest2() + var expected = new[] { - var preparedValues = new PreparedValues - { - NsibNetto = 2093.40m, - Nmper = 15 - }; + -4186.80m, + -1674.72m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -1674.72m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -837.36m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); + } - var expected = new[] - { - -2093.40m, - -2093.40m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; - - Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); - Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void NsibExpensesTest3() + [Fact] + public void NsibExpensesTest2() + { + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - NsibNetto = 2372.52m, - Nmper = 17 - }; + NsibNetto = 2093.40m, + Nmper = 15 + }; - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); - nsibExpensesColumn.ComputeValues(preparedValues); + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -2372.52m, - -1674.72m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -697.80m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + -2093.40m, + -2093.40m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); - Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void NsibExpensesTest3() + { + var preparedValues = new PreparedValues + { + NsibNetto = 2372.52m, + Nmper = 17 + }; + + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1); + nsibExpensesColumn.ComputeValues(preparedValues); + + var expected = new[] + { + -2372.52m, + -1674.72m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -697.80m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + Assert.Equal(expected.Length, nsibExpensesColumn.Values.Length); + Assert.Equal(expected, nsibExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NegativeCashflowTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NegativeCashflowTests.cs index d0d4382..bd349e1 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/NegativeCashflowTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/NegativeCashflowTests.cs @@ -2,100 +2,99 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class NegativeCashflowTests { - public class NegativeCashflowTests + [Fact] + public void NegativeCashflowTest1() { - [Fact] - public void NegativeCashflowTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30 - }; + Nmper = 30 + }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper), - preparedValues.IrrExpected) + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(preparedValues.Nmper), + preparedValues.IrrExpected) + { + Values = new[] { - Values = new[] - { - -114237.279504698m, - 53000m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 53000m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 26500, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); - negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - - - var expected = new[] - { - -132500.00m, - -53000, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -53000m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -26500, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m + -114237.279504698m, + 53000m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 53000m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 26500, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } }; + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1); + negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn); - Assert.Equal(expected.Length, negativeCashflowColumn.Values.Length); - Assert.Equal(expected, negativeCashflowColumn.Values, new DecimalArrayComparer()); - } + + var expected = new[] + { + -132500.00m, + -53000, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -53000m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -26500, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; + + + Assert.Equal(expected.Length, negativeCashflowColumn.Values.Length); + Assert.Equal(expected, negativeCashflowColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/PercentPaymentTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/PercentPaymentTests.cs index aa30cca..c919677 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/PercentPaymentTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/PercentPaymentTests.cs @@ -2,352 +2,351 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class PercentPaymentTests { - public class PercentPaymentTests + [Fact] + public void DateTempTest1() { - [Fact] - public void DateTempTest1() + var preparedPayments = new PreparedPayments { - var preparedPayments = new PreparedPayments + Rows = new[] { - Rows = new[] + new PaymentRow { - new PaymentRow - { - PercentPayment = 25.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 1.00 - } + PercentPayment = 25.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 1.00 } - }; + } + }; - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var expected = new[] - { - 0, - 0, - 100.00, - 100.00, - 100.00, - 100.00, - 75.00, - 75.00, - 75.00, - 75.00, - 50.00, - 50.00, - 50.00, - 50.00, - 100.00, - 100.00, - 100.00, - 100.00, - 75.00, - 75.00, - 75.00, - 75.00, - 50.00, - 50.00, - 0 - }; - - var res = percentPaymentColumn.Values; - Assert.Equal(expected, res); - } - - [Fact] - public void DateTempTest2() + var expected = new[] { - var preparedPayments = new PreparedPayments + 0, + 0, + 100.00, + 100.00, + 100.00, + 100.00, + 75.00, + 75.00, + 75.00, + 75.00, + 50.00, + 50.00, + 50.00, + 50.00, + 100.00, + 100.00, + 100.00, + 100.00, + 75.00, + 75.00, + 75.00, + 75.00, + 50.00, + 50.00, + 0 + }; + + var res = percentPaymentColumn.Values; + Assert.Equal(expected, res); + } + + [Fact] + public void DateTempTest2() + { + var preparedPayments = new PreparedPayments + { + Rows = new[] { - Rows = new[] + new PaymentRow { - new PaymentRow - { - PercentPayment = 35 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 100.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 75.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 50.00 - }, - new PaymentRow - { - PercentPayment = 1.00 - } + PercentPayment = 35 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 100.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 75.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 50.00 + }, + new PaymentRow + { + PercentPayment = 1.00 } - }; + } + }; - var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); - percentPaymentColumn.ComputeValues(preparedPayments); + var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1); + percentPaymentColumn.ComputeValues(preparedPayments); - var expected = new[] - { - 0.00, - 0.00, - 100.00, - 100.00, - 100.00, - 100.00, - 75.00, - 75.00, - 75.00, - 75.00, - 75.00, - 75.00, - 75.00, - 75.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 50.00, - 0.00 - }; + var expected = new[] + { + 0.00, + 0.00, + 100.00, + 100.00, + 100.00, + 100.00, + 75.00, + 75.00, + 75.00, + 75.00, + 75.00, + 75.00, + 75.00, + 75.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 50.00, + 0.00 + }; - var res = percentPaymentColumn.Values; - Assert.Equal(expected, res); - } + var res = percentPaymentColumn.Values; + Assert.Equal(expected, res); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/RatExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/RatExpensesTests.cs index 9b54571..260bc7b 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/RatExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/RatExpensesTests.cs @@ -2,61 +2,60 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class RatExpensesTests { - public class RatExpensesTests + [Fact] + public void RatExpensesTest1() { - [Fact] - public void RatExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - BaseRatCost = 12000, - RetroBonus = 6000, - Nmper = 30 - }; + BaseRatCost = 12000, + RetroBonus = 6000, + Nmper = 30 + }; - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); - ratExpensesColumn.ComputeValues(preparedValues); + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1); + ratExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -6000.00m, - -12000.00m, - 0.00m, - 0.00m, - 6000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + -6000.00m, + -12000.00m, + 0.00m, + 0.00m, + 6000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected, ratExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, ratExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/RegistrExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/RegistrExpensesTests.cs index dde201e..28eb5fa 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/RegistrExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/RegistrExpensesTests.cs @@ -2,48 +2,47 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class RegistrExpensesTests { - public class RegistrExpensesTests + [Fact] + public void RegistrExpensesTest1() { - [Fact] - public void RegistrExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - BaseRegistration = 2300, - Nmper = 17 - }; + BaseRegistration = 2300, + Nmper = 17 + }; - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); - registrExpensesColumn.ComputeValues(preparedValues); + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1); + registrExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -2300.00m, - -2300.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - }; + var expected = new[] + { + -2300.00m, + -2300.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + }; - Assert.Equal(expected.Length, registrExpensesColumn.Values.Length); - Assert.Equal(expected, registrExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, registrExpensesColumn.Values.Length); + Assert.Equal(expected, registrExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/Revenue.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/Revenue.cs index 7bfa654..0dea05d 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/Revenue.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/Revenue.cs @@ -3,201 +3,132 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class RevenueTests { - public class RevenueTests + [Fact] + public void RevenueTest1() { - [Fact] - public void RevenueTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + + var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; + new DateTime(2018, 10, 31), + new DateTime(2018, 10, 31), + new DateTime(2018, 11, 30), + new DateTime(2018, 12, 31), + new DateTime(2019, 1, 31), + new DateTime(2019, 2, 28), + new DateTime(2019, 3, 31), + new DateTime(2019, 4, 30), + new DateTime(2019, 5, 31), + new DateTime(2019, 6, 30), + new DateTime(2019, 7, 31), + new DateTime(2019, 8, 31), + new DateTime(2019, 9, 30), + new DateTime(2019, 10, 31), + new DateTime(2019, 11, 30), + new DateTime(2019, 12, 31), + new DateTime(2020, 1, 31), + new DateTime(2020, 2, 29), + new DateTime(2020, 3, 31), + new DateTime(2020, 4, 30), + new DateTime(2020, 5, 31), + new DateTime(2020, 6, 30), + new DateTime(2020, 7, 31), + new DateTime(2020, 8, 31), + new DateTime(2020, 9, 30), + new DateTime(2020, 10, 31), + new DateTime(2020, 11, 30), + new DateTime(2020, 12, 31), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 28), + new DateTime(2021, 3, 31), + new DateTime(2021, 4, 30), + new DateTime(2021, 5, 31), + new DateTime(2021, 6, 30), + new DateTime(2021, 7, 31), + new DateTime(2021, 8, 31), + new DateTime(2021, 9, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 28), + new DateTime(2022, 3, 31), + new DateTime(2022, 4, 30), + new DateTime(2022, 5, 31), + new DateTime(2022, 6, 30), + new DateTime(2022, 7, 31), + new DateTime(2022, 8, 31), + new DateTime(2022, 9, 30), + new DateTime(2022, 10, 31), + new DateTime(2022, 11, 30), + new DateTime(2022, 12, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 28), + new DateTime(2023, 3, 31), + new DateTime(2023, 4, 30), + new DateTime(2023, 5, 31), + new DateTime(2023, 6, 30), + new DateTime(2023, 7, 31), + new DateTime(2023, 8, 31), + new DateTime(2023, 9, 30), + new DateTime(2023, 10, 31), + new DateTime(2023, 11, 30), + new DateTime(2023, 12, 31), + new DateTime(2024, 1, 31), + new DateTime(2024, 2, 29), + new DateTime(2024, 3, 31) + } + }; - - var dateTempColumn = new DateTempColumn(preparedValues.Nmper + 1) + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - new DateTime(2018, 10, 31), - new DateTime(2018, 10, 31), - new DateTime(2018, 11, 30), - new DateTime(2018, 12, 31), - new DateTime(2019, 1, 31), - new DateTime(2019, 2, 28), - new DateTime(2019, 3, 31), - new DateTime(2019, 4, 30), - new DateTime(2019, 5, 31), - new DateTime(2019, 6, 30), - new DateTime(2019, 7, 31), - new DateTime(2019, 8, 31), - new DateTime(2019, 9, 30), - new DateTime(2019, 10, 31), - new DateTime(2019, 11, 30), - new DateTime(2019, 12, 31), - new DateTime(2020, 1, 31), - new DateTime(2020, 2, 29), - new DateTime(2020, 3, 31), - new DateTime(2020, 4, 30), - new DateTime(2020, 5, 31), - new DateTime(2020, 6, 30), - new DateTime(2020, 7, 31), - new DateTime(2020, 8, 31), - new DateTime(2020, 9, 30), - new DateTime(2020, 10, 31), - new DateTime(2020, 11, 30), - new DateTime(2020, 12, 31), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 28), - new DateTime(2021, 3, 31), - new DateTime(2021, 4, 30), - new DateTime(2021, 5, 31), - new DateTime(2021, 6, 30), - new DateTime(2021, 7, 31), - new DateTime(2021, 8, 31), - new DateTime(2021, 9, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 28), - new DateTime(2022, 3, 31), - new DateTime(2022, 4, 30), - new DateTime(2022, 5, 31), - new DateTime(2022, 6, 30), - new DateTime(2022, 7, 31), - new DateTime(2022, 8, 31), - new DateTime(2022, 9, 30), - new DateTime(2022, 10, 31), - new DateTime(2022, 11, 30), - new DateTime(2022, 12, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 28), - new DateTime(2023, 3, 31), - new DateTime(2023, 4, 30), - new DateTime(2023, 5, 31), - new DateTime(2023, 6, 30), - new DateTime(2023, 7, 31), - new DateTime(2023, 8, 31), - new DateTime(2023, 9, 30), - new DateTime(2023, 10, 31), - new DateTime(2023, 11, 30), - new DateTime(2023, 12, 31), - new DateTime(2024, 1, 31), - new DateTime(2024, 2, 29), - new DateTime(2024, 3, 31) - } - }; + 26730.2083333333m, + 0, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m + } + }; - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1) + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - 26730.2083333333m, - 0, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m - } - }; - - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -4811.4375m, - -2309.49m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -2501.9475m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - - var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, - nsibBruttoGrColumn, nsibExpensesColumn) - { - Values = new[] - { - 0, - -10899.0991979689m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - -10693.5987839108m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m, - 1113.75868055556m - } - }; - - var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); - revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - - - var expected = new[] - { - 0, - 10899.0991979689m, + -4811.4375m, + -2309.49m, 0, 0, 0, @@ -209,7 +140,7 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 0, 0, 0, - 11807.3574644663m, + -2501.9475m, 0, 0, 0, @@ -222,11 +153,79 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 0, 0, 0 - }; + } + }; + + var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn, + nsibBruttoGrColumn, nsibExpensesColumn) + { + Values = new[] + { + 0, + -10899.0991979689m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + -10693.5987839108m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m, + 1113.75868055556m + } + }; + + var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); + revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); - Assert.Equal(expected.Length, revenueColumn.Values.Length); - Assert.Equal(expected, revenueColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + 0, + 10899.0991979689m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 11807.3574644663m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; + + + Assert.Equal(expected.Length, revenueColumn.Values.Length); + Assert.Equal(expected, revenueColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentInterest.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentInterest.cs index be1eab5..a641cbb 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentInterest.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentInterest.cs @@ -2,87 +2,86 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class SumCurrentInterestTests { - public class SumCurrentInterestTests + [Fact] + public void SumCurrentInterestTest1() { - [Fact] - public void SumCurrentInterestTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 25 - }; + Nmper = 25 + }; - var interestColumn = new InterestColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 51385.3011802696m, - 51185.6562181931m, - 49243.5842714204m, - 42616.7590628555m, - 45062.8007951257m, - 41543.7752969065m, - 40733.7459931845m, - 37238.0763799393m, - 36161.0019828137m, - 33794.9056554118m, - 30336.6721025071m, - 29170.226434357m, - 27631.9637978352m, - 26297.7685736248m, - 23991.9758722514m, - 20207.9671763514m, - 19143.4508014149m, - 16091.854502769m, - 14041.9265661655m, - 11017.853738273m, - 8653.22962011698m, - 5849.47439767389m, - 3197.19155814215m, - 686.182588304444m - } - }; - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); - sumCurrentInterestColumn.ComputeValues(interestColumn); - - - var expected = new[] + var interestColumn = new InterestColumn(preparedValues.Nmper + 1) + { + Values = new[] { 0, - 665283.367743173m, - 613898.066562903m, - 562712.41034471m, - 513468.826073289m, - 470852.067010434m, - 425789.266215308m, - 384245.490918402m, - 343511.744925217m, - 306273.668545278m, - 270112.666562464m, - 236317.760907052m, - 205981.088804545m, - 176810.862370188m, - 149178.898572353m, - 122881.129998728m, - 98889.1541264768m, - 78681.1869501255m, - 59537.7361487106m, - 43445.8816459416m, - 29403.9550797761m, - 18386.1013415031m, - 9732.87172138608m, - 3883.39732371219m, - 686.205765570042m, - 0.0231772655979618m - }; + 51385.3011802696m, + 51185.6562181931m, + 49243.5842714204m, + 42616.7590628555m, + 45062.8007951257m, + 41543.7752969065m, + 40733.7459931845m, + 37238.0763799393m, + 36161.0019828137m, + 33794.9056554118m, + 30336.6721025071m, + 29170.226434357m, + 27631.9637978352m, + 26297.7685736248m, + 23991.9758722514m, + 20207.9671763514m, + 19143.4508014149m, + 16091.854502769m, + 14041.9265661655m, + 11017.853738273m, + 8653.22962011698m, + 5849.47439767389m, + 3197.19155814215m, + 686.182588304444m + } + }; + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1); + sumCurrentInterestColumn.ComputeValues(interestColumn); - Assert.Equal(expected.Length, sumCurrentInterestColumn.Values.Length); - Assert.Equal(expected, sumCurrentInterestColumn.Values, new DecimalArrayComparer(0.1)); - } + var expected = new[] + { + 0, + 665283.367743173m, + 613898.066562903m, + 562712.41034471m, + 513468.826073289m, + 470852.067010434m, + 425789.266215308m, + 384245.490918402m, + 343511.744925217m, + 306273.668545278m, + 270112.666562464m, + 236317.760907052m, + 205981.088804545m, + 176810.862370188m, + 149178.898572353m, + 122881.129998728m, + 98889.1541264768m, + 78681.1869501255m, + 59537.7361487106m, + 43445.8816459416m, + 29403.9550797761m, + 18386.1013415031m, + 9732.87172138608m, + 3883.39732371219m, + 686.205765570042m, + 0.0231772655979618m + }; + + + Assert.Equal(expected.Length, sumCurrentInterestColumn.Values.Length); + Assert.Equal(expected, sumCurrentInterestColumn.Values, new DecimalArrayComparer(0.1)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentNegative.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentNegative.cs index ded635a..9920dc8 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentNegative.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentNegative.cs @@ -2,70 +2,35 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class SumCurrentNegativeTests { - public class SumCurrentNegativeTests + [Fact] + public void SumCurrentNegativeTest1() { - [Fact] - public void SumCurrentNegativeTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 25 - }; - - var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -110416.666666667m, - -53000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -57416.6666666667m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); - sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - - - var expected = new[] - { - 0, -110416.666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, + -53000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, -57416.6666666667m, 0, 0, @@ -79,11 +44,45 @@ namespace EvoCalculator.Core.Tests.Calculation.v1.Columns 0, 0, 0 - }; + } + }; + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1); + sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn); - Assert.Equal(expected.Length, sumCurrentNegativeColumn.Values.Length); - Assert.Equal(expected, sumCurrentNegativeColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + 0, + -110416.666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; + + + Assert.Equal(expected.Length, sumCurrentNegativeColumn.Values.Length); + Assert.Equal(expected, sumCurrentNegativeColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentTLM.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentTLM.cs index a79d6a0..24896ad 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentTLM.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumCurrentTLM.cs @@ -2,88 +2,87 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class SumCurrentTlmTests { - public class SumCurrentTlmTests + [Fact] + public void SumCurrentTlmTest1() { - [Fact] - public void SumCurrentTlmTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 25 - }; - - var tlmGrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(67), 0) - { - Values = new[] - { - -17757.5461595619m, - 0, - 1800m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m, - 900m - } - }; - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); - sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - - - var expected = new[] + Nmper = 25 + }; + + var tlmGrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(67), 0) + { + Values = new[] { + -17757.5461595619m, 0, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 10800m, - 9900m, - 9000m, - 8100m, - 7200m, - 6300m, - 5400m, - 4500m, - 3600m, - 2700m, 1800m, 900m, - 0m - }; + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m, + 900m + } + }; + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1); + sumCurrentTlmColumn.ComputeValues(tlmGrColumn); - Assert.Equal(expected.Length, sumCurrentTlmColumn.Values.Length); - Assert.Equal(expected, sumCurrentTlmColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + 0, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 10800m, + 9900m, + 9000m, + 8100m, + 7200m, + 6300m, + 5400m, + 4500m, + 3600m, + 2700m, + 1800m, + 900m, + 0m + }; + + + Assert.Equal(expected.Length, sumCurrentTlmColumn.Values.Length); + Assert.Equal(expected, sumCurrentTlmColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumRepaymentColumn.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumRepaymentColumn.cs index 56884b3..665960e 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumRepaymentColumn.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/SumRepaymentColumn.cs @@ -2,191 +2,190 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class SumRepaymentTests { - public class SumRepaymentTests + [Fact] + public void SumRepaymentTest1() { - [Fact] - public void SumRepaymentTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 25, - Repayment = 0.25 - }; + Nmper = 25, + Repayment = 0.25 + }; - var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 3876000m, - 3126000m, - 2982000m, - 2838000m, - 2694000m, - 2550000m, - 2406000m, - 2262000m, - 2118000m, - 1974000m, - 1830000m, - 1686000m, - 1556400m, - 1426800m, - 1297200m, - 1167600m, - 1038000m, - 908400m, - 778800m, - 649200m, - 519600m, - 390000m, - 260400m, - 145200m, - 30000m - } - }; - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - -110416.666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - -57416.6666666667m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - - var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 665283.367743173m, - 613898.066562903m, - 562712.41034471m, - 513468.826073289m, - 470852.067010434m, - 425789.266215308m, - 384245.490918402m, - 343511.744925217m, - 306273.668545278m, - 270112.666562464m, - 236317.760907052m, - 205981.088804545m, - 176810.862370188m, - 149178.898572353m, - 122881.129998728m, - 98889.1541264768m, - 78681.1869501255m, - 59537.7361487106m, - 43445.8816459416m, - 29403.9550797761m, - 18386.1013415031m, - 9732.87172138608m, - 3883.39732371219m, - 686.205765570042m, - 0.0231772655979618m - } - }; - - var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 11700m, - 10800m, - 9900m, - 9000m, - 8100m, - 7200m, - 6300m, - 5400m, - 4500m, - 3600m, - 2700m, - 1800m, - 900m, - 0m - } - }; - - - var sumRepaymentColumnColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); - sumRepaymentColumnColumn.ComputeValues(new Constants.Calculation(), preparedValues, sumCurrentColumn, - sumCurrentNegativeColumn, - sumCurrentInterestColumn, sumCurrentTlmColumn); - - - var expected = new[] + var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1) + { + Values = new[] { 0, + 3876000m, + 3126000m, + 2982000m, + 2838000m, + 2694000m, + 2550000m, + 2406000m, + 2262000m, + 2118000m, + 1974000m, + 1830000m, + 1686000m, + 1556400m, + 1426800m, + 1297200m, + 1167600m, + 1038000m, + 908400m, + 778800m, + 649200m, + 519600m, + 390000m, + 260400m, + 145200m, + 30000m + } + }; + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1) + { + Values = new[] + { 0, - 2870373.91336446m, - 2741729.61022992m, - 2612502.68551135m, - 2481287.7132302m, - 2350806.55346874m, - 2219269.68605781m, - 2087489.80985577m, - 1954661.23276975m, - 1821509.53336459m, - 1687648.00506122m, - 1552749.00669197m, - 1432980.07462228m, - 1370166.33042829m, - 1249535.66100038m, - 1128213.25376206m, - 1005755.64391496m, - 882978.679155387m, - 759286.235506218m, - 634978.813476067m, - 509764.169597549m, - 383840.138483584m, - 257074.980802886m, - 143914.138270329m, - 29999.9930468203m - }; + -110416.666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + -57416.6666666667m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; + + var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 0, + 665283.367743173m, + 613898.066562903m, + 562712.41034471m, + 513468.826073289m, + 470852.067010434m, + 425789.266215308m, + 384245.490918402m, + 343511.744925217m, + 306273.668545278m, + 270112.666562464m, + 236317.760907052m, + 205981.088804545m, + 176810.862370188m, + 149178.898572353m, + 122881.129998728m, + 98889.1541264768m, + 78681.1869501255m, + 59537.7361487106m, + 43445.8816459416m, + 29403.9550797761m, + 18386.1013415031m, + 9732.87172138608m, + 3883.39732371219m, + 686.205765570042m, + 0.0231772655979618m + } + }; + + var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1) + { + Values = new[] + { + 0, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 11700m, + 10800m, + 9900m, + 9000m, + 8100m, + 7200m, + 6300m, + 5400m, + 4500m, + 3600m, + 2700m, + 1800m, + 900m, + 0m + } + }; - Assert.Equal(expected.Length, sumRepaymentColumnColumn.Values.Length); - Assert.Equal(expected, sumRepaymentColumnColumn.Values, new DecimalArrayComparer()); - } + var sumRepaymentColumnColumn = new SumRepaymentColumn(preparedValues.Nmper + 1); + sumRepaymentColumnColumn.ComputeValues(new Constants.Calculation(), preparedValues, sumCurrentColumn, + sumCurrentNegativeColumn, + sumCurrentInterestColumn, sumCurrentTlmColumn); + + + var expected = new[] + { + 0, + 0, + 2870373.91336446m, + 2741729.61022992m, + 2612502.68551135m, + 2481287.7132302m, + 2350806.55346874m, + 2219269.68605781m, + 2087489.80985577m, + 1954661.23276975m, + 1821509.53336459m, + 1687648.00506122m, + 1552749.00669197m, + 1432980.07462228m, + 1370166.33042829m, + 1249535.66100038m, + 1128213.25376206m, + 1005755.64391496m, + 882978.679155387m, + 759286.235506218m, + 634978.813476067m, + 509764.169597549m, + 383840.138483584m, + 257074.980802886m, + 143914.138270329m, + 29999.9930468203m + }; + + + Assert.Equal(expected.Length, sumRepaymentColumnColumn.Values.Length); + Assert.Equal(expected, sumRepaymentColumnColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLMExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLMExpensesTests.cs index c2daf57..906517e 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLMExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLMExpensesTests.cs @@ -2,123 +2,122 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class TlmExpensesTests { - public class TlmExpensesTests + [Fact] + public void TlmExpensesTest1() { - [Fact] - public void TlmExpensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 17, - TLMCost = 20000 - }; + Nmper = 17, + TLMCost = 20000 + }; - var preparedPayments = new PreparedPayments + var preparedPayments = new PreparedPayments + { + Rows = new[] { - Rows = new[] + new PaymentRow { - new PaymentRow - { - TlmBasePayment = 0.00m - }, - new PaymentRow - { - TlmBasePayment = 1600.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - }, - new PaymentRow - { - TlmBasePayment = 800.00m - } + TlmBasePayment = 0.00m + }, + new PaymentRow + { + TlmBasePayment = 1600.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m + }, + new PaymentRow + { + TlmBasePayment = 800.00m } - }; + } + }; - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); - tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1); + tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments); - var expected = new[] - { - -33600, - -20000.00m, - -1600.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m, - -800.00m - }; + var expected = new[] + { + -33600, + -20000.00m, + -1600.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m, + -800.00m + }; - Assert.Equal(expected.Length, tlmExpensesColumn.Values.Length); - Assert.Equal(expected, tlmExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, tlmExpensesColumn.Values.Length); + Assert.Equal(expected, tlmExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLM_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLM_GrTests.cs index a75f16e..980c28f 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLM_GrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TLM_GrTests.cs @@ -3,262 +3,261 @@ using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class TlmGrTests { - public class TlmGrTests + [Fact] + public void TLM_GrTest1() { - [Fact] - public void TLM_GrTest1() + var preparedValues = + new PreparedValues + { + IrrExpected = 0.22 + }; + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - IrrExpected = 0.22 - }; - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] + new DateTime(2020, 10, 12), + new DateTime(2020, 10, 12), + new DateTime(2020, 11, 12), + new DateTime(2020, 12, 12), + new DateTime(2021, 1, 12), + new DateTime(2021, 2, 12), + new DateTime(2021, 3, 12), + new DateTime(2021, 4, 12), + new DateTime(2021, 5, 12), + new DateTime(2021, 6, 12), + new DateTime(2021, 7, 12), + new DateTime(2021, 8, 12), + new DateTime(2021, 9, 12), + new DateTime(2021, 10, 12), + new DateTime(2021, 11, 12), + new DateTime(2021, 12, 12), + new DateTime(2022, 1, 12), + new DateTime(2022, 2, 12), + new DateTime(2022, 3, 12), + new DateTime(2022, 4, 12), + new DateTime(2022, 5, 12), + new DateTime(2022, 6, 12), + new DateTime(2022, 7, 12), + new DateTime(2022, 8, 12), + new DateTime(2022, 9, 12), + new DateTime(2022, 10, 12), + new DateTime(2022, 11, 12), + new DateTime(2022, 12, 12), + new DateTime(2023, 1, 12), + new DateTime(2023, 2, 12), + new DateTime(2023, 3, 12), + new DateTime(2023, 4, 12), + new DateTime(2023, 5, 12), + new DateTime(2023, 6, 12), + new DateTime(2023, 7, 12), + new DateTime(2023, 8, 12), + new DateTime(2023, 9, 12), + new DateTime(2023, 10, 12), + new DateTime(2023, 11, 12), + new DateTime(2023, 12, 12), + new DateTime(2024, 1, 12), + new DateTime(2024, 2, 12), + new DateTime(2024, 3, 12), + new DateTime(2024, 4, 12), + new DateTime(2024, 5, 12), + new DateTime(2024, 6, 12), + new DateTime(2024, 7, 12), + new DateTime(2024, 8, 12), + new DateTime(2024, 9, 12), + new DateTime(2024, 10, 12), + new DateTime(2024, 11, 12), + new DateTime(2024, 12, 12), + new DateTime(2025, 1, 12), + new DateTime(2025, 2, 12), + new DateTime(2025, 3, 12), + new DateTime(2025, 4, 12), + new DateTime(2025, 5, 12), + new DateTime(2025, 6, 12), + new DateTime(2025, 7, 12), + new DateTime(2025, 8, 12), + new DateTime(2025, 9, 12), + new DateTime(2025, 10, 12), + new DateTime(2025, 11, 12), + new DateTime(2025, 12, 12), + new DateTime(2026, 1, 12), + new DateTime(2026, 2, 12), + new DateTime(2026, 3, 12) + } + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow { - new DateTime(2020, 10, 12), - new DateTime(2020, 10, 12), - new DateTime(2020, 11, 12), - new DateTime(2020, 12, 12), - new DateTime(2021, 1, 12), - new DateTime(2021, 2, 12), - new DateTime(2021, 3, 12), - new DateTime(2021, 4, 12), - new DateTime(2021, 5, 12), - new DateTime(2021, 6, 12), - new DateTime(2021, 7, 12), - new DateTime(2021, 8, 12), - new DateTime(2021, 9, 12), - new DateTime(2021, 10, 12), - new DateTime(2021, 11, 12), - new DateTime(2021, 12, 12), - new DateTime(2022, 1, 12), - new DateTime(2022, 2, 12), - new DateTime(2022, 3, 12), - new DateTime(2022, 4, 12), - new DateTime(2022, 5, 12), - new DateTime(2022, 6, 12), - new DateTime(2022, 7, 12), - new DateTime(2022, 8, 12), - new DateTime(2022, 9, 12), - new DateTime(2022, 10, 12), - new DateTime(2022, 11, 12), - new DateTime(2022, 12, 12), - new DateTime(2023, 1, 12), - new DateTime(2023, 2, 12), - new DateTime(2023, 3, 12), - new DateTime(2023, 4, 12), - new DateTime(2023, 5, 12), - new DateTime(2023, 6, 12), - new DateTime(2023, 7, 12), - new DateTime(2023, 8, 12), - new DateTime(2023, 9, 12), - new DateTime(2023, 10, 12), - new DateTime(2023, 11, 12), - new DateTime(2023, 12, 12), - new DateTime(2024, 1, 12), - new DateTime(2024, 2, 12), - new DateTime(2024, 3, 12), - new DateTime(2024, 4, 12), - new DateTime(2024, 5, 12), - new DateTime(2024, 6, 12), - new DateTime(2024, 7, 12), - new DateTime(2024, 8, 12), - new DateTime(2024, 9, 12), - new DateTime(2024, 10, 12), - new DateTime(2024, 11, 12), - new DateTime(2024, 12, 12), - new DateTime(2025, 1, 12), - new DateTime(2025, 2, 12), - new DateTime(2025, 3, 12), - new DateTime(2025, 4, 12), - new DateTime(2025, 5, 12), - new DateTime(2025, 6, 12), - new DateTime(2025, 7, 12), - new DateTime(2025, 8, 12), - new DateTime(2025, 9, 12), - new DateTime(2025, 10, 12), - new DateTime(2025, 11, 12), - new DateTime(2025, 12, 12), - new DateTime(2026, 1, 12), - new DateTime(2026, 2, 12), - new DateTime(2026, 3, 12) + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m } - }; - - var preparedPayments = new PreparedPayments - { - Rows = new[] - { - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - } - } - }; + } + }; - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, - preparedValues.IrrExpected); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn, + preparedValues.IrrExpected); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - var expected = new[] - { - -23835.36815801206m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m - }; + var expected = new[] + { + -23835.36815801206m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m + }; - var res = tlmGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var res = tlmGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TransExprensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TransExprensesTests.cs index c83fb2a..83fbbaf 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/Columns/TransExprensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/Columns/TransExprensesTests.cs @@ -2,118 +2,117 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.Columns +namespace EvoCalculator.Core.Tests.Calculation.v1.Columns; + +public class TransExprensesTests { - public class TransExprensesTests + [Fact] + public void TransExprensesTest1() { - [Fact] - public void TransExprensesTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 30, - TransportTaxGrYear = 12000, - TransportTaxGr = 30000 - }; + Nmper = 30, + TransportTaxGrYear = 12000, + TransportTaxGr = 30000 + }; - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -30000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -12000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -12000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -6000.00m - }; - - - Assert.Equal(expected.Length, transExprensesColumn.Values.Length); - Assert.Equal(expected, transExprensesColumn.Values, new DecimalArrayComparer()); - } - - [Fact] - public void TransExprensesTest2() + var expected = new[] { - var preparedValues = new PreparedValues - { - Nmper = 32, - TransportTaxGrYear = 9000, - TransportTaxGr = 24000 - }; - - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); - transExprensesColumn.ComputeValues(preparedValues); + -30000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -12000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -12000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -6000.00m + }; - var expected = new[] - { - -24000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -9000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -9000.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - -6000.00m - }; + Assert.Equal(expected.Length, transExprensesColumn.Values.Length); + Assert.Equal(expected, transExprensesColumn.Values, new DecimalArrayComparer()); + } + + [Fact] + public void TransExprensesTest2() + { + var preparedValues = new PreparedValues + { + Nmper = 32, + TransportTaxGrYear = 9000, + TransportTaxGr = 24000 + }; + + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1); + transExprensesColumn.ComputeValues(preparedValues); - Assert.Equal(expected.Length, transExprensesColumn.Values.Length); - Assert.Equal(expected, transExprensesColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + -24000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -9000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -9000.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + -6000.00m + }; + + + Assert.Equal(expected.Length, transExprensesColumn.Values.Length); + Assert.Equal(expected, transExprensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BaseCost.cs b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BaseCost.cs index 4b3466a..a4a364e 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BaseCost.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BaseCost.cs @@ -3,129 +3,128 @@ using EvoCalculator.Core.Calculation.v1.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues +namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues; + +public class BaseCostTest { - public class BaseCostTest + [Fact] + public void BaseCostTest1() { - [Fact] - public void BaseCostTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + PlPrice = 2500000, + InsuranceOsago = 30000, + Rats = 12000, + Registration = 0, + TrackerCost = 15000, + TransportTaxGr = 0, + Leasing0K = 1, + NsibBrutto = 26730.2083333333m, + TLMCost = 20000 + }; + + var KaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) + { + Values = new[] { - PlPrice = 2500000, - InsuranceOsago = 30000, - Rats = 12000, - Registration = 0, - TrackerCost = 15000, - TransportTaxGr = 0, - Leasing0K = 1, - NsibBrutto = 26730.2083333333m, - TLMCost = 20000 - }; + -97856.7708333333m, + 53000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 57416.6666666667m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var KaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) + var TLM_GrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) + { + Values = new[] { - Values = new[] - { - -97856.7708333333m, - 53000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 57416.6666666667m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -17757.5461595619m, + 0, + 1800, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900, + 900 + } + }; - var TLM_GrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) + var GPS_GrColumn = new GPS_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) + { + Values = new[] { - Values = new[] - { - -17757.5461595619m, - 0, - 1800, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900, - 900 - } - }; + -19730.6068439577m, + 0, + 2000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000, + 1000 + } + }; - var GPS_GrColumn = new GPS_GrColumn(preparedValues.Nmper + 1, new DateTempColumn(0), 0) - { - Values = new[] - { - -19730.6068439577m, - 0, - 2000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000, - 1000 - } - }; + var BaseCost = new BaseCost(); + BaseCost.ComputeValue(preparedValues, KaskoNmperGrColumn, TLM_GrColumn, GPS_GrColumn); - var BaseCost = new BaseCost(); - BaseCost.ComputeValue(preparedValues, KaskoNmperGrColumn, TLM_GrColumn, GPS_GrColumn); - - Assert.Equal(2739075.13217019m, BaseCost.Value, new DecimalArrayComparer()); - } + Assert.Equal(2739075.13217019m, BaseCost.Value, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusBase.cs b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusBase.cs index db2feb9..e3f6477 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusBase.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusBase.cs @@ -3,60 +3,59 @@ using EvoCalculator.Core.Calculation.v1.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues +namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues; + +public class BonusBaseTests { - public class BonusBaseTests + [Fact] + public void BonusBaseTest1() { - [Fact] - public void BonusBaseTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + PlPrice = 2500000m, + InsuranceOsago = 30000m, + Discount = 0, + ComissionRub = 125000, + FirstPaymentSum = 625000 + }; + + var KaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1) + { + Values = new[] { - PlPrice = 2500000m, - InsuranceOsago = 30000m, - Discount = 0, - ComissionRub = 125000, - FirstPaymentSum = 625000 - }; - - var KaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 93191.6666666667m, - 53000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 40191.6666666667m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + 93191.6666666667m, + 53000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 40191.6666666667m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var BonusBase = new BonusBase(); - BonusBase.ComputeValue(preparedValues, KaskoBonusGrSumColumn); + var BonusBase = new BonusBase(); + BonusBase.ComputeValue(preparedValues, KaskoBonusGrSumColumn); - Assert.Equal(1873191.66666667m, BonusBase.Value, new DecimalArrayComparer()); - } + Assert.Equal(1873191.66666667m, BonusBase.Value, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusResult.cs b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusResult.cs index d94b442..7057ce6 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusResult.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/BonusResult.cs @@ -3,56 +3,55 @@ using EvoCalculator.Core.Calculation.v1.PostValues; using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues +namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues; + +public class BonusResultTests { - public class BonusResultTests + [Fact] + public void BonusResultTest1() { - [Fact] - public void BonusResultTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + SalaryRate = 0.3 + }; + + var NPVBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - SalaryRate = 0.3 - }; - - var NPVBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - -29266.5425270833m, - -1676.30246875m, - -27590.2400583333m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -29266.5425270833m, + -1676.30246875m, + -27590.2400583333m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var bonusResult = new BonusResult(); - bonusResult.ComputeValue(preparedValues, NPVBonusExpensesColumn); + var bonusResult = new BonusResult(); + bonusResult.ComputeValue(preparedValues, NPVBonusExpensesColumn); - Assert.Equal(22512.7250208333m, bonusResult.Value, new DecimalArrayComparer()); - } + Assert.Equal(22512.7250208333m, bonusResult.Value, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/PriceUP_Year.cs b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/PriceUP_Year.cs index e5b08e3..e03faa9 100644 --- a/EvoCalculator.Core.Tests/Calculation/v1/PostValues/PriceUP_Year.cs +++ b/EvoCalculator.Core.Tests/Calculation/v1/PostValues/PriceUP_Year.cs @@ -2,31 +2,30 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues +namespace EvoCalculator.Core.Tests.Calculation.v1.PostValues; + +public class PriceUP_YearTests { - public class PriceUP_YearTests + [Fact] + public void PriceUP_YearTest1() { - [Fact] - public void PriceUP_YearTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25 + }; + + + var postValues = new Core.Calculation.v1.PostValues.PostValues + { + PriceUP = new PriceUP { - Nmper = 25 - }; + Value = 499446.893305404m + } + }; + var priceUpYear = new PriceUP_Year(); + priceUpYear.ComputeValue(preparedValues, postValues); - var postValues = new Core.Calculation.v1.PostValues.PostValues - { - PriceUP = new PriceUP - { - Value = 499446.893305404m - } - }; - - var priceUpYear = new PriceUP_Year(); - priceUpYear.ComputeValue(preparedValues, postValues); - - Assert.Equal(239734.508786594m, priceUpYear.Value, new DecimalArrayComparer()); - } + Assert.Equal(239734.508786594m, priceUpYear.Value, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/CreditColumnTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/CreditColumnTests.cs index 3e24100..0593fa4 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/CreditColumnTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/CreditColumnTests.cs @@ -2,116 +2,115 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class CreditColumnTests { - public class CreditColumnTests + [Fact] + public void CreditColumnTest() { - [Fact] - public void CreditColumnTest() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + LoanRate = 0.07, + LoanRatePeriod = 36 + }; + + + var sumCreditColumn = new SumCreditColumn(preparedValues.Nmper + 1) + { + Values = new[] { - LoanRate = 0.07, - LoanRatePeriod = 36 - }; + 0, + 7350000m, + 7350000m, + 7145833.33333333m, + 6941666.66666667m, + 6737500m, + 6533333.33333333m, + 6329166.66666667m, + 6125000m, + 5920833.33333333m, + 5716666.66666666m, + 5512500m, + 5308333.33333333m, + 5104166.66666666m, + 4900000m, + 4695833.33333333m, + 4491666.66666666m, + 4287500m, + 4083333.33333333m, + 3879166.66666666m, + 3675000m, + 3470833.33333333m, + 3266666.66666666m, + 3062500m, + 2858333.33333333m, + 2654166.66666666m, + 2450000m, + 2245833.33333333m, + 2041666.66666666m, + 1837500m, + 1633333.33333333m, + 1429166.66666666m, + 1225000m, + 1020833.33333333m, + 816666.666666663m, + 612499.999999997m, + 408333.33333333m, + 204166.666666663m + } + }; + + var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); + creditColumn.ComputeValues(preparedValues, sumCreditColumn); - var sumCreditColumn = new SumCreditColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 0, - 7350000m, - 7350000m, - 7145833.33333333m, - 6941666.66666667m, - 6737500m, - 6533333.33333333m, - 6329166.66666667m, - 6125000m, - 5920833.33333333m, - 5716666.66666666m, - 5512500m, - 5308333.33333333m, - 5104166.66666666m, - 4900000m, - 4695833.33333333m, - 4491666.66666666m, - 4287500m, - 4083333.33333333m, - 3879166.66666666m, - 3675000m, - 3470833.33333333m, - 3266666.66666666m, - 3062500m, - 2858333.33333333m, - 2654166.66666666m, - 2450000m, - 2245833.33333333m, - 2041666.66666666m, - 1837500m, - 1633333.33333333m, - 1429166.66666666m, - 1225000m, - 1020833.33333333m, - 816666.666666663m, - 612499.999999997m, - 408333.33333333m, - 204166.666666663m - } - }; - - var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); - creditColumn.ComputeValues(preparedValues, sumCreditColumn); + var expected = new[] + { + -878937.5m, + -42875m, + -42875m, + -42875m, + -41684.0277777778m, + -40493.0555555556m, + -39302.0833333333m, + -38111.1111111111m, + -36920.1388888889m, + -35729.1666666667m, + -34538.1944444444m, + -33347.2222222222m, + -32156.25m, + -30965.2777777778m, + -29774.3055555555m, + -28583.3333333333m, + -27392.3611111111m, + -26201.3888888889m, + -25010.4166666666m, + -23819.4444444444m, + -22628.4722222222m, + -21437.5m, + -20246.5277777778m, + -19055.5555555555m, + -17864.5833333333m, + -16673.6111111111m, + -15482.6388888889m, + -14291.6666666666m, + -13100.6944444444m, + -11909.7222222222m, + -10718.75m, + -9527.77777777776m, + -8336.80555555554m, + -7145.83333333331m, + -5954.86111111109m, + -4763.88888888887m, + -3572.91666666665m, + -2381.94444444443m, + -1190.9722222222m, + 1.93540472537279E-11m + }; - var expected = new[] - { - -878937.5m, - -42875m, - -42875m, - -42875m, - -41684.0277777778m, - -40493.0555555556m, - -39302.0833333333m, - -38111.1111111111m, - -36920.1388888889m, - -35729.1666666667m, - -34538.1944444444m, - -33347.2222222222m, - -32156.25m, - -30965.2777777778m, - -29774.3055555555m, - -28583.3333333333m, - -27392.3611111111m, - -26201.3888888889m, - -25010.4166666666m, - -23819.4444444444m, - -22628.4722222222m, - -21437.5m, - -20246.5277777778m, - -19055.5555555555m, - -17864.5833333333m, - -16673.6111111111m, - -15482.6388888889m, - -14291.6666666666m, - -13100.6944444444m, - -11909.7222222222m, - -10718.75m, - -9527.77777777776m, - -8336.80555555554m, - -7145.83333333331m, - -5954.86111111109m, - -4763.88888888887m, - -3572.91666666665m, - -2381.94444444443m, - -1190.9722222222m, - 1.93540472537279E-11m - }; - - - Assert.Equal(expected.Length, creditColumn.Values.Length); - Assert.Equal(expected, creditColumn.Values, new DecimalArrayComparer(0.01)); - } + Assert.Equal(expected.Length, creditColumn.Values.Length); + Assert.Equal(expected, creditColumn.Values, new DecimalArrayComparer(0.01)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/DirectorBonusSum.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/DirectorBonusSum.cs index a69dc43..a5ec5e7 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/DirectorBonusSum.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/DirectorBonusSum.cs @@ -4,69 +4,68 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; using PostValues = EvoCalculator.Core.Calculation.v2.PostValues.PostValues; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class DirectorBonusSumTests { - public class DirectorBonusSumTests + [Fact] + public void DirectorBonusSumTest() { - [Fact] - public void DirectorBonusSumTest() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 25, + DirectorBonus = 0.003, + SalaryRate = 0.3, + MarketRate = 1.00, + DistrictRate = 1.07, + DirectorBonusNsib = 6000, + RegionalDirectorBonusNsib = 10000 + }; + + var postValues = new PostValues + { + BonusBase = new BonusBase { - Nmper = 25, - DirectorBonus = 0.003, - SalaryRate = 0.3, - MarketRate = 1.00, - DistrictRate = 1.07, - DirectorBonusNsib = 6000, - RegionalDirectorBonusNsib = 10000 - }; + Value = 5940000m + } + }; - var postValues = new PostValues - { - BonusBase = new BonusBase - { - Value = 5940000m - } - }; - - var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); - directorBonusSumColumn.ComputeValues(preparedValues, postValues); + var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1); + directorBonusSumColumn.ComputeValues(preparedValues, postValues); - var expected = new[] - { - -45587.62m, - 0, - -45587.62m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; + var expected = new[] + { + -45587.62m, + 0, + -45587.62m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; - Assert.Equal(expected.Length, directorBonusSumColumn.Values.Length); - Assert.Equal(expected, directorBonusSumColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, directorBonusSumColumn.Values.Length); + Assert.Equal(expected, directorBonusSumColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/ExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/ExpensesTests.cs index e403894..4ef8762 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/ExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/ExpensesTests.cs @@ -5,409 +5,408 @@ using Xunit; using ExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.ExpensesColumn; using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class ExpensesTests { - public class ExpensesTests + [Fact] + public void ExpensesColumnTest() { - [Fact] - public void ExpensesColumnTest() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + Nmper = 24 + }; + + var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Nmper = 24 - }; + -372826.666666667m, + 0, + -372826.666666667m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1) + var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -372826.666666667m, - 0, - -372826.666666667m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -8800m, + -10000m, + 0, + 0, + 1200m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1) + var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -8800m, - -10000m, - 0, - 0, - 1200m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -70000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -35000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -35000m + } + }; - var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1) + var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -70000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -35000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -35000m - } - }; + -9000m, + -4500m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -4500m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1) + var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -9000m, - -4500m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -4500m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -31200m, + -12000m, + -1600m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m + } + }; - var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1) + var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1) + { + Values = new decimal[] { - Values = new[] - { - -31200m, - -12000m, - -1600m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m - } - }; + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1) + var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new decimal[] - { - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + -5000m, + -5000m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1) + var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -5000m, - -5000m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1) + var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m, + 0.00m + } + }; - var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1) + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m, - 0.00m - } - }; + -120881.02m, + -13468m, + -107413.02m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1) + var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1) + { + Values = new[] { - Values = new[] - { - -120881.02m, - -13468m, - -107413.02m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; + 123000m, + 0, + 0, + 0, + 0, + 0, + 123000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + } + }; - var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1) - { - Values = new[] - { - 123000m, - 0, - 0, - 0, - 0, - 0, - 123000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - } - }; - - var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); - expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, - nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, - insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, - subsidyExpensesColumn); + var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1); + expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn, + nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn, + insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn, + subsidyExpensesColumn); - var expected = new[] - { - -494707.686666667m, - -44968m, - -481839.686666667m, - -800m, - 400m, - -800m, - 122200m, - -800m, - -800m, - -800m, - -800m, - -800m, - -35800m, - -5300m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -800m, - -35800m - }; + var expected = new[] + { + -494707.686666667m, + -44968m, + -481839.686666667m, + -800m, + 400m, + -800m, + 122200m, + -800m, + -800m, + -800m, + -800m, + -800m, + -35800m, + -5300m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -800m, + -35800m + }; - Assert.Equal(expected.Length, expensesColumn.Values.Length); - Assert.Equal(expected, expensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, expensesColumn.Values.Length); + Assert.Equal(expected, expensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/GPS_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/GPS_GrTests.cs index f280032..c22433f 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/GPS_GrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/GPS_GrTests.cs @@ -4,261 +4,260 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; using GPS_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.GPS_GrColumn; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class GpsGrTests { - public class GpsGrTests + [Fact] + public void GPS_GrTest() { - [Fact] - public void GPS_GrTest() + var preparedValues = + new PreparedValues + { + IrrExpected = 0.22 + }; + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - IrrExpected = 0.22 - }; - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11), + new DateTime(2024, 5, 11), + new DateTime(2024, 6, 11), + new DateTime(2024, 7, 11), + new DateTime(2024, 8, 11), + new DateTime(2024, 9, 11), + new DateTime(2024, 10, 11), + new DateTime(2024, 11, 11), + new DateTime(2024, 12, 11), + new DateTime(2025, 1, 11), + new DateTime(2025, 2, 11), + new DateTime(2025, 3, 11), + new DateTime(2025, 4, 11), + new DateTime(2025, 5, 11), + new DateTime(2025, 6, 11), + new DateTime(2025, 7, 11), + new DateTime(2025, 8, 11), + new DateTime(2025, 9, 11), + new DateTime(2025, 10, 11), + new DateTime(2025, 11, 11), + new DateTime(2025, 12, 11), + new DateTime(2026, 1, 11), + new DateTime(2026, 2, 11), + new DateTime(2026, 3, 11), + new DateTime(2026, 4, 11), + new DateTime(2026, 5, 11) + } + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11), - new DateTime(2022, 1, 11), - new DateTime(2022, 2, 11), - new DateTime(2022, 3, 11), - new DateTime(2022, 4, 11), - new DateTime(2022, 5, 11), - new DateTime(2022, 6, 11), - new DateTime(2022, 7, 11), - new DateTime(2022, 8, 11), - new DateTime(2022, 9, 11), - new DateTime(2022, 10, 11), - new DateTime(2022, 11, 11), - new DateTime(2022, 12, 11), - new DateTime(2023, 1, 11), - new DateTime(2023, 2, 11), - new DateTime(2023, 3, 11), - new DateTime(2023, 4, 11), - new DateTime(2023, 5, 11), - new DateTime(2023, 6, 11), - new DateTime(2023, 7, 11), - new DateTime(2023, 8, 11), - new DateTime(2023, 9, 11), - new DateTime(2023, 10, 11), - new DateTime(2023, 11, 11), - new DateTime(2023, 12, 11), - new DateTime(2024, 1, 11), - new DateTime(2024, 2, 11), - new DateTime(2024, 3, 11), - new DateTime(2024, 4, 11), - new DateTime(2024, 5, 11), - new DateTime(2024, 6, 11), - new DateTime(2024, 7, 11), - new DateTime(2024, 8, 11), - new DateTime(2024, 9, 11), - new DateTime(2024, 10, 11), - new DateTime(2024, 11, 11), - new DateTime(2024, 12, 11), - new DateTime(2025, 1, 11), - new DateTime(2025, 2, 11), - new DateTime(2025, 3, 11), - new DateTime(2025, 4, 11), - new DateTime(2025, 5, 11), - new DateTime(2025, 6, 11), - new DateTime(2025, 7, 11), - new DateTime(2025, 8, 11), - new DateTime(2025, 9, 11), - new DateTime(2025, 10, 11), - new DateTime(2025, 11, 11), - new DateTime(2025, 12, 11), - new DateTime(2026, 1, 11), - new DateTime(2026, 2, 11), - new DateTime(2026, 3, 11), - new DateTime(2026, 4, 11), - new DateTime(2026, 5, 11) + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m + }, + new PaymentRow + { + GpsCostPayment = 800.00m } - }; - - var preparedPayments = new PreparedPayments - { - Rows = new[] - { - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - }, - new PaymentRow - { - GpsCostPayment = 800.00m - } - } - }; + } + }; - var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); - gpsGrColumn.ComputeValues(preparedPayments, preparedValues); + var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1); + gpsGrColumn.ComputeValues(preparedPayments, preparedValues); - var expected = new[] - { - -24000.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m, - 800.00m - }; + var expected = new[] + { + -24000.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m, + 800.00m + }; - var res = gpsGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var res = gpsGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/KaskoNmperGrTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/KaskoNmperGrTests.cs index 1234215..9f47ac8 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/KaskoNmperGrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/KaskoNmperGrTests.cs @@ -4,134 +4,133 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperGrColumn; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class KaskoNmperGrTests { - public class KaskoNmperGrTests + [Fact] + public void KaskoNmperGrTest() { - [Fact] - public void KaskoNmperGrTest() + var preparedValues = + new PreparedValues + { + InsuranceKasko = 200000, + NmperInsurance = 24, + IrrExpected = 0.22, + Nmper = 24 + }; + + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - InsuranceKasko = 200000, - NmperInsurance = 24, - IrrExpected = 0.22, - Nmper = 24 - }; - - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] - { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11), - new DateTime(2022, 1, 11), - new DateTime(2022, 2, 11), - new DateTime(2022, 3, 11), - new DateTime(2022, 4, 11), - new DateTime(2022, 5, 11), - new DateTime(2022, 6, 11), - new DateTime(2022, 7, 11), - new DateTime(2022, 8, 11), - new DateTime(2022, 9, 11), - new DateTime(2022, 10, 11), - new DateTime(2022, 11, 11), - new DateTime(2022, 12, 11), - new DateTime(2023, 1, 11), - new DateTime(2023, 2, 11), - new DateTime(2023, 3, 11), - new DateTime(2023, 4, 11), - new DateTime(2023, 5, 11), - new DateTime(2023, 6, 11), - new DateTime(2023, 7, 11), - new DateTime(2023, 8, 11), - new DateTime(2023, 9, 11), - new DateTime(2023, 10, 11), - new DateTime(2023, 11, 11), - new DateTime(2023, 12, 11), - new DateTime(2024, 1, 11), - new DateTime(2024, 2, 11), - new DateTime(2024, 3, 11), - new DateTime(2024, 4, 11), - new DateTime(2024, 5, 11), - new DateTime(2024, 6, 11), - new DateTime(2024, 7, 11), - new DateTime(2024, 8, 11), - new DateTime(2024, 9, 11), - new DateTime(2024, 10, 11), - new DateTime(2024, 11, 11), - new DateTime(2024, 12, 11), - new DateTime(2025, 1, 11), - new DateTime(2025, 2, 11), - new DateTime(2025, 3, 11), - new DateTime(2025, 4, 11), - new DateTime(2025, 5, 11), - new DateTime(2025, 6, 11), - new DateTime(2025, 7, 11), - new DateTime(2025, 8, 11), - new DateTime(2025, 9, 11), - new DateTime(2025, 10, 11), - new DateTime(2025, 11, 11), - new DateTime(2025, 12, 11), - new DateTime(2026, 1, 11), - new DateTime(2026, 2, 11), - new DateTime(2026, 3, 11), - new DateTime(2026, 4, 11), - new DateTime(2026, 5, 11) - } - }; + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11), + new DateTime(2024, 5, 11), + new DateTime(2024, 6, 11), + new DateTime(2024, 7, 11), + new DateTime(2024, 8, 11), + new DateTime(2024, 9, 11), + new DateTime(2024, 10, 11), + new DateTime(2024, 11, 11), + new DateTime(2024, 12, 11), + new DateTime(2025, 1, 11), + new DateTime(2025, 2, 11), + new DateTime(2025, 3, 11), + new DateTime(2025, 4, 11), + new DateTime(2025, 5, 11), + new DateTime(2025, 6, 11), + new DateTime(2025, 7, 11), + new DateTime(2025, 8, 11), + new DateTime(2025, 9, 11), + new DateTime(2025, 10, 11), + new DateTime(2025, 11, 11), + new DateTime(2025, 12, 11), + new DateTime(2026, 1, 11), + new DateTime(2026, 2, 11), + new DateTime(2026, 3, 11), + new DateTime(2026, 4, 11), + new DateTime(2026, 5, 11) + } + }; - var kaskoNmperGrColumn = - new KaskoNmperGrColumn(preparedValues.Nmper + 1); - kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); + var kaskoNmperGrColumn = + new KaskoNmperGrColumn(preparedValues.Nmper + 1); + kaskoNmperGrColumn.ComputeValues(preparedValues, new Constants.Calculation()); - var expected = new[] - { - -400000m, - 200000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 200000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; + var expected = new[] + { + -400000m, + 200000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 200000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; - var res = kaskoNmperGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var res = kaskoNmperGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/NPVBonusExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/NPVBonusExpensesTests.cs index fadedf3..63bb302 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/NPVBonusExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/NPVBonusExpensesTests.cs @@ -4,69 +4,68 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; using PostValues = EvoCalculator.Core.Calculation.v2.PostValues.PostValues; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class NpvBonusExpensesTests { - public class NpvBonusExpensesTests + [Fact] + public void NpvBonusExpensesTest() { - [Fact] - public void NpvBonusExpensesTest() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + SalaryRate = 0.3, + MarketRate = 1.00, + DistrictRate = 1.07, + RatBonus = 360.00m, + NsBonus = 0.00m, + NsibBonus = 10000m, + BonusFix = 0.00m, + Bonus = 0.013, + Nmper = 24 + }; + + + var postValues = new PostValues + { + BonusBase = new BonusBase { - SalaryRate = 0.3, - MarketRate = 1.00, - DistrictRate = 1.07, - RatBonus = 360.00m, - NsBonus = 0.00m, - NsibBonus = 10000m, - BonusFix = 0.00m, - Bonus = 0.013, - Nmper = 24 - }; + Value = 5840000.00m + } + }; + + var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); + npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); + + var expected = new[] + { + -119072.72m, + -13468m, + -105604.72m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; - var postValues = new PostValues - { - BonusBase = new BonusBase - { - Value = 5840000.00m - } - }; - - var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1); - npvBonusExpensesColumn.ComputeValues(preparedValues, postValues); - - var expected = new[] - { - -119072.72m, - -13468m, - -105604.72m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; - - - Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, npvBonusExpensesColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/SubsidyExpensesTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/SubsidyExpensesTests.cs index 2ec6a7a..47830c8 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/SubsidyExpensesTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/SubsidyExpensesTests.cs @@ -2,56 +2,55 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class SubsidyExpensesTests { - public class SubsidyExpensesTests + [Fact] + public void SubsidyExpensesTest() { - [Fact] - public void SubsidyExpensesTest() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - Nmper = 23, - SubsidyPaymentNumber = 6, - SubsidySum = 123000.00m - }; + Nmper = 23, + SubsidyPaymentNumber = 6, + SubsidySum = 123000.00m + }; - var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); - subsidyExpensesColumn.ComputeValues(preparedValues); + var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1); + subsidyExpensesColumn.ComputeValues(preparedValues); - var expected = new[] - { - -123000m, - 0, - 0, - 0, - 0, - 0, - -123000m, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 - }; + var expected = new[] + { + -123000m, + 0, + 0, + 0, + 0, + 0, + -123000m, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + }; - Assert.Equal(expected.Length, subsidyExpensesColumn.Values.Length); - Assert.Equal(expected, subsidyExpensesColumn.Values, new DecimalArrayComparer(0.1)); - } + Assert.Equal(expected.Length, subsidyExpensesColumn.Values.Length); + Assert.Equal(expected, subsidyExpensesColumn.Values, new DecimalArrayComparer(0.1)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/Calculation/v2/Columns/TLM_GrTests.cs b/EvoCalculator.Core.Tests/Calculation/v2/Columns/TLM_GrTests.cs index e0257e0..6d5f5c7 100644 --- a/EvoCalculator.Core.Tests/Calculation/v2/Columns/TLM_GrTests.cs +++ b/EvoCalculator.Core.Tests/Calculation/v2/Columns/TLM_GrTests.cs @@ -4,261 +4,260 @@ using EvoCalculator.Core.Models.Calculation.Models.Prepared; using Xunit; using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn; -namespace EvoCalculator.Core.Tests.Calculation.v2.Columns +namespace EvoCalculator.Core.Tests.Calculation.v2.Columns; + +public class TlmGrTests { - public class TlmGrTests + [Fact] + public void TLM_GrTest() { - [Fact] - public void TLM_GrTest() + var preparedValues = + new PreparedValues + { + IrrExpected = 0.22 + }; + + var dateTempColumn = new DateTempColumn(67) { - var preparedValues = - new PreparedValues - { - IrrExpected = 0.22 - }; - - var dateTempColumn = new DateTempColumn(67) + Values = new[] { - Values = new[] + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11), + new DateTime(2022, 1, 11), + new DateTime(2022, 2, 11), + new DateTime(2022, 3, 11), + new DateTime(2022, 4, 11), + new DateTime(2022, 5, 11), + new DateTime(2022, 6, 11), + new DateTime(2022, 7, 11), + new DateTime(2022, 8, 11), + new DateTime(2022, 9, 11), + new DateTime(2022, 10, 11), + new DateTime(2022, 11, 11), + new DateTime(2022, 12, 11), + new DateTime(2023, 1, 11), + new DateTime(2023, 2, 11), + new DateTime(2023, 3, 11), + new DateTime(2023, 4, 11), + new DateTime(2023, 5, 11), + new DateTime(2023, 6, 11), + new DateTime(2023, 7, 11), + new DateTime(2023, 8, 11), + new DateTime(2023, 9, 11), + new DateTime(2023, 10, 11), + new DateTime(2023, 11, 11), + new DateTime(2023, 12, 11), + new DateTime(2024, 1, 11), + new DateTime(2024, 2, 11), + new DateTime(2024, 3, 11), + new DateTime(2024, 4, 11), + new DateTime(2024, 5, 11), + new DateTime(2024, 6, 11), + new DateTime(2024, 7, 11), + new DateTime(2024, 8, 11), + new DateTime(2024, 9, 11), + new DateTime(2024, 10, 11), + new DateTime(2024, 11, 11), + new DateTime(2024, 12, 11), + new DateTime(2025, 1, 11), + new DateTime(2025, 2, 11), + new DateTime(2025, 3, 11), + new DateTime(2025, 4, 11), + new DateTime(2025, 5, 11), + new DateTime(2025, 6, 11), + new DateTime(2025, 7, 11), + new DateTime(2025, 8, 11), + new DateTime(2025, 9, 11), + new DateTime(2025, 10, 11), + new DateTime(2025, 11, 11), + new DateTime(2025, 12, 11), + new DateTime(2026, 1, 11), + new DateTime(2026, 2, 11), + new DateTime(2026, 3, 11), + new DateTime(2026, 4, 11), + new DateTime(2026, 5, 11) + } + }; + + var preparedPayments = new PreparedPayments + { + Rows = new[] + { + new PaymentRow { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11), - new DateTime(2022, 1, 11), - new DateTime(2022, 2, 11), - new DateTime(2022, 3, 11), - new DateTime(2022, 4, 11), - new DateTime(2022, 5, 11), - new DateTime(2022, 6, 11), - new DateTime(2022, 7, 11), - new DateTime(2022, 8, 11), - new DateTime(2022, 9, 11), - new DateTime(2022, 10, 11), - new DateTime(2022, 11, 11), - new DateTime(2022, 12, 11), - new DateTime(2023, 1, 11), - new DateTime(2023, 2, 11), - new DateTime(2023, 3, 11), - new DateTime(2023, 4, 11), - new DateTime(2023, 5, 11), - new DateTime(2023, 6, 11), - new DateTime(2023, 7, 11), - new DateTime(2023, 8, 11), - new DateTime(2023, 9, 11), - new DateTime(2023, 10, 11), - new DateTime(2023, 11, 11), - new DateTime(2023, 12, 11), - new DateTime(2024, 1, 11), - new DateTime(2024, 2, 11), - new DateTime(2024, 3, 11), - new DateTime(2024, 4, 11), - new DateTime(2024, 5, 11), - new DateTime(2024, 6, 11), - new DateTime(2024, 7, 11), - new DateTime(2024, 8, 11), - new DateTime(2024, 9, 11), - new DateTime(2024, 10, 11), - new DateTime(2024, 11, 11), - new DateTime(2024, 12, 11), - new DateTime(2025, 1, 11), - new DateTime(2025, 2, 11), - new DateTime(2025, 3, 11), - new DateTime(2025, 4, 11), - new DateTime(2025, 5, 11), - new DateTime(2025, 6, 11), - new DateTime(2025, 7, 11), - new DateTime(2025, 8, 11), - new DateTime(2025, 9, 11), - new DateTime(2025, 10, 11), - new DateTime(2025, 11, 11), - new DateTime(2025, 12, 11), - new DateTime(2026, 1, 11), - new DateTime(2026, 2, 11), - new DateTime(2026, 3, 11), - new DateTime(2026, 4, 11), - new DateTime(2026, 5, 11) + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m + }, + new PaymentRow + { + TlmCostPayment = 1000.00m } - }; - - var preparedPayments = new PreparedPayments - { - Rows = new[] - { - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - }, - new PaymentRow - { - TlmCostPayment = 1000.00m - } - } - }; + } + }; - var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); - tlmGrColumn.ComputeValues(preparedPayments, preparedValues); + var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1); + tlmGrColumn.ComputeValues(preparedPayments, preparedValues); - var expected = new[] - { - -30000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m, - 1000.00m - }; + var expected = new[] + { + -30000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m, + 1000.00m + }; - var res = tlmGrColumn.Values; - Assert.Equal(expected, res, new DecimalArrayComparer()); - } + var res = tlmGrColumn.Values; + Assert.Equal(expected, res, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOColumnTests.cs index 50f941b..5c8dff0 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOColumnTests.cs @@ -7,183 +7,33 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.NextValues; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class CashflowMsfoColumnTests { - public class CashflowMsfoColumnTests + [Fact] + public void CashflowMsfoTest1() { - [Fact] - public void CashflowMsfoTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues - { - FuelCardSum = 8000, - BonusManagerLeasing = 25000, - BonusManagerProducts = 3500, - AgentFLSum = 230000, - AgentULSum = 123000 - }; + FuelCardSum = 8000, + BonusManagerLeasing = 25000, + BonusManagerProducts = 3500, + AgentFLSum = 230000, + AgentULSum = 123000 + }; - var nextValues = new NextValues + var nextValues = new NextValues + { + AcquisitionExpenses = new AcquisitionExpenses { - AcquisitionExpenses = new AcquisitionExpenses - { - Value = 400000 - } - }; + Value = 400000 + } + }; - var nextDateTempColumn = new DateTempColumn(0) - { - Values = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - } - }; - - var tableInsurance = new ChangingValue - { - Next = new[] - { - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 1, - DateStartPeriodInsurance = new DateTime(2021, 01, 31), - CostInsurance = 10000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 2, - DateStartPeriodInsurance = new DateTime(2022, 01, 31), - CostInsurance = 11000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 3, - DateStartPeriodInsurance = new DateTime(2023, 01, 31), - CostInsurance = 12000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "OSAGO", - PeriodNumberInsurance = 1, - DateStartPeriodInsurance = new DateTime(2021, 01, 30), - CostInsurance = 8888 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "OSAGO", - PeriodNumberInsurance = 2, - DateStartPeriodInsurance = new DateTime(2022, 01, 30), - CostInsurance = 9999 - } - } - }; - - var nextSumColumn = new BaseColumnWithSum(0) - { - Values = new[] - { - 1900000m, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000 - } - }; - - var nextNsibBruttoGrColumn = new BaseColumnWithSum(0) - { - Values = new[] - { - 3200m, - 0, - 2000, - 2000, - 2000, - 2000, - 2000 - } - }; - - var nextTlmDateColumn = new TLMDateColumn(0) - { - Values = new[] - { - new DateTime(2021, 04, 30), - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30) - } - }; - - var nextTlmCostColumn = new TLMCostColumn(0, null) - { - Values = new[] - { - 750m, - 0, - 500, - 250 - } - }; - - var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(0) - { - Values = new[] - { - 234888m, - 0, - 0, - 234888m, - 0, - 0, - 0 - } - }; - - var expectedValues = new[] - { - -408000, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000, - -11000, - -12000, - -9999, - 0, - 2000, - 2000, - 2000, - 2000, - 2000, - -25000, - -3500, - -353000, - -0, - -500, - -250, - 0, - 0, - 234888m, - 0, - 0, - 0 - }; - - var expectedDates = new[] + var nextDateTempColumn = new DateTempColumn(0) + { + Values = new[] { new DateTime(2021, 01, 12), new DateTime(2021, 01, 12), @@ -191,42 +41,191 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns new DateTime(2021, 03, 12), new DateTime(2021, 04, 12), new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2022, 01, 31), - new DateTime(2023, 01, 31), - new DateTime(2022, 01, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), new DateTime(2021, 06, 12) - }; + } + }; - var cashflowMSFOColumn = new CashflowMSFOColumn(); - cashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, - nextSubsidyExpensesColumn, nextNsibBruttoGrColumn, tableInsurance.Next, nextDateTempColumn, - nextTlmDateColumn); + var tableInsurance = new ChangingValue + { + Next = new[] + { + new TableInsuranceRow + { + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 1, + DateStartPeriodInsurance = new DateTime(2021, 01, 31), + CostInsurance = 10000 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 2, + DateStartPeriodInsurance = new DateTime(2022, 01, 31), + CostInsurance = 11000 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 3, + DateStartPeriodInsurance = new DateTime(2023, 01, 31), + CostInsurance = 12000 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "OSAGO", + PeriodNumberInsurance = 1, + DateStartPeriodInsurance = new DateTime(2021, 01, 30), + CostInsurance = 8888 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "OSAGO", + PeriodNumberInsurance = 2, + DateStartPeriodInsurance = new DateTime(2022, 01, 30), + CostInsurance = 9999 + } + } + }; - const double expectedIRR = -0.82516899; - const double expectedNominal = -1.62313616; + var nextSumColumn = new BaseColumnWithSum(0) + { + Values = new[] + { + 1900000m, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000 + } + }; - Assert.Equal(expectedValues, cashflowMSFOColumn.Values, new DecimalArrayComparer()); - Assert.Equal(expectedDates, cashflowMSFOColumn.Dates); - Assert.Equal(expectedIRR, cashflowMSFOColumn.IRR, new DoubleArrayComparer()); - Assert.Equal(expectedNominal, cashflowMSFOColumn.Nominal, new DoubleArrayComparer()); - } + var nextNsibBruttoGrColumn = new BaseColumnWithSum(0) + { + Values = new[] + { + 3200m, + 0, + 2000, + 2000, + 2000, + 2000, + 2000 + } + }; + + var nextTlmDateColumn = new TLMDateColumn(0) + { + Values = new[] + { + new DateTime(2021, 04, 30), + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30) + } + }; + + var nextTlmCostColumn = new TLMCostColumn(0, null) + { + Values = new[] + { + 750m, + 0, + 500, + 250 + } + }; + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(0) + { + Values = new[] + { + 234888m, + 0, + 0, + 234888m, + 0, + 0, + 0 + } + }; + + var expectedValues = new[] + { + -408000, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000, + -11000, + -12000, + -9999, + 0, + 2000, + 2000, + 2000, + 2000, + 2000, + -25000, + -3500, + -353000, + -0, + -500, + -250, + 0, + 0, + 234888m, + 0, + 0, + 0 + }; + + var expectedDates = new[] + { + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2022, 01, 31), + new DateTime(2023, 01, 31), + new DateTime(2022, 01, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12) + }; + + var cashflowMSFOColumn = new CashflowMSFOColumn(); + cashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn, + nextSubsidyExpensesColumn, nextNsibBruttoGrColumn, tableInsurance.Next, nextDateTempColumn, + nextTlmDateColumn); + + const double expectedIRR = -0.82516899; + const double expectedNominal = -1.62313616; + + Assert.Equal(expectedValues, cashflowMSFOColumn.Values, new DecimalArrayComparer()); + Assert.Equal(expectedDates, cashflowMSFOColumn.Dates); + Assert.Equal(expectedIRR, cashflowMSFOColumn.IRR, new DoubleArrayComparer()); + Assert.Equal(expectedNominal, cashflowMSFOColumn.Nominal, new DoubleArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinal2Tests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinal2Tests.cs index 18d8310..fbde5cc 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinal2Tests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinal2Tests.cs @@ -3,104 +3,35 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class CashflowMSFOFinal2Test { - public class CashflowMSFOFinal2Test + [Fact] + public void CashflowMSFOFinal2Test1() { - [Fact] - public void CashflowMSFOFinal2Test1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + BonusDirector = 7777 + }; + + var dateTempColumn = new DateTempColumn(0) + { + Values = new[] { - BonusDirector = 7777 - }; + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12) + } + }; - var dateTempColumn = new DateTempColumn(0) - { - Values = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - } - }; - - var nextCashflowMsfoFinalColumn = new CashflowMSFOFinalColumn - { - Values = new[] - { - -408000, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000, - 11000, - 12000, - 9999, - 0, - 2000, - 2000, - 2000, - 2000, - 2000, - -25000, - -3500, - -353000, - -750m, - -0, - -500, - -250, - 0, - 0, - 234888m, - 0, - 0, - 0, - -3000 - }, - - Dates = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2022, 01, 31), - new DateTime(2023, 01, 31), - new DateTime(2022, 01, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 04, 30), - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12) - } - }; - - var expectedValues = new[] + var nextCashflowMsfoFinalColumn = new CashflowMSFOFinalColumn + { + Values = new[] { -408000, 300000, @@ -131,11 +62,10 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns 0, 0, 0, - -3000, - -7777 - }; + -3000 + }, - var expectedDates = new[] + Dates = new[] { new DateTime(2021, 01, 12), new DateTime(2021, 01, 12), @@ -166,15 +96,84 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns new DateTime(2021, 04, 12), new DateTime(2021, 05, 12), new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12), new DateTime(2021, 02, 12) - }; + } + }; - var cashflowMSFOFinal2 = new CashflowMSFOFinal2Column(); - cashflowMSFOFinal2.ComputeValues(nextCashflowMsfoFinalColumn, dateTempColumn, preparedValues); + var expectedValues = new[] + { + -408000, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000, + 11000, + 12000, + 9999, + 0, + 2000, + 2000, + 2000, + 2000, + 2000, + -25000, + -3500, + -353000, + -750m, + -0, + -500, + -250, + 0, + 0, + 234888m, + 0, + 0, + 0, + -3000, + -7777 + }; - Assert.Equal(expectedDates, cashflowMSFOFinal2.Dates); - Assert.Equal(expectedValues, cashflowMSFOFinal2.Values, new DecimalArrayComparer()); - } + var expectedDates = new[] + { + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2022, 01, 31), + new DateTime(2023, 01, 31), + new DateTime(2022, 01, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 04, 30), + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 02, 12) + }; + + var cashflowMSFOFinal2 = new CashflowMSFOFinal2Column(); + cashflowMSFOFinal2.ComputeValues(nextCashflowMsfoFinalColumn, dateTempColumn, preparedValues); + + Assert.Equal(expectedDates, cashflowMSFOFinal2.Dates); + Assert.Equal(expectedValues, cashflowMSFOFinal2.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinalTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinalTests.cs index 6eb8979..475e378 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinalTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOFinalTests.cs @@ -3,102 +3,35 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class CashflowMSFOFinalTest { - public class CashflowMSFOFinalTest + [Fact] + public void CashflowMSFOFinalTest1() { - [Fact] - public void CashflowMSFOFinalTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + BonusManagerLeasingExtra = 3000 + }; + + var dateTempColumn = new DateTempColumn(0) + { + Values = new[] { - BonusManagerLeasingExtra = 3000 - }; + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12) + } + }; - var dateTempColumn = new DateTempColumn(0) - { - Values = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - } - }; - - var nextCashflowMsfoColumn = new CashflowMSFOColumn - { - Values = new[] - { - -408000, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000, - 11000, - 12000, - 9999, - 0, - 2000, - 2000, - 2000, - 2000, - 2000, - -25000, - -3500, - -353000, - -750m, - -0, - -500, - -250, - 0, - 0, - 234888m, - 0, - 0, - 0 - }, - - Dates = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2022, 01, 31), - new DateTime(2023, 01, 31), - new DateTime(2022, 01, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 04, 30), - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - } - }; - - var expectedValues = new[] + var nextCashflowMsfoColumn = new CashflowMSFOColumn + { + Values = new[] { -408000, 300000, @@ -128,11 +61,10 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns 234888m, 0, 0, - 0, - -3000 - }; + 0 + }, - var expectedDates = new[] + Dates = new[] { new DateTime(2021, 01, 12), new DateTime(2021, 01, 12), @@ -162,15 +94,82 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns new DateTime(2021, 03, 12), new DateTime(2021, 04, 12), new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12) - }; + new DateTime(2021, 06, 12) + } + }; - var cashflowMSFOFinal = new CashflowMSFOFinalColumn(); - cashflowMSFOFinal.ComputeValues(nextCashflowMsfoColumn, dateTempColumn, preparedValues); + var expectedValues = new[] + { + -408000, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000, + 11000, + 12000, + 9999, + 0, + 2000, + 2000, + 2000, + 2000, + 2000, + -25000, + -3500, + -353000, + -750m, + -0, + -500, + -250, + 0, + 0, + 234888m, + 0, + 0, + 0, + -3000 + }; - Assert.Equal(expectedDates, cashflowMSFOFinal.Dates); - Assert.Equal(expectedValues, cashflowMSFOFinal.Values, new DecimalArrayComparer()); - } + var expectedDates = new[] + { + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2022, 01, 31), + new DateTime(2023, 01, 31), + new DateTime(2022, 01, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 04, 30), + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12) + }; + + var cashflowMSFOFinal = new CashflowMSFOFinalColumn(); + cashflowMSFOFinal.ComputeValues(nextCashflowMsfoColumn, dateTempColumn, preparedValues); + + Assert.Equal(expectedDates, cashflowMSFOFinal.Dates); + Assert.Equal(expectedValues, cashflowMSFOFinal.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOForNIColumn.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOForNIColumn.cs index 6ab77d1..c76101e 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOForNIColumn.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/CashflowMSFOForNIColumn.cs @@ -4,110 +4,41 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using EvoCalculator.Core.PostCalculation.v1.NextValues; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class CashflowMSFOForNIColumnTests { - public class CashflowMSFOForNIColumnTests + [Fact] + public void CashflowMSFOForNIColumnTest1() { - [Fact] - public void CashflowMSFOForNIColumnTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + FuelCardSum = 8000 + }; + + var nextValues = new NextValues + { + AcquisitionExpenses = new AcquisitionExpenses {Value = 400000} + }; + + var nextDateTempColumn = new DateTempColumn(0) + { + Values = new[] { - FuelCardSum = 8000 - }; - - var nextValues = new NextValues - { - AcquisitionExpenses = new AcquisitionExpenses {Value = 400000} - }; - - var nextDateTempColumn = new DateTempColumn(0) - { - Values = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - } - }; + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12) + } + }; - var cashflowMSFOColumn = new CashflowMSFOColumn - { - Dates = new[] - { - new DateTime(2021, 01, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2022, 01, 31), - new DateTime(2023, 01, 31), - new DateTime(2022, 01, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30), - new DateTime(2021, 01, 12), - new DateTime(2021, 02, 12), - new DateTime(2021, 03, 12), - new DateTime(2021, 04, 12), - new DateTime(2021, 05, 12), - new DateTime(2021, 06, 12) - }, - Values = new[] - { - -408000, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000, - -11000, - -12000, - -9999, - 0, - 2000, - 2000, - 2000, - 2000, - 2000, - -25000, - -3500, - -353000, - -0, - -500, - -250, - 0, - 0, - 234888m, - 0, - 0, - 0 - } - }; - - - var cashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); - cashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, - cashflowMSFOColumn); - - var expectedDates = new[] + var cashflowMSFOColumn = new CashflowMSFOColumn + { + Dates = new[] { new DateTime(2021, 01, 12), new DateTime(2021, 01, 12), @@ -116,25 +47,93 @@ namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns new DateTime(2021, 04, 12), new DateTime(2021, 05, 12), new DateTime(2021, 06, 12), + new DateTime(2022, 01, 31), + new DateTime(2023, 01, 31), new DateTime(2022, 01, 30), - new DateTime(2023, 01, 31) - }; - - var expectedValues = new[] + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12) + }, + Values = new[] { - -408000.00m, - 296500.00m, - -276000.00m, - 336888.00m, - 102000.00m, - 101500.00m, - 101750.00m, - -20999.00m, - -12000.00m - }; + -408000, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000, + -11000, + -12000, + -9999, + 0, + 2000, + 2000, + 2000, + 2000, + 2000, + -25000, + -3500, + -353000, + -0, + -500, + -250, + 0, + 0, + 234888m, + 0, + 0, + 0 + } + }; - Assert.Equal(expectedDates, cashflowMSFOForNIColumn.Dates); - Assert.Equal(expectedValues, cashflowMSFOForNIColumn.Values, new DecimalArrayComparer()); - } + + var cashflowMSFOForNIColumn = new CashflowMSFOForNIColumn(); + cashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn, + cashflowMSFOColumn); + + var expectedDates = new[] + { + new DateTime(2021, 01, 12), + new DateTime(2021, 01, 12), + new DateTime(2021, 02, 12), + new DateTime(2021, 03, 12), + new DateTime(2021, 04, 12), + new DateTime(2021, 05, 12), + new DateTime(2021, 06, 12), + new DateTime(2022, 01, 30), + new DateTime(2023, 01, 31) + }; + + var expectedValues = new[] + { + -408000.00m, + 296500.00m, + -276000.00m, + 336888.00m, + 102000.00m, + 101500.00m, + 101750.00m, + -20999.00m, + -12000.00m + }; + + Assert.Equal(expectedDates, cashflowMSFOForNIColumn.Dates); + Assert.Equal(expectedValues, cashflowMSFOForNIColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/DateColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/DateColumnTests.cs index 94b5a64..db9a697 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/DateColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/DateColumnTests.cs @@ -5,272 +5,271 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class DateColumnTests { - public class DateColumnTests + [Fact] + public void CateColumnTest1() { - [Fact] - public void CateColumnTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Next = new DateTime(2021, 05, 22) - }, - MonthOffset = 0, - Nmper = new ChangingValue - { - Next = 10 - } - }; - - var tablePayment = new ChangingValue + Next = new DateTime(2021, 05, 22) + }, + MonthOffset = 0, + Nmper = new ChangingValue { - Current = new[] - { - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 1, 30) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 02, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 03, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 04, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 05, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 06, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 07, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 08, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 09, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 10, 15) - } - } - }; + Next = 10 + } + }; - var expected = new[] - { - new DateTime(2021, 01, 30), - new DateTime(2021, 01, 30), - new DateTime(2021, 02, 15), - new DateTime(2021, 03, 15), - new DateTime(2021, 04, 15), - new DateTime(2021, 05, 22), - new DateTime(2021, 06, 22), - new DateTime(2021, 07, 22), - new DateTime(2021, 08, 22), - new DateTime(2021, 09, 22), - new DateTime(2021, 10, 22) - }; - - var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - dateColumn.ComputeValues(preparedValues, tablePayment.Current); - - - Assert.Equal(expected, dateColumn.Values); - } - - [Fact] - public void CateColumnTest2() + var tablePayment = new ChangingValue { - var preparedValues = new PreparedValues + Current = new[] { - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue + new TablePaymentsRow { - Next = new DateTime(2021, 05, 15) + DatePayment = new DateTime(2021, 1, 30) }, - MonthOffset = 3, - Nmper = new ChangingValue + new TablePaymentsRow { - Next = 10 - } - }; - - var tablePayment = new ChangingValue - { - Current = new[] + DatePayment = new DateTime(2021, 02, 15) + }, + new TablePaymentsRow { - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 1, 30) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 02, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 03, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 04, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 05, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 06, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 07, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 08, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 09, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 10, 15) - } + DatePayment = new DateTime(2021, 03, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 04, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 05, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 06, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 07, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 08, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 09, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 10, 15) } - }; + } + }; - var expected = new[] - { - new DateTime(2021, 01, 30), - new DateTime(2021, 01, 30), - new DateTime(2021, 02, 15), - new DateTime(2021, 03, 15), - new DateTime(2021, 04, 15), - new DateTime(2021, 08, 15), - new DateTime(2021, 09, 15), - new DateTime(2021, 10, 15), - new DateTime(2021, 11, 15), - new DateTime(2021, 12, 15), - new DateTime(2022, 01, 15) - }; - - var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - dateColumn.ComputeValues(preparedValues, tablePayment.Current); - - - Assert.Equal(expected, dateColumn.Values); - } - - [Fact] - public void CateColumnTest3() + var expected = new[] { - var preparedValues = new PreparedValues + new DateTime(2021, 01, 30), + new DateTime(2021, 01, 30), + new DateTime(2021, 02, 15), + new DateTime(2021, 03, 15), + new DateTime(2021, 04, 15), + new DateTime(2021, 05, 22), + new DateTime(2021, 06, 22), + new DateTime(2021, 07, 22), + new DateTime(2021, 08, 22), + new DateTime(2021, 09, 22), + new DateTime(2021, 10, 22) + }; + + var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + dateColumn.ComputeValues(preparedValues, tablePayment.Current); + + + Assert.Equal(expected, dateColumn.Values); + } + + [Fact] + public void CateColumnTest2() + { + var preparedValues = new PreparedValues + { + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue + Next = new DateTime(2021, 05, 15) + }, + MonthOffset = 3, + Nmper = new ChangingValue + { + Next = 10 + } + }; + + var tablePayment = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow { - Next = new DateTime(2021, 05, 30) + DatePayment = new DateTime(2021, 1, 30) }, - MonthOffset = 0, - Nmper = new ChangingValue + new TablePaymentsRow { - Next = 16 - } - }; - - var tablePayment = new ChangingValue - { - Current = new[] + DatePayment = new DateTime(2021, 02, 15) + }, + new TablePaymentsRow { - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 1, 30) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 02, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 03, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 04, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 05, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 06, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 07, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 08, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 09, 15) - }, - new TablePaymentsRow - { - DatePayment = new DateTime(2021, 10, 15) - } + DatePayment = new DateTime(2021, 03, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 04, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 05, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 06, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 07, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 08, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 09, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 10, 15) } - }; + } + }; - var expected = new[] + var expected = new[] + { + new DateTime(2021, 01, 30), + new DateTime(2021, 01, 30), + new DateTime(2021, 02, 15), + new DateTime(2021, 03, 15), + new DateTime(2021, 04, 15), + new DateTime(2021, 08, 15), + new DateTime(2021, 09, 15), + new DateTime(2021, 10, 15), + new DateTime(2021, 11, 15), + new DateTime(2021, 12, 15), + new DateTime(2022, 01, 15) + }; + + var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + dateColumn.ComputeValues(preparedValues, tablePayment.Current); + + + Assert.Equal(expected, dateColumn.Values); + } + + [Fact] + public void CateColumnTest3() + { + var preparedValues = new PreparedValues + { + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - new DateTime(2021, 01, 30), - new DateTime(2021, 01, 30), - new DateTime(2021, 02, 15), - new DateTime(2021, 03, 15), - new DateTime(2021, 04, 15), - new DateTime(2021, 05, 30), - new DateTime(2021, 06, 30), - new DateTime(2021, 07, 30), - new DateTime(2021, 08, 30), - new DateTime(2021, 09, 30), - new DateTime(2021, 10, 30), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 30), - new DateTime(2022, 01, 30), - new DateTime(2022, 02, 28), - new DateTime(2022, 03, 28), - new DateTime(2022, 04, 28) - }; + Next = new DateTime(2021, 05, 30) + }, + MonthOffset = 0, + Nmper = new ChangingValue + { + Next = 16 + } + }; - var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); - dateColumn.ComputeValues(preparedValues, tablePayment.Current); + var tablePayment = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 1, 30) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 02, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 03, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 04, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 05, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 06, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 07, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 08, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 09, 15) + }, + new TablePaymentsRow + { + DatePayment = new DateTime(2021, 10, 15) + } + } + }; + + var expected = new[] + { + new DateTime(2021, 01, 30), + new DateTime(2021, 01, 30), + new DateTime(2021, 02, 15), + new DateTime(2021, 03, 15), + new DateTime(2021, 04, 15), + new DateTime(2021, 05, 30), + new DateTime(2021, 06, 30), + new DateTime(2021, 07, 30), + new DateTime(2021, 08, 30), + new DateTime(2021, 09, 30), + new DateTime(2021, 10, 30), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 30), + new DateTime(2022, 01, 30), + new DateTime(2022, 02, 28), + new DateTime(2022, 03, 28), + new DateTime(2022, 04, 28) + }; + + var dateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1); + dateColumn.ComputeValues(preparedValues, tablePayment.Current); - Assert.Equal(expected, dateColumn.Values); - } + Assert.Equal(expected, dateColumn.Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/IRRGrColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/IRRGrColumnTests.cs index d99f01b..3be1060 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/IRRGrColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/IRRGrColumnTests.cs @@ -2,95 +2,94 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class IRRGrColumnTests { - public class IRRGrColumnTests + [Fact] + public void IRRGrColumnTest1() { - [Fact] - public void IRRGrColumnTest1() + var cashflowMSFOColumn = new CashflowMSFOColumn { - var cashflowMSFOColumn = new CashflowMSFOColumn + Values = new[] { - Values = new[] - { - -1687895.00m, - 714902.22m, - 75082.40m, - 191964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - 91964.78m, - -680.22m - }, - Dates = new[] - { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11) - } - }; - - var cashflowMSFOForNiColumn = new CashflowMSFOForNIColumn + -1687895.00m, + 714902.22m, + 75082.40m, + 191964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + 91964.78m, + -680.22m + }, + Dates = new[] { - Dates = new[] - { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11) - } - }; + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11) + } + }; - var irrGrColumn = new IRRGrColumn(14); - irrGrColumn.ComputeValues(cashflowMSFOForNiColumn, cashflowMSFOColumn); - - var expected = new[] + var cashflowMSFOForNiColumn = new CashflowMSFOForNIColumn + { + Dates = new[] { - 0, - 0, - 0.0215793698321729, - 0.0215793698321729, - 0.0194708506595918, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556 - }; + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11) + } + }; + + var irrGrColumn = new IRRGrColumn(14); + irrGrColumn.ComputeValues(cashflowMSFOForNiColumn, cashflowMSFOColumn); + + var expected = new[] + { + 0, + 0, + 0.0215793698321729, + 0.0215793698321729, + 0.0194708506595918, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556 + }; - Assert.Equal(expected, irrGrColumn.Values, new DoubleArrayComparer()); - } + Assert.Equal(expected, irrGrColumn.Values, new DoubleArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/InterestTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/InterestTests.cs index d0c5651..741480c 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/InterestTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/InterestTests.cs @@ -1,77 +1,76 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class InterestTests { - public class InterestTests + [Fact] + public void InterestTest1() { - [Fact] - public void InterestTest1() + var nextNIColumn = new NIColumn(0) { - var nextNIColumn = new NIColumn(0) - { - Values = new[] - { - 0m, - 972992.7762602m, - 918906.951802027m, - 746771.606801317m, - 669347.107279169m, - 591826.418098242m, - 512216.635673698m, - 431305.169934092m, - 348344.338548294m, - 263896.611903771m, - 177626.5565345m, - 89369.9187452032m, - -666.312681322815m, - -0.000610510996352787m - } - }; - - var nextIrrGrColumn = new IRRGrColumn(0) - { - Values = new[] - { - 0, - 0, - 0.0215793698321729, - 0.0215793698321729, - 0.0194708506595918, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556 - } - }; - - var expected = new[] + Values = new[] { 0m, - 0m, - 20996.5709629515m, - 19829.4329542906m, - 14540.2784328518m, - 14444.0887740723m, - 12354.9955304568m, - 11053.3122153941m, - 9003.94656920173m, - 7517.05131047728m, - 5694.72258572888m, - 3708.14016570292m, - 1928.54652847398m, - -13.9099741881808m - }; + 972992.7762602m, + 918906.951802027m, + 746771.606801317m, + 669347.107279169m, + 591826.418098242m, + 512216.635673698m, + 431305.169934092m, + 348344.338548294m, + 263896.611903771m, + 177626.5565345m, + 89369.9187452032m, + -666.312681322815m, + -0.000610510996352787m + } + }; - var interestColumn = new InterestColumn(nextNIColumn.Values.Length); - interestColumn.ComputeValues(nextNIColumn, nextIrrGrColumn); + var nextIrrGrColumn = new IRRGrColumn(0) + { + Values = new[] + { + 0, + 0, + 0.0215793698321729, + 0.0215793698321729, + 0.0194708506595918, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556 + } + }; - Assert.Equal(expected, interestColumn.Values, new DecimalArrayComparer()); - } + var expected = new[] + { + 0m, + 0m, + 20996.5709629515m, + 19829.4329542906m, + 14540.2784328518m, + 14444.0887740723m, + 12354.9955304568m, + 11053.3122153941m, + 9003.94656920173m, + 7517.05131047728m, + 5694.72258572888m, + 3708.14016570292m, + 1928.54652847398m, + -13.9099741881808m + }; + + var interestColumn = new InterestColumn(nextNIColumn.Values.Length); + interestColumn.ComputeValues(nextNIColumn, nextIrrGrColumn); + + Assert.Equal(expected, interestColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NIColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NIColumnTests.cs index 7668236..8b2498a 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NIColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NIColumnTests.cs @@ -2,96 +2,95 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class NIColumnTests { - public class NIColumnTests + [Fact] + public void NIColumnTest1() { - [Fact] - public void NIColumnTest1() + var nextCashflowMSFOForNiColumn = new CashflowMSFOForNIColumn { - var nextCashflowMSFOForNiColumn = new CashflowMSFOForNIColumn + Dates = new[] { - Dates = new[] - { - new DateTime(2020, 12, 11), - new DateTime(2020, 12, 11), - new DateTime(2021, 1, 11), - new DateTime(2021, 2, 11), - new DateTime(2021, 3, 11), - new DateTime(2021, 4, 11), - new DateTime(2021, 5, 11), - new DateTime(2021, 6, 11), - new DateTime(2021, 7, 11), - new DateTime(2021, 8, 11), - new DateTime(2021, 9, 11), - new DateTime(2021, 10, 11), - new DateTime(2021, 11, 11), - new DateTime(2021, 12, 11) - }, - Values = new[] - { - -1687894.99666667m, - 714902.220406467m, - 75082.395421125m, - 191964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - 91964.777955m, - -680.222045m - } - }; - - - var nextIRRGrColumn = new IRRGrColumn(0) + new DateTime(2020, 12, 11), + new DateTime(2020, 12, 11), + new DateTime(2021, 1, 11), + new DateTime(2021, 2, 11), + new DateTime(2021, 3, 11), + new DateTime(2021, 4, 11), + new DateTime(2021, 5, 11), + new DateTime(2021, 6, 11), + new DateTime(2021, 7, 11), + new DateTime(2021, 8, 11), + new DateTime(2021, 9, 11), + new DateTime(2021, 10, 11), + new DateTime(2021, 11, 11), + new DateTime(2021, 12, 11) + }, + Values = new[] { - Values = new[] - { - 0, - 0, - 0.0215793698321729, - 0.0215793698321729, - 0.0194708506595918, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0215793698321729, - 0.0208760460037556, - 0.0215793698321729, - 0.0208760460037556 - } - }; + -1687894.99666667m, + 714902.220406467m, + 75082.395421125m, + 191964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + 91964.777955m, + -680.222045m + } + }; - var expected = new[] + + var nextIRRGrColumn = new IRRGrColumn(0) + { + Values = new[] { - 0m, - 972992.7762602m, - 918906.951802027m, - 746771.606801317m, - 669347.107279169m, - 591826.418098242m, - 512216.635673698m, - 431305.169934092m, - 348344.338548294m, - 263896.611903771m, - 177626.5565345m, - 89369.9187452032m, - -666.312681322815m, - -0.000610510996352787m - }; + 0, + 0, + 0.0215793698321729, + 0.0215793698321729, + 0.0194708506595918, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0215793698321729, + 0.0208760460037556, + 0.0215793698321729, + 0.0208760460037556 + } + }; - var NIColumn = new NIColumn(nextCashflowMSFOForNiColumn.Dates.Length); - NIColumn.ComputeValues(nextCashflowMSFOForNiColumn, nextIRRGrColumn); + var expected = new[] + { + 0m, + 972992.7762602m, + 918906.951802027m, + 746771.606801317m, + 669347.107279169m, + 591826.418098242m, + 512216.635673698m, + 431305.169934092m, + 348344.338548294m, + 263896.611903771m, + 177626.5565345m, + 89369.9187452032m, + -666.312681322815m, + -0.000610510996352787m + }; + + var NIColumn = new NIColumn(nextCashflowMSFOForNiColumn.Dates.Length); + NIColumn.ComputeValues(nextCashflowMSFOForNiColumn, nextIRRGrColumn); - Assert.Equal(expected, NIColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected, NIColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs index 97b22ab..800bdab 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs @@ -5,145 +5,144 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class NSIBBruttoGrColumnTests { - public class NSIBBruttoGrColumnTests + [Fact] + public void NSIBBruttoGrColumnTest1() { - [Fact] - public void NSIBBruttoGrColumnTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + EditPaymentNumber = 8, + Nmper = new ChangingValue { - EditPaymentNumber = 8, - Nmper = new ChangingValue + Next = 12 + }, + LastPaymentFix = false + }; + + + var sumColumn = new BaseColumnWithSum(0) + { + Values = new[] + { + 1900000m, + 300000, + 100000, + 100000, + 100000, + 100000, + 100000, + 100000, + 500000, + 125000, + 125000, + 125000, + 125000 + } + }; + + + var tablePayments = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow { - Next = 12 + NSIBBruttoPayment = 0 }, - LastPaymentFix = false - }; - - - var sumColumn = new BaseColumnWithSum(0) - { - Values = new[] + new TablePaymentsRow { - 1900000m, - 300000, - 100000, - 100000, - 100000, - 100000, - 100000, - 100000, - 500000, - 125000, - 125000, - 125000, - 125000 - } - }; - - - var tablePayments = new ChangingValue - { - Current = new[] + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow { - new TablePaymentsRow - { - NSIBBruttoPayment = 0 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - }, - new TablePaymentsRow - { - NSIBBruttoPayment = 2000 - } + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 + }, + new TablePaymentsRow + { + NSIBBruttoPayment = 2000 } - }; + } + }; - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, - tablePayments.Current, sumColumn); - // в менеджере считаем формулой - nsibBruttoGrColumn.ComputeValues(20000); + var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + tablePayments.Current, sumColumn); + // в менеджере считаем формулой + nsibBruttoGrColumn.ComputeValues(20000); - var expected = new[] - { - 32000m, - 0, - 2000, - 2000, - 2000, - 2000, - 2000, - 2000, - 10000, - 2500, - 2500, - 2500, - 2500 - }; + var expected = new[] + { + 32000m, + 0, + 2000, + 2000, + 2000, + 2000, + 2000, + 2000, + 10000, + 2500, + 2500, + 2500, + 2500 + }; - Assert.Equal(expected.Length, nsibBruttoGrColumn.Values.Length); - Assert.Equal(expected, nsibBruttoGrColumn.Values, new DecimalArrayComparer()); - } + Assert.Equal(expected.Length, nsibBruttoGrColumn.Values.Length); + Assert.Equal(expected, nsibBruttoGrColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumColumnTests.cs index 8fe2e05..bf12f36 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumColumnTests.cs @@ -8,545 +8,544 @@ using EvoCalculator.Core.PostCalculation.v1.NextValues; using Xunit; using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Next.DateTempColumn; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class SumColumnTests { - public class SumColumnTests + [Fact] + public void SumColumnTest1() { - [Fact] - public void SumColumnTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Next = new DateTime(2021, 11, 06) - }, - MonthOffset = 0, - FuelCardSum = 0, - LastPaymentFix = true, - Nmper = new ChangingValue - { - Next = 18 - } - }; - - var nextValues = new NextValues + Next = new DateTime(2021, 11, 06) + }, + MonthOffset = 0, + FuelCardSum = 0, + LastPaymentFix = true, + Nmper = new ChangingValue { - BaseCost = new BaseCost - { - Value = 662500m - } - }; + Next = 18 + } + }; - var nextDateTempColumn = new DateTempColumn(0) - { - Values = new[] - { - new DateTime(2021, 07, 06), - new DateTime(2021, 07, 06), - new DateTime(2021, 08, 06), - new DateTime(2021, 09, 06), - new DateTime(2021, 10, 06), - new DateTime(2021, 11, 06), - new DateTime(2021, 12, 06), - new DateTime(2022, 01, 06), - new DateTime(2022, 02, 06), - new DateTime(2022, 03, 06), - new DateTime(2022, 04, 06), - new DateTime(2022, 05, 06), - new DateTime(2022, 06, 06), - new DateTime(2022, 07, 06), - new DateTime(2022, 08, 06), - new DateTime(2022, 09, 06), - new DateTime(2022, 10, 06), - new DateTime(2022, 11, 06), - new DateTime(2022, 12, 06) - } - }; - - - var tablePayment = new ChangingValue - { - Current = new[] - { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06) - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06) - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06) - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06) - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06) - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06) - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06) - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06) - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06) - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06) - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06) - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06) - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06) - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06) - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06) - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06) - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06) - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06) - } - }, - Next = new[] - { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } - } - }; - - - var currentDateColumn = new DateColumnVT1(0) - { - Values = new[] - { - new DateTime(2021, 07, 06), - new DateTime(2021, 07, 06), - new DateTime(2021, 08, 06), - new DateTime(2021, 09, 06), - new DateTime(2021, 10, 06), - new DateTime(2021, 11, 06), - new DateTime(2021, 12, 06), - new DateTime(2022, 01, 06), - new DateTime(2022, 02, 06), - new DateTime(2022, 03, 06), - new DateTime(2022, 04, 06), - new DateTime(2022, 05, 06), - new DateTime(2022, 06, 06), - new DateTime(2022, 07, 06), - new DateTime(2022, 08, 06), - new DateTime(2022, 09, 06), - new DateTime(2022, 10, 06), - new DateTime(2022, 11, 06), - new DateTime(2022, 12, 06) - } - }; - - - var currentSumColumn = - new SumColumn(0, currentDateColumn) - { - Values = new[] - { - -662500.00m, - 329125.00m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 833.33m - } - }; - - var expected = new[] - { - -662500.00m, - 329125.00m, - 25855.56m, - 25855.56m, - 25855.56m, - 77566.68m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 20764.49m, - 833.33m - }; - - - var sumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, - tablePayment.Current, tablePayment.Next); - sumColumn.ComputeValues((decimal) currentSumColumn.IRR); - - Assert.Equal(expected, sumColumn.Values, new DecimalArrayComparer(1)); - } - - [Fact] - public void SumColumnTest2() + var nextValues = new NextValues { - var preparedValues = new PreparedValues + BaseCost = new BaseCost { - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue + Value = 662500m + } + }; + + var nextDateTempColumn = new DateTempColumn(0) + { + Values = new[] + { + new DateTime(2021, 07, 06), + new DateTime(2021, 07, 06), + new DateTime(2021, 08, 06), + new DateTime(2021, 09, 06), + new DateTime(2021, 10, 06), + new DateTime(2021, 11, 06), + new DateTime(2021, 12, 06), + new DateTime(2022, 01, 06), + new DateTime(2022, 02, 06), + new DateTime(2022, 03, 06), + new DateTime(2022, 04, 06), + new DateTime(2022, 05, 06), + new DateTime(2022, 06, 06), + new DateTime(2022, 07, 06), + new DateTime(2022, 08, 06), + new DateTime(2022, 09, 06), + new DateTime(2022, 10, 06), + new DateTime(2022, 11, 06), + new DateTime(2022, 12, 06) + } + }; + + + var tablePayment = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow { - Next = new DateTime(2021, 11, 06) + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06) }, - MonthOffset = 3, - FuelCardSum = 0, - LastPaymentFix = true, - Nmper = new ChangingValue + new TablePaymentsRow { - Next = 18 + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06) + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06) + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06) + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06) + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06) + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06) + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06) + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06) + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06) + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06) + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06) + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06) + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06) + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06) + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06) + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06) + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06) } - }; - - var nextValues = new NextValues + }, + Next = new[] { - BaseCost = new BaseCost + new TablePaymentsRow { - Value = 662500m + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) } - }; + } + }; - var nextDateTempColumn = new DateTempColumn(0) + + var currentDateColumn = new DateColumnVT1(0) + { + Values = new[] + { + new DateTime(2021, 07, 06), + new DateTime(2021, 07, 06), + new DateTime(2021, 08, 06), + new DateTime(2021, 09, 06), + new DateTime(2021, 10, 06), + new DateTime(2021, 11, 06), + new DateTime(2021, 12, 06), + new DateTime(2022, 01, 06), + new DateTime(2022, 02, 06), + new DateTime(2022, 03, 06), + new DateTime(2022, 04, 06), + new DateTime(2022, 05, 06), + new DateTime(2022, 06, 06), + new DateTime(2022, 07, 06), + new DateTime(2022, 08, 06), + new DateTime(2022, 09, 06), + new DateTime(2022, 10, 06), + new DateTime(2022, 11, 06), + new DateTime(2022, 12, 06) + } + }; + + + var currentSumColumn = + new SumColumn(0, currentDateColumn) { Values = new[] { - new DateTime(2021, 07, 06), - new DateTime(2021, 07, 06), - new DateTime(2021, 08, 06), - new DateTime(2021, 09, 06), - new DateTime(2021, 10, 06), - new DateTime(2022, 02, 06), - new DateTime(2022, 03, 06), - new DateTime(2022, 04, 06), - new DateTime(2022, 05, 06), - new DateTime(2022, 06, 06), - new DateTime(2022, 07, 06), - new DateTime(2022, 08, 06), - new DateTime(2022, 09, 06), - new DateTime(2022, 10, 06), - new DateTime(2022, 11, 06), - new DateTime(2022, 12, 06), - new DateTime(2023, 01, 06), - new DateTime(2023, 02, 06), - new DateTime(2023, 03, 06) + -662500.00m, + 329125.00m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 833.33m } }; + var expected = new[] + { + -662500.00m, + 329125.00m, + 25855.56m, + 25855.56m, + 25855.56m, + 77566.68m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 20764.49m, + 833.33m + }; - var tablePayment = new ChangingValue + + var sumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, + tablePayment.Current, tablePayment.Next); + sumColumn.ComputeValues((decimal) currentSumColumn.IRR); + + Assert.Equal(expected, sumColumn.Values, new DecimalArrayComparer(1)); + } + + [Fact] + public void SumColumnTest2() + { + var preparedValues = new PreparedValues + { + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - Current = new[] + Next = new DateTime(2021, 11, 06) + }, + MonthOffset = 3, + FuelCardSum = 0, + LastPaymentFix = true, + Nmper = new ChangingValue + { + Next = 18 + } + }; + + var nextValues = new NextValues + { + BaseCost = new BaseCost + { + Value = 662500m + } + }; + + var nextDateTempColumn = new DateTempColumn(0) + { + Values = new[] + { + new DateTime(2021, 07, 06), + new DateTime(2021, 07, 06), + new DateTime(2021, 08, 06), + new DateTime(2021, 09, 06), + new DateTime(2021, 10, 06), + new DateTime(2022, 02, 06), + new DateTime(2022, 03, 06), + new DateTime(2022, 04, 06), + new DateTime(2022, 05, 06), + new DateTime(2022, 06, 06), + new DateTime(2022, 07, 06), + new DateTime(2022, 08, 06), + new DateTime(2022, 09, 06), + new DateTime(2022, 10, 06), + new DateTime(2022, 11, 06), + new DateTime(2022, 12, 06), + new DateTime(2023, 01, 06), + new DateTime(2023, 02, 06), + new DateTime(2023, 03, 06) + } + }; + + + var tablePayment = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06) - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06) - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06) - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06) - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06) - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06) - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06) - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06) - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06) - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06) - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06) - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06) - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06) - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06) - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06) - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06) - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06) - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06) - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06) }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 30000m - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25000m - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25000m - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06) + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06) + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06) + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06) + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06) + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06) + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06) + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06) + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06) + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06) + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06) + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06) + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06) + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06) + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06) + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06) + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06) } - }; + }, + Next = new[] + { + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 30000m + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25000m + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25000m + } + } + }; - var currentDateColumn = new DateColumnVT1(0) + var currentDateColumn = new DateColumnVT1(0) + { + Values = new[] + { + new DateTime(2021, 07, 06), + new DateTime(2021, 07, 06), + new DateTime(2021, 08, 06), + new DateTime(2021, 09, 06), + new DateTime(2021, 10, 06), + new DateTime(2021, 11, 06), + new DateTime(2021, 12, 06), + new DateTime(2022, 01, 06), + new DateTime(2022, 02, 06), + new DateTime(2022, 03, 06), + new DateTime(2022, 04, 06), + new DateTime(2022, 05, 06), + new DateTime(2022, 06, 06), + new DateTime(2022, 07, 06), + new DateTime(2022, 08, 06), + new DateTime(2022, 09, 06), + new DateTime(2022, 10, 06), + new DateTime(2022, 11, 06), + new DateTime(2022, 12, 06) + } + }; + + + var currentSumColumn = + new SumColumn(0, currentDateColumn) { Values = new[] { - new DateTime(2021, 07, 06), - new DateTime(2021, 07, 06), - new DateTime(2021, 08, 06), - new DateTime(2021, 09, 06), - new DateTime(2021, 10, 06), - new DateTime(2021, 11, 06), - new DateTime(2021, 12, 06), - new DateTime(2022, 01, 06), - new DateTime(2022, 02, 06), - new DateTime(2022, 03, 06), - new DateTime(2022, 04, 06), - new DateTime(2022, 05, 06), - new DateTime(2022, 06, 06), - new DateTime(2022, 07, 06), - new DateTime(2022, 08, 06), - new DateTime(2022, 09, 06), - new DateTime(2022, 10, 06), - new DateTime(2022, 11, 06), - new DateTime(2022, 12, 06) + -662500.00m, + 329125.00m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 25855.56m, + 833.33m } }; - - var currentSumColumn = - new SumColumn(0, currentDateColumn) - { - Values = new[] - { - -662500.00m, - 329125.00m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 25855.56m, - 833.33m - } - }; - - var expected = new[] - { - -662500.00m, - 329125.00m, - 25855.56m, - 25855.56m, - 25855.56m, - 30000.00m, - 25000.00m, - 25000.00m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 28443.14m, - 833.33m - }; + var expected = new[] + { + -662500.00m, + 329125.00m, + 25855.56m, + 25855.56m, + 25855.56m, + 30000.00m, + 25000.00m, + 25000.00m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 28443.14m, + 833.33m + }; - var sumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, - tablePayment.Current, tablePayment.Next); - sumColumn.ComputeValues((decimal) currentSumColumn.IRR); + var sumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, + tablePayment.Current, tablePayment.Next); + sumColumn.ComputeValues((decimal) currentSumColumn.IRR); - Assert.Equal(expected, sumColumn.Values, new DecimalArrayComparer(0.01)); - } + Assert.Equal(expected, sumColumn.Values, new DecimalArrayComparer(0.01)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentInterestTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentInterestTests.cs index 83d8a3a..dbf658f 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentInterestTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentInterestTests.cs @@ -1,56 +1,55 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns -{ - public class SumCurrentInterestTests - { - [Fact] - public void SumCurrentInterestTest1() - { - var nextInterestColumn = new InterestColumn(0) - { - Values = new[] - { - 0m, - 0m, - 20996.5709629515m, - 19829.4329542906m, - 14540.2784328518m, - 14444.0887740723m, - 12354.9955304568m, - 11053.3122153941m, - 9003.94656920173m, - 7517.05131047728m, - 5694.72258572888m, - 3708.14016570292m, - 1928.54652847398m, - -13.9099741881808m - } - }; +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; - var expected = new[] +public class SumCurrentInterestTests +{ + [Fact] + public void SumCurrentInterestTest1() + { + var nextInterestColumn = new InterestColumn(0) + { + Values = new[] { 0m, - 121057.174813061m, - 100060.60385011m, - 80231.1708958191m, - 65690.8924629673m, - 51246.803688895m, - 38891.8081584383m, - 27838.4959430441m, - 18834.5493738424m, - 11317.4980633651m, - 5622.77547763624m, - 1914.63531193332m, - -13.9112165406604m, - 0 - }; + 0m, + 20996.5709629515m, + 19829.4329542906m, + 14540.2784328518m, + 14444.0887740723m, + 12354.9955304568m, + 11053.3122153941m, + 9003.94656920173m, + 7517.05131047728m, + 5694.72258572888m, + 3708.14016570292m, + 1928.54652847398m, + -13.9099741881808m + } + }; - var sumCurrentInterestColumn = new SumCurrentInterestColumn(nextInterestColumn.Values.Length); - sumCurrentInterestColumn.ComputeValues(nextInterestColumn); + var expected = new[] + { + 0m, + 121057.174813061m, + 100060.60385011m, + 80231.1708958191m, + 65690.8924629673m, + 51246.803688895m, + 38891.8081584383m, + 27838.4959430441m, + 18834.5493738424m, + 11317.4980633651m, + 5622.77547763624m, + 1914.63531193332m, + -13.9112165406604m, + 0 + }; - Assert.Equal(expected, sumCurrentInterestColumn.Values, new DecimalArrayComparer(0.1)); - } + var sumCurrentInterestColumn = new SumCurrentInterestColumn(nextInterestColumn.Values.Length); + sumCurrentInterestColumn.ComputeValues(nextInterestColumn); + + Assert.Equal(expected, sumCurrentInterestColumn.Values, new DecimalArrayComparer(0.1)); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentNegativeTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentNegativeTests.cs index 6201961..9ed31ec 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentNegativeTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentNegativeTests.cs @@ -4,96 +4,95 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class SumCurrentNegativeTests { - public class SumCurrentNegativeTests + [Fact] + public void SumCurrentNegativeTest1() { - [Fact] - public void SumCurrentNegativeTest1() + var tableInsurance = new ChangingValue { - var tableInsurance = new ChangingValue + Next = new[] { - Next = new[] + new TableInsuranceRow { - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 1, - DateStartPeriodInsurance = new DateTime(2021, 01, 31), - CostInsurance = 10000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 2, - DateStartPeriodInsurance = new DateTime(2022, 01, 31), - CostInsurance = 11000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "KASKO", - PeriodNumberInsurance = 3, - DateStartPeriodInsurance = new DateTime(2023, 05, 31), - CostInsurance = 12000 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "OSAGO", - PeriodNumberInsurance = 1, - DateStartPeriodInsurance = new DateTime(2021, 01, 30), - CostInsurance = 8888 - }, - new TableInsuranceRow - { - TypeRiskInsurance = "OSAGO", - PeriodNumberInsurance = 2, - DateStartPeriodInsurance = new DateTime(2022, 01, 30), - CostInsurance = 9999 - } - } - }; - - var dateTempColumn = new DateTempColumn(0) - { - Values = new[] + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 1, + DateStartPeriodInsurance = new DateTime(2021, 01, 31), + CostInsurance = 10000 + }, + new TableInsuranceRow { - new DateTime(2021, 1, 30), - new DateTime(2021, 1, 30), - new DateTime(2021, 1, 31), - new DateTime(2021, 2, 1), - new DateTime(2021, 3, 31), - new DateTime(2021, 5, 31), - new DateTime(2022, 1, 30), - new DateTime(2022, 1, 31), - new DateTime(2022, 2, 1), - new DateTime(2022, 5, 31), - new DateTime(2023, 1, 31), - new DateTime(2023, 2, 1) + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 2, + DateStartPeriodInsurance = new DateTime(2022, 01, 31), + CostInsurance = 11000 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "KASKO", + PeriodNumberInsurance = 3, + DateStartPeriodInsurance = new DateTime(2023, 05, 31), + CostInsurance = 12000 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "OSAGO", + PeriodNumberInsurance = 1, + DateStartPeriodInsurance = new DateTime(2021, 01, 30), + CostInsurance = 8888 + }, + new TableInsuranceRow + { + TypeRiskInsurance = "OSAGO", + PeriodNumberInsurance = 2, + DateStartPeriodInsurance = new DateTime(2022, 01, 30), + CostInsurance = 9999 } - }; + } + }; - - var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(dateTempColumn.Values.Length); - sumCurrentNegativeColumn.ComputeValues(dateTempColumn, tableInsurance.Next); - - var expected = new[] + var dateTempColumn = new DateTempColumn(0) + { + Values = new[] { - 0, - 39887m, - 39887m, - 30999m, - 20999m, - 20999m, - 20999m, - 20999m, - 11000m, - 0m, - 0m, - 0m, - 0m - }; + new DateTime(2021, 1, 30), + new DateTime(2021, 1, 30), + new DateTime(2021, 1, 31), + new DateTime(2021, 2, 1), + new DateTime(2021, 3, 31), + new DateTime(2021, 5, 31), + new DateTime(2022, 1, 30), + new DateTime(2022, 1, 31), + new DateTime(2022, 2, 1), + new DateTime(2022, 5, 31), + new DateTime(2023, 1, 31), + new DateTime(2023, 2, 1) + } + }; - Assert.Equal(expected, sumCurrentNegativeColumn.Values); - } + + var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(dateTempColumn.Values.Length); + sumCurrentNegativeColumn.ComputeValues(dateTempColumn, tableInsurance.Next); + + var expected = new[] + { + 0, + 39887m, + 39887m, + 30999m, + 20999m, + 20999m, + 20999m, + 20999m, + 11000m, + 0m, + 0m, + 0m, + 0m + }; + + Assert.Equal(expected, sumCurrentNegativeColumn.Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentTLMTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentTLMTests.cs index 7ad5606..3843cd3 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentTLMTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/SumCurrentTLMTests.cs @@ -2,108 +2,107 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class SumCurrentTLMTests { - public class SumCurrentTLMTests + [Fact] + public void SumCurrentTLMTest1() { - [Fact] - public void SumCurrentTLMTest1() + var nextDateColumn = new DateColumnVT1(0) { - var nextDateColumn = new DateColumnVT1(0) + Values = new[] { - Values = new[] - { - new DateTime(2021, 01, 1), - new DateTime(2021, 01, 1), - new DateTime(2021, 02, 1), - new DateTime(2021, 03, 1), - new DateTime(2021, 04, 1), - new DateTime(2021, 05, 1), - new DateTime(2021, 09, 1), - new DateTime(2021, 10, 1), - new DateTime(2021, 11, 1), - new DateTime(2021, 12, 1), - new DateTime(2022, 01, 1), - new DateTime(2022, 04, 1), - new DateTime(2022, 05, 1), - new DateTime(2022, 06, 1), - new DateTime(2022, 07, 1), - new DateTime(2022, 08, 1), - new DateTime(2022, 09, 1), - new DateTime(2022, 10, 1), - new DateTime(2022, 11, 1), - new DateTime(2022, 12, 1), - new DateTime(2023, 01, 1), - new DateTime(2023, 02, 1), - new DateTime(2023, 03, 1), - new DateTime(2023, 04, 1) - } - }; + new DateTime(2021, 01, 1), + new DateTime(2021, 01, 1), + new DateTime(2021, 02, 1), + new DateTime(2021, 03, 1), + new DateTime(2021, 04, 1), + new DateTime(2021, 05, 1), + new DateTime(2021, 09, 1), + new DateTime(2021, 10, 1), + new DateTime(2021, 11, 1), + new DateTime(2021, 12, 1), + new DateTime(2022, 01, 1), + new DateTime(2022, 04, 1), + new DateTime(2022, 05, 1), + new DateTime(2022, 06, 1), + new DateTime(2022, 07, 1), + new DateTime(2022, 08, 1), + new DateTime(2022, 09, 1), + new DateTime(2022, 10, 1), + new DateTime(2022, 11, 1), + new DateTime(2022, 12, 1), + new DateTime(2023, 01, 1), + new DateTime(2023, 02, 1), + new DateTime(2023, 03, 1), + new DateTime(2023, 04, 1) + } + }; - var nextTLMGrColumn = new TLMGrColumn(0) + var nextTLMGrColumn = new TLMGrColumn(0) + { + Values = new[] { - Values = new[] - { - 23000m, - 0m, - 2000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m, - 1000m - } - }; - - var expected = new[] - { - 0m, 23000m, - 21000m, - 20000m, - 19000m, - 18000m, - 17000m, - 16000m, - 15000m, - 14000m, - 13000m, - 12000m, - 11000m, - 10000m, - 9000m, - 8000m, - 7000m, - 6000m, - 5000m, - 4000m, - 3000m, + 0m, 2000m, 1000m, - 0m - }; + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m, + 1000m + } + }; - var sumCurrentTLMColumn = new SumCurrentTLMColumn(nextDateColumn.Values.Length); - sumCurrentTLMColumn.ComputeValues(nextTLMGrColumn); + var expected = new[] + { + 0m, + 23000m, + 21000m, + 20000m, + 19000m, + 18000m, + 17000m, + 16000m, + 15000m, + 14000m, + 13000m, + 12000m, + 11000m, + 10000m, + 9000m, + 8000m, + 7000m, + 6000m, + 5000m, + 4000m, + 3000m, + 2000m, + 1000m, + 0m + }; - Assert.Equal(expected, sumCurrentTLMColumn.Values); - } + var sumCurrentTLMColumn = new SumCurrentTLMColumn(nextDateColumn.Values.Length); + sumCurrentTLMColumn.ComputeValues(nextTLMGrColumn); + + Assert.Equal(expected, sumCurrentTLMColumn.Values); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/TLMGrColumnTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/TLMGrColumnTests.cs index 7477c3f..b7c3e99 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/TLMGrColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/TLMGrColumnTests.cs @@ -2,90 +2,89 @@ using EvoCalculator.Core.PostCalculation.v1.Columns.Next; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Columns; + +public class TLMGrColumnTests { - public class TLMGrColumnTests + [Fact] + public void TLMGrColumnTest1() { - [Fact] - public void TLMGrColumnTest1() + const int count = 12; + var nextDateColumn = new DateColumnVT1(0) { - const int count = 12; - var nextDateColumn = new DateColumnVT1(0) + Values = new[] { - Values = new[] - { - new DateTime(2021, 01, 1), - new DateTime(2021, 01, 1), - new DateTime(2021, 02, 1), - new DateTime(2021, 03, 1), - new DateTime(2021, 04, 1), - new DateTime(2021, 05, 1), - new DateTime(2021, 09, 1), - new DateTime(2021, 10, 1), - new DateTime(2021, 11, 1), - new DateTime(2021, 12, 1), - new DateTime(2022, 01, 1), - new DateTime(2022, 04, 1) - } - }; + new DateTime(2021, 01, 1), + new DateTime(2021, 01, 1), + new DateTime(2021, 02, 1), + new DateTime(2021, 03, 1), + new DateTime(2021, 04, 1), + new DateTime(2021, 05, 1), + new DateTime(2021, 09, 1), + new DateTime(2021, 10, 1), + new DateTime(2021, 11, 1), + new DateTime(2021, 12, 1), + new DateTime(2022, 01, 1), + new DateTime(2022, 04, 1) + } + }; - var nextTLMDateColumn = new DateColumnVT1(0) + var nextTLMDateColumn = new DateColumnVT1(0) + { + Values = new[] { - Values = new[] - { - new DateTime(2021, 04, 30), - new DateTime(2021, 05, 31), - new DateTime(2021, 06, 30), - new DateTime(2021, 07, 31), - new DateTime(2021, 08, 31), - new DateTime(2021, 09, 30), - new DateTime(2021, 10, 31), - new DateTime(2021, 11, 30), - new DateTime(2021, 12, 31) - } - }; + new DateTime(2021, 04, 30), + new DateTime(2021, 05, 31), + new DateTime(2021, 06, 30), + new DateTime(2021, 07, 31), + new DateTime(2021, 08, 31), + new DateTime(2021, 09, 30), + new DateTime(2021, 10, 31), + new DateTime(2021, 11, 30), + new DateTime(2021, 12, 31) + } + }; - var nextTLMCostColumn = new TLMCostColumn(0, null) + var nextTLMCostColumn = new TLMCostColumn(0, null) + { + Values = new[] { - Values = new[] - { - 200m, - 200m, - 200m, - 200m, - 200m, - 200m, - 200m, - 200m, - 200m, - 200m - } - }; - - - var tlmGrColumn = new TLMGrColumn(count); - tlmGrColumn.ComputeValues(nextDateColumn, nextTLMDateColumn, nextTLMCostColumn); - - - var expected = new[] - { - 1800m, - 0m, - 0m, - 0m, - 200m, - 200m, - 800m, 200m, 200m, 200m, - 0m, - 0m - }; + 200m, + 200m, + 200m, + 200m, + 200m, + 200m, + 200m + } + }; - Assert.Equal(expected.Length, tlmGrColumn.Values.Length); - Assert.Equal(expected, tlmGrColumn.Values, new DecimalArrayComparer()); - } + var tlmGrColumn = new TLMGrColumn(count); + tlmGrColumn.ComputeValues(nextDateColumn, nextTLMDateColumn, nextTLMCostColumn); + + + var expected = new[] + { + 1800m, + 0m, + 0m, + 0m, + 200m, + 200m, + 800m, + 200m, + 200m, + 200m, + 0m, + 0m + }; + + + Assert.Equal(expected.Length, tlmGrColumn.Values.Length); + Assert.Equal(expected, tlmGrColumn.Values, new DecimalArrayComparer()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByIRRAndSumTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByIRRAndSumTests.cs index 8706d35..8eba28d 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByIRRAndSumTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByIRRAndSumTests.cs @@ -6,296 +6,295 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class CalculateByIRRAndSumTests { - public class CalculateByIRRAndSumTests + [Fact] + public void CalculateByIRRAndSumTest1() { - [Fact] - public void CalculateByIRRAndSumTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 0, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 0, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2021, 11, 06), - Next = new DateTime(2021, 11, 28) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 18 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; + Current = new DateTime(2021, 11, 06), + Next = new DateTime(2021, 11, 28) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 18 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var tablePayments = new ChangingValue + var tablePayments = new ChangingValue + { + Current = new[] { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; - - var requestCalculation = new RequestCalculation + }, + Next = new[] { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) + } + } + }; - var res = CalculateManager.CalculateByIRRAndSum(requestCalculation); + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; - Assert.Null(res.Errors); - } + var res = CalculateManager.CalculateByIRRAndSum(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByTotalExpectedTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByTotalExpectedTests.cs index e9f06fb..e3a924f 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByTotalExpectedTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateByTotalExpectedTests.cs @@ -6,296 +6,295 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class CalculateByTotalExpectedTests { - public class CalculateByTotalExpectedTests + [Fact] + public void CalculateByTotalExpectedTest1() { - [Fact] - public void CalculateByTotalExpectedTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 881116.48m, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 881116.48m, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2021, 11, 06), - Next = new DateTime(2021, 11, 06) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 18 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; + Current = new DateTime(2021, 11, 06), + Next = new DateTime(2021, 11, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 18 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var tablePayments = new ChangingValue + var tablePayments = new ChangingValue + { + Current = new[] { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; - - var requestCalculation = new RequestCalculation + }, + Next = new[] { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) + } + } + }; - var res = CalculateManager.CalculateByTotalExpected(requestCalculation); + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; - Assert.Null(res.Errors); - } + var res = CalculateManager.CalculateByTotalExpected(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateDefaultTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateDefaultTests.cs index 5d44a69..daeabe9 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateDefaultTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/CalculateDefaultTests.cs @@ -6,296 +6,295 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class CalculateDefaultTests { - public class CalculateDefaultTests + [Fact] + public void CalculateDefaultTest1() { - [Fact] - public void CalculateDefaultTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 0, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 0, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2021, 11, 06), - Next = new DateTime(2021, 11, 06) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 18 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; + Current = new DateTime(2021, 11, 06), + Next = new DateTime(2021, 11, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 18 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var tablePayments = new ChangingValue + var tablePayments = new ChangingValue + { + Current = new[] { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; - - var requestCalculation = new RequestCalculation + }, + Next = new[] { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) + } + } + }; - var res = CalculateManager.CalculateDefault(requestCalculation); + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; - Assert.Null(res.Errors); - } + var res = CalculateManager.CalculateDefault(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/EarlyRedemption.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/EarlyRedemption.cs index ea63cd5..0de7a61 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/EarlyRedemption.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/EarlyRedemption.cs @@ -6,568 +6,567 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class EarlyRedemptionTests { - public class EarlyRedemptionTests + [Fact] + public void EarlyRedemptionTest1() { - [Fact] - public void EarlyRedemptionTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 881116.48m, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 9, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 881116.48m, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 9, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2022, 03, 06), - Next = new DateTime(2022, 03, 06) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - ChangeRepayment = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 10 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; - - var tablePayments = new ChangingValue + Current = new DateTime(2022, 03, 06), + Next = new DateTime(2022, 03, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + ChangeRepayment = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue { - Current = new[] - { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } - } - }; - - var requestCalculation = new RequestCalculation + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + Current = 18, + Next = 10 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var res = CalculateManager.EarlyRedemption(requestCalculation); - - Assert.Null(res.Errors); - } - - [Fact] - public void EarlyRedemptionTest2() + var tablePayments = new ChangingValue { - var preparedValues = new PreparedValues + Current = new[] { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 881116.48m, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 9, - EditPaymentDate = new ChangingValue + new TablePaymentsRow { - Current = new DateTime(2022, 03, 06), - Next = new DateTime(2022, 03, 06) + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - ChangeRepayment = true, - Repayment = 0.35, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue + new TablePaymentsRow { - Current = 100000000, - Next = 100000000 + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 }, - Nmper = new ChangingValue + new TablePaymentsRow { - Current = 18, - Next = 10 + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 }, - PlPrice = new ChangingValue + new TablePaymentsRow { - Current = 658250m, - Next = 658250m + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 }, - Discount = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue + new TablePaymentsRow { - Current = 4250m, - Next = 0m + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m }, - BaseRegistration = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m }, - TransportTaxGr = new ChangingValue + new TablePaymentsRow { - Current = 0m, - Next = 0m + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; - - var tablePayments = new ChangingValue - { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; + } + }; - var requestCalculation = new RequestCalculation + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; + + var res = CalculateManager.EarlyRedemption(requestCalculation); + + Assert.Null(res.Errors); + } + + [Fact] + public void EarlyRedemptionTest2() + { + var preparedValues = new PreparedValues + { + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 881116.48m, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 9, + EditPaymentDate = new ChangingValue { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + Current = new DateTime(2022, 03, 06), + Next = new DateTime(2022, 03, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + ChangeRepayment = true, + Repayment = 0.35, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 10 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var res = CalculateManager.EarlyRedemption(requestCalculation); + var tablePayments = new ChangingValue + { + Current = new[] + { + new TablePaymentsRow + { + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m + } + } + }; - Assert.Null(res.Errors); - } + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; + + var res = CalculateManager.EarlyRedemption(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithChangingTheTermTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithChangingTheTermTests.cs index f65c09b..9075d53 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithChangingTheTermTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithChangingTheTermTests.cs @@ -6,296 +6,295 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class PERWithChangingTheTermTests { - public class PERWithChangingTheTermTests + [Fact] + public void PERWithChangingTheTermTest1() { - [Fact] - public void PERWithChangingTheTermTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 892376.82m, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 892376.82m, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2021, 11, 06), - Next = new DateTime(2021, 11, 06) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 18 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; + Current = new DateTime(2021, 11, 06), + Next = new DateTime(2021, 11, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 18 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var tablePayments = new ChangingValue + var tablePayments = new ChangingValue + { + Current = new[] { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; - - var requestCalculation = new RequestCalculation + }, + Next = new[] { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) + } + } + }; - var res = CalculateManager.PERWithChangingTheTerm(requestCalculation); + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; - Assert.Null(res.Errors); - } + var res = CalculateManager.PERWithChangingTheTerm(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithoutChangingTheTermTests.cs b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithoutChangingTheTermTests.cs index dabbee2..9e85ca2 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithoutChangingTheTermTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Managers/PERWithoutChangingTheTermTests.cs @@ -6,296 +6,295 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using EvoCalculator.Core.PostCalculation.v1.Managers; using Xunit; -namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers +namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers; + +public class PERWithoutChangingTheTermTests { - public class PERWithoutChangingTheTermTests + [Fact] + public void PERWithoutChangingTheTermTest1() { - [Fact] - public void PERWithoutChangingTheTermTest1() + var preparedValues = new PreparedValues { - var preparedValues = new PreparedValues + DateInput = new DateTime(2021, 07, 06), + DogDate = new DateTime(2021, 07, 06), + Leasing0K = 1, + DeliveryTime = 100000000, + CalcType = 100000000, + TotalExpected = 892376.82m, + InceptDelta = 0, + IRRDelta = 0, + EditPaymentNumber = 5, + EditPaymentDate = new ChangingValue { - DateInput = new DateTime(2021, 07, 06), - DogDate = new DateTime(2021, 07, 06), - Leasing0K = 1, - DeliveryTime = 100000000, - CalcType = 100000000, - TotalExpected = 892376.82m, - InceptDelta = 0, - IRRDelta = 0, - EditPaymentNumber = 5, - EditPaymentDate = new ChangingValue - { - Current = new DateTime(2021, 11, 06), - Next = new DateTime(2021, 11, 06) - }, - ChangeTrackerTLM = false, - MonthOffset = 0, - LastPaymentFix = true, - FuelCardSum = 0m, - LastDayMonth = false, - Repayment = 0.25, - LoanRate = 0.0925, - LoanRatePeriod = 36, - BalanceHolder = new ChangingValue - { - Current = 100000000, - Next = 100000000 - }, - Nmper = new ChangingValue - { - Current = 18, - Next = 18 - }, - PlPrice = new ChangingValue - { - Current = 658250m, - Next = 658250m - }, - Discount = new ChangingValue - { - Current = 0m, - Next = 0m - }, - AgentFLSum = 20915.89m, - AgentULSum = 0m, - BonusManagerLeasing = 5951.57m, - BonusManagerProducts = 0m, - BonusManagerLeasingExtra = 124.04m, - BonusDirector = 1373.44m, - TrackerCost = new ChangingValue - { - Current = 4250m, - Next = 0m - }, - TypeChangeTracker = 100000000, - TrackerCostRemove = 0m, - TLMCost = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeTLM = 100000000, - TLMCostRemove = 0m, - ComissionRub = 0m, - SubsidySum = 0m, - SubsidyPaymentNumber = 0, - TechnicalCardSum = 0m, - TechnicalBaseCost = 0m, - TechnicalRetroBonus = 0m, - Registration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseRegistration = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TypeChangeRegistration = 100000000, - TransportTaxGrYear = new ChangingValue - { - Current = 0m, - Next = 0m - }, - TransportTaxGr = new ChangingValue - { - Current = 0m, - Next = 0m - }, - BaseCost = 662500m, - AcquisitionExpenses = 662500m, - NiAtInception = 333375m - }; + Current = new DateTime(2021, 11, 06), + Next = new DateTime(2021, 11, 06) + }, + ChangeTrackerTLM = false, + MonthOffset = 0, + LastPaymentFix = true, + FuelCardSum = 0m, + LastDayMonth = false, + Repayment = 0.25, + LoanRate = 0.0925, + LoanRatePeriod = 36, + BalanceHolder = new ChangingValue + { + Current = 100000000, + Next = 100000000 + }, + Nmper = new ChangingValue + { + Current = 18, + Next = 18 + }, + PlPrice = new ChangingValue + { + Current = 658250m, + Next = 658250m + }, + Discount = new ChangingValue + { + Current = 0m, + Next = 0m + }, + AgentFLSum = 20915.89m, + AgentULSum = 0m, + BonusManagerLeasing = 5951.57m, + BonusManagerProducts = 0m, + BonusManagerLeasingExtra = 124.04m, + BonusDirector = 1373.44m, + TrackerCost = new ChangingValue + { + Current = 4250m, + Next = 0m + }, + TypeChangeTracker = 100000000, + TrackerCostRemove = 0m, + TLMCost = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeTLM = 100000000, + TLMCostRemove = 0m, + ComissionRub = 0m, + SubsidySum = 0m, + SubsidyPaymentNumber = 0, + TechnicalCardSum = 0m, + TechnicalBaseCost = 0m, + TechnicalRetroBonus = 0m, + Registration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseRegistration = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TypeChangeRegistration = 100000000, + TransportTaxGrYear = new ChangingValue + { + Current = 0m, + Next = 0m + }, + TransportTaxGr = new ChangingValue + { + Current = 0m, + Next = 0m + }, + BaseCost = 662500m, + AcquisitionExpenses = 662500m, + NiAtInception = 333375m + }; - var tablePayments = new ChangingValue + var tablePayments = new ChangingValue + { + Current = new[] { - Current = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 1, - SumPayment = 329125m, - DatePayment = new DateTime(2021, 07, 06), - VATPayment = 65825m, - SumWithVATPayment = 394950m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 2, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 3, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 4, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 6, - SumPayment = 25855.56m, - DatePayment = new DateTime(2021, 12, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 0 - }, - new TablePaymentsRow - { - NumberPayment = 7, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 01, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 329408.95m - }, - new TablePaymentsRow - { - NumberPayment = 8, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 02, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 300661.52m - }, - new TablePaymentsRow - { - NumberPayment = 9, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 03, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 271516.70m - }, - new TablePaymentsRow - { - NumberPayment = 10, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 04, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 242370.78m - }, - new TablePaymentsRow - { - NumberPayment = 11, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 05, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 212963.69m - }, - new TablePaymentsRow - { - NumberPayment = 12, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 06, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 183396.10m - }, - new TablePaymentsRow - { - NumberPayment = 13, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 07, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 153566.84m - }, - new TablePaymentsRow - { - NumberPayment = 14, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 08, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 123547.94m - }, - new TablePaymentsRow - { - NumberPayment = 15, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 09, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 93292.15m - }, - new TablePaymentsRow - { - NumberPayment = 16, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 10, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 62773.90m - }, - new TablePaymentsRow - { - NumberPayment = 17, - SumPayment = 25855.56m, - DatePayment = new DateTime(2022, 11, 06), - VATPayment = 5171.11m, - SumWithVATPayment = 31036.67m, - RepaymentPayment = 32018.47m - }, - new TablePaymentsRow - { - NumberPayment = 18, - SumPayment = 833.33m, - DatePayment = new DateTime(2022, 12, 06), - VATPayment = 166.67m, - SumWithVATPayment = 1000m, - RepaymentPayment = 1000m - } + NumberPayment = 1, + SumPayment = 329125m, + DatePayment = new DateTime(2021, 07, 06), + VATPayment = 65825m, + SumWithVATPayment = 394950m, + RepaymentPayment = 0 }, - Next = new[] + new TablePaymentsRow { - new TablePaymentsRow - { - NumberPayment = 5, - SumPayment = 77566.68m, - DatePayment = new DateTime(2021, 11, 06) - } + NumberPayment = 2, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 3, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 4, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 6, + SumPayment = 25855.56m, + DatePayment = new DateTime(2021, 12, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 0 + }, + new TablePaymentsRow + { + NumberPayment = 7, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 01, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 329408.95m + }, + new TablePaymentsRow + { + NumberPayment = 8, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 02, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 300661.52m + }, + new TablePaymentsRow + { + NumberPayment = 9, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 03, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 271516.70m + }, + new TablePaymentsRow + { + NumberPayment = 10, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 04, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 242370.78m + }, + new TablePaymentsRow + { + NumberPayment = 11, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 05, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 212963.69m + }, + new TablePaymentsRow + { + NumberPayment = 12, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 06, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 183396.10m + }, + new TablePaymentsRow + { + NumberPayment = 13, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 07, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 153566.84m + }, + new TablePaymentsRow + { + NumberPayment = 14, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 08, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 123547.94m + }, + new TablePaymentsRow + { + NumberPayment = 15, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 09, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 93292.15m + }, + new TablePaymentsRow + { + NumberPayment = 16, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 10, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 62773.90m + }, + new TablePaymentsRow + { + NumberPayment = 17, + SumPayment = 25855.56m, + DatePayment = new DateTime(2022, 11, 06), + VATPayment = 5171.11m, + SumWithVATPayment = 31036.67m, + RepaymentPayment = 32018.47m + }, + new TablePaymentsRow + { + NumberPayment = 18, + SumPayment = 833.33m, + DatePayment = new DateTime(2022, 12, 06), + VATPayment = 166.67m, + SumWithVATPayment = 1000m, + RepaymentPayment = 1000m } - }; - - var requestCalculation = new RequestCalculation + }, + Next = new[] { - PreparedValues = preparedValues, - TablePayments = tablePayments - }; + new TablePaymentsRow + { + NumberPayment = 5, + SumPayment = 77566.68m, + DatePayment = new DateTime(2021, 11, 06) + } + } + }; - var res = CalculateManager.PERWithoutChangingTheTerm(requestCalculation); + var requestCalculation = new RequestCalculation + { + PreparedValues = preparedValues, + TablePayments = tablePayments + }; - Assert.Null(res.Errors); - } + var res = CalculateManager.PERWithoutChangingTheTerm(requestCalculation); + + Assert.Null(res.Errors); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/Array/Concat.cs b/EvoCalculator.Core.Tools/Array/Concat.cs index 56e7247..8144104 100644 --- a/EvoCalculator.Core.Tools/Array/Concat.cs +++ b/EvoCalculator.Core.Tools/Array/Concat.cs @@ -1,14 +1,13 @@ using System.Collections.Generic; using System.Linq; -namespace EvoCalculator.Core.Tools.Array +namespace EvoCalculator.Core.Tools.Array; + +public static class Array { - public static class Array + public static T[] Concat(params IEnumerable[] arrays) { - public static T[] Concat(params IEnumerable[] arrays) - { - return arrays.Aggregate(System.Array.Empty(), - (current, arr) => current.Concat(arr).ToArray()); - } + return arrays.Aggregate(System.Array.Empty(), + (current, arr) => current.Concat(arr).ToArray()); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/Check/CheckColumns.cs b/EvoCalculator.Core.Tools/Check/CheckColumns.cs index 68f97d8..fde1631 100644 --- a/EvoCalculator.Core.Tools/Check/CheckColumns.cs +++ b/EvoCalculator.Core.Tools/Check/CheckColumns.cs @@ -2,21 +2,20 @@ using System.Collections.Generic; using System.Linq; -namespace EvoCalculator.Core.Tools.Check -{ - public class CheckTools - { - public void CheckColumnForLessThanZeroValue(IEnumerable Values, - string errorMsg = - "Невозможно осуществить расчет графика. При заданных параметрах получаются отрицательные значения") - { - if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new Exception(errorMsg); - } +namespace EvoCalculator.Core.Tools.Check; - public void CheckColumnForZeroValue(IEnumerable Values, string errorMsg = - "Невозможно осуществить расчет графика. При заданных параметрах получаются нулевые значения платежей") - { - if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new Exception(errorMsg); - } +public class CheckTools +{ + public void CheckColumnForLessThanZeroValue(IEnumerable Values, + string errorMsg = + "Невозможно осуществить расчет графика. При заданных параметрах получаются отрицательные значения") + { + if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new Exception(errorMsg); + } + + public void CheckColumnForZeroValue(IEnumerable Values, string errorMsg = + "Невозможно осуществить расчет графика. При заданных параметрах получаются нулевые значения платежей") + { + if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new Exception(errorMsg); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/Dates.cs b/EvoCalculator.Core.Tools/Dates.cs index 68a97b8..a39c818 100644 --- a/EvoCalculator.Core.Tools/Dates.cs +++ b/EvoCalculator.Core.Tools/Dates.cs @@ -1,13 +1,12 @@ using System; -namespace EvoCalculator.Core.Tools +namespace EvoCalculator.Core.Tools; + +public static class Dates { - public static class Dates + public static int GetMonthDifference(DateTime startDate, DateTime endDate) { - public static int GetMonthDifference(DateTime startDate, DateTime endDate) - { - var monthsApart = 12 * (startDate.Year - endDate.Year) + startDate.Month - endDate.Month; - return Math.Abs(monthsApart); - } + var monthsApart = 12 * (startDate.Year - endDate.Year) + startDate.Month - endDate.Month; + return Math.Abs(monthsApart); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Create.cs b/EvoCalculator.Core.Tools/GroupColumns/Create.cs index 77ae8c0..fbc6104 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Create.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Create.cs @@ -2,16 +2,15 @@ using System.Collections.Generic; using System.Linq; -namespace EvoCalculator.Core.Tools.GroupColumns +namespace EvoCalculator.Core.Tools.GroupColumns; + +public static partial class GroupColumns { - public static partial class GroupColumns + public static List> Create(IEnumerable dates, + IEnumerable values) { - public static List> Create(IEnumerable dates, - IEnumerable values) - { - return dates - .Select((x, i) => new KeyValuePair(x, values.ElementAtOrDefault(i))) - .ToList(); - } + return dates + .Select((x, i) => new KeyValuePair(x, values.ElementAtOrDefault(i))) + .ToList(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Merge.cs b/EvoCalculator.Core.Tools/GroupColumns/Merge.cs index b8830aa..28f0441 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Merge.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Merge.cs @@ -2,21 +2,20 @@ using System.Collections.Generic; using System.Linq; -namespace EvoCalculator.Core.Tools.GroupColumns +namespace EvoCalculator.Core.Tools.GroupColumns; + +public static partial class GroupColumns { - public static partial class GroupColumns + public static List> + Merge(params List>[] pairs) { - public static List> - Merge(params List>[] pairs) + return pairs.Length switch { - return pairs.Length switch - { - > 1 => pairs - .SelectMany(pair => pair) - .Select((x, i) => new KeyValuePair(x.Key, x.Value)) - .ToList(), - _ => pairs.FirstOrDefault() - }; - } + > 1 => pairs + .SelectMany(pair => pair) + .Select((x, i) => new KeyValuePair(x.Key, x.Value)) + .ToList(), + _ => pairs.FirstOrDefault() + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Models/GroupColumn.cs b/EvoCalculator.Core.Tools/GroupColumns/Models/GroupColumn.cs index 17b1424..6e53706 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Models/GroupColumn.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Models/GroupColumn.cs @@ -1,10 +1,9 @@ using System; -namespace EvoCalculator.Core.Tools.GroupColumns.Models +namespace EvoCalculator.Core.Tools.GroupColumns.Models; + +public class GroupColumn { - public class GroupColumn - { - public DateTime[] Dates; - public decimal[] Values; - } + public DateTime[] Dates; + public decimal[] Values; } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Models/SumRules.cs b/EvoCalculator.Core.Tools/GroupColumns/Models/SumRules.cs index e6d2a29..a2f29cb 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Models/SumRules.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Models/SumRules.cs @@ -1,33 +1,32 @@ -namespace EvoCalculator.Core.Tools.GroupColumns.Models +namespace EvoCalculator.Core.Tools.GroupColumns.Models; + +public enum DayRule { - public enum DayRule - { - Min = 100000000, - Max = 100000001, - MinInGroup = 100000002, - MaxInGroup = 100000003 - } + Min = 100000000, + Max = 100000001, + MinInGroup = 100000002, + MaxInGroup = 100000003 +} - public enum ValueRule - { - Min, - Max, - Average, - Sum - } +public enum ValueRule +{ + Min, + Max, + Average, + Sum +} - public enum GroupByRule - { - Day, - Month, - Year - } +public enum GroupByRule +{ + Day, + Month, + Year +} - public class SumRules - { - public int Day { get; set; } - public ValueRule Value { get; set; } +public class SumRules +{ + public int Day { get; set; } + public ValueRule Value { get; set; } - public GroupByRule GroupBy { get; set; } - } + public GroupByRule GroupBy { get; set; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Split.cs b/EvoCalculator.Core.Tools/GroupColumns/Split.cs index e4a0a7b..f6db2d8 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Split.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Split.cs @@ -3,16 +3,15 @@ using System.Collections.Generic; using System.Linq; using EvoCalculator.Core.Tools.GroupColumns.Models; -namespace EvoCalculator.Core.Tools.GroupColumns +namespace EvoCalculator.Core.Tools.GroupColumns; + +public static partial class GroupColumns { - public static partial class GroupColumns + public static GroupColumn Split(IEnumerable> groupColumn) { - public static GroupColumn Split(IEnumerable> groupColumn) + return new() { - return new() - { - Dates = groupColumn.Select(x => x.Key).ToArray(), Values = groupColumn.Select(x => x.Value).ToArray() - }; - } + Dates = groupColumn.Select(x => x.Key).ToArray(), Values = groupColumn.Select(x => x.Value).ToArray() + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/GroupColumns/Sum.cs b/EvoCalculator.Core.Tools/GroupColumns/Sum.cs index c653089..2753dc2 100644 --- a/EvoCalculator.Core.Tools/GroupColumns/Sum.cs +++ b/EvoCalculator.Core.Tools/GroupColumns/Sum.cs @@ -3,124 +3,123 @@ using System.Collections.Generic; using System.Linq; using EvoCalculator.Core.Tools.GroupColumns.Models; -namespace EvoCalculator.Core.Tools.GroupColumns +namespace EvoCalculator.Core.Tools.GroupColumns; + +public class GroupDate { - public class GroupDate + public int? Day { get; set; } + public int Month { get; set; } + public int Year { get; set; } +} + +public static partial class GroupColumns +{ + public static List> SumToMainGroupWithCompression( + List> mainGroupColumn, + params List>[] groupColumns + ) { - public int? Day { get; set; } - public int Month { get; set; } - public int Year { get; set; } + var mergedGroupColumns = Merge(groupColumns); + + return mainGroupColumn.Select((mainGroupPair, i) => + { + var prevMainGroupDate = mainGroupColumn.ElementAtOrDefault(i - 1).Key; + var currentMainGroupDate = mainGroupColumn.ElementAt(i).Key; + + var newValue = mergedGroupColumns + .Select(x => + // Для сравнения дат + new KeyValuePair(new DateTime(x.Key.Year, x.Key.Month, 1), x.Value)) + .Where(x => x.Key > prevMainGroupDate.Date && x.Key <= currentMainGroupDate.Date) + .Sum(pair => pair.Value); + + return new KeyValuePair(mainGroupPair.Key, newValue); + }).ToList(); } - public static partial class GroupColumns + public static List> SumToMainGroup( + List> mainGroupColumn, + params List>[] groupColumns) { - public static List> SumToMainGroupWithCompression( - List> mainGroupColumn, - params List>[] groupColumns - ) + return mainGroupColumn.Select(mainGroupPair => { - var mergedGroupColumns = Merge(groupColumns); + var secondarySum = Merge(groupColumns) + .Where(x => x.Key >= mainGroupPair.Key) + .Sum(x => x.Value); - return mainGroupColumn.Select((mainGroupPair, i) => - { - var prevMainGroupDate = mainGroupColumn.ElementAtOrDefault(i - 1).Key; - var currentMainGroupDate = mainGroupColumn.ElementAt(i).Key; - var newValue = mergedGroupColumns - .Select(x => - // Для сравнения дат - new KeyValuePair(new DateTime(x.Key.Year, x.Key.Month, 1), x.Value)) - .Where(x => x.Key > prevMainGroupDate.Date && x.Key <= currentMainGroupDate.Date) - .Sum(pair => pair.Value); + return new KeyValuePair(mainGroupPair.Key, mainGroupPair.Value + secondarySum); + }).ToList(); + } - return new KeyValuePair(mainGroupPair.Key, newValue); - }).ToList(); - } - - public static List> SumToMainGroup( - List> mainGroupColumn, - params List>[] groupColumns) + public static List> SumToMainGroup(SumRules sumRules, + List> mainGroupColumn, + params List>[] groupColumns) + { + var groupedColumns = sumRules.GroupBy switch { - return mainGroupColumn.Select(mainGroupPair => - { - var secondarySum = Merge(groupColumns) - .Where(x => x.Key >= mainGroupPair.Key) - .Sum(x => x.Value); - - - return new KeyValuePair(mainGroupPair.Key, mainGroupPair.Value + secondarySum); - }).ToList(); - } - - public static List> SumToMainGroup(SumRules sumRules, - List> mainGroupColumn, - params List>[] groupColumns) - { - var groupedColumns = sumRules.GroupBy switch - { - GroupByRule.Day => Merge(groupColumns) - .GroupBy(x => new GroupDate - { - Day = x.Key.Day, Month = x.Key.Month, Year = x.Key.Year - }), - _ => Merge(groupColumns) - .GroupBy(x => new GroupDate - { - Month = x.Key.Month, Year = x.Key.Year - }) - }; - - - return mainGroupColumn.Select((mainGroupPair, _) => - { - var secondarySum = groupedColumns - .Where(x => sumRules.GroupBy switch - { - GroupByRule.Day => x.Key.Day == mainGroupPair.Key.Day - && x.Key.Month == mainGroupPair.Key.Month - && x.Key.Year == mainGroupPair.Key.Year, - _ => x.Key.Month == mainGroupPair.Key.Month - && x.Key.Year == mainGroupPair.Key.Year - }) - .SelectMany(g => g) - .Sum(x => x.Value); - - return new KeyValuePair(mainGroupPair.Key, mainGroupPair.Value + secondarySum); - }).ToList(); - } - - public static List> Sum(SumRules sumRules, - params List>[] groupColumns) - { - var groupedColumns = Merge(groupColumns) - .GroupBy(x => new {x.Key.Month, x.Key.Year}); - - return groupedColumns.Select((group, i) => + GroupByRule.Day => Merge(groupColumns) + .GroupBy(x => new GroupDate { - var dates = group.Select(pair => pair.Key); - var day = sumRules.Day switch - { - (int) DayRule.Min => 1, - (int) DayRule.Max => DateTime.DaysInMonth(group.Key.Year, group.Key.Month), - (int) DayRule.MinInGroup => dates.Min(date => date.Day), - (int) DayRule.MaxInGroup => dates.Max(date => date.Day), - _ => sumRules.Day - }; - var date = new DateTime(group.Key.Year, group.Key.Month, day); - - var values = group.Select(pair => pair.Value); - var value = sumRules.Value switch - { - ValueRule.Min => values.Min(), - ValueRule.Max => values.Max(), - ValueRule.Average => values.Average(), - _ => values.Sum(x => x) - }; - - return new KeyValuePair(date, value); + Day = x.Key.Day, Month = x.Key.Month, Year = x.Key.Year + }), + _ => Merge(groupColumns) + .GroupBy(x => new GroupDate + { + Month = x.Key.Month, Year = x.Key.Year }) - .OrderBy(x => x.Key) - .ToList(); - } + }; + + + return mainGroupColumn.Select((mainGroupPair, _) => + { + var secondarySum = groupedColumns + .Where(x => sumRules.GroupBy switch + { + GroupByRule.Day => x.Key.Day == mainGroupPair.Key.Day + && x.Key.Month == mainGroupPair.Key.Month + && x.Key.Year == mainGroupPair.Key.Year, + _ => x.Key.Month == mainGroupPair.Key.Month + && x.Key.Year == mainGroupPair.Key.Year + }) + .SelectMany(g => g) + .Sum(x => x.Value); + + return new KeyValuePair(mainGroupPair.Key, mainGroupPair.Value + secondarySum); + }).ToList(); + } + + public static List> Sum(SumRules sumRules, + params List>[] groupColumns) + { + var groupedColumns = Merge(groupColumns) + .GroupBy(x => new {x.Key.Month, x.Key.Year}); + + return groupedColumns.Select((group, i) => + { + var dates = group.Select(pair => pair.Key); + var day = sumRules.Day switch + { + (int) DayRule.Min => 1, + (int) DayRule.Max => DateTime.DaysInMonth(group.Key.Year, group.Key.Month), + (int) DayRule.MinInGroup => dates.Min(date => date.Day), + (int) DayRule.MaxInGroup => dates.Max(date => date.Day), + _ => sumRules.Day + }; + var date = new DateTime(group.Key.Year, group.Key.Month, day); + + var values = group.Select(pair => pair.Value); + var value = sumRules.Value switch + { + ValueRule.Min => values.Min(), + ValueRule.Max => values.Max(), + ValueRule.Average => values.Average(), + _ => values.Sum(x => x) + }; + + return new KeyValuePair(date, value); + }) + .OrderBy(x => x.Key) + .ToList(); } } \ No newline at end of file diff --git a/EvoCalculator.Core.Tools/Validation/ValidatePreparedValues.cs b/EvoCalculator.Core.Tools/Validation/ValidatePreparedValues.cs index 5cbebb0..06de3ad 100644 --- a/EvoCalculator.Core.Tools/Validation/ValidatePreparedValues.cs +++ b/EvoCalculator.Core.Tools/Validation/ValidatePreparedValues.cs @@ -1,33 +1,32 @@ using System.Collections.Generic; using EvoCalculator.Core.Models.Calculation.Models.Prepared; -namespace EvoCalculator.Core.Tools.Validation +namespace EvoCalculator.Core.Tools.Validation; + +public class Validation { - public class Validation + public List ValidatePreparedValues(PreparedValues preparedValues) { - public List ValidatePreparedValues(PreparedValues preparedValues) - { - var errors = new List(); + var errors = new List(); - if (preparedValues.AcceptSum <= 0) - errors.Add("Стоимость ПЛ с учетом скидки не указана или меньше или равна 0"); + if (preparedValues.AcceptSum <= 0) + errors.Add("Стоимость ПЛ с учетом скидки не указана или меньше или равна 0"); - if (preparedValues.Nmper <= 0) errors.Add("Некорректно указан Срок лизинга"); + if (preparedValues.Nmper <= 0) errors.Add("Некорректно указан Срок лизинга"); - if (preparedValues.IrrExpected <= 0 && preparedValues.Discount <= 0 && preparedValues.ComissionRub <= 0) + if (preparedValues.IrrExpected <= 0 && preparedValues.Discount <= 0 && preparedValues.ComissionRub <= 0) + errors.Add( + "Невозможно посчитать график с IRR=0, необходимо указать или Скидку поставщика или Комиссию"); + + if (preparedValues.PaymentDateNew < preparedValues.DogDate) + errors.Add( + "Некорректно указана Дата второго платежа, она не может быть раньше Даты заключения ДЛ"); + + if (preparedValues.PaymentDateNew == null) + if (preparedValues.FirstPaymentSum / preparedValues.AcceptSum >= 0.500001m) errors.Add( - "Невозможно посчитать график с IRR=0, необходимо указать или Скидку поставщика или Комиссию"); + "Первый платеж по графику более 50% от стоимости ПЛ с учетом скидки. Необходимо уменьшить первый платеж"); - if (preparedValues.PaymentDateNew < preparedValues.DogDate) - errors.Add( - "Некорректно указана Дата второго платежа, она не может быть раньше Даты заключения ДЛ"); - - if (preparedValues.PaymentDateNew == null) - if (preparedValues.FirstPaymentSum / preparedValues.AcceptSum >= 0.500001m) - errors.Add( - "Первый платеж по графику более 50% от стоимости ПЛ с учетом скидки. Необходимо уменьшить первый платеж"); - - return errors; - } + return errors; } } \ No newline at end of file diff --git a/EvoCalculator.Core/Controllers/Calculation/CalculationController.cs b/EvoCalculator.Core/Controllers/Calculation/CalculationController.cs index 742bd7c..e152f35 100644 --- a/EvoCalculator.Core/Controllers/Calculation/CalculationController.cs +++ b/EvoCalculator.Core/Controllers/Calculation/CalculationController.cs @@ -3,25 +3,24 @@ using EvoCalculator.Core.Models.Calculation.Models.Manager; using EvoCalculator.Core.Models.Calculation.Models.Request; using Microsoft.AspNetCore.Mvc; -namespace EvoCalculator.Core.Controllers.Calculation -{ - [ApiController] - [Route("api/[controller]")] - public class CalculationController : Controller - { - [HttpPost("[action]")] - public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) - { - var CalcDate = requestCalculation.preparedValues.CalcDate; - var envCalculationV2Date = Environment.GetEnvironmentVariable("CALCULATION_V2_DATE"); - var calculationV2Date = DateTime.Parse(envCalculationV2Date); +namespace EvoCalculator.Core.Controllers.Calculation; - return CalcDate switch - { - var calcDate when calcDate >= calculationV2Date => new v2.CalculationController().Calculate( - requestCalculation), - _ => new v1.CalculationController().Calculate(requestCalculation) - }; - } +[ApiController] +[Route("api/[controller]")] +public class CalculationController : Controller +{ + [HttpPost("[action]")] + public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) + { + var CalcDate = requestCalculation.preparedValues.CalcDate; + var envCalculationV2Date = Environment.GetEnvironmentVariable("CALCULATION_V2_DATE"); + var calculationV2Date = DateTime.Parse(envCalculationV2Date); + + return CalcDate switch + { + var calcDate when calcDate >= calculationV2Date => new v2.CalculationController().Calculate( + requestCalculation), + _ => new v1.CalculationController().Calculate(requestCalculation) + }; } } \ No newline at end of file diff --git a/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs b/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs index 9545a87..164912f 100644 --- a/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs +++ b/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs @@ -5,33 +5,32 @@ using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; -namespace EvoCalculator.Core.Controllers.Calculation.v1 +namespace EvoCalculator.Core.Controllers.Calculation.v1; + +[ApiExplorerSettings(IgnoreApi = true)] +[ApiController] +[ApiVersion("1.0")] +[Route("api/v{version:apiVersion}/[controller]")] +public class CalculationController : Controller { - [ApiExplorerSettings(IgnoreApi = true)] - [ApiController] - [ApiVersion("1.0")] - [Route("api/v{version:apiVersion}/[controller]")] - public class CalculationController : Controller + [HttpPost("[action]")] + public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) { - [HttpPost("[action]")] - public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) + var result = requestCalculation.preparedValues.CalcType switch { - var result = requestCalculation.preparedValues.CalcType switch + 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), + _ => CalculateManager.CalculateDefault(requestCalculation) + }; + + var hasErrors = result.Errors is {Count: > 0}; + var statusCode = hasErrors ? 500 : 200; + + return StatusCode(statusCode, JsonConvert.SerializeObject( + result, + new JsonSerializerSettings { - 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), - _ => CalculateManager.CalculateDefault(requestCalculation) - }; - - var hasErrors = result.Errors is {Count: > 0}; - var statusCode = hasErrors ? 500 : 200; - - return StatusCode(statusCode, JsonConvert.SerializeObject( - result, - new JsonSerializerSettings - { - Formatting = Formatting.Indented, - ContractResolver = new CamelCasePropertyNamesContractResolver() - })); - } + Formatting = Formatting.Indented, + ContractResolver = new CamelCasePropertyNamesContractResolver() + })); } } \ No newline at end of file diff --git a/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs b/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs index e4a0b56..6201834 100644 --- a/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs +++ b/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs @@ -5,33 +5,32 @@ using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; -namespace EvoCalculator.Core.Controllers.Calculation.v2 +namespace EvoCalculator.Core.Controllers.Calculation.v2; + +[ApiExplorerSettings(IgnoreApi = true)] +[ApiController] +[ApiVersion("2.0")] +[Route("api/v{version:apiVersion}/[controller]")] +public class CalculationController : Controller { - [ApiExplorerSettings(IgnoreApi = true)] - [ApiController] - [ApiVersion("2.0")] - [Route("api/v{version:apiVersion}/[controller]")] - public class CalculationController : Controller + [HttpPost("[action]")] + public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) { - [HttpPost("[action]")] - public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) + var result = requestCalculation.preparedValues.CalcType switch { - var result = requestCalculation.preparedValues.CalcType switch + 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), + _ => CalculateManager.CalculateDefault(requestCalculation) + }; + + var hasErrors = result.Errors is {Count: > 0}; + var statusCode = hasErrors ? 500 : 200; + + return StatusCode(statusCode, JsonConvert.SerializeObject( + result, + new JsonSerializerSettings { - 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), - _ => CalculateManager.CalculateDefault(requestCalculation) - }; - - var hasErrors = result.Errors is {Count: > 0}; - var statusCode = hasErrors ? 500 : 200; - - return StatusCode(statusCode, JsonConvert.SerializeObject( - result, - new JsonSerializerSettings - { - Formatting = Formatting.Indented, - ContractResolver = new CamelCasePropertyNamesContractResolver() - })); - } + Formatting = Formatting.Indented, + ContractResolver = new CamelCasePropertyNamesContractResolver() + })); } } \ No newline at end of file diff --git a/EvoCalculator.Core/Controllers/PostCalculation/PostCalculationController.cs b/EvoCalculator.Core/Controllers/PostCalculation/PostCalculationController.cs index d3cab80..f7ef07f 100644 --- a/EvoCalculator.Core/Controllers/PostCalculation/PostCalculationController.cs +++ b/EvoCalculator.Core/Controllers/PostCalculation/PostCalculationController.cs @@ -2,16 +2,15 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Request; using Microsoft.AspNetCore.Mvc; -namespace EvoCalculator.Core.Controllers.PostCalculation +namespace EvoCalculator.Core.Controllers.PostCalculation; + +[ApiController] +[Route("api/[controller]")] +public class PostCalculationController { - [ApiController] - [Route("api/[controller]")] - public class PostCalculationController + [HttpPost("[action]")] + public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) { - [HttpPost("[action]")] - public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) - { - return new v1.PostCalculationController().Calculate(requestCalculation); - } + return new v1.PostCalculationController().Calculate(requestCalculation); } } \ No newline at end of file diff --git a/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs b/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs index 0b00061..c098840 100644 --- a/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs +++ b/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs @@ -5,40 +5,39 @@ using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Serialization; -namespace EvoCalculator.Core.Controllers.PostCalculation.v1 +namespace EvoCalculator.Core.Controllers.PostCalculation.v1; + +[ApiExplorerSettings(IgnoreApi = true)] +[ApiController] +[ApiVersion("1.0")] +[Route("api/v{version:apiVersion}/[controller]")] +public class PostCalculationController : Controller { - [ApiExplorerSettings(IgnoreApi = true)] - [ApiController] - [ApiVersion("1.0")] - [Route("api/v{version:apiVersion}/[controller]")] - public class PostCalculationController : Controller + [HttpPost("[action]")] + public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) { - [HttpPost("[action]")] - public ActionResult Calculate([FromBody] RequestCalculation requestCalculation) + // TEMP + requestCalculation.TableInsurance.Next = requestCalculation.TableInsurance.Current; + + var result = requestCalculation.PreparedValues.CalcType switch { - // TEMP - requestCalculation.TableInsurance.Next = requestCalculation.TableInsurance.Current; + 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), + 100000003 => CalculateManager.EarlyRedemption(requestCalculation), + 100000004 => CalculateManager.PERWithoutChangingTheTerm(requestCalculation), + 100000005 => CalculateManager.PERWithChangingTheTerm(requestCalculation), + 100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation), + _ => CalculateManager.CalculateDefault(requestCalculation) + }; - var result = requestCalculation.PreparedValues.CalcType switch + var hasErrors = result.Errors is {Count: > 0}; + var statusCode = hasErrors ? 500 : 200; + + return StatusCode(statusCode, JsonConvert.SerializeObject( + result, + new JsonSerializerSettings { - 100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation), - 100000003 => CalculateManager.EarlyRedemption(requestCalculation), - 100000004 => CalculateManager.PERWithoutChangingTheTerm(requestCalculation), - 100000005 => CalculateManager.PERWithChangingTheTerm(requestCalculation), - 100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation), - _ => CalculateManager.CalculateDefault(requestCalculation) - }; - - var hasErrors = result.Errors is {Count: > 0}; - var statusCode = hasErrors ? 500 : 200; - - return StatusCode(statusCode, JsonConvert.SerializeObject( - result, - new JsonSerializerSettings - { - Formatting = Formatting.Indented, - ContractResolver = new CamelCasePropertyNamesContractResolver() - })); - } + Formatting = Formatting.Indented, + ContractResolver = new CamelCasePropertyNamesContractResolver() + })); } } \ No newline at end of file diff --git a/EvoCalculator.Core/Program.cs b/EvoCalculator.Core/Program.cs index 9f5c73e..818c898 100644 --- a/EvoCalculator.Core/Program.cs +++ b/EvoCalculator.Core/Program.cs @@ -1,23 +1,22 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; -namespace EvoCalculator.Core -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } +namespace EvoCalculator.Core; - public static IHostBuilder CreateHostBuilder(string[] args) - { - return Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - webBuilder.UseKestrel(options => { options.ListenAnyIP(5000); }); - }); - } +public class Program +{ + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) + { + return Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + webBuilder.UseKestrel(options => { options.ListenAnyIP(5000); }); + }); } } \ No newline at end of file diff --git a/EvoCalculator.Core/Startup.cs b/EvoCalculator.Core/Startup.cs index 94f6401..9e43c1c 100644 --- a/EvoCalculator.Core/Startup.cs +++ b/EvoCalculator.Core/Startup.cs @@ -5,46 +5,45 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -namespace EvoCalculator.Core +namespace EvoCalculator.Core; + +public class Startup { - public class Startup + private const string DocsName = "EvoCalculator.Core API"; + + public Startup(IConfiguration configuration) { - private const string DocsName = "EvoCalculator.Core API"; + Configuration = configuration; + } - public Startup(IConfiguration configuration) + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddControllers(); + + services.AddApiVersioning(opt => { - Configuration = configuration; - } + opt.DefaultApiVersion = new ApiVersion(1, 0); + opt.AssumeDefaultVersionWhenUnspecified = true; + opt.ReportApiVersions = true; + }); - public IConfiguration Configuration { get; } + services.AddSwaggerDocument(s => s.Title = DocsName); + } - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - services.AddControllers(); + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); - services.AddApiVersioning(opt => - { - opt.DefaultApiVersion = new ApiVersion(1, 0); - opt.AssumeDefaultVersionWhenUnspecified = true; - opt.ReportApiVersions = true; - }); + app.UseStaticFiles(); - services.AddSwaggerDocument(s => s.Title = DocsName); - } + app.UseOpenApi(); + app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; }); + app.UseRouting(); - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) app.UseDeveloperExceptionPage(); - - app.UseStaticFiles(); - - app.UseOpenApi(); - app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; }); - app.UseRouting(); - - app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); - } + app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } } \ No newline at end of file