diff --git a/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj b/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj
index bf92fb3..4d10a7b 100644
--- a/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj
+++ b/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj
@@ -12,8 +12,4 @@
-
-
-
-
diff --git a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs
index 1196567..c86d335 100644
--- a/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs
+++ b/EvoCalculator.Core.Calculation/v1/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs
@@ -2,6 +2,7 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v1.Columns;
@@ -57,12 +58,12 @@ public class BaseCashflowMSFOColumn : BaseColumnWithNominal
{
if (additionalData?.MinCashflowMSFONominal != null)
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
- throw new Exception(
+ throw new AppException(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
if (additionalData?.MaxCashflowMSFONominal != null)
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
- throw new Exception(
+ throw new AppException(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
}
}
diff --git a/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs
index 4274f4d..9c3a2a5 100644
--- a/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs
+++ b/EvoCalculator.Core.Calculation/v1/Columns/InterestColumn.cs
@@ -1,6 +1,6 @@
-using System;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Base.Columns;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v1.Columns;
@@ -14,7 +14,7 @@ public class InterestColumn : BaseColumn
{
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
if (Values[i] > sumColumn.Values[i])
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
diff --git a/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs b/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs
index 5ec602b..cff0733 100644
--- a/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs
+++ b/EvoCalculator.Core.Calculation/v1/Columns/SumColumn.cs
@@ -3,6 +3,7 @@ using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v1.Columns;
@@ -38,12 +39,12 @@ public class SumColumn : BaseColumnWithXIRR
new CheckTools().CheckColumnForLessThanZeroValue(Values);
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
- throw new Exception(
+ throw new AppException(
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
for (var i = 2; i < Values.Length - 1; i++)
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
}
}
\ 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 48b08a2..733e097 100644
--- a/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs
+++ b/EvoCalculator.Core.Calculation/v1/Managers/CalculateByTotalExpected.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
@@ -27,294 +26,282 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(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, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(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, new Constants.Calculation());
- vatColumn.ComputeValues(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,
+ 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, constants);
-
- 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.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ 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
+ }
+ };
}
}
\ 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 e500caa..850cb95 100644
--- a/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs
+++ b/EvoCalculator.Core.Calculation/v1/Managers/CalculateDefault.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
@@ -28,293 +27,281 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(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, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(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, new Constants.Calculation());
- vatColumn.ComputeValues( 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,
+ 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, constants);
-
- 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.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ 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
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v1/PostValues.cs b/EvoCalculator.Core.Calculation/v1/PostValues.cs
index 3870b47..dab6a84 100644
--- a/EvoCalculator.Core.Calculation/v1/PostValues.cs
+++ b/EvoCalculator.Core.Calculation/v1/PostValues.cs
@@ -9,14 +9,14 @@ public class PostValues
{
protected PreparedValues _preparedValues;
- public decimal BaseCost;
- public decimal BonusBase;
- public decimal BonusResult;
- public double NPVNI;
- public decimal PriceUP;
- public double PriceUP_PR;
- public decimal PriceUP_Year;
- public double PriceUP_Year_PR;
+ public decimal BaseCost { get; set; }
+ public decimal BonusBase { get; set; }
+ public decimal BonusResult { get; set; }
+ public double NPVNI { get; set; }
+ public decimal PriceUP { get; set; }
+ public double PriceUP_PR { get; set; }
+ public decimal PriceUP_Year { get; set; }
+ public double PriceUP_Year_PR { get; set; }
public PostValues(PreparedValues preparedValues)
@@ -33,7 +33,7 @@ public class PostValues
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats +
_preparedValues.Registration + _preparedValues.TrackerCost +
_preparedValues.TLMCost + _preparedValues.TransportTaxGr) *
- (decimal) _preparedValues.Leasing0K +
+ (decimal)_preparedValues.Leasing0K +
_preparedValues.NsibBrutto;
}
@@ -47,13 +47,13 @@ public class PostValues
public void ComputeBonusResult(BaseColumn npvBonusExpensesColumn)
{
BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) -
- Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) _preparedValues.SalaryRate /
- (decimal) (1 + _preparedValues.SalaryRate);
+ Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)_preparedValues.SalaryRate /
+ (decimal)(1 + _preparedValues.SalaryRate);
}
public void ComputeNPVNI(BaseColumn npvColumn)
{
- NPVNI = npvColumn.Values.Sum(x => (double) x) / (double) _preparedValues.NpvBase;
+ NPVNI = npvColumn.Values.Sum(x => (double)x) / (double)_preparedValues.NpvBase;
}
public void ComputePriceUP(BaseColumn sumColumn)
@@ -63,7 +63,7 @@ public class PostValues
public void ComputePriceUP_PR()
{
- PriceUP_PR = (double) PriceUP / (double) _preparedValues.PriceUpTotal;
+ PriceUP_PR = (double)PriceUP / (double)_preparedValues.PriceUpTotal;
}
public void ComputePriceUP_Year()
@@ -73,6 +73,6 @@ public class PostValues
public void ComputePriceUP_Year_PR()
{
- PriceUP_Year_PR = (double) PriceUP_Year / (double) _preparedValues.PriceUpTotal;
+ PriceUP_Year_PR = (double)PriceUP_Year / (double)_preparedValues.PriceUpTotal;
}
}
\ 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 833e9ac..6bf4e64 100644
--- a/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs
+++ b/EvoCalculator.Core.Calculation/v2/Columns/CashflowMSFOColumn/BaseCashflowMSFOColumn.cs
@@ -1,9 +1,9 @@
-using System;
-using EvoCalculator.Core.Base.Columns;
+using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Models.Common.Request;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v2.Columns;
@@ -47,7 +47,7 @@ public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn
if (flags?.DISABLE_CHECKS_RESULTS == false && _preparedValues.PaymentDateNew != null &&
this.Nominal < ((additionalData.MinCashflowMSFONominal / 100) - constants.DeltaIRR))
{
- throw new Exception(
+ throw new AppException(
"По итогам результата расчета данное изменение графика влечет к убыточности сделки. Скорректируйте вносимые изменения либо получите согласование с адреса calculator@evoleasing.ru");
}
}
diff --git a/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs
index 3159570..b313be6 100644
--- a/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs
+++ b/EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs
@@ -2,6 +2,7 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v2.Columns;
@@ -30,7 +31,7 @@ public class CreditColumn : BaseColumnWithSum
{
var constants = new Constants.Calculation();
var expectedPrepaid = Math.Round(financingSupplierCreditSum * (decimal)(1 + constants.VatValue), 2);
- throw new Exception(
+ throw new AppException(
$"Сумма аванса не покрывает потенциальные потери по финансированию поставщика. Увеличьте размер аванса до {expectedPrepaid}");
}
}
diff --git a/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs b/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs
index 03c8a18..50dfabc 100644
--- a/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs
+++ b/EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs
@@ -3,6 +3,7 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Models.Common.Request;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v2.Columns;
@@ -31,7 +32,7 @@ public class SumColumn : v1.Columns.SumColumn
if (flags?.DISABLE_CHECKS_RESULTS == false)
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика, при заданных параметрах последний платеж меньше 1%");
}
}
\ 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 c66d953..12f0838 100644
--- a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs
+++ b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateByTotalExpected.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Manager;
@@ -41,304 +40,292 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(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(flags);
+
+ 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, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(npvBonusExpensesColumn);
+ postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(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(flags);
-
- 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, new Constants.Calculation());
- vatColumn.ComputeValues(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, constants);
-
- 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.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
- postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
-
- return new ManagerResult
+ PostValues = postValues,
+ PreparedValues = preparedValues,
+ Columns = new
{
- PostValues = postValues,
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ 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
+ }
+ };
}
}
\ 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 a7ea203..94d5907 100644
--- a/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs
+++ b/EvoCalculator.Core.Calculation/v2/Managers/Calculation/CalculateDefault.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Manager;
@@ -41,303 +40,291 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(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(flags);
+
+ var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(npvBonusExpensesColumn);
+ postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
+
+ 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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(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(flags);
-
- var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
- vatColumn.ComputeValues(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, constants);
-
- 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.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
- postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
-
- return new ManagerResult
+ PostValues = postValues,
+ PreparedValues = preparedValues,
+ Columns = new
{
- PostValues = postValues,
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ 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
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v2/PostValues.cs b/EvoCalculator.Core.Calculation/v2/PostValues.cs
index 937c9ce..bd5edae 100644
--- a/EvoCalculator.Core.Calculation/v2/PostValues.cs
+++ b/EvoCalculator.Core.Calculation/v2/PostValues.cs
@@ -6,7 +6,7 @@ namespace EvoCalculator.Core.Calculation.v2;
public class PostValues : v1.PostValues
{
- public decimal ContractEconomy;
+ public decimal ContractEconomy { get; set; }
public PostValues(PreparedValues preparedValues) : base(preparedValues)
{
@@ -19,7 +19,7 @@ public class PostValues : v1.PostValues
directorBonusSumColumn.GetValue(0);
// if (Value < 0)
- // throw new Exception(
+ // throw new AppException(
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v3/Columns/EvoKaskoNmperGrColumn.cs b/EvoCalculator.Core.Calculation/v3/Columns/EvoKaskoNmperGrColumn.cs
index b9bd1e7..c89e37b 100644
--- a/EvoCalculator.Core.Calculation/v3/Columns/EvoKaskoNmperGrColumn.cs
+++ b/EvoCalculator.Core.Calculation/v3/Columns/EvoKaskoNmperGrColumn.cs
@@ -1,7 +1,5 @@
-using System;
-using EvoCalculator.Core.Base.Columns;
+using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
-using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v3.Columns;
diff --git a/EvoCalculator.Core.Calculation/v3/Columns/FinGAPNmperGrColumn.cs b/EvoCalculator.Core.Calculation/v3/Columns/FinGAPNmperGrColumn.cs
index 1f8fc2e..457ac16 100644
--- a/EvoCalculator.Core.Calculation/v3/Columns/FinGAPNmperGrColumn.cs
+++ b/EvoCalculator.Core.Calculation/v3/Columns/FinGAPNmperGrColumn.cs
@@ -2,6 +2,7 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Calculation.v3.Columns;
@@ -18,7 +19,7 @@ public class FinGAPNmperGrColumn : BaseColumnWithSum
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
if (Math.Abs(Math.Round(Values[0])) != Math.Round(preparedValues.InsuranceFinGAPNmper))
- throw new Exception(
+ throw new AppException(
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает сумма итого");
}
diff --git a/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT1.cs b/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT1.cs
index 46ffcda..1488562 100644
--- a/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT1.cs
+++ b/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT1.cs
@@ -1,6 +1,4 @@
-using System.Linq;
-using EvoCalculator.Core.Base.Columns;
-using EvoCalculator.Core.Calculation.v2.Columns;
+using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v3.Columns;
diff --git a/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT2.cs b/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT2.cs
index 55a3837..9bab04f 100644
--- a/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT2.cs
+++ b/EvoCalculator.Core.Calculation/v3/Columns/PIColumn/PIColumnVT2.cs
@@ -1,6 +1,5 @@
using System;
using System.Linq;
-using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.Interfaces.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
diff --git a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByPI.cs b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByPI.cs
index ae38623..a4a702b 100644
--- a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByPI.cs
+++ b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByPI.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
using EvoCalculator.Core.Calculation.v3.Columns;
@@ -9,7 +7,6 @@ using EvoCalculator.Core.Models.Calculation.Models.Request;
using EvoCalculator.Core.Tools.Validation;
using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
using CashflowLeasingColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowLeasingColumn;
-using CashflowMSFOColumnVT1 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT1;
using CashflowMSFOColumnVT2 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT2;
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
@@ -47,347 +44,335 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ finGAPNmperGrColumn.ComputeValues();
+ finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
+
+ var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
+ agentComissionExpensesColumn.ComputeValues(preparedValues);
+
+ var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ evoKaskoNmperGrColumn.ComputeValues();
+
+ var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
+ negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
+
+ var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
+ nsibBruttoGrColumn.ComputeValues(preparedValues);
+
+ var sumColumn = new SumColumn(
+ preparedValues.Nmper + 1
+ , dateTempColumn
+ , preparedValues
+ , percentPaymentColumn
+ , postValues
+ , nsibBruttoGrColumn
+ , preparedPayments
+ );
+
+ var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
+ subsidyExpensesColumn.ComputeValues(preparedValues);
+
+ var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
+ preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
+ tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
+ subsidyExpensesColumn);
+
+
+ var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
+
+
+ var sumWithVatColumn =
+ new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
+
+ var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
+
+ var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+
+ var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
+
+ var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
+
+ var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
+ new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
+ .Max());
+
+
+ var piColumn = new PIColumnVT2(61, preparedValues, cashflowMsfoWithCfColumn, cashflowMsfoColumn,
+ percentPaymentColumn, postValues, sumColumn, sumCreditColumn, creditPaymentColumn,
+ vatRecoverableColumn, vatColumn, sumWithVatColumn, creditColumn);
+ piColumn.ComputeValues((decimal)preparedValues.NpvniExpected);
+ sumColumn.PostCheck(flags);
+ cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
+ vatColumn.PostCheck();
+ sumWithVatColumn.PostCheck();
+ creditColumn.PostCheck(preparedValues, sumColumn);
+
+ 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();
+
+ postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
+
+ var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
+ extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
+
+ 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);
+
+ postValues.ComputeDirectorBonus();
+ postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
+ postValues.ComputeRegionalDirectorBonus();
+ postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
+
+ 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 sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
+
+ var creditVATColumn = new CreditVATColumn(12 + 4);
+ creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
+
+ postValues.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(npvBonusExpensesColumn);
+ postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
+ postValues.ComputeContractEconomyWithVAT(creditVATColumn);
+
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- finGAPNmperGrColumn.ComputeValues();
- finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
-
- var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
- agentComissionExpensesColumn.ComputeValues(preparedValues);
-
- var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- evoKaskoNmperGrColumn.ComputeValues();
-
- var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
- negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
-
- var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
- nsibBruttoGrColumn.ComputeValues(preparedValues);
-
- var sumColumn = new SumColumn(
- preparedValues.Nmper + 1
- , dateTempColumn
- , preparedValues
- , percentPaymentColumn
- , postValues
- , nsibBruttoGrColumn
- , preparedPayments
- );
-
- var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
- subsidyExpensesColumn.ComputeValues(preparedValues);
-
- var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
- preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
- tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
- subsidyExpensesColumn);
-
-
- var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
-
-
- var sumWithVatColumn =
- new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
-
- var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
-
- var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
-
- var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
-
- var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
-
- var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
- new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
- .Max());
-
-
- var piColumn = new PIColumnVT2(61, preparedValues, cashflowMsfoWithCfColumn, cashflowMsfoColumn,
- percentPaymentColumn, postValues, sumColumn, sumCreditColumn, creditPaymentColumn,
- vatRecoverableColumn, vatColumn, sumWithVatColumn, creditColumn);
- piColumn.ComputeValues((decimal)preparedValues.NpvniExpected);
- sumColumn.PostCheck(flags);
- cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
- vatColumn.PostCheck();
- sumWithVatColumn.PostCheck();
- creditColumn.PostCheck(preparedValues, sumColumn);
-
- 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();
-
- postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
-
- var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
- extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
-
- 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);
-
- postValues.ComputeDirectorBonus();
- postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
- postValues.ComputeRegionalDirectorBonus();
- postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
-
- 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 sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
-
- var creditVATColumn = new CreditVATColumn(12 + 4);
- creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
-
- postValues.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
- postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
- postValues.ComputeContractEconomyWithVAT(creditVATColumn);
-
-
- return new ManagerResult
+ PostValues = postValues,
+ PreparedValues = preparedValues,
+ Columns = new
{
- PostValues = postValues,
- PreparedValues = preparedValues,
- Columns = new
- {
- dateColumn,
- dateTempColumn,
- percentPaymentColumn,
- kaskoNmperGrColumn,
- finGAPNmperGrColumn,
- tlmGrColumn,
- gpsGrColumn,
- sumColumn,
- vatColumn,
- sumWithVatColumn,
- acceptSumColumn,
- acceptKaskoColumn,
- acceptOsagoColumn,
- acceptInsuranceColumn,
- deprecationLpColumn,
- deprecationLdColumn,
- deprecationColumn,
- npvBonusExpensesColumn,
- kaskoBonusGrSumColumn,
- agentComissionExpensesColumn,
- ratExpensesColumn,
- transExprensesColumn,
- nsibExpensesColumn,
- tlmExpensesColumn,
- gpsExpensesColumn,
- registrExpensesColumn,
- insuranceBonusExpensesColumn,
- comissionBonusExpensesColumn,
- expensesColumn,
- evoKaskoNmperGrColumn,
- 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,
- sumVATCreditColumn,
- creditVATColumn,
- subsidyExpensesColumn,
- vatRecoverableColumn,
- creditPaymentColumn,
- cashflowMsfoWithCfColumn,
- piColumn
- }
- };
- }
- catch (Exception ex)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ dateColumn,
+ dateTempColumn,
+ percentPaymentColumn,
+ kaskoNmperGrColumn,
+ finGAPNmperGrColumn,
+ tlmGrColumn,
+ gpsGrColumn,
+ sumColumn,
+ vatColumn,
+ sumWithVatColumn,
+ acceptSumColumn,
+ acceptKaskoColumn,
+ acceptOsagoColumn,
+ acceptInsuranceColumn,
+ deprecationLpColumn,
+ deprecationLdColumn,
+ deprecationColumn,
+ npvBonusExpensesColumn,
+ kaskoBonusGrSumColumn,
+ agentComissionExpensesColumn,
+ ratExpensesColumn,
+ transExprensesColumn,
+ nsibExpensesColumn,
+ tlmExpensesColumn,
+ gpsExpensesColumn,
+ registrExpensesColumn,
+ insuranceBonusExpensesColumn,
+ comissionBonusExpensesColumn,
+ expensesColumn,
+ evoKaskoNmperGrColumn,
+ 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,
+ sumVATCreditColumn,
+ creditVATColumn,
+ subsidyExpensesColumn,
+ vatRecoverableColumn,
+ creditPaymentColumn,
+ cashflowMsfoWithCfColumn,
+ piColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByTotalExpected.cs b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByTotalExpected.cs
index c7ead1e..cf023d9 100644
--- a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByTotalExpected.cs
+++ b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateByTotalExpected.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
@@ -46,352 +45,340 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ finGAPNmperGrColumn.ComputeValues();
+ finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(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
+ , preparedPayments
+ );
+
+ 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(flags);
+
+ var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
+ agentComissionExpensesColumn.ComputeValues(preparedValues);
+
+ var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ evoKaskoNmperGrColumn.ComputeValues();
+
+ var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
+ negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
+
+ var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
+ preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
+ tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
+ subsidyExpensesColumn);
+ cashflowMsfoColumn.ComputeValues();
+ cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
+
+ postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
+
+ var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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);
+
+ postValues.ComputeDirectorBonus();
+ postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
+ postValues.ComputeRegionalDirectorBonus();
+ postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
+
+ 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, sumWithVatColumn);
+
+ var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ creditColumn.ComputeValues(preparedValues, sumCreditColumn);
+ creditColumn.PostCheck(preparedValues, sumColumn);
+
+ var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
+
+ var creditVATColumn = new CreditVATColumn(12 + 4);
+ creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
+
+ var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
+ vatRecoverableColumn.ComputeValues(vatColumn);
+
+ var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
+ creditPaymentColumn.ComputeValues(preparedValues, sumCreditColumn, creditColumn);
+
+ var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
+ new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
+ .Max());
+ cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
+ creditPaymentColumn, vatRecoverableColumn);
+
+ var piColumn = new PIColumnVT1(61, preparedValues);
+ piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
+
+ postValues.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(npvBonusExpensesColumn);
+ postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
+ postValues.ComputeContractEconomyWithVAT(creditVATColumn);
+
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- finGAPNmperGrColumn.ComputeValues();
- finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(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
- , preparedPayments
- );
-
- 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(flags);
-
- var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
- agentComissionExpensesColumn.ComputeValues(preparedValues);
-
- var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- evoKaskoNmperGrColumn.ComputeValues();
-
- var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
- negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
-
- var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
- preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
- tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
- subsidyExpensesColumn);
- cashflowMsfoColumn.ComputeValues();
- cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
-
- postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
-
- var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
- vatColumn.ComputeValues(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, constants);
-
- 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);
-
- postValues.ComputeDirectorBonus();
- postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
- postValues.ComputeRegionalDirectorBonus();
- postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
-
- 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, sumWithVatColumn);
-
- var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- creditColumn.ComputeValues(preparedValues, sumCreditColumn);
- creditColumn.PostCheck(preparedValues, sumColumn);
-
- var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
-
- var creditVATColumn = new CreditVATColumn(12 + 4);
- creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
-
- var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
- vatRecoverableColumn.ComputeValues(vatColumn);
-
- var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
- creditPaymentColumn.ComputeValues(preparedValues, sumCreditColumn, creditColumn);
-
- var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
- new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
- .Max());
- cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
- creditPaymentColumn, vatRecoverableColumn);
-
- var piColumn = new PIColumnVT1(61, preparedValues);
- piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
-
- postValues.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
- postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
- postValues.ComputeContractEconomyWithVAT(creditVATColumn);
-
-
- return new ManagerResult
+ PostValues = postValues,
+ PreparedValues = preparedValues,
+ Columns = new
{
- PostValues = postValues,
- PreparedValues = preparedValues,
- Columns = new
- {
- dateColumn,
- dateTempColumn,
- percentPaymentColumn,
- kaskoNmperGrColumn,
- finGAPNmperGrColumn,
- tlmGrColumn,
- gpsGrColumn,
- sumColumn,
- vatColumn,
- sumWithVatColumn,
- acceptSumColumn,
- acceptKaskoColumn,
- acceptOsagoColumn,
- acceptInsuranceColumn,
- deprecationLpColumn,
- deprecationLdColumn,
- deprecationColumn,
- npvBonusExpensesColumn,
- kaskoBonusGrSumColumn,
- agentComissionExpensesColumn,
- ratExpensesColumn,
- transExprensesColumn,
- nsibExpensesColumn,
- tlmExpensesColumn,
- gpsExpensesColumn,
- registrExpensesColumn,
- insuranceBonusExpensesColumn,
- comissionBonusExpensesColumn,
- expensesColumn,
- evoKaskoNmperGrColumn,
- 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,
- sumVATCreditColumn,
- creditVATColumn,
- subsidyExpensesColumn,
- vatRecoverableColumn,
- creditPaymentColumn,
- cashflowMsfoWithCfColumn,
- piColumn
- }
- };
- }
- catch (Exception ex)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ dateColumn,
+ dateTempColumn,
+ percentPaymentColumn,
+ kaskoNmperGrColumn,
+ finGAPNmperGrColumn,
+ tlmGrColumn,
+ gpsGrColumn,
+ sumColumn,
+ vatColumn,
+ sumWithVatColumn,
+ acceptSumColumn,
+ acceptKaskoColumn,
+ acceptOsagoColumn,
+ acceptInsuranceColumn,
+ deprecationLpColumn,
+ deprecationLdColumn,
+ deprecationColumn,
+ npvBonusExpensesColumn,
+ kaskoBonusGrSumColumn,
+ agentComissionExpensesColumn,
+ ratExpensesColumn,
+ transExprensesColumn,
+ nsibExpensesColumn,
+ tlmExpensesColumn,
+ gpsExpensesColumn,
+ registrExpensesColumn,
+ insuranceBonusExpensesColumn,
+ comissionBonusExpensesColumn,
+ expensesColumn,
+ evoKaskoNmperGrColumn,
+ 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,
+ sumVATCreditColumn,
+ creditVATColumn,
+ subsidyExpensesColumn,
+ vatRecoverableColumn,
+ creditPaymentColumn,
+ cashflowMsfoWithCfColumn,
+ piColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateDefault.cs b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateDefault.cs
index e64e2b9..2b0f2dd 100644
--- a/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateDefault.cs
+++ b/EvoCalculator.Core.Calculation/v3/Managers/Calculation/CalculateDefault.cs
@@ -1,5 +1,4 @@
using System;
-using System.Collections.Generic;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v2.Columns;
@@ -46,351 +45,339 @@ public static partial class CalculateManager
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
- try
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ finGAPNmperGrColumn.ComputeValues();
+ finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
+
+ var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
+ npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
+
+ postValues.ComputeBaseCost(kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
+
+ var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
+ agentComissionExpensesColumn.ComputeValues(preparedValues);
+
+ var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
+ evoKaskoNmperGrColumn.ComputeValues();
+
+ var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
+ negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
+
+ var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
+ nsibBruttoGrColumn.ComputeValues(preparedValues);
+
+ var sumColumn = new SumColumn(
+ preparedValues.Nmper + 1
+ , dateTempColumn
+ , preparedValues
+ , percentPaymentColumn
+ , postValues
+ , nsibBruttoGrColumn
+ , preparedPayments
+ );
+
+ 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(flags);
+
+ postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
+
+ var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
+ vatColumn.ComputeValues(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, constants);
+
+ 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);
+
+ postValues.ComputeDirectorBonus();
+ postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
+ postValues.ComputeRegionalDirectorBonus();
+ postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
+
+ 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, sumWithVatColumn);
+
+ var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ creditColumn.ComputeValues(preparedValues, sumCreditColumn);
+ creditColumn.PostCheck(preparedValues, sumColumn);
+
+ var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
+
+ var creditVATColumn = new CreditVATColumn(12 + 4);
+ creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
+
+ var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
+ vatRecoverableColumn.ComputeValues(vatColumn);
+
+ var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
+ creditPaymentColumn.ComputeValues(preparedValues, sumCreditColumn, creditColumn);
+
+ var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
+ new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
+ .Max());
+ cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
+ creditPaymentColumn, vatRecoverableColumn);
+
+ var piColumn = new PIColumnVT1(61, preparedValues);
+ piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
+
+ postValues.ComputePriceUP(sumColumn);
+ postValues.ComputePriceUP_PR();
+ postValues.ComputePriceUP_Year();
+ postValues.ComputePriceUP_Year_PR();
+ postValues.ComputeNPVNI(npvColumn);
+ postValues.ComputeBonusResult(npvBonusExpensesColumn);
+ postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
+ postValues.ComputeContractEconomyWithVAT(creditVATColumn);
+
+
+ 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 finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- finGAPNmperGrColumn.ComputeValues();
- finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
-
- var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
- npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
-
- postValues.ComputeBaseCost(kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
-
- var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
- agentComissionExpensesColumn.ComputeValues(preparedValues);
-
- var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
- evoKaskoNmperGrColumn.ComputeValues();
-
- var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
- negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
-
- var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
- nsibBruttoGrColumn.ComputeValues(preparedValues);
-
- var sumColumn = new SumColumn(
- preparedValues.Nmper + 1
- , dateTempColumn
- , preparedValues
- , percentPaymentColumn
- , postValues
- , nsibBruttoGrColumn
- , preparedPayments
- );
-
- 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(flags);
-
- postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
-
- var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
- vatColumn.ComputeValues(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, constants);
-
- 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);
-
- postValues.ComputeDirectorBonus();
- postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
- postValues.ComputeRegionalDirectorBonus();
- postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
-
- 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, sumWithVatColumn);
-
- var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- creditColumn.ComputeValues(preparedValues, sumCreditColumn);
- creditColumn.PostCheck(preparedValues, sumColumn);
-
- var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
-
- var creditVATColumn = new CreditVATColumn(12 + 4);
- creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
-
- var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
- vatRecoverableColumn.ComputeValues(vatColumn);
-
- var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
- creditPaymentColumn.ComputeValues(preparedValues, sumCreditColumn, creditColumn);
-
- var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
- new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
- .Max());
- cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
- creditPaymentColumn, vatRecoverableColumn);
-
- var piColumn = new PIColumnVT1(61, preparedValues);
- piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
-
- postValues.ComputePriceUP(sumColumn);
- postValues.ComputePriceUP_PR();
- postValues.ComputePriceUP_Year();
- postValues.ComputePriceUP_Year_PR();
- postValues.ComputeNPVNI(npvColumn);
- postValues.ComputeBonusResult(npvBonusExpensesColumn);
- postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
- postValues.ComputeContractEconomyWithVAT(creditVATColumn);
-
-
- return new ManagerResult
+ PostValues = postValues,
+ PreparedValues = preparedValues,
+ Columns = new
{
- PostValues = postValues,
- PreparedValues = preparedValues,
- Columns = new
- {
- dateColumn,
- dateTempColumn,
- percentPaymentColumn,
- kaskoNmperGrColumn,
- finGAPNmperGrColumn,
- tlmGrColumn,
- gpsGrColumn,
- sumColumn,
- vatColumn,
- sumWithVatColumn,
- acceptSumColumn,
- acceptKaskoColumn,
- acceptOsagoColumn,
- acceptInsuranceColumn,
- deprecationLpColumn,
- deprecationLdColumn,
- deprecationColumn,
- npvBonusExpensesColumn,
- kaskoBonusGrSumColumn,
- agentComissionExpensesColumn,
- ratExpensesColumn,
- transExprensesColumn,
- nsibExpensesColumn,
- tlmExpensesColumn,
- gpsExpensesColumn,
- registrExpensesColumn,
- insuranceBonusExpensesColumn,
- comissionBonusExpensesColumn,
- expensesColumn,
- evoKaskoNmperGrColumn,
- 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,
- sumVATCreditColumn,
- creditVATColumn,
- subsidyExpensesColumn,
- vatRecoverableColumn,
- creditPaymentColumn,
- cashflowMsfoWithCfColumn,
- piColumn
- }
- };
- }
- catch (Exception ex)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ dateColumn,
+ dateTempColumn,
+ percentPaymentColumn,
+ kaskoNmperGrColumn,
+ finGAPNmperGrColumn,
+ tlmGrColumn,
+ gpsGrColumn,
+ sumColumn,
+ vatColumn,
+ sumWithVatColumn,
+ acceptSumColumn,
+ acceptKaskoColumn,
+ acceptOsagoColumn,
+ acceptInsuranceColumn,
+ deprecationLpColumn,
+ deprecationLdColumn,
+ deprecationColumn,
+ npvBonusExpensesColumn,
+ kaskoBonusGrSumColumn,
+ agentComissionExpensesColumn,
+ ratExpensesColumn,
+ transExprensesColumn,
+ nsibExpensesColumn,
+ tlmExpensesColumn,
+ gpsExpensesColumn,
+ registrExpensesColumn,
+ insuranceBonusExpensesColumn,
+ comissionBonusExpensesColumn,
+ expensesColumn,
+ evoKaskoNmperGrColumn,
+ 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,
+ sumVATCreditColumn,
+ creditVATColumn,
+ subsidyExpensesColumn,
+ vatRecoverableColumn,
+ creditPaymentColumn,
+ cashflowMsfoWithCfColumn,
+ piColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Calculation/v3/PostValues.cs b/EvoCalculator.Core.Calculation/v3/PostValues.cs
index 0cad0fd..979e304 100644
--- a/EvoCalculator.Core.Calculation/v3/PostValues.cs
+++ b/EvoCalculator.Core.Calculation/v3/PostValues.cs
@@ -6,12 +6,12 @@ namespace EvoCalculator.Core.Calculation.v3;
public class PostValues : v2.PostValues
{
- public decimal ContractEconomyWithVAT;
- public decimal DirectorBonus;
- public decimal DirectorExtraBonus;
- public decimal RegionalDirectorBonus;
- public decimal RegionalDirectorExtraBonus;
- public double PlanIRRMSFO;
+ public decimal ContractEconomyWithVAT { get; set; }
+ public decimal DirectorBonus { get; set; }
+ public decimal DirectorExtraBonus { get; set; }
+ public decimal RegionalDirectorBonus { get; set; }
+ public decimal RegionalDirectorExtraBonus { get; set; }
+ public double PlanIRRMSFO { get; set; }
private readonly Constants.Calculation _constants;
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
diff --git a/EvoCalculator.Core.Constants/EvoCalculator.Core.Constants.csproj b/EvoCalculator.Core.Constants/EvoCalculator.Core.Constants.csproj
index e844a81..7b8dd53 100644
--- a/EvoCalculator.Core.Constants/EvoCalculator.Core.Constants.csproj
+++ b/EvoCalculator.Core.Constants/EvoCalculator.Core.Constants.csproj
@@ -6,8 +6,4 @@
default
-
-
-
-
diff --git a/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj b/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj
index 6e1e1e6..7230fc7 100644
--- a/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj
+++ b/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj
@@ -7,12 +7,11 @@
-
+
-
-
+
diff --git a/EvoCalculator.Core.Models/EvoCalculator.Core.Models.csproj b/EvoCalculator.Core.Models/EvoCalculator.Core.Models.csproj
index 320c82c..f6f66dd 100644
--- a/EvoCalculator.Core.Models/EvoCalculator.Core.Models.csproj
+++ b/EvoCalculator.Core.Models/EvoCalculator.Core.Models.csproj
@@ -10,7 +10,6 @@
-
diff --git a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs
index 4e00f03..e3a647b 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/CashflowMSFOColumn.cs
@@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
using EvoCalculator.Core.Tools.Array;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -79,7 +80,7 @@ public class CashflowMSFOColumn : BaseColumnWithNominal
public void PostCheck()
{
if (Values.Length != Dates.Length)
- throw new Exception(
+ throw new AppException(
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
}
}
\ 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 5d64460..4c07e03 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/InterestColumn.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using EvoCalculator.Core.Base.Columns;
-using EvoCalculator.Core.Tools.Check;
+using EvoCalculator.Core.Tools.Errors;
using EvoCalculator.Core.Tools.GroupColumns;
using EvoCalculator.Core.Tools.GroupColumns.Models;
@@ -37,7 +37,7 @@ public class InterestColumn : BaseColumn
});
if (negativeValuesCount > 1)
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
}
\ 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 fe487d4..75a1636 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/SumColumn/BaseSumColumn.cs
@@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
using EvoCalculator.Core.Tools.Check;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -96,7 +97,7 @@ public class BaseSumColumn : BaseColumnWithNominal
checkTools.CheckColumnForZeroValue(Values.Skip(2));
if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5)
- throw new Exception(
+ throw new AppException(
"Первый платеж по графику более 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 134a532..354f6c5 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Columns/Next/TLMCostColumn.cs
@@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
using EvoCalculator.Core.Tools.Array;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -115,7 +116,7 @@ public class TLMCostColumn : BaseColumnWithSum
public void PostCheck()
{
if (Values.Length != Dates.Length)
- throw new Exception(
+ throw new AppException(
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
}
}
\ 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 649a6b0..2ce9ff9 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByIRRAndSum.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
@@ -14,277 +12,264 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateByIRRAndSum(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;
+
+ /*
+ * 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(preparedValues);
+
+ /*
+ * 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(preparedValues);
-
- /*
- * 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn, currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
-
- var techNextVATColumn = new VATColumnVT1(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.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(techNextSumWithVATColumn.GetValue(0));
- nextSumColumn.PostCheck();
- nextVATColumn.PostCheck();
- nextSumWithVATColumn.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
- {
- 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn, currentTablePayments);
+
+
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
+
+ var techNextVATColumn = new VATColumnVT1(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.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(techNextSumWithVATColumn.GetValue(0));
+ nextSumColumn.PostCheck();
+ nextVATColumn.PostCheck();
+ nextSumWithVATColumn.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
+ {
+ 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
+ }
+ };
}
}
\ 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 64062b0..cc32858 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateByTotalExpected.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -12,200 +10,187 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateByTotalExpected(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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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
{
- 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(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.PostCalculation/v1/Managers/CalculateDefault.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs
index 7b661b5..0c22327 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/CalculateDefault.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
@@ -14,227 +12,215 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateDefault(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;
+
+
+ /*
+ * 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
+ */
+
+
+ /*
+ * 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 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- /*
- * NEXT
- */
- var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+ var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
+ nextSumColumn.PostCheck();
+ nextSumColumn.RoundValues();
- var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ 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);
- TLMDateColumn nextTlmDateColumn = null;
- TLMCostColumn nextTlmCostColumn = null;
- TLMGrColumn nextTlmGrColumn = null;
+ var nextCashflowMSFOColumn = new CashflowMSFOColumn();
+ nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
+ nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
+ nextTlmDateColumn);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
+ var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
+ nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
- if (tlmData != null)
+ 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 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
{
- 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(preparedValues);
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
- nextSumColumn.PostCheck();
- nextSumColumn.RoundValues();
-
- 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 nextVATColumn = new VATColumnVT1(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 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
- {
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ };
}
-}
\ No newline at end of file
+}
+
diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs
index bf91c95..fb9efac 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/ChangingLastPayment.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
+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;
@@ -11,196 +9,183 @@ 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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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
{
- 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(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 cccadf9..d2d2239 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/EarlyRedemption.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -12,326 +10,313 @@ public static partial class CalculateManager
{
public static ManagerResult EarlyRedemption(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;
+
+ var nextValues = new NextValues(preparedValues);
+
+ /*
+ * 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(preparedValues);
-
- /*
- * 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
+ currentTablePayments);
- var techTlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , techNextDateColumn);
- if (techTlmData != null)
+ var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+
+ 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 NSIBBruttoGrColumnVT1(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.ComputeAcquisitionExpenses(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 SumRepaymentColumnVT1();
+ 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.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
+
+
+ var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments, constants,
+ techNextSumRepaymentColumn);
+ nextSumColumn.ComputeValues();
+ nextSumColumn.PostCheck();
+ nextSumColumn.RoundValues();
+
+ var nextVATColumn = new VATColumnVT1(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 NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
+ currentTablePayments, nextSumColumn);
+ 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
{
- 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
- currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
-
- 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 NSIBBruttoGrColumnVT1(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.ComputeAcquisitionExpenses(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 SumRepaymentColumnVT1();
- 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.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments, constants,
- techNextSumRepaymentColumn);
- nextSumColumn.ComputeValues();
- nextSumColumn.PostCheck();
- nextSumColumn.RoundValues();
-
- var nextVATColumn = new VATColumnVT1(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 NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
- currentTablePayments, nextSumColumn);
- 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
- {
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- 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 9fa7e57..5136d1f 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithChangingTheTerm.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
@@ -14,281 +12,268 @@ public static partial class CalculateManager
{
public static ManagerResult PERWithChangingTheTerm(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;
+
+
+ /*
+ * 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(preparedValues);
+
+ /*
+ * 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);
-
- 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(preparedValues);
-
- /*
- * 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);
+ nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
+ currentTablePayments);
- TLMDateColumn techNextTlmDateColumn = null;
- TLMCostColumn techNextTlmCostColumn = null;
- TLMGrColumn techNextTlmGrColumn = null;
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
- var techTlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , techNextDateColumn);
+ var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
+ techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
- 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);
- }
+ var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
+ techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
+ techNextSumWithVATColumn.ComputeValues();
+
+ nextValues.ComputeSumTotal(techNextSumWithVATColumn);
+ nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
+ /*
+ * TECH
+ */
+
+ /*
+ * NEXT
+ */
+ var nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
+ nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var nextDateTempColumn = new Columns.Next.DateTempColumn(nextValues.Nmper + 1);
+ nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
- nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
- currentTablePayments);
+ 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 + 1);
+ nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
+ nextTlmGrColumn.PostCheck();
+ }
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
- techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
+ var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
- var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
- techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
- techNextSumWithVATColumn.ComputeValues();
+ var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
- nextValues.ComputeSumTotal(techNextSumWithVATColumn);
- nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
- /*
- * TECH
- */
+ var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
+ nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
+ nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
+ nextSumWithVATColumn.PostCheck();
+ nextVATColumn.PostCheck();
+ nextSumColumn.PostCheck();
- /*
+ var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 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 + 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(nextValues.Nmper + 1);
+ nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
+
+ var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper + 1);
+ nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
+
+ var nextSumCurrentInterestColumn =
+ new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
+ nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
+
+ var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 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);
+
+ 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 nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
- var nextDateTempColumn = new Columns.Next.DateTempColumn(nextValues.Nmper + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ var postValues = new PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- 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 + 1);
- nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
- nextTlmGrColumn.PostCheck();
- }
-
-
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
- var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
-
- var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
-
- var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
- nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
- nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
- nextSumWithVATColumn.PostCheck();
- nextVATColumn.PostCheck();
- nextSumColumn.PostCheck();
-
- var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 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 + 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(nextValues.Nmper + 1);
- nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
-
- var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper + 1);
- nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
-
- var nextSumCurrentInterestColumn =
- new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
- nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
-
- var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 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);
-
- 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
- {
- 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
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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
+ }
+ };
}
}
\ 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 909308a..e44e0e4 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/PERWithoutChangingTheTerm.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
@@ -14,240 +12,227 @@ public static partial class CalculateManager
{
public static ManagerResult PERWithoutChangingTheTerm(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;
+
+
+ /*
+ * 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
+ */
+
+
+ /*
+ * 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 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- /*
- * NEXT
- */
- var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
- var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ var techNextVATColumn = new VATColumnVT1(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.ComputeSumTotal(techNextSumWithVATColumn);
+
+ 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(nextValues.SumTotal);
+ nextSumColumn.PostCheck();
+ nextSumWithVATColumn.PostCheck();
+ nextVATColumn.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);
- TLMDateColumn nextTlmDateColumn = null;
- TLMCostColumn nextTlmCostColumn = null;
- TLMGrColumn nextTlmGrColumn = null;
+ var nextCashflowMSFOColumn = new CashflowMSFOColumn();
+ nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
+ nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
+ nextTlmDateColumn);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
+ var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
+ nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
+ nextCashflowMSFOColumn);
+ nextCashflowMSFOColumn.PostCheck();
- if (tlmData != null)
+ 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
{
- 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(preparedValues);
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
-
- var techNextVATColumn = new VATColumnVT1(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.ComputeSumTotal(techNextSumWithVATColumn);
-
- 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(nextValues.SumTotal);
- nextSumColumn.PostCheck();
- nextSumWithVATColumn.PostCheck();
- nextVATColumn.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,
+ 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 = 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
- {
- 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)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ nextNSIBBruttoGrColumn,
+ nextSubsidyExpensesColumn,
+ nextCashflowMSFOColumn,
+ nextCashflowMSFOForNIColumn,
+ nextIRRGrColumn,
+ nextNIColumn,
+ nextInterestColumn,
+ nextSumCurrentColumn,
+ nextSumCurrentNegativeColumn,
+ nextSumCurrentInterestColumn,
+ nextSumCurrentTLMColumn,
+ nextSumRepaymentColumn,
+ nextCashflowMSFOFinalColumn,
+ nextCashflowMSFOFinal2Column,
+ nextSumCreditColumn,
+ nextCreditColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs b/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs
index 7e1fa30..4b9a7db 100644
--- a/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/Managers/Suspension.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -12,200 +10,187 @@ 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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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
{
- 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(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.PostCalculation/v1/NextValues.cs b/EvoCalculator.Core.PostCalculation/v1/NextValues.cs
index 084bb69..83ccf51 100644
--- a/EvoCalculator.Core.PostCalculation/v1/NextValues.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/NextValues.cs
@@ -1,20 +1,20 @@
-using System;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.PostCalculation.v1;
public class NextValues
{
- public decimal AcquisitionExpenses;
- public decimal BaseCost;
- public decimal NiAtInception;
- public decimal NiAtInceptionMSFO;
- public int Nmper;
+ public decimal AcquisitionExpenses { get; set; }
+ public decimal BaseCost { get; set; }
+ public decimal NiAtInception { get; set; }
+ public decimal NiAtInceptionMSFO { get; set; }
+ public int Nmper { get; set; }
+ public decimal SumTotal { get; set; }
protected PreparedValues preparedValues;
- public decimal SumTotal;
public NextValues(PreparedValues preparedValues)
{
@@ -73,7 +73,7 @@ public class NextValues
+ preparedValues.InceptDelta;
if (AcquisitionExpenses <= 0)
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
}
@@ -134,7 +134,7 @@ public class NextValues
// PostCheck
if (BaseCost <= 0)
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
}
@@ -167,14 +167,14 @@ public class NextValues
}
if (i == 0)
- throw new Exception(
+ throw new AppException(
"Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП");
Nmper = preparedValues.Nmper.Current - i + 1;
// PostCheck
if (Nmper < 13 && preparedValues.BalanceHolder.Next == 100000001)
- throw new Exception(
+ throw new AppException(
"По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета");
}
@@ -182,6 +182,6 @@ public class NextValues
{
SumTotal = preparedValues.TotalExpected
- (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0))
- * (decimal) preparedValues.Repayment;
+ * (decimal)preparedValues.Repayment;
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.PostCalculation/v1/PostValues.cs b/EvoCalculator.Core.PostCalculation/v1/PostValues.cs
index 98e511f..366e3fe 100644
--- a/EvoCalculator.Core.PostCalculation/v1/PostValues.cs
+++ b/EvoCalculator.Core.PostCalculation/v1/PostValues.cs
@@ -8,7 +8,7 @@ public class PostValues
{
protected PreparedValues _preparedValues;
- public decimal ContractEconomy;
+ public decimal ContractEconomy { get; set; }
public PostValues(PreparedValues preparedValues)
{
diff --git a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRAndSum.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRAndSum.cs
index 175642e..7c98bd9 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRAndSum.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRAndSum.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -18,286 +16,273 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateByIRRAndSum(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;
+
+ /*
+ * 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(preparedValues);
+
+ /*
+ * 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(preparedValues);
-
- /*
- * 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn, currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
-
- var techNextVATColumn = new VATColumnVT1(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.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(techNextSumWithVATColumn.GetValue(0));
- nextSumColumn.PostCheck();
- nextVATColumn.PostCheck();
- nextSumWithVATColumn.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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn, currentTablePayments);
+
+
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
+
+ var techNextVATColumn = new VATColumnVT1(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.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(techNextSumWithVATColumn.GetValue(0));
+ nextSumColumn.PostCheck();
+ nextVATColumn.PostCheck();
+ nextSumWithVATColumn.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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRNoLimit.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRNoLimit.cs
index 745e7ef..601af24 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRNoLimit.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByIRRNoLimit.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -17,235 +15,222 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateByIRRNoLimit(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;
+
+
+ /*
+ * 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
+ */
+
+
+ /*
+ * NEXT
+ */
+ var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
+ nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var nextDateTempColumn = new v1.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 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- /*
- * NEXT
- */
- var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+ var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
+ nextSumColumn.PostCheck();
+ nextSumColumn.RoundValues();
- var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ 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);
- TLMDateColumn nextTlmDateColumn = null;
- TLMCostColumn nextTlmCostColumn = null;
- TLMGrColumn nextTlmGrColumn = null;
+ var nextCashflowMSFOColumn = new CashflowMSFOColumn();
+ nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
+ nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
+ nextTlmDateColumn);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
+ var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
+ nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
- if (tlmData != null)
+ 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);
+
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- var nextValues = new NextValues(preparedValues);
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
- nextSumColumn.PostCheck();
- nextSumColumn.RoundValues();
-
- 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 nextVATColumn = new VATColumnVT1(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);
-
- 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/Managers/CalculateByTotalExpected.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByTotalExpected.cs
index ecbe967..462af71 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByTotalExpected.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateByTotalExpected.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -15,209 +13,196 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateByTotalExpected(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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/Managers/CalculateDefault.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateDefault.cs
index ce95557..8064108 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateDefault.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/CalculateDefault.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -17,236 +15,223 @@ public static partial class CalculateManager
{
public static ManagerResult CalculateDefault(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;
+
+
+ /*
+ * 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
+ */
+
+
+ /*
+ * NEXT
+ */
+ var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
+ nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var nextDateTempColumn = new v1.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 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- /*
- * NEXT
- */
- var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+ var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
+ nextSumColumn.PostCheck();
+ nextSumColumn.RoundValues();
- var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ 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);
- TLMDateColumn nextTlmDateColumn = null;
- TLMCostColumn nextTlmCostColumn = null;
- TLMGrColumn nextTlmGrColumn = null;
+ var nextCashflowMSFOColumn = new CashflowMSFOColumn();
+ nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
+ nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
+ nextTlmDateColumn);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
+ var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
+ nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
- if (tlmData != null)
+ 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 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- var nextValues = new NextValues(preparedValues);
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
- nextSumColumn.PostCheck();
- nextSumColumn.RoundValues();
-
- 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 nextVATColumn = new VATColumnVT1(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 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/Managers/ChangingLastPayment.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/ChangingLastPayment.cs
index 6b95c73..324e9fe 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/ChangingLastPayment.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/ChangingLastPayment.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
+using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
@@ -14,205 +12,192 @@ 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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/Managers/EarlyRedemption.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/EarlyRedemption.cs
index bc6893d..d5986f1 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/EarlyRedemption.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/EarlyRedemption.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -15,335 +13,322 @@ public static partial class CalculateManager
{
public static ManagerResult EarlyRedemption(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;
+
+ var nextValues = new NextValues(preparedValues);
+
+ /*
+ * 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(preparedValues);
-
- /*
- * 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
+ currentTablePayments);
- var techTlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , techNextDateColumn);
- if (techTlmData != null)
+ var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+
+ 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 NSIBBruttoGrColumnVT1(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.ComputeAcquisitionExpenses(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 SumRepaymentColumnVT1();
+ 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.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
+
+
+ var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments, constants,
+ techNextSumRepaymentColumn);
+ nextSumColumn.ComputeValues();
+ nextSumColumn.PostCheck();
+ nextSumColumn.RoundValues();
+
+ var nextVATColumn = new VATColumnVT1(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 NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
+ currentTablePayments, nextSumColumn);
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
- currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
-
- 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 NSIBBruttoGrColumnVT1(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.ComputeAcquisitionExpenses(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 SumRepaymentColumnVT1();
- 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var nextSumColumn = new SumColumnVT3(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments, constants,
- techNextSumRepaymentColumn);
- nextSumColumn.ComputeValues();
- nextSumColumn.PostCheck();
- nextSumColumn.RoundValues();
-
- var nextVATColumn = new VATColumnVT1(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 NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
- currentTablePayments, nextSumColumn);
- 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/Managers/PERWithChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithChangingTheTerm.cs
index 895ae4e..2990c91 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithChangingTheTerm.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithChangingTheTerm.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -17,290 +15,277 @@ public static partial class CalculateManager
{
public static ManagerResult PERWithChangingTheTerm(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;
+
+
+ /*
+ * 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(preparedValues);
+
+ /*
+ * TECH
+ */
+ var techNextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
+ techNextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var techNextDateTempColumn = new v1.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);
-
- 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(preparedValues);
-
- /*
- * TECH
- */
- var techNextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- techNextDateColumn.ComputeValues(preparedValues, currentTablePayments);
-
- var techNextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn);
+ nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
+ currentTablePayments);
- TLMDateColumn techNextTlmDateColumn = null;
- TLMCostColumn techNextTlmCostColumn = null;
- TLMGrColumn techNextTlmGrColumn = null;
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
- var techTlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , techNextDateColumn);
+ var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
+ techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
- 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);
- }
+ var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
+ techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
+ techNextSumWithVATColumn.ComputeValues();
+
+ nextValues.ComputeSumTotal(techNextSumWithVATColumn);
+ nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
+ /*
+ * TECH
+ */
+
+ /*
+ * NEXT
+ */
+ var nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
+ nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(nextValues.Nmper + 1);
+ nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
- nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
- currentTablePayments);
+ 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 + 1);
+ nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
+ nextTlmGrColumn.PostCheck();
+ }
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
- techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
+ var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
- var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
- techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
- techNextSumWithVATColumn.ComputeValues();
+ var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
- nextValues.ComputeSumTotal(techNextSumWithVATColumn);
- nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
- /*
- * TECH
- */
+ var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
+ nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
+ nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
+ nextSumWithVATColumn.PostCheck();
+ nextVATColumn.PostCheck();
+ nextSumColumn.PostCheck();
- /*
+ var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 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 + 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(nextValues.Nmper + 1);
+ nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
+
+ var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper + 1);
+ nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
+
+ var nextSumCurrentInterestColumn =
+ new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
+ nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
+
+ var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+ 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 nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
- var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(nextValues.Nmper + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ var postValues = new v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
- 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 + 1);
- nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
- nextTlmGrColumn.PostCheck();
- }
-
-
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
- var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
-
- var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
-
- var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
- nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
- nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
- nextSumWithVATColumn.PostCheck();
- nextVATColumn.PostCheck();
- nextSumColumn.PostCheck();
-
- var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 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 + 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(nextValues.Nmper + 1);
- nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
-
- var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper + 1);
- nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
-
- var nextSumCurrentInterestColumn =
- new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
- nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
-
- var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- nextNSIBExpensesColumn,
- nextCashflowNSIBColumn,
- nextRevenueColumn
- }
- };
- }
- catch (Exception ex)
+ return new ManagerResult
{
- return new ManagerResult
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithoutChangingTheTerm.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithoutChangingTheTerm.cs
index 117bb21..1a6de69 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithoutChangingTheTerm.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/PERWithoutChangingTheTerm.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -17,249 +15,236 @@ public static partial class CalculateManager
{
public static ManagerResult PERWithoutChangingTheTerm(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;
+
+
+ /*
+ * 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
+ */
+
+
+ /*
+ * NEXT
+ */
+ var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
+ nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+
+ var nextDateTempColumn = new v1.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 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- /*
- * NEXT
- */
- var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
- nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
+ var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
+ preparedValues, nextValues, currentTablePayments, nextTablePayments);
+ techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
- var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
- nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
+ var techNextVATColumn = new VATColumnVT1(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.ComputeSumTotal(techNextSumWithVATColumn);
+
+ 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(nextValues.SumTotal);
+ nextSumColumn.PostCheck();
+ nextSumWithVATColumn.PostCheck();
+ nextVATColumn.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);
- TLMDateColumn nextTlmDateColumn = null;
- TLMCostColumn nextTlmCostColumn = null;
- TLMGrColumn nextTlmGrColumn = null;
+ var nextCashflowMSFOColumn = new CashflowMSFOColumn();
+ nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
+ nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
+ nextTlmDateColumn);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
+ var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
+ nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
+ nextCashflowMSFOColumn);
+ nextCashflowMSFOColumn.PostCheck();
- if (tlmData != null)
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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(preparedValues);
- nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
- currentTablePayments);
-
-
- var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
- preparedValues, nextValues, currentTablePayments, nextTablePayments);
- techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
-
- var techNextVATColumn = new VATColumnVT1(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.ComputeSumTotal(techNextSumWithVATColumn);
-
- 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(nextValues.SumTotal);
- nextSumColumn.PostCheck();
- nextSumWithVATColumn.PostCheck();
- nextVATColumn.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,
+ 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- return new ManagerResult
- {
- PostValues = postValues,
- NextValues = nextValues,
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- nextNSIBExpensesColumn,
- nextCashflowNSIBColumn,
- nextRevenueColumn
- }
- };
- }
- catch (Exception ex)
- {
- return new ManagerResult
- {
- Errors = new List
- {
- ex.Message
- }
- };
- }
+ nextNSIBBruttoGrColumn,
+ nextSubsidyExpensesColumn,
+ nextCashflowMSFOColumn,
+ nextCashflowMSFOForNIColumn,
+ nextIRRGrColumn,
+ nextNIColumn,
+ nextInterestColumn,
+ nextSumCurrentColumn,
+ nextSumCurrentNegativeColumn,
+ nextSumCurrentInterestColumn,
+ nextSumCurrentTLMColumn,
+ nextSumRepaymentColumn,
+ nextCashflowMSFOFinalColumn,
+ nextCashflowMSFOFinal2Column,
+ nextSumCreditColumn,
+ nextCreditColumn,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
+ }
+ };
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs b/EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs
index 306e0e7..78f8800 100644
--- a/EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
+using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.v1;
@@ -15,208 +13,195 @@ 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)
{
- 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(preparedValues);
+ nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
+ currentTablePayments);
- var tlmData = new Helper().GetTLMData(preparedValues
- , currentTableTLMTracker, nextTableTLMTracker
- , nextDateColumn);
- if (tlmData != null)
+ 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, nextSumWithVATColumn);
+
+ var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
+ nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
+
+ nextValues.Nmper = preparedValues.Nmper.Next;
+
+ var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
+ nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
+
+ var nextCreditVATColumn = new CreditVATColumn(12 + 4);
+ nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
+
+ 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 v2.PostValues(preparedValues);
+ postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
+ postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
+
+
+ return new ManagerResult
+ {
+ PostValues = postValues,
+ NextValues = nextValues,
+ 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,
+ nextSumVATCreditColumn,
+ nextCreditVATColumn,
+ nextNSIBExpensesColumn,
+ nextCashflowNSIBColumn,
+ nextRevenueColumn
}
-
-
- 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, nextSumWithVATColumn);
-
- var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
- nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
-
- nextValues.Nmper = preparedValues.Nmper.Next;
-
- var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
- nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
-
- var nextCreditVATColumn = new CreditVATColumn(12 + 4);
- nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
-
- 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 v2.PostValues(preparedValues);
- postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
- postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
-
-
- 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,
- nextSumVATCreditColumn,
- nextCreditVATColumn,
- 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/v2/PostValues.cs b/EvoCalculator.Core.PostCalculation/v2/PostValues.cs
index e2f1b84..7c7d200 100644
--- a/EvoCalculator.Core.PostCalculation/v2/PostValues.cs
+++ b/EvoCalculator.Core.PostCalculation/v2/PostValues.cs
@@ -6,7 +6,7 @@ namespace EvoCalculator.Core.PostCalculation.v2;
public class PostValues : v1.PostValues
{
- public decimal ContractEconomyWithVAT;
+ public decimal ContractEconomyWithVAT { get; set; }
public PostValues(PreparedValues preparedValues) : base(preparedValues)
{
diff --git a/EvoCalculator.Core.Tests/EvoCalculator.Core.Tests.csproj b/EvoCalculator.Core.Tests/EvoCalculator.Core.Tests.csproj
index 799f5c2..d343027 100644
--- a/EvoCalculator.Core.Tests/EvoCalculator.Core.Tests.csproj
+++ b/EvoCalculator.Core.Tests/EvoCalculator.Core.Tests.csproj
@@ -10,7 +10,6 @@
-
all
diff --git a/EvoCalculator.Core.Tools/Check/CheckColumns.cs b/EvoCalculator.Core.Tools/Check/CheckColumns.cs
index fde1631..e9a10ca 100644
--- a/EvoCalculator.Core.Tools/Check/CheckColumns.cs
+++ b/EvoCalculator.Core.Tools/Check/CheckColumns.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.Tools.Check;
@@ -10,12 +11,12 @@ public class CheckTools
string errorMsg =
"Невозможно осуществить расчет графика. При заданных параметрах получаются отрицательные значения")
{
- if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new Exception(errorMsg);
+ if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new AppException(errorMsg);
}
public void CheckColumnForZeroValue(IEnumerable Values, string errorMsg =
"Невозможно осуществить расчет графика. При заданных параметрах получаются нулевые значения платежей")
{
- if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new Exception(errorMsg);
+ if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new AppException(errorMsg);
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Tools/Errors/AppException.cs b/EvoCalculator.Core.Tools/Errors/AppException.cs
new file mode 100644
index 0000000..8722388
--- /dev/null
+++ b/EvoCalculator.Core.Tools/Errors/AppException.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Runtime.Serialization;
+
+namespace EvoCalculator.Core.Tools.Errors;
+
+public class AppException : Exception
+{
+ public AppException()
+ {
+ }
+
+ protected AppException(SerializationInfo info, StreamingContext context) : base(info, context)
+ {
+ }
+
+ public AppException(string message) : base(message)
+ {
+ }
+
+ public AppException(string message, Exception innerException) : base(message, innerException)
+ {
+ }
+}
\ No newline at end of file
diff --git a/EvoCalculator.Core.Tools/EvoCalculator.Core.Tools.csproj b/EvoCalculator.Core.Tools/EvoCalculator.Core.Tools.csproj
index e435081..7d23172 100644
--- a/EvoCalculator.Core.Tools/EvoCalculator.Core.Tools.csproj
+++ b/EvoCalculator.Core.Tools/EvoCalculator.Core.Tools.csproj
@@ -6,7 +6,7 @@
-
+
diff --git a/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs b/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs
index 164912f..2ae1c89 100644
--- a/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs
+++ b/EvoCalculator.Core/Controllers/Calculation/v1/CalculationController.cs
@@ -2,8 +2,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using Microsoft.AspNetCore.Mvc;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
namespace EvoCalculator.Core.Controllers.Calculation.v1;
@@ -22,15 +20,6 @@ public class CalculationController : Controller
_ => 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()
- }));
+ return result;
}
}
\ 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 6201834..ce02106 100644
--- a/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs
+++ b/EvoCalculator.Core/Controllers/Calculation/v2/CalculationController.cs
@@ -2,8 +2,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using Microsoft.AspNetCore.Mvc;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
namespace EvoCalculator.Core.Controllers.Calculation.v2;
@@ -22,15 +20,6 @@ public class CalculationController : Controller
_ => 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()
- }));
+ return result;
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core/Controllers/Calculation/v3/CalculationController.cs b/EvoCalculator.Core/Controllers/Calculation/v3/CalculationController.cs
index 893fc92..0b31562 100644
--- a/EvoCalculator.Core/Controllers/Calculation/v3/CalculationController.cs
+++ b/EvoCalculator.Core/Controllers/Calculation/v3/CalculationController.cs
@@ -2,8 +2,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using Microsoft.AspNetCore.Mvc;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
namespace EvoCalculator.Core.Controllers.Calculation.v3;
@@ -23,15 +21,6 @@ public class CalculationController : Controller
_ => 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()
- }));
+ return result;
}
}
\ 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 5cf98bb..525b974 100644
--- a/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs
+++ b/EvoCalculator.Core/Controllers/PostCalculation/v1/PostCalculationController.cs
@@ -1,9 +1,6 @@
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
-using EvoCalculator.Core.PostCalculation.v1.Managers;
using Microsoft.AspNetCore.Mvc;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
@@ -29,15 +26,6 @@ public class PostCalculationController : Controller
_ => 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()
- }));
+ return result;
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core/Controllers/PostCalculation/v2/PostCalculationController.cs b/EvoCalculator.Core/Controllers/PostCalculation/v2/PostCalculationController.cs
index d48c66b..30c29df 100644
--- a/EvoCalculator.Core/Controllers/PostCalculation/v2/PostCalculationController.cs
+++ b/EvoCalculator.Core/Controllers/PostCalculation/v2/PostCalculationController.cs
@@ -1,9 +1,6 @@
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
-using EvoCalculator.Core.PostCalculation.v2.Managers;
using Microsoft.AspNetCore.Mvc;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
namespace EvoCalculator.Core.Controllers.PostCalculation.v2;
@@ -31,15 +28,6 @@ public class PostCalculationController : Controller
_ => 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()
- }));
+ return result;
}
}
\ No newline at end of file
diff --git a/EvoCalculator.Core/EvoCalculator.Core.csproj b/EvoCalculator.Core/EvoCalculator.Core.csproj
index 52b94ef..9172233 100644
--- a/EvoCalculator.Core/EvoCalculator.Core.csproj
+++ b/EvoCalculator.Core/EvoCalculator.Core.csproj
@@ -7,7 +7,6 @@
-
diff --git a/EvoCalculator.Core/Startup.cs b/EvoCalculator.Core/Startup.cs
index 9e43c1c..ae53192 100644
--- a/EvoCalculator.Core/Startup.cs
+++ b/EvoCalculator.Core/Startup.cs
@@ -1,5 +1,11 @@
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Text.Json;
+using EvoCalculator.Core.Tools.Errors;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
@@ -21,7 +27,11 @@ public class Startup
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
- services.AddControllers();
+ services.AddControllers().AddJsonOptions(options =>
+ {
+ options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
+ options.JsonSerializerOptions.WriteIndented = true;
+ });
services.AddApiVersioning(opt =>
{
@@ -44,6 +54,28 @@ public class Startup
app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; });
app.UseRouting();
+ app.Use(async (context, next) =>
+ {
+ var response = context.Response;
+ response.ContentType = "application/json";
+ try
+ {
+ await next(context);
+ }
+ catch (Exception ex)
+ {
+ response.StatusCode = ex switch
+ {
+ AppException e => (int)HttpStatusCode.BadRequest,
+ _ => (int)HttpStatusCode.InternalServerError
+ };
+
+ var result = new { Errors = new List { ex.Message } };
+
+ await response.WriteAsJsonAsync(result);
+ }
+ });
+
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
}
}
\ No newline at end of file