diff --git a/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs b/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs index f5a82b2..3e5d770 100644 --- a/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs +++ b/EvoCalculator.Core.Base/Columns/BaseColumnWithSum.cs @@ -8,6 +8,10 @@ public class BaseColumnWithSum : BaseColumn { } + protected BaseColumnWithSum() + { + } + public decimal Sum { get { return Values.Skip(1).Sum(x => x); } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs index 908f1b8..21575bb 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowNSIBColumn.cs @@ -8,7 +8,7 @@ public class CashflowNSIBColumn : BaseColumn { } - public void ComputeValues(NSIBBruttoGrColumn nextNsibBruttoGrColumn, RevenueColumn nextRevenueColumn) + public void ComputeValues(BaseColumn nextNsibBruttoGrColumn, BaseColumn nextRevenueColumn) { for (var i = 0; i < nextNsibBruttoGrColumn.Values.Length; i++) Values[i] = nextNsibBruttoGrColumn.Values[i] - nextRevenueColumn.Values[i]; diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/BaseNSIBBruttoGrColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/BaseNSIBBruttoGrColumn.cs new file mode 100644 index 0000000..2f0090a --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/BaseNSIBBruttoGrColumn.cs @@ -0,0 +1,20 @@ +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 BaseNSIBBruttoGrColumn : BaseColumnWithSum +{ + protected readonly TablePaymentsRow[] _currentTablePayments; + protected readonly BaseColumn _nextSumColumn; + protected readonly PreparedValues _preparedValues; + + public BaseNSIBBruttoGrColumn(int count, PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments, + BaseColumn nextSumColumn) : base(count) + { + _preparedValues = preparedValues; + _currentTablePayments = currentTablePayments; + _nextSumColumn = nextSumColumn; + } +} \ 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/NSIBBruttoGrColumnVT1.cs similarity index 78% rename from EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs rename to EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/NSIBBruttoGrColumnVT1.cs index 27c7f83..cdbbc3c 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/NSIBBruttoGrColumnVT1.cs @@ -6,21 +6,13 @@ using TridentGoalSeek; namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; -public class NSIBBruttoGrColumn : BaseColumnWithSum, IGoalSeekAlgorithm +public class NSIBBruttoGrColumnVT1 : BaseNSIBBruttoGrColumn, 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) + public NSIBBruttoGrColumnVT1(int count, PreparedValues preparedValues, TablePaymentsRow[] currentTablePayments, + BaseColumn nextSumColumn) : base(count, preparedValues, currentTablePayments, nextSumColumn) { - _preparedValues = preparedValues; - _currentTablePayments = currentTablePayments; - _nextSumColumn = nextSumColumn; _ratios = new double[count]; ComputeRatios(); } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/NSIBBruttoGrColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/NSIBBruttoGrColumnVT2.cs new file mode 100644 index 0000000..3aa60b9 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBBruttoGrColumn/NSIBBruttoGrColumnVT2.cs @@ -0,0 +1,16 @@ +using System.Linq; +using EvoCalculator.Core.Base.Columns; +using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class NSIBBruttoGrColumnVT2 : BaseColumnWithSum +{ + public void ComputeValues(TablePaymentsRow[] currentTablePayments) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.NSIBBruttoPayment)).ToArray(); + + Values[0] = Sum; + } +} \ 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/NSIBExpensesColumnVT1.cs similarity index 90% rename from EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs rename to EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn/NSIBExpensesColumnVT1.cs index cb98861..aea0ce1 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn/NSIBExpensesColumnVT1.cs @@ -5,9 +5,9 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; -public class NSIBExpensesColumn : BaseColumnWithSum +public class NSIBExpensesColumnVT1 : BaseColumnWithSum { - public NSIBExpensesColumn(int count) : base(count) + public NSIBExpensesColumnVT1(int count) : base(count) { } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn/NSIBExpensesColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn/NSIBExpensesColumnVT2.cs new file mode 100644 index 0000000..91f9fe4 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/NSIBExpensesColumn/NSIBExpensesColumnVT2.cs @@ -0,0 +1,14 @@ +using System.Linq; +using EvoCalculator.Core.Base.Columns; +using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class NSIBExpensesColumnVT2 : BaseColumnWithSum +{ + public void ComputeValues(TablePaymentsRow[] currentTablePayments) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.NSIBExpensesPayment)).ToArray(); + } +} \ 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/RevenueColumnVT1.cs similarity index 90% rename from EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs rename to EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn/RevenueColumnVT1.cs index b906384..f82f247 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn/RevenueColumnVT1.cs @@ -5,9 +5,9 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; -public class RevenueColumn : BaseColumn +public class RevenueColumnVT1 : BaseColumn { - public RevenueColumn(int count) : base(count) + public RevenueColumnVT1(int count) : base(count) { } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn/RevenueColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn/RevenueColumnVT2.cs new file mode 100644 index 0000000..48a5de7 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/RevenueColumn/RevenueColumnVT2.cs @@ -0,0 +1,14 @@ +using System.Linq; +using EvoCalculator.Core.Base.Columns; +using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class RevenueColumnVT2 : BaseColumn +{ + public void ComputeValues(TablePaymentsRow[] currentTablePayments) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.NSIBRevenuePayment)).ToArray(); + } +} \ 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 8f09e43..fe487d4 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs @@ -59,6 +59,7 @@ public class BaseSumColumn : BaseColumnWithNominal { Values[0] = -(_nextValues.BaseCost + _preparedValues.FuelCardSum); Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; + for (var i = 2; i < Values.Length - 1; i++) if (i < _preparedValues.EditPaymentNumber) { diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT4.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT4.cs new file mode 100644 index 0000000..82db990 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/SumColumnVT4.cs @@ -0,0 +1,25 @@ +using System; +using System.Linq; +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 SumColumnVT4 : BaseSumColumn +{ + public SumColumnVT4(int count, BaseColumn dateTempColumn, PreparedValues preparedValues, + NextValues nextValues, TablePaymentsRow[] currentTablePayments, TablePaymentsRow[] nextTablePayments) : base( + count, dateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments) + { + } + + public void ComputeValues() + { + Values = new decimal[] {0} + .Concat(_currentTablePayments.Select(x => x.SumPayment)).ToArray(); + + Values[1] = _currentTablePayments[0].SumPayment + _preparedValues.SubsidySum; + Values[0] = -(_nextValues.BaseCost + _preparedValues.FuelCardSum); + } +} \ No newline at end of file diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/BaseSumRepaymentColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/BaseSumRepaymentColumn.cs new file mode 100644 index 0000000..30cc1e3 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/BaseSumRepaymentColumn.cs @@ -0,0 +1,13 @@ +using EvoCalculator.Core.Base.Columns; +using EvoCalculator.Core.Tools.Check; + +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class BaseSumRepaymentColumn : BaseColumn +{ + 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/SumRepaymentColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/SumRepaymentColumnVT1.cs similarity index 92% rename from EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs rename to EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/SumRepaymentColumnVT1.cs index 7dfa1f2..aa31b55 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/SumRepaymentColumnVT1.cs @@ -10,7 +10,7 @@ using EvoCalculator.Core.Tools.GroupColumns.Models; namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; -public class SumRepaymentColumn : BaseColumn +public class SumRepaymentColumnVT1 : BaseSumRepaymentColumn { public void ComputeValues(PreparedValues preparedValues , TablePaymentsRow[] currentTablePayments @@ -53,10 +53,4 @@ public class SumRepaymentColumn : BaseColumn new[] {nextSumWithVatColumn.Values[^1]} ); } - - 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/SumRepaymentColumn/SumRepaymentColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/SumRepaymentColumnVT2.cs new file mode 100644 index 0000000..dfc1130 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumRepaymentColumn/SumRepaymentColumnVT2.cs @@ -0,0 +1,13 @@ +using System.Linq; +using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables; + +namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; + +public class SumRepaymentColumnVT2 : BaseSumRepaymentColumn +{ + public void ComputeValues(TablePaymentsRow[] currentTablePayments) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.RepaymentPayment)).ToArray(); + } +} \ 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 7b158c8..d708fe9 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/BaseSumWithVATColumn.cs @@ -11,17 +11,17 @@ public class BaseSumWithVATColumn : BaseColumnWithSum protected Constants.Calculation _constants; protected TablePaymentsRow[] _currentTablePayments; protected BaseSumColumn _nextSumColumn; - protected VATColumn _nextVATColumn; + protected VATColumnVT1 _nextVatColumnVt1; protected PreparedValues _preparedValues; public BaseSumWithVATColumn(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, - TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, + TablePaymentsRow[] currentTablePayments, VATColumnVT1 nextVatColumnVt1, Constants.Calculation constants) : base(count) { _preparedValues = preparedValues; _nextSumColumn = nextSumColumn; _currentTablePayments = currentTablePayments; - _nextVATColumn = nextVatColumn; + _nextVatColumnVt1 = nextVatColumnVt1; _constants = constants; } @@ -34,7 +34,7 @@ public class BaseSumWithVATColumn : BaseColumnWithSum if (i < _preparedValues.EditPaymentNumber) Values[i] = _currentTablePayments[i - 1].SumWithVATPayment; else - Values[i] = _nextSumColumn.GetValue(i) + _nextVATColumn.GetValue(i); + Values[i] = _nextSumColumn.GetValue(i) + _nextVatColumnVt1.GetValue(i); Values[0] = Sum; } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs index 77a88be..a90db4a 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT1.cs @@ -6,8 +6,8 @@ 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) + TablePaymentsRow[] currentTablePayments, VATColumnVT1 nextVatColumnVt1, Constants.Calculation constants) : base( + count, preparedValues, nextSumColumn, currentTablePayments, nextVatColumnVt1, constants) { } diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs index 0984d41..248d39e 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT2.cs @@ -10,9 +10,9 @@ public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IGoalSeekAlgorithm private readonly NextValues _nextValues; public SumWithVATColumnVT2(int count, PreparedValues preparedValues, BaseSumColumn nextSumColumn, - TablePaymentsRow[] currentTablePayments, VATColumn nextVatColumn, Constants.Calculation constants, + TablePaymentsRow[] currentTablePayments, VATColumnVT1 nextVatColumnVt1, Constants.Calculation constants, NextValues nextValues) : base(count, preparedValues, nextSumColumn, currentTablePayments, - nextVatColumn, constants) + nextVatColumnVt1, constants) { _nextValues = nextValues; } @@ -21,7 +21,7 @@ public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IGoalSeekAlgorithm { _nextSumColumn.ComputeValues(inputVariable); _nextSumColumn.RoundValues(); - _nextVATColumn.ComputeValues(_preparedValues, _nextSumColumn, _currentTablePayments, _constants); + _nextVatColumnVt1.ComputeValues(_preparedValues, _nextSumColumn, _currentTablePayments, _constants); FillValues(); return Convert.ToDecimal(Sum); diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT3.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT3.cs new file mode 100644 index 0000000..908f502 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumWithVATColumn/SumWithVATColumnVT3.cs @@ -0,0 +1,22 @@ +using System.Linq; +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 SumWithVATColumnVT3 : BaseColumnWithSum +{ + public void ComputeValues( + PreparedValues preparedValues + , TablePaymentsRow[] currentTablePayments + , Constants.Calculation constants) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.SumPayment)).ToArray(); + + Values[1] = currentTablePayments[0].SumWithVATPayment + + preparedValues.SubsidySum * (decimal) (1 + constants.VatValue); + Values[0] = Sum; + } +} \ 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/VATColumnVT1.cs similarity index 90% rename from EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs rename to EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn/VATColumnVT1.cs index 0e90a77..2bdda1e 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn/VATColumnVT1.cs @@ -7,9 +7,9 @@ using EvoCalculator.Core.Tools.Check; namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next; -public class VATColumn : BaseColumnWithSum +public class VATColumnVT1 : BaseColumnWithSum { - public VATColumn(int count) : base(count) + public VATColumnVT1(int count) : base(count) { } @@ -20,11 +20,14 @@ public class VATColumn : BaseColumnWithSum , 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); + + Values[0] = Sum; } public void PostCheck() diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn/VATColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn/VATColumnVT2.cs new file mode 100644 index 0000000..b4c5d4b --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/VATColumn/VATColumnVT2.cs @@ -0,0 +1,21 @@ +using System.Linq; +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 VATColumnVT2 : BaseColumnWithSum +{ + public void ComputeValues( + PreparedValues preparedValues + , TablePaymentsRow[] currentTablePayments + , Constants.Calculation constants) + { + Values = new decimal[] {0} + .Concat(currentTablePayments.Select(x => x.VATPayment)).ToArray(); + + Values[1] = currentTablePayments[0].VATPayment + preparedValues.SubsidySum * (decimal) constants.VatValue; + Values[0] = Sum; + } +} \ 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 b556c3f..649a6b0 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs @@ -83,7 +83,7 @@ public static partial class CalculateManager preparedValues, nextValues, currentTablePayments, nextTablePayments); techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, @@ -130,7 +130,7 @@ public static partial class CalculateManager var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); @@ -139,7 +139,7 @@ public static partial class CalculateManager nextVATColumn.PostCheck(); nextSumWithVATColumn.PostCheck(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, currentTablePayments, nextSumColumn); var nsibRequiredValue = currentTablePayments .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) @@ -185,7 +185,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); @@ -206,10 +206,10 @@ public static partial class CalculateManager nextValues.Nmper = preparedValues.Nmper.Next; - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs index c530a94..64062b0 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs @@ -63,7 +63,7 @@ public static partial class CalculateManager var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); @@ -72,7 +72,7 @@ public static partial class CalculateManager nextVATColumn.PostCheck(); nextSumColumn.PostCheck(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, currentTablePayments, nextSumColumn); var nsibRequiredValue = currentTablePayments .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) @@ -118,7 +118,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); @@ -140,10 +140,10 @@ public static partial class CalculateManager nextValues.Nmper = preparedValues.Nmper.Next; - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs index a0d70a3..48277c4 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs @@ -88,7 +88,7 @@ public static partial class CalculateManager nextSumColumn.PostCheck(); nextSumColumn.RoundValues(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, currentTablePayments, nextSumColumn); var nsibRequiredValue = currentTablePayments .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) @@ -106,7 +106,7 @@ public static partial class CalculateManager nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn, nextTlmDateColumn); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, @@ -143,7 +143,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); @@ -165,10 +165,10 @@ public static partial class CalculateManager nextValues.Nmper = preparedValues.Nmper.Next; - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs new file mode 100644 index 0000000..bf91c95 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs @@ -0,0 +1,206 @@ +using System; +using System.Collections.Generic; +using EvoCalculator.Core.Models.PostCalculation.Models.Manager; +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; + +public static partial class CalculateManager +{ + public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation) + { + 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) + { + 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(); + } + + + var nextValues = new NextValues(preparedValues); + nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + + + var nextSumColumn = new SumColumnVT4(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + nextSumColumn.ComputeValues(); + + var nextVATColumn = new VATColumnVT2(); + nextVATColumn.ComputeValues(preparedValues, currentTablePayments, constants); + + var nextSumWithVATColumn = new SumWithVATColumnVT3(); + nextSumWithVATColumn.ComputeValues(preparedValues, currentTablePayments, constants); + // nextSumWithVATColumn.PostCheck(); + // nextVATColumn.PostCheck(); + // nextSumColumn.PostCheck(); + + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT2(); + nextNSIBBruttoGrColumn.ComputeValues(currentTablePayments); + + var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1); + nextSubsidyExpensesColumn.ComputeValues(preparedValues); + + nextValues.ComputeAcquisitionExpenses(nextTableInsurance); + + + 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 SumRepaymentColumnVT2(); + nextSumRepaymentColumn.ComputeValues(currentTablePayments); + // 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 = preparedValues.Nmper.Next; + + + var nextRevenueColumn = new RevenueColumnVT2(); + nextRevenueColumn.ComputeValues(currentTablePayments); + + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT2(); + nextNSIBExpensesColumn.ComputeValues(currentTablePayments); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.ComputeNiAtInception(currentTablePayments); + nextValues.ComputeNiAtInceptionMSFO(); + /* + * NEXT + */ + + var postValues = new PostValues(preparedValues); + postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn); + + + return new ManagerResult + { + PostValues = postValues, + NextValues = nextValues, + 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) + { + return new ManagerResult + { + Errors = new List + { + 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 8d5a1ce..cccadf9 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs @@ -65,14 +65,14 @@ public static partial class CalculateManager var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments); - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Current + 1); + var techNextVATColumn = new VATColumnVT1(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, + var techNextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Current + 1, preparedValues, currentTablePayments, techNextSumColumn); var nsibRequiredValue = currentTablePayments @@ -119,7 +119,7 @@ public static partial class CalculateManager var techNextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Current + 1); techNextSumCurrentTLMColumn.ComputeValues(techNextTlmGrColumn); - var techNextSumRepaymentColumn = new SumRepaymentColumn(); + var techNextSumRepaymentColumn = new SumRepaymentColumnVT1(); techNextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, techNextSumCurrentNegativeColumn, techNextSumCurrentColumn, techNextSumCurrentTLMColumn, techNextSumCurrentInterestColumn, @@ -172,7 +172,7 @@ public static partial class CalculateManager nextSumColumn.PostCheck(); nextSumColumn.RoundValues(); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants); var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, @@ -181,7 +181,7 @@ public static partial class CalculateManager nextVATColumn.PostCheck(); nextSumWithVATColumn.PostCheck(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, currentTablePayments, nextSumColumn); nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue); @@ -224,7 +224,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); @@ -246,10 +246,10 @@ public static partial class CalculateManager nextValues.Nmper = preparedValues.Nmper.Next; - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs index b12b81a..faad554 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs @@ -85,7 +85,7 @@ public static partial class CalculateManager preparedValues, nextValues, currentTablePayments, nextTablePayments); techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, @@ -135,7 +135,7 @@ public static partial class CalculateManager var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(nextValues.Nmper + 1); + var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1); var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues, nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); @@ -144,7 +144,7 @@ public static partial class CalculateManager nextVATColumn.PostCheck(); nextSumColumn.PostCheck(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(nextValues.Nmper + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 1, preparedValues, currentTablePayments, nextSumColumn); var nsibRequiredValue = currentTablePayments .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) @@ -190,7 +190,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, nextDateTempColumn, nextCashflowMSFOForNIColumn, constants); @@ -209,10 +209,10 @@ public static partial class CalculateManager var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4); nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn); - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs index c7a6f4c..8491408 100644 --- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs @@ -86,7 +86,7 @@ public static partial class CalculateManager preparedValues, nextValues, currentTablePayments, nextTablePayments); techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR); - var techNextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants); var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, @@ -97,7 +97,7 @@ public static partial class CalculateManager var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues, nextValues, currentTablePayments, nextTablePayments); - var nextVATColumn = new VATColumn(preparedValues.Nmper.Next + 1); + var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1); var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues, nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues); @@ -106,7 +106,7 @@ public static partial class CalculateManager nextSumWithVATColumn.PostCheck(); nextVATColumn.PostCheck(); - var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, currentTablePayments, nextSumColumn); var nsibRequiredValue = currentTablePayments .Where((x, i) => i >= preparedValues.EditPaymentNumber - 1) @@ -152,7 +152,7 @@ public static partial class CalculateManager var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1); nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn); - var nextSumRepaymentColumn = new SumRepaymentColumn(); + var nextSumRepaymentColumn = new SumRepaymentColumnVT1(); nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn, nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn, @@ -174,10 +174,10 @@ public static partial class CalculateManager nextValues.Nmper = preparedValues.Nmper.Next; - var nextRevenueColumn = new RevenueColumn(nextValues.Nmper + 1); + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); - var nextNSIBExpensesColumn = new NSIBExpensesColumn(nextValues.Nmper + 1); + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs new file mode 100644 index 0000000..7e1fa30 --- /dev/null +++ b/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs @@ -0,0 +1,211 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using EvoCalculator.Core.Models.PostCalculation.Models.Manager; +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; + +public static partial class CalculateManager +{ + public static ManagerResult Suspension(RequestCalculation requestCalculation) + { + 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) + { + 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(); + } + + + var nextValues = new NextValues(preparedValues); + nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn, + currentTablePayments); + + + var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, + preparedValues, nextValues, currentTablePayments, nextTablePayments); + var nextVATColumn = new VATColumnVT1(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 NSIBBruttoGrColumnVT1(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.ComputeAcquisitionExpenses(nextTableInsurance); + + + 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 SumRepaymentColumnVT1(); + 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 = preparedValues.Nmper.Next; + + + var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1); + nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1); + nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues); + + var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1); + nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn); + + + nextValues.ComputeNiAtInception(currentTablePayments); + nextValues.ComputeNiAtInceptionMSFO(); + /* + * NEXT + */ + + var postValues = new PostValues(preparedValues); + postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn); + + + return new ManagerResult + { + PostValues = postValues, + NextValues = nextValues, + 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) + { + return new ManagerResult + { + Errors = new List + { + ex.Message + } + }; + } + } +} \ 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 800bdab..db88af4 100644 --- a/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs +++ b/EvoCalculator.Core.Tests/PostCalculation/v1/Columns/NSIBBruttoGrColumnTests.cs @@ -119,7 +119,7 @@ public class NSIBBruttoGrColumnTests } }; - var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper.Next + 1, preparedValues, + var nsibBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues, tablePayments.Current, sumColumn); // в менеджере считаем формулой nsibBruttoGrColumn.ComputeValues(20000); diff --git a/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs b/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs index c098840..e6d2c91 100644 --- a/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs +++ b/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs @@ -26,6 +26,8 @@ public class PostCalculationController : Controller 100000004 => CalculateManager.PERWithoutChangingTheTerm(requestCalculation), 100000005 => CalculateManager.PERWithChangingTheTerm(requestCalculation), 100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation), + 100000007 => CalculateManager.Suspension(requestCalculation), + 100000008 => CalculateManager.ChangingLastPayment(requestCalculation), _ => CalculateManager.CalculateDefault(requestCalculation) };