merge release/http-error-codes
This commit is contained in:
parent
8eb9dec769
commit
5df209f620
@ -12,8 +12,4 @@
|
|||||||
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
|
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models;
|
using EvoCalculator.Core.Models.Calculation.Models;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
|
|
||||||
@ -57,12 +58,12 @@ public class BaseCashflowMSFOColumn : BaseColumnWithNominal
|
|||||||
{
|
{
|
||||||
if (additionalData?.MinCashflowMSFONominal != null)
|
if (additionalData?.MinCashflowMSFONominal != null)
|
||||||
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
|
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
|
||||||
|
|
||||||
if (additionalData?.MaxCashflowMSFONominal != null)
|
if (additionalData?.MaxCashflowMSFONominal != null)
|
||||||
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
|
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
|
|
||||||
@ -14,7 +14,7 @@ public class InterestColumn : BaseColumn<decimal>
|
|||||||
{
|
{
|
||||||
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
||||||
if (Values[i] > sumColumn.Values[i])
|
if (Values[i] > sumColumn.Values[i])
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using System.Linq;
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
using EvoCalculator.Core.Tools.Check;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
|
|
||||||
@ -38,12 +39,12 @@ public class SumColumn : BaseColumnWithXIRR
|
|||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
|
|
||||||
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
|
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
|
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
|
||||||
|
|
||||||
for (var i = 2; i < Values.Length - 1; i++)
|
for (var i = 2; i < Values.Length - 1; i++)
|
||||||
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
|
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||||
@ -27,294 +26,282 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
{
|
||||||
dateTempColumn.ComputeValues(preparedValues);
|
dateColumn,
|
||||||
|
dateTempColumn,
|
||||||
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
|
percentPaymentColumn,
|
||||||
percentPaymentColumn.ComputeValues(preparedPayments);
|
kaskoNmperGrColumn,
|
||||||
|
tlmGrColumn,
|
||||||
var kaskoNmperGrColumn =
|
gpsGrColumn,
|
||||||
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
|
sumColumn,
|
||||||
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
|
vatColumn,
|
||||||
kaskoNmperGrColumn.PostCheck();
|
sumWithVatColumn,
|
||||||
|
acceptSumColumn,
|
||||||
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
acceptKaskoColumn,
|
||||||
preparedValues.IrrExpected);
|
acceptOsagoColumn,
|
||||||
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
|
acceptInsuranceColumn,
|
||||||
tlmGrColumn.PostCheck();
|
deprecationLpColumn,
|
||||||
|
deprecationLdColumn,
|
||||||
|
deprecationColumn,
|
||||||
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
npvBonusExpensesColumn,
|
||||||
preparedValues.IrrExpected);
|
kaskoBonusGrSumColumn,
|
||||||
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
agentComissionExpensesColumn,
|
||||||
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,
|
ratExpensesColumn,
|
||||||
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
nsibExpensesColumn,
|
||||||
|
tlmExpensesColumn,
|
||||||
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
|
gpsExpensesColumn,
|
||||||
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
|
registrExpensesColumn,
|
||||||
|
insuranceBonusExpensesColumn,
|
||||||
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
|
comissionBonusExpensesColumn,
|
||||||
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
|
expensesColumn,
|
||||||
|
negativeCashflowColumn,
|
||||||
nsibBruttoGrColumn,
|
nsibBruttoGrColumn,
|
||||||
tlmGrColumn, gpsGrColumn);
|
taxColumn,
|
||||||
|
cashflowColumn,
|
||||||
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
|
cashflowLeasingColumn,
|
||||||
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
|
cashflowMsfoColumn,
|
||||||
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
|
cashflowNpvColumn,
|
||||||
ratExpensesColumn,
|
npvWeightColumn,
|
||||||
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
npvColumn,
|
||||||
|
irrGrColumn,
|
||||||
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
|
niColumn,
|
||||||
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
|
interestColumn,
|
||||||
|
cashflowNsibColumn,
|
||||||
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
|
revenueColumn,
|
||||||
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
|
sumCurrentColumn,
|
||||||
|
sumCurrentNegativeColumn,
|
||||||
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
|
sumCurrentInterestColumn,
|
||||||
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
|
sumCurrentTlmColumn,
|
||||||
|
sumRepaymentColumn,
|
||||||
var niColumn = new NIColumn(preparedValues.Nmper + 1);
|
extraBonusSumColumn,
|
||||||
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
|
cashflowMsfoFinalColumn,
|
||||||
|
cashflowNpvFinalColumn,
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
npvFinalColumn,
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
directorBonusSumColumn,
|
||||||
interestColumn.PostCheck(sumColumn);
|
cashflowMsfoFinal2Column,
|
||||||
|
cashflowNpvFinal2Column,
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
npvFinal2Column
|
||||||
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||||
@ -28,293 +27,281 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
{
|
||||||
dateTempColumn.ComputeValues(preparedValues);
|
dateColumn,
|
||||||
|
dateTempColumn,
|
||||||
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
|
percentPaymentColumn,
|
||||||
percentPaymentColumn.ComputeValues(preparedPayments);
|
kaskoNmperGrColumn,
|
||||||
|
tlmGrColumn,
|
||||||
var kaskoNmperGrColumn =
|
gpsGrColumn,
|
||||||
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
|
sumColumn,
|
||||||
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
|
vatColumn,
|
||||||
kaskoNmperGrColumn.PostCheck();
|
sumWithVatColumn,
|
||||||
|
acceptSumColumn,
|
||||||
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
acceptKaskoColumn,
|
||||||
preparedValues.IrrExpected);
|
acceptOsagoColumn,
|
||||||
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
|
acceptInsuranceColumn,
|
||||||
tlmGrColumn.PostCheck();
|
deprecationLpColumn,
|
||||||
|
deprecationLdColumn,
|
||||||
|
deprecationColumn,
|
||||||
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
npvBonusExpensesColumn,
|
||||||
preparedValues.IrrExpected);
|
kaskoBonusGrSumColumn,
|
||||||
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
agentComissionExpensesColumn,
|
||||||
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,
|
ratExpensesColumn,
|
||||||
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
nsibExpensesColumn,
|
||||||
|
tlmExpensesColumn,
|
||||||
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
|
gpsExpensesColumn,
|
||||||
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
|
registrExpensesColumn,
|
||||||
|
insuranceBonusExpensesColumn,
|
||||||
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
|
comissionBonusExpensesColumn,
|
||||||
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
|
expensesColumn,
|
||||||
|
negativeCashflowColumn,
|
||||||
nsibBruttoGrColumn,
|
nsibBruttoGrColumn,
|
||||||
tlmGrColumn, gpsGrColumn);
|
taxColumn,
|
||||||
|
cashflowColumn,
|
||||||
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
|
cashflowLeasingColumn,
|
||||||
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
|
cashflowMsfoColumn,
|
||||||
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
|
cashflowNpvColumn,
|
||||||
ratExpensesColumn,
|
npvWeightColumn,
|
||||||
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
npvColumn,
|
||||||
|
irrGrColumn,
|
||||||
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
|
niColumn,
|
||||||
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
|
interestColumn,
|
||||||
|
cashflowNsibColumn,
|
||||||
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
|
revenueColumn,
|
||||||
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
|
sumCurrentColumn,
|
||||||
|
sumCurrentNegativeColumn,
|
||||||
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
|
sumCurrentInterestColumn,
|
||||||
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
|
sumCurrentTlmColumn,
|
||||||
|
sumRepaymentColumn,
|
||||||
var niColumn = new NIColumn(preparedValues.Nmper + 1);
|
extraBonusSumColumn,
|
||||||
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
|
cashflowMsfoFinalColumn,
|
||||||
|
cashflowNpvFinalColumn,
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
npvFinalColumn,
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
directorBonusSumColumn,
|
||||||
interestColumn.PostCheck(sumColumn);
|
cashflowMsfoFinal2Column,
|
||||||
|
cashflowNpvFinal2Column,
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
npvFinal2Column
|
||||||
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -9,14 +9,14 @@ public class PostValues
|
|||||||
{
|
{
|
||||||
protected PreparedValues _preparedValues;
|
protected PreparedValues _preparedValues;
|
||||||
|
|
||||||
public decimal BaseCost;
|
public decimal BaseCost { get; set; }
|
||||||
public decimal BonusBase;
|
public decimal BonusBase { get; set; }
|
||||||
public decimal BonusResult;
|
public decimal BonusResult { get; set; }
|
||||||
public double NPVNI;
|
public double NPVNI { get; set; }
|
||||||
public decimal PriceUP;
|
public decimal PriceUP { get; set; }
|
||||||
public double PriceUP_PR;
|
public double PriceUP_PR { get; set; }
|
||||||
public decimal PriceUP_Year;
|
public decimal PriceUP_Year { get; set; }
|
||||||
public double PriceUP_Year_PR;
|
public double PriceUP_Year_PR { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public PostValues(PreparedValues preparedValues)
|
public PostValues(PreparedValues preparedValues)
|
||||||
@ -33,7 +33,7 @@ public class PostValues
|
|||||||
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats +
|
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats +
|
||||||
_preparedValues.Registration + _preparedValues.TrackerCost +
|
_preparedValues.Registration + _preparedValues.TrackerCost +
|
||||||
_preparedValues.TLMCost + _preparedValues.TransportTaxGr) *
|
_preparedValues.TLMCost + _preparedValues.TransportTaxGr) *
|
||||||
(decimal) _preparedValues.Leasing0K +
|
(decimal)_preparedValues.Leasing0K +
|
||||||
_preparedValues.NsibBrutto;
|
_preparedValues.NsibBrutto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -47,13 +47,13 @@ public class PostValues
|
|||||||
public void ComputeBonusResult(BaseColumn<decimal> npvBonusExpensesColumn)
|
public void ComputeBonusResult(BaseColumn<decimal> npvBonusExpensesColumn)
|
||||||
{
|
{
|
||||||
BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) -
|
BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) -
|
||||||
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) _preparedValues.SalaryRate /
|
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)_preparedValues.SalaryRate /
|
||||||
(decimal) (1 + _preparedValues.SalaryRate);
|
(decimal)(1 + _preparedValues.SalaryRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeNPVNI(BaseColumn<decimal> npvColumn)
|
public void ComputeNPVNI(BaseColumn<decimal> 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<decimal> sumColumn)
|
public void ComputePriceUP(BaseColumn<decimal> sumColumn)
|
||||||
@ -63,7 +63,7 @@ public class PostValues
|
|||||||
|
|
||||||
public void ComputePriceUP_PR()
|
public void ComputePriceUP_PR()
|
||||||
{
|
{
|
||||||
PriceUP_PR = (double) PriceUP / (double) _preparedValues.PriceUpTotal;
|
PriceUP_PR = (double)PriceUP / (double)_preparedValues.PriceUpTotal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputePriceUP_Year()
|
public void ComputePriceUP_Year()
|
||||||
@ -73,6 +73,6 @@ public class PostValues
|
|||||||
|
|
||||||
public void ComputePriceUP_Year_PR()
|
public void ComputePriceUP_Year_PR()
|
||||||
{
|
{
|
||||||
PriceUP_Year_PR = (double) PriceUP_Year / (double) _preparedValues.PriceUpTotal;
|
PriceUP_Year_PR = (double)PriceUP_Year / (double)_preparedValues.PriceUpTotal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models;
|
using EvoCalculator.Core.Models.Calculation.Models;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Models.Common.Request;
|
using EvoCalculator.Core.Models.Common.Request;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
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 &&
|
if (flags?.DISABLE_CHECKS_RESULTS == false && _preparedValues.PaymentDateNew != null &&
|
||||||
this.Nominal < ((additionalData.MinCashflowMSFONominal / 100) - constants.DeltaIRR))
|
this.Nominal < ((additionalData.MinCashflowMSFONominal / 100) - constants.DeltaIRR))
|
||||||
{
|
{
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"По итогам результата расчета данное изменение графика влечет к убыточности сделки. Скорректируйте вносимые изменения либо получите согласование с адреса calculator@evoleasing.ru");
|
"По итогам результата расчета данное изменение графика влечет к убыточности сделки. Скорректируйте вносимые изменения либо получите согласование с адреса calculator@evoleasing.ru");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
|
|
||||||
@ -30,7 +31,7 @@ public class CreditColumn : BaseColumnWithSum
|
|||||||
{
|
{
|
||||||
var constants = new Constants.Calculation();
|
var constants = new Constants.Calculation();
|
||||||
var expectedPrepaid = Math.Round(financingSupplierCreditSum * (decimal)(1 + constants.VatValue), 2);
|
var expectedPrepaid = Math.Round(financingSupplierCreditSum * (decimal)(1 + constants.VatValue), 2);
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Сумма аванса не покрывает потенциальные потери по финансированию поставщика. Увеличьте размер аванса до {expectedPrepaid}");
|
$"Сумма аванса не покрывает потенциальные потери по финансированию поставщика. Увеличьте размер аванса до {expectedPrepaid}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,7 @@ using EvoCalculator.Core.Base.Columns;
|
|||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Models.Common.Request;
|
using EvoCalculator.Core.Models.Common.Request;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
|
|
||||||
@ -31,7 +32,7 @@ public class SumColumn : v1.Columns.SumColumn
|
|||||||
|
|
||||||
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
||||||
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
|
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах последний платеж меньше 1%");
|
"Невозможно осуществить расчет графика, при заданных параметрах последний платеж меньше 1%");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
@ -41,304 +40,292 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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,
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
tlmGrColumn,
|
||||||
dateTempColumn,
|
gpsGrColumn,
|
||||||
percentPaymentColumn,
|
sumColumn,
|
||||||
kaskoNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
negativeCashflowColumn,
|
||||||
insuranceBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
comissionBonusExpensesColumn,
|
taxColumn,
|
||||||
expensesColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
subsidyExpensesColumn
|
||||||
npvFinal2Column,
|
}
|
||||||
sumCreditColumn,
|
};
|
||||||
creditColumn,
|
|
||||||
subsidyExpensesColumn
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new ManagerResult
|
|
||||||
{
|
|
||||||
Errors = new List<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
@ -41,303 +40,291 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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,
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
tlmGrColumn,
|
||||||
dateTempColumn,
|
gpsGrColumn,
|
||||||
percentPaymentColumn,
|
sumColumn,
|
||||||
kaskoNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
negativeCashflowColumn,
|
||||||
insuranceBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
comissionBonusExpensesColumn,
|
taxColumn,
|
||||||
expensesColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
subsidyExpensesColumn
|
||||||
npvFinal2Column,
|
}
|
||||||
sumCreditColumn,
|
};
|
||||||
creditColumn,
|
|
||||||
subsidyExpensesColumn
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new ManagerResult
|
|
||||||
{
|
|
||||||
Errors = new List<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,7 +6,7 @@ namespace EvoCalculator.Core.Calculation.v2;
|
|||||||
|
|
||||||
public class PostValues : v1.PostValues
|
public class PostValues : v1.PostValues
|
||||||
{
|
{
|
||||||
public decimal ContractEconomy;
|
public decimal ContractEconomy { get; set; }
|
||||||
|
|
||||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ public class PostValues : v1.PostValues
|
|||||||
directorBonusSumColumn.GetValue(0);
|
directorBonusSumColumn.GetValue(0);
|
||||||
|
|
||||||
// if (Value < 0)
|
// if (Value < 0)
|
||||||
// throw new Exception(
|
// throw new AppException(
|
||||||
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
|
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
using EvoCalculator.Core.Tools.Check;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ public class FinGAPNmperGrColumn : BaseColumnWithSum
|
|||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
if (Math.Abs(Math.Round(Values[0])) != Math.Round(preparedValues.InsuranceFinGAPNmper))
|
if (Math.Abs(Math.Round(Values[0])) != Math.Round(preparedValues.InsuranceFinGAPNmper))
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает сумма итого");
|
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает сумма итого");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using System.Linq;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
|
||||||
using EvoCalculator.Core.Base.Interfaces.Columns;
|
using EvoCalculator.Core.Base.Interfaces.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v3.Columns;
|
using EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
@ -9,7 +7,6 @@ using EvoCalculator.Core.Models.Calculation.Models.Request;
|
|||||||
using EvoCalculator.Core.Tools.Validation;
|
using EvoCalculator.Core.Tools.Validation;
|
||||||
using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
|
using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
|
||||||
using CashflowLeasingColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowLeasingColumn;
|
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 CashflowMSFOColumnVT2 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT2;
|
||||||
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
|
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
|
||||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
|
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
|
||||||
@ -47,347 +44,335 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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,
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
finGAPNmperGrColumn,
|
||||||
dateTempColumn,
|
tlmGrColumn,
|
||||||
percentPaymentColumn,
|
gpsGrColumn,
|
||||||
kaskoNmperGrColumn,
|
sumColumn,
|
||||||
finGAPNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
evoKaskoNmperGrColumn,
|
||||||
insuranceBonusExpensesColumn,
|
negativeCashflowColumn,
|
||||||
comissionBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
expensesColumn,
|
taxColumn,
|
||||||
evoKaskoNmperGrColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
sumVATCreditColumn,
|
||||||
npvFinal2Column,
|
creditVATColumn,
|
||||||
sumCreditColumn,
|
subsidyExpensesColumn,
|
||||||
creditColumn,
|
vatRecoverableColumn,
|
||||||
sumVATCreditColumn,
|
creditPaymentColumn,
|
||||||
creditVATColumn,
|
cashflowMsfoWithCfColumn,
|
||||||
subsidyExpensesColumn,
|
piColumn
|
||||||
vatRecoverableColumn,
|
}
|
||||||
creditPaymentColumn,
|
};
|
||||||
cashflowMsfoWithCfColumn,
|
|
||||||
piColumn
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new ManagerResult
|
|
||||||
{
|
|
||||||
Errors = new List<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
@ -46,352 +45,340 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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,
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
finGAPNmperGrColumn,
|
||||||
dateTempColumn,
|
tlmGrColumn,
|
||||||
percentPaymentColumn,
|
gpsGrColumn,
|
||||||
kaskoNmperGrColumn,
|
sumColumn,
|
||||||
finGAPNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
evoKaskoNmperGrColumn,
|
||||||
insuranceBonusExpensesColumn,
|
negativeCashflowColumn,
|
||||||
comissionBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
expensesColumn,
|
taxColumn,
|
||||||
evoKaskoNmperGrColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
sumVATCreditColumn,
|
||||||
npvFinal2Column,
|
creditVATColumn,
|
||||||
sumCreditColumn,
|
subsidyExpensesColumn,
|
||||||
creditColumn,
|
vatRecoverableColumn,
|
||||||
sumVATCreditColumn,
|
creditPaymentColumn,
|
||||||
creditVATColumn,
|
cashflowMsfoWithCfColumn,
|
||||||
subsidyExpensesColumn,
|
piColumn
|
||||||
vatRecoverableColumn,
|
}
|
||||||
creditPaymentColumn,
|
};
|
||||||
cashflowMsfoWithCfColumn,
|
|
||||||
piColumn
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new ManagerResult
|
|
||||||
{
|
|
||||||
Errors = new List<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
@ -46,351 +45,339 @@ public static partial class CalculateManager
|
|||||||
? preparedValues.Nmper + 1
|
? preparedValues.Nmper + 1
|
||||||
: preparedValues.NmperDeprecation + 2;
|
: 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);
|
PostValues = postValues,
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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,
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
finGAPNmperGrColumn,
|
||||||
dateTempColumn,
|
tlmGrColumn,
|
||||||
percentPaymentColumn,
|
gpsGrColumn,
|
||||||
kaskoNmperGrColumn,
|
sumColumn,
|
||||||
finGAPNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
evoKaskoNmperGrColumn,
|
||||||
insuranceBonusExpensesColumn,
|
negativeCashflowColumn,
|
||||||
comissionBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
expensesColumn,
|
taxColumn,
|
||||||
evoKaskoNmperGrColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
sumVATCreditColumn,
|
||||||
npvFinal2Column,
|
creditVATColumn,
|
||||||
sumCreditColumn,
|
subsidyExpensesColumn,
|
||||||
creditColumn,
|
vatRecoverableColumn,
|
||||||
sumVATCreditColumn,
|
creditPaymentColumn,
|
||||||
creditVATColumn,
|
cashflowMsfoWithCfColumn,
|
||||||
subsidyExpensesColumn,
|
piColumn
|
||||||
vatRecoverableColumn,
|
}
|
||||||
creditPaymentColumn,
|
};
|
||||||
cashflowMsfoWithCfColumn,
|
|
||||||
piColumn
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
return new ManagerResult
|
|
||||||
{
|
|
||||||
Errors = new List<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,12 +6,12 @@ namespace EvoCalculator.Core.Calculation.v3;
|
|||||||
|
|
||||||
public class PostValues : v2.PostValues
|
public class PostValues : v2.PostValues
|
||||||
{
|
{
|
||||||
public decimal ContractEconomyWithVAT;
|
public decimal ContractEconomyWithVAT { get; set; }
|
||||||
public decimal DirectorBonus;
|
public decimal DirectorBonus { get; set; }
|
||||||
public decimal DirectorExtraBonus;
|
public decimal DirectorExtraBonus { get; set; }
|
||||||
public decimal RegionalDirectorBonus;
|
public decimal RegionalDirectorBonus { get; set; }
|
||||||
public decimal RegionalDirectorExtraBonus;
|
public decimal RegionalDirectorExtraBonus { get; set; }
|
||||||
public double PlanIRRMSFO;
|
public double PlanIRRMSFO { get; set; }
|
||||||
private readonly Constants.Calculation _constants;
|
private readonly Constants.Calculation _constants;
|
||||||
|
|
||||||
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
|
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
|
||||||
|
|||||||
@ -6,8 +6,4 @@
|
|||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -7,12 +7,11 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj"/>
|
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
<PackageReference Include="TridentGoalSeek" Version="1.0.5" />
|
||||||
<PackageReference Include="TridentGoalSeek" Version="1.0.5"/>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -10,7 +10,6 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
|
||||||
<PackageReference Include="TridentGoalSeek" Version="1.0.5" />
|
<PackageReference Include="TridentGoalSeek" Version="1.0.5" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||||
using EvoCalculator.Core.Tools.Array;
|
using EvoCalculator.Core.Tools.Array;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
|
||||||
@ -79,7 +80,7 @@ public class CashflowMSFOColumn : BaseColumnWithNominal
|
|||||||
public void PostCheck()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
if (Values.Length != Dates.Length)
|
if (Values.Length != Dates.Length)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,7 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
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;
|
||||||
using EvoCalculator.Core.Tools.GroupColumns.Models;
|
using EvoCalculator.Core.Tools.GroupColumns.Models;
|
||||||
|
|
||||||
@ -37,7 +37,7 @@ public class InterestColumn : BaseColumn<decimal>
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (negativeValuesCount > 1)
|
if (negativeValuesCount > 1)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
using EvoCalculator.Core.Tools.Check;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
|
||||||
@ -96,7 +97,7 @@ public class BaseSumColumn : BaseColumnWithNominal
|
|||||||
checkTools.CheckColumnForZeroValue(Values.Skip(2));
|
checkTools.CheckColumnForZeroValue(Values.Skip(2));
|
||||||
|
|
||||||
if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5)
|
if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж. Измените параметры для расчета.");
|
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж. Измените параметры для расчета.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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.lib;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||||
using EvoCalculator.Core.Tools.Array;
|
using EvoCalculator.Core.Tools.Array;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ public class TLMCostColumn : BaseColumnWithSum
|
|||||||
public void PostCheck()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
if (Values.Length != Dates.Length)
|
if (Values.Length != Dates.Length)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
@ -14,277 +12,264 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
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
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
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
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
{
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
Errors = new List<string>
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
{
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
ex.Message
|
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
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
@ -12,200 +10,187 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
@ -14,227 +12,215 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
var nextValues = new NextValues(preparedValues);
|
||||||
* CURRENT
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
*/
|
currentTablePayments);
|
||||||
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 nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
* NEXT
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
*/
|
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
nextSumColumn.PostCheck();
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
nextSumColumn.RoundValues();
|
||||||
|
|
||||||
var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
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;
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
|
||||||
, nextDateColumn);
|
|
||||||
|
|
||||||
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);
|
currentDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
currentDateTemp = currentDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
currentSumColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
|
||||||
nextTlmCostColumn.PostCheck();
|
nextDateColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextDateTempColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextTlmDateColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
@ -11,196 +9,183 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
// nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
// nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
@ -12,326 +10,313 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Current + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
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;
|
nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
|
||||||
TLMCostColumn techNextTlmCostColumn = null;
|
currentTablePayments);
|
||||||
TLMGrColumn techNextTlmGrColumn = null;
|
|
||||||
|
|
||||||
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);
|
techNextDateColumn,
|
||||||
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,
|
|
||||||
techNextDateTempColumn,
|
techNextDateTempColumn,
|
||||||
techNextTlmDateColumn);
|
techNextTlmDateColumn,
|
||||||
|
techNextTlmCostColumn,
|
||||||
var techNextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
techNextTlmGrColumn,
|
||||||
techNextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, techNextDateTempColumn,
|
techNextSumColumn,
|
||||||
techNextCashflowMSFOColumn);
|
techNextVATColumn,
|
||||||
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,
|
techNextSumWithVATColumn,
|
||||||
techNextDateTempColumn, techNextCashflowMSFOForNIColumn, constants);
|
techNextNSIBBruttoGrColumn,
|
||||||
|
techNextSubsidyExpensesColumn,
|
||||||
/*
|
techNextCashflowMSFOColumn,
|
||||||
* TECH
|
techNextCashflowMSFOForNIColumn,
|
||||||
*/
|
techNextIRRGrColumn,
|
||||||
|
techNextNIColumn,
|
||||||
/*
|
techNextInterestColumn,
|
||||||
* NEXT
|
techNextSumCurrentColumn,
|
||||||
*/
|
techNextSumCurrentNegativeColumn,
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
techNextSumCurrentInterestColumn,
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
techNextSumCurrentTLMColumn,
|
||||||
|
techNextSumRepaymentColumn,
|
||||||
var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
nextDateColumn,
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
nextDateTempColumn,
|
||||||
|
nextTlmDateColumn,
|
||||||
|
nextTlmCostColumn,
|
||||||
TLMDateColumn nextTlmDateColumn = null;
|
nextTlmGrColumn,
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextSumColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextVATColumn,
|
||||||
|
nextSumWithVATColumn,
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
nextNSIBBruttoGrColumn,
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextSubsidyExpensesColumn,
|
||||||
, nextDateColumn);
|
nextCashflowMSFOColumn,
|
||||||
|
nextCashflowMSFOForNIColumn,
|
||||||
if (tlmData != null)
|
nextIRRGrColumn,
|
||||||
{
|
nextNIColumn,
|
||||||
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
nextInterestColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextSumCurrentColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextSumCurrentNegativeColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextSumCurrentInterestColumn,
|
||||||
nextTlmCostColumn.PostCheck();
|
nextSumCurrentTLMColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumRepaymentColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextCashflowMSFOFinalColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
@ -14,281 +12,268 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
}
|
||||||
|
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
|
||||||
* CURRENT
|
currentTablePayments);
|
||||||
*/
|
|
||||||
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;
|
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||||
TLMCostColumn techNextTlmCostColumn = null;
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
TLMGrColumn techNextTlmGrColumn = null;
|
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||||
|
|
||||||
var techTlmData = new Helper().GetTLMData(preparedValues
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||||
, techNextDateColumn);
|
|
||||||
|
|
||||||
if (techTlmData != null)
|
var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
{
|
techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
|
||||||
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
techNextSumWithVATColumn.ComputeValues();
|
||||||
techNextTlmDateColumn.ComputeValues(techTlmData);
|
|
||||||
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
||||||
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
|
||||||
techNextTlmCostColumn.PostCheck();
|
/*
|
||||||
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
* TECH
|
||||||
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
*/
|
||||||
}
|
|
||||||
|
/*
|
||||||
|
* 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,
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
currentTablePayments);
|
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,
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
currentTablePayments);
|
||||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
|
||||||
|
|
||||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
|
||||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
|
||||||
var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
|
||||||
techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
|
|
||||||
techNextSumWithVATColumn.ComputeValues();
|
|
||||||
|
|
||||||
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
|
||||||
nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
/*
|
nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
|
||||||
* TECH
|
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
|
* NEXT
|
||||||
*/
|
*/
|
||||||
var nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
|
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
|
||||||
|
|
||||||
var nextDateTempColumn = new Columns.Next.DateTempColumn(nextValues.Nmper + 1);
|
var postValues = new PostValues(preparedValues);
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
|
||||||
|
|
||||||
|
|
||||||
TLMDateColumn nextTlmDateColumn = null;
|
return new ManagerResult
|
||||||
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
|
PostValues = postValues,
|
||||||
|
NextValues = nextValues,
|
||||||
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
{
|
{
|
||||||
Errors = new List<string>
|
currentDateColumn,
|
||||||
{
|
currentDateTemp = currentDateTempColumn,
|
||||||
ex.Message
|
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
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
@ -14,240 +12,227 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
var nextValues = new NextValues(preparedValues);
|
||||||
* CURRENT
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
*/
|
currentTablePayments);
|
||||||
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 techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
* NEXT
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
*/
|
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
|
||||||
|
|
||||||
var nextDateTempColumn = new Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
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;
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
, nextDateColumn);
|
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);
|
currentDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
currentDateTemp = currentDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
currentSumColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
|
||||||
nextTlmCostColumn.PostCheck();
|
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
|
||||||
nextTlmGrColumn.PostCheck();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
nextDateColumn,
|
||||||
var nextValues = new NextValues(preparedValues);
|
nextDateTempColumn,
|
||||||
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
nextTlmDateColumn,
|
||||||
currentTablePayments);
|
nextTlmCostColumn,
|
||||||
|
nextTlmGrColumn,
|
||||||
|
techNextSumColumn,
|
||||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
techNextVATColumn,
|
||||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
techNextSumWithVATColumn,
|
||||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
nextSumColumn,
|
||||||
|
nextVATColumn,
|
||||||
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,
|
|
||||||
nextSumWithVATColumn,
|
nextSumWithVATColumn,
|
||||||
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
nextNSIBBruttoGrColumn,
|
||||||
nextSumRepaymentColumn.PostCheck();
|
nextSubsidyExpensesColumn,
|
||||||
|
nextCashflowMSFOColumn,
|
||||||
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
nextCashflowMSFOForNIColumn,
|
||||||
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
nextIRRGrColumn,
|
||||||
|
nextNIColumn,
|
||||||
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
nextInterestColumn,
|
||||||
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
nextSumCurrentColumn,
|
||||||
preparedValues);
|
nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentInterestColumn,
|
||||||
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
nextSumCurrentTLMColumn,
|
||||||
nextSumCreditColumn.ComputeValues(preparedValues, nextValues, constants, nextSumColumn);
|
nextSumRepaymentColumn,
|
||||||
|
nextCashflowMSFOFinalColumn,
|
||||||
var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
nextCashflowMSFOFinal2Column,
|
||||||
nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
|
nextSumCreditColumn,
|
||||||
|
nextCreditColumn,
|
||||||
nextValues.Nmper = preparedValues.Nmper.Next;
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1);
|
nextRevenueColumn
|
||||||
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
@ -12,200 +10,187 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult Suspension(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
// nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
// nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,20 +1,20 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.PostCalculation.v1;
|
namespace EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
|
||||||
public class NextValues
|
public class NextValues
|
||||||
{
|
{
|
||||||
public decimal AcquisitionExpenses;
|
public decimal AcquisitionExpenses { get; set; }
|
||||||
public decimal BaseCost;
|
public decimal BaseCost { get; set; }
|
||||||
public decimal NiAtInception;
|
public decimal NiAtInception { get; set; }
|
||||||
public decimal NiAtInceptionMSFO;
|
public decimal NiAtInceptionMSFO { get; set; }
|
||||||
public int Nmper;
|
public int Nmper { get; set; }
|
||||||
|
public decimal SumTotal { get; set; }
|
||||||
protected PreparedValues preparedValues;
|
protected PreparedValues preparedValues;
|
||||||
public decimal SumTotal;
|
|
||||||
|
|
||||||
public NextValues(PreparedValues preparedValues)
|
public NextValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
@ -73,7 +73,7 @@ public class NextValues
|
|||||||
+ preparedValues.InceptDelta;
|
+ preparedValues.InceptDelta;
|
||||||
|
|
||||||
if (AcquisitionExpenses <= 0)
|
if (AcquisitionExpenses <= 0)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ public class NextValues
|
|||||||
|
|
||||||
// PostCheck
|
// PostCheck
|
||||||
if (BaseCost <= 0)
|
if (BaseCost <= 0)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,14 +167,14 @@ public class NextValues
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (i == 0)
|
if (i == 0)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП");
|
"Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП");
|
||||||
|
|
||||||
Nmper = preparedValues.Nmper.Current - i + 1;
|
Nmper = preparedValues.Nmper.Current - i + 1;
|
||||||
|
|
||||||
// PostCheck
|
// PostCheck
|
||||||
if (Nmper < 13 && preparedValues.BalanceHolder.Next == 100000001)
|
if (Nmper < 13 && preparedValues.BalanceHolder.Next == 100000001)
|
||||||
throw new Exception(
|
throw new AppException(
|
||||||
"По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета");
|
"По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,6 +182,6 @@ public class NextValues
|
|||||||
{
|
{
|
||||||
SumTotal = preparedValues.TotalExpected
|
SumTotal = preparedValues.TotalExpected
|
||||||
- (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0))
|
- (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0))
|
||||||
* (decimal) preparedValues.Repayment;
|
* (decimal)preparedValues.Repayment;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8,7 +8,7 @@ public class PostValues
|
|||||||
{
|
{
|
||||||
protected PreparedValues _preparedValues;
|
protected PreparedValues _preparedValues;
|
||||||
|
|
||||||
public decimal ContractEconomy;
|
public decimal ContractEconomy { get; set; }
|
||||||
|
|
||||||
public PostValues(PreparedValues preparedValues)
|
public PostValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -18,286 +16,273 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
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
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
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
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
{
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
Errors = new List<string>
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
{
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
ex.Message
|
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
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -17,235 +15,222 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateByIRRNoLimit(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
var nextValues = new NextValues(preparedValues);
|
||||||
* CURRENT
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
*/
|
currentTablePayments);
|
||||||
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 nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
* NEXT
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
*/
|
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
nextSumColumn.PostCheck();
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
nextSumColumn.RoundValues();
|
||||||
|
|
||||||
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
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;
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
|
||||||
, nextDateColumn);
|
|
||||||
|
|
||||||
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);
|
currentDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
currentDateTemp = currentDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
currentSumColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
|
||||||
nextTlmCostColumn.PostCheck();
|
nextDateColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextDateTempColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextTlmDateColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -15,209 +13,196 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -17,236 +15,223 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
var nextValues = new NextValues(preparedValues);
|
||||||
* CURRENT
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
*/
|
currentTablePayments);
|
||||||
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 nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
* NEXT
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
*/
|
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
nextSumColumn.PostCheck();
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
nextSumColumn.RoundValues();
|
||||||
|
|
||||||
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
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;
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextVATColumn.ComputeValues(preparedValues, nextSumColumn, currentTablePayments, constants);
|
||||||
, nextDateColumn);
|
|
||||||
|
|
||||||
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);
|
currentDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
currentDateTemp = currentDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
currentSumColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
|
||||||
nextTlmCostColumn.PostCheck();
|
nextDateColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextDateTempColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextTlmDateColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using System.Collections.Generic;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
@ -14,205 +12,192 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
// nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
// nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -15,335 +13,322 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Current + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
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;
|
nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
|
||||||
TLMCostColumn techNextTlmCostColumn = null;
|
currentTablePayments);
|
||||||
TLMGrColumn techNextTlmGrColumn = null;
|
|
||||||
|
|
||||||
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);
|
techNextDateColumn,
|
||||||
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,
|
|
||||||
techNextDateTempColumn,
|
techNextDateTempColumn,
|
||||||
techNextTlmDateColumn);
|
techNextTlmDateColumn,
|
||||||
|
techNextTlmCostColumn,
|
||||||
var techNextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
techNextTlmGrColumn,
|
||||||
techNextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, techNextDateTempColumn,
|
techNextSumColumn,
|
||||||
techNextCashflowMSFOColumn);
|
techNextVATColumn,
|
||||||
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,
|
techNextSumWithVATColumn,
|
||||||
techNextDateTempColumn, techNextCashflowMSFOForNIColumn, constants);
|
techNextNSIBBruttoGrColumn,
|
||||||
|
techNextSubsidyExpensesColumn,
|
||||||
/*
|
techNextCashflowMSFOColumn,
|
||||||
* TECH
|
techNextCashflowMSFOForNIColumn,
|
||||||
*/
|
techNextIRRGrColumn,
|
||||||
|
techNextNIColumn,
|
||||||
/*
|
techNextInterestColumn,
|
||||||
* NEXT
|
techNextSumCurrentColumn,
|
||||||
*/
|
techNextSumCurrentNegativeColumn,
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
techNextSumCurrentInterestColumn,
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
techNextSumCurrentTLMColumn,
|
||||||
|
techNextSumRepaymentColumn,
|
||||||
var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
nextDateColumn,
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
nextDateTempColumn,
|
||||||
|
nextTlmDateColumn,
|
||||||
|
nextTlmCostColumn,
|
||||||
TLMDateColumn nextTlmDateColumn = null;
|
nextTlmGrColumn,
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextSumColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextVATColumn,
|
||||||
|
nextSumWithVATColumn,
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
nextNSIBBruttoGrColumn,
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextSubsidyExpensesColumn,
|
||||||
, nextDateColumn);
|
nextCashflowMSFOColumn,
|
||||||
|
nextCashflowMSFOForNIColumn,
|
||||||
if (tlmData != null)
|
nextIRRGrColumn,
|
||||||
{
|
nextNIColumn,
|
||||||
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
nextInterestColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextSumCurrentColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextSumCurrentNegativeColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextSumCurrentInterestColumn,
|
||||||
nextTlmCostColumn.PostCheck();
|
nextSumCurrentTLMColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumRepaymentColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextCashflowMSFOFinalColumn,
|
||||||
nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -17,290 +15,277 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation)
|
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();
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
}
|
||||||
|
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
|
||||||
* CURRENT
|
currentTablePayments);
|
||||||
*/
|
|
||||||
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;
|
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||||
TLMCostColumn techNextTlmCostColumn = null;
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
TLMGrColumn techNextTlmGrColumn = null;
|
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||||
|
|
||||||
var techTlmData = new Helper().GetTLMData(preparedValues
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||||
, techNextDateColumn);
|
|
||||||
|
|
||||||
if (techTlmData != null)
|
var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
{
|
techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
|
||||||
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
techNextSumWithVATColumn.ComputeValues();
|
||||||
techNextTlmDateColumn.ComputeValues(techTlmData);
|
|
||||||
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
||||||
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
|
||||||
techNextTlmCostColumn.PostCheck();
|
/*
|
||||||
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
* TECH
|
||||||
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
*/
|
||||||
}
|
|
||||||
|
/*
|
||||||
|
* 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,
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
currentTablePayments);
|
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,
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
currentTablePayments);
|
||||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
|
||||||
|
|
||||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
|
||||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
|
||||||
var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
|
||||||
techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
|
|
||||||
techNextSumWithVATColumn.ComputeValues();
|
|
||||||
|
|
||||||
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
|
||||||
nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
/*
|
nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
|
||||||
* TECH
|
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
|
* NEXT
|
||||||
*/
|
*/
|
||||||
var nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
|
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
|
||||||
|
|
||||||
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(nextValues.Nmper + 1);
|
var postValues = new v2.PostValues(preparedValues);
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
|
||||||
|
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
|
||||||
|
|
||||||
|
|
||||||
TLMDateColumn nextTlmDateColumn = null;
|
return new ManagerResult
|
||||||
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
|
PostValues = postValues,
|
||||||
|
NextValues = nextValues,
|
||||||
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
{
|
{
|
||||||
Errors = new List<string>
|
currentDateColumn,
|
||||||
{
|
currentDateTemp = currentDateTempColumn,
|
||||||
ex.Message
|
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
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -17,249 +15,236 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
|
||||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
var nextValues = new NextValues(preparedValues);
|
||||||
* CURRENT
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
*/
|
currentTablePayments);
|
||||||
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 techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
* NEXT
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
*/
|
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
|
||||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
|
||||||
|
|
||||||
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
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;
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
var tlmData = new Helper().GetTLMData(preparedValues
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
, currentTableTLMTracker, nextTableTLMTracker
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
, nextDateColumn);
|
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);
|
currentDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
currentDateTemp = currentDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
currentSumColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
|
||||||
nextTlmCostColumn.PostCheck();
|
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
|
||||||
nextTlmGrColumn.PostCheck();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
nextDateColumn,
|
||||||
var nextValues = new NextValues(preparedValues);
|
nextDateTempColumn,
|
||||||
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
nextTlmDateColumn,
|
||||||
currentTablePayments);
|
nextTlmCostColumn,
|
||||||
|
nextTlmGrColumn,
|
||||||
|
techNextSumColumn,
|
||||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
techNextVATColumn,
|
||||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
techNextSumWithVATColumn,
|
||||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
nextSumColumn,
|
||||||
|
nextVATColumn,
|
||||||
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,
|
|
||||||
nextSumWithVATColumn,
|
nextSumWithVATColumn,
|
||||||
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
nextNSIBBruttoGrColumn,
|
||||||
nextSumRepaymentColumn.PostCheck();
|
nextSubsidyExpensesColumn,
|
||||||
|
nextCashflowMSFOColumn,
|
||||||
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
nextCashflowMSFOForNIColumn,
|
||||||
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
nextIRRGrColumn,
|
||||||
|
nextNIColumn,
|
||||||
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
nextInterestColumn,
|
||||||
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
nextSumCurrentColumn,
|
||||||
preparedValues);
|
nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentInterestColumn,
|
||||||
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
nextSumCurrentTLMColumn,
|
||||||
nextSumCreditColumn.ComputeValues(preparedValues, nextSumWithVATColumn);
|
nextSumRepaymentColumn,
|
||||||
|
nextCashflowMSFOFinalColumn,
|
||||||
var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
nextCashflowMSFOFinal2Column,
|
||||||
nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
|
nextSumCreditColumn,
|
||||||
|
nextCreditColumn,
|
||||||
nextValues.Nmper = preparedValues.Nmper.Next;
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
nextNSIBExpensesColumn,
|
||||||
nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,4 @@
|
|||||||
using System;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1;
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
@ -15,208 +13,195 @@ public static partial class CalculateManager
|
|||||||
{
|
{
|
||||||
public static ManagerResult Suspension(RequestCalculation requestCalculation)
|
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();
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
var preparedValues = requestCalculation.PreparedValues;
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
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;
|
var nextValues = new NextValues(preparedValues);
|
||||||
TLMCostColumn nextTlmCostColumn = null;
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
TLMGrColumn nextTlmGrColumn = null;
|
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);
|
nextDateColumn,
|
||||||
nextTlmDateColumn.ComputeValues(tlmData);
|
nextDateTempColumn,
|
||||||
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
nextTlmDateColumn,
|
||||||
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
nextTlmCostColumn,
|
||||||
// nextTlmCostColumn.PostCheck();
|
nextTlmGrColumn,
|
||||||
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
nextSumColumn,
|
||||||
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
nextNSIBBruttoGrColumn,
|
||||||
// nextTlmGrColumn.PostCheck();
|
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<string>
|
|
||||||
{
|
|
||||||
ex.Message
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -6,7 +6,7 @@ namespace EvoCalculator.Core.PostCalculation.v2;
|
|||||||
|
|
||||||
public class PostValues : v1.PostValues
|
public class PostValues : v1.PostValues
|
||||||
{
|
{
|
||||||
public decimal ContractEconomyWithVAT;
|
public decimal ContractEconomyWithVAT { get; set; }
|
||||||
|
|
||||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
|
||||||
<PackageReference Include="xunit" Version="2.4.1" />
|
<PackageReference Include="xunit" Version="2.4.1" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tools.Check;
|
namespace EvoCalculator.Core.Tools.Check;
|
||||||
|
|
||||||
@ -10,12 +11,12 @@ public class CheckTools
|
|||||||
string errorMsg =
|
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<decimal> Values, string errorMsg =
|
public void CheckColumnForZeroValue(IEnumerable<decimal> 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
23
EvoCalculator.Core.Tools/Errors/AppException.cs
Normal file
23
EvoCalculator.Core.Tools/Errors/AppException.cs
Normal file
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -6,7 +6,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj"/>
|
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -2,8 +2,6 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.Calculation.v1;
|
namespace EvoCalculator.Core.Controllers.Calculation.v1;
|
||||||
|
|
||||||
@ -22,15 +20,6 @@ public class CalculationController : Controller
|
|||||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
};
|
};
|
||||||
|
|
||||||
var hasErrors = result.Errors is {Count: > 0};
|
return result;
|
||||||
var statusCode = hasErrors ? 500 : 200;
|
|
||||||
|
|
||||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
|
||||||
result,
|
|
||||||
new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,8 +2,6 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.Calculation.v2;
|
namespace EvoCalculator.Core.Controllers.Calculation.v2;
|
||||||
|
|
||||||
@ -22,15 +20,6 @@ public class CalculationController : Controller
|
|||||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
};
|
};
|
||||||
|
|
||||||
var hasErrors = result.Errors is {Count: > 0};
|
return result;
|
||||||
var statusCode = hasErrors ? 500 : 200;
|
|
||||||
|
|
||||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
|
||||||
result,
|
|
||||||
new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,8 +2,6 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.Calculation.v3;
|
namespace EvoCalculator.Core.Controllers.Calculation.v3;
|
||||||
|
|
||||||
@ -23,15 +21,6 @@ public class CalculationController : Controller
|
|||||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
};
|
};
|
||||||
|
|
||||||
var hasErrors = result.Errors is {Count: > 0};
|
return result;
|
||||||
var statusCode = hasErrors ? 500 : 200;
|
|
||||||
|
|
||||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
|
||||||
result,
|
|
||||||
new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,9 +1,6 @@
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
|
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
|
||||||
@ -29,15 +26,6 @@ public class PostCalculationController : Controller
|
|||||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
};
|
};
|
||||||
|
|
||||||
var hasErrors = result.Errors is {Count: > 0};
|
return result;
|
||||||
var statusCode = hasErrors ? 500 : 200;
|
|
||||||
|
|
||||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
|
||||||
result,
|
|
||||||
new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,9 +1,6 @@
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v2.Managers;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
|
||||||
using Newtonsoft.Json.Serialization;
|
|
||||||
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.PostCalculation.v2;
|
namespace EvoCalculator.Core.Controllers.PostCalculation.v2;
|
||||||
@ -31,15 +28,6 @@ public class PostCalculationController : Controller
|
|||||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
};
|
};
|
||||||
|
|
||||||
var hasErrors = result.Errors is {Count: > 0};
|
return result;
|
||||||
var statusCode = hasErrors ? 500 : 200;
|
|
||||||
|
|
||||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
|
||||||
result,
|
|
||||||
new JsonSerializerSettings
|
|
||||||
{
|
|
||||||
Formatting = Formatting.Indented,
|
|
||||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
|
||||||
}));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -7,7 +7,6 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
|
||||||
<PackageReference Include="NSwag.AspNetCore" Version="13.15.4" />
|
<PackageReference Include="NSwag.AspNetCore" Version="13.15.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@ -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.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
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.
|
// This method gets called by the runtime. Use this method to add services to the container.
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
services.AddControllers();
|
services.AddControllers().AddJsonOptions(options =>
|
||||||
|
{
|
||||||
|
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
|
||||||
|
options.JsonSerializerOptions.WriteIndented = true;
|
||||||
|
});
|
||||||
|
|
||||||
services.AddApiVersioning(opt =>
|
services.AddApiVersioning(opt =>
|
||||||
{
|
{
|
||||||
@ -44,6 +54,28 @@ public class Startup
|
|||||||
app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; });
|
app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; });
|
||||||
app.UseRouting();
|
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<string> { ex.Message } };
|
||||||
|
|
||||||
|
await response.WriteAsJsonAsync(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
|
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user