merge release/dyn-1032_used-without-nds
This commit is contained in:
parent
5776749ae8
commit
bd5f5fd3b7
@ -9,7 +9,7 @@ public class CreditColumn : BaseColumnWithSum
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> sumCreditColumn)
|
||||||
{
|
{
|
||||||
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
|
|||||||
22
EvoCalculator.Core.Calculation/v3/Columns/CreditVATColumn.cs
Normal file
22
EvoCalculator.Core.Calculation/v3/Columns/CreditVATColumn.cs
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|
||||||
|
public class CreditVATColumn : BaseColumnWithSum
|
||||||
|
{
|
||||||
|
public CreditVATColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> sumVATCreditColumn)
|
||||||
|
{
|
||||||
|
Values[1] = -sumVATCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
||||||
|
for (var i = 2; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) < 0)
|
||||||
|
Values[i] = -sumVATCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
Values[0] = Sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
23
EvoCalculator.Core.Calculation/v3/Columns/SumCreditColumn.cs
Normal file
23
EvoCalculator.Core.Calculation/v3/Columns/SumCreditColumn.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|
||||||
|
public class SumCreditColumn : BaseColumn<decimal>
|
||||||
|
{
|
||||||
|
public SumCreditColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> sumWithVATColumn)
|
||||||
|
{
|
||||||
|
Values[1] = preparedValues.PlPriceWithVAT - sumWithVATColumn.GetValue(1);
|
||||||
|
Values[2] = Values[1];
|
||||||
|
|
||||||
|
for (var i = 3; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) > 0)
|
||||||
|
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||||
|
|
||||||
|
public class SumVATCreditColumn : BaseColumn<decimal>
|
||||||
|
{
|
||||||
|
public SumVATCreditColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> VATColumn)
|
||||||
|
{
|
||||||
|
Values[1] = VATColumn.GetValue(0) - preparedValues.PlPriceVAT;
|
||||||
|
Values[2] = Values[1];
|
||||||
|
|
||||||
|
for (var i = 3; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) > 0)
|
||||||
|
Values[i] = GetValue(i - 1) - GetValue(2) / 12;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -17,6 +17,7 @@ using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperG
|
|||||||
using NegativeCashflowColumn = EvoCalculator.Core.Calculation.v3.Columns.NegativeCashflowColumn;
|
using NegativeCashflowColumn = EvoCalculator.Core.Calculation.v3.Columns.NegativeCashflowColumn;
|
||||||
using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn;
|
using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn;
|
||||||
using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
|
using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.Calculation.v3.Columns.SumCreditColumn;
|
||||||
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
||||||
|
|
||||||
@ -255,11 +256,18 @@ public static partial class CalculateManager
|
|||||||
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
|
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
|
||||||
|
|
||||||
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
|
sumCreditColumn.ComputeValues(preparedValues, sumWithVatColumn);
|
||||||
|
|
||||||
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||||
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
||||||
|
|
||||||
|
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(sumColumn);
|
||||||
postValues.ComputePriceUP_PR();
|
postValues.ComputePriceUP_PR();
|
||||||
postValues.ComputePriceUP_Year();
|
postValues.ComputePriceUP_Year();
|
||||||
@ -267,6 +275,7 @@ public static partial class CalculateManager
|
|||||||
postValues.ComputeNPVNI(npvColumn);
|
postValues.ComputeNPVNI(npvColumn);
|
||||||
postValues.ComputeBonusResult(npvBonusExpensesColumn);
|
postValues.ComputeBonusResult(npvBonusExpensesColumn);
|
||||||
postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
|
postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
|
||||||
|
postValues.ComputeContractEconomyWithVAT(creditVATColumn);
|
||||||
|
|
||||||
|
|
||||||
return new ManagerResult
|
return new ManagerResult
|
||||||
@ -333,6 +342,8 @@ public static partial class CalculateManager
|
|||||||
npvFinal2Column,
|
npvFinal2Column,
|
||||||
sumCreditColumn,
|
sumCreditColumn,
|
||||||
creditColumn,
|
creditColumn,
|
||||||
|
sumVATCreditColumn,
|
||||||
|
creditVATColumn,
|
||||||
subsidyExpensesColumn
|
subsidyExpensesColumn
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -17,6 +17,7 @@ using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperG
|
|||||||
using NegativeCashflowColumn = EvoCalculator.Core.Calculation.v3.Columns.NegativeCashflowColumn;
|
using NegativeCashflowColumn = EvoCalculator.Core.Calculation.v3.Columns.NegativeCashflowColumn;
|
||||||
using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn;
|
using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn;
|
||||||
using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
|
using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.Calculation.v3.Columns.SumCreditColumn;
|
||||||
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
||||||
|
|
||||||
@ -254,10 +255,16 @@ public static partial class CalculateManager
|
|||||||
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
|
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
|
||||||
|
|
||||||
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
|
sumCreditColumn.ComputeValues(preparedValues, sumWithVatColumn);
|
||||||
|
|
||||||
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||||
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
||||||
|
|
||||||
|
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(sumColumn);
|
||||||
postValues.ComputePriceUP_PR();
|
postValues.ComputePriceUP_PR();
|
||||||
@ -266,6 +273,7 @@ public static partial class CalculateManager
|
|||||||
postValues.ComputeNPVNI(npvColumn);
|
postValues.ComputeNPVNI(npvColumn);
|
||||||
postValues.ComputeBonusResult(npvBonusExpensesColumn);
|
postValues.ComputeBonusResult(npvBonusExpensesColumn);
|
||||||
postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
|
postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
|
||||||
|
postValues.ComputeContractEconomyWithVAT(creditVATColumn);
|
||||||
|
|
||||||
|
|
||||||
return new ManagerResult
|
return new ManagerResult
|
||||||
@ -332,6 +340,8 @@ public static partial class CalculateManager
|
|||||||
npvFinal2Column,
|
npvFinal2Column,
|
||||||
sumCreditColumn,
|
sumCreditColumn,
|
||||||
creditColumn,
|
creditColumn,
|
||||||
|
sumVATCreditColumn,
|
||||||
|
creditVATColumn,
|
||||||
subsidyExpensesColumn
|
subsidyExpensesColumn
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -6,6 +6,8 @@ namespace EvoCalculator.Core.Calculation.v3;
|
|||||||
|
|
||||||
public class PostValues : v2.PostValues
|
public class PostValues : v2.PostValues
|
||||||
{
|
{
|
||||||
|
public decimal ContractEconomyWithVAT;
|
||||||
|
|
||||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -20,4 +22,9 @@ public class PostValues : v2.PostValues
|
|||||||
(decimal) _preparedValues.Leasing0K +
|
(decimal) _preparedValues.Leasing0K +
|
||||||
_preparedValues.NsibBrutto;
|
_preparedValues.NsibBrutto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ComputeContractEconomyWithVAT(BaseColumn<decimal> creditVATColumn)
|
||||||
|
{
|
||||||
|
ContractEconomyWithVAT = this.ContractEconomy + creditVATColumn.GetValue(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -42,6 +42,8 @@ public class PreparedValues
|
|||||||
public int ScheduleOfPayments { get; set; }
|
public int ScheduleOfPayments { get; set; }
|
||||||
public decimal ComissionRub { get; set; }
|
public decimal ComissionRub { get; set; }
|
||||||
public decimal PlPrice { get; set; }
|
public decimal PlPrice { get; set; }
|
||||||
|
public decimal PlPriceWithVAT { get; set; }
|
||||||
|
public decimal PlPriceVAT { get; set; }
|
||||||
public decimal Discount { get; set; }
|
public decimal Discount { get; set; }
|
||||||
public decimal AcceptSum { get; set; }
|
public decimal AcceptSum { get; set; }
|
||||||
public string PlTypeId { get; set; }
|
public string PlTypeId { get; set; }
|
||||||
|
|||||||
@ -6,6 +6,7 @@ namespace EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
|||||||
|
|
||||||
public class PreparedValues
|
public class PreparedValues
|
||||||
{
|
{
|
||||||
|
public DateTime CalcDate { get; set; } = DateTime.Now;
|
||||||
public DateTime DateInput { get; set; }
|
public DateTime DateInput { get; set; }
|
||||||
public DateTime DogDate { get; set; }
|
public DateTime DogDate { get; set; }
|
||||||
public decimal Leasing0K { get; set; }
|
public decimal Leasing0K { get; set; }
|
||||||
@ -32,6 +33,9 @@ public class PreparedValues
|
|||||||
|
|
||||||
public ChangingValue<int> Nmper { get; set; }
|
public ChangingValue<int> Nmper { get; set; }
|
||||||
public ChangingValue<decimal> PlPrice { get; set; }
|
public ChangingValue<decimal> PlPrice { get; set; }
|
||||||
|
|
||||||
|
public decimal PlPriceWithVAT { get; set; }
|
||||||
|
public decimal PlPriceVAT { get; set; }
|
||||||
public ChangingValue<decimal> Discount { get; set; }
|
public ChangingValue<decimal> Discount { get; set; }
|
||||||
|
|
||||||
public decimal AgentFLSum { get; set; }
|
public decimal AgentFLSum { get; set; }
|
||||||
|
|||||||
@ -10,8 +10,4 @@
|
|||||||
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
|
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="v1\Managers\PostValues" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
|
||||||
|
public class CreditVATColumn : BaseColumnWithSum
|
||||||
|
{
|
||||||
|
public CreditVATColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> nextSumVATCreditColumn)
|
||||||
|
{
|
||||||
|
Values[1] = -nextSumVATCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
||||||
|
for (var i = 2; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) < 0)
|
||||||
|
Values[i] = -nextSumVATCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
Values[0] = Sum;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
|
||||||
|
public class SumCreditColumn : BaseColumn<decimal>
|
||||||
|
{
|
||||||
|
public SumCreditColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> nextSumWithVATColumn)
|
||||||
|
{
|
||||||
|
Values[1] = Values[2] = preparedValues.PlPriceWithVAT - nextSumWithVATColumn.GetValue(1);
|
||||||
|
|
||||||
|
for (var i = 3; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) > 0)
|
||||||
|
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,22 @@
|
|||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
|
||||||
|
public class SumVATCreditColumn : BaseColumn<decimal>
|
||||||
|
{
|
||||||
|
public SumVATCreditColumn(int count) : base(count)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> nextVATColumn)
|
||||||
|
{
|
||||||
|
Values[1] = Values[2] = nextVATColumn.GetValue(0) - preparedValues.PlPriceVAT;
|
||||||
|
|
||||||
|
for (var i = 3; i < Values.Length; i++)
|
||||||
|
if (GetValue(i - 1) > 0)
|
||||||
|
Values[i] = GetValue(i - 1) - GetValue(2) / 12;
|
||||||
|
else
|
||||||
|
Values[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,303 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Next.DateTempColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
using SumVATCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumVATCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CURRENT
|
||||||
|
*/
|
||||||
|
var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateColumn.ComputeValues(currentTablePayments);
|
||||||
|
|
||||||
|
var currentDateTempColumn =
|
||||||
|
new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateTempColumn.ComputeValues(preparedValues, currentDateColumn);
|
||||||
|
|
||||||
|
var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn);
|
||||||
|
currentSumColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
/*
|
||||||
|
* CURRENT
|
||||||
|
*/
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TECH
|
||||||
|
*/
|
||||||
|
var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Next + 1);
|
||||||
|
techNextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn techNextTlmDateColumn = null;
|
||||||
|
TLMCostColumn techNextTlmCostColumn = null;
|
||||||
|
TLMGrColumn techNextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var techTlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, techNextDateColumn);
|
||||||
|
|
||||||
|
if (techTlmData != null)
|
||||||
|
{
|
||||||
|
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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,223 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
/*
|
||||||
|
* NEXT
|
||||||
|
*/
|
||||||
|
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
|
TLMCostColumn nextTlmCostColumn = null;
|
||||||
|
TLMGrColumn nextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var tlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, nextDateColumn);
|
||||||
|
|
||||||
|
if (tlmData != null)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
|
||||||
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
|
nextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected);
|
||||||
|
nextSumWithVATColumn.PostCheck();
|
||||||
|
nextVATColumn.PostCheck();
|
||||||
|
nextSumColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
currentTablePayments, nextSumColumn);
|
||||||
|
var nsibRequiredValue = currentTablePayments
|
||||||
|
.Where((x, i) => i >= preparedValues.EditPaymentNumber - 1)
|
||||||
|
.Sum(x => x.NSIBBruttoPayment);
|
||||||
|
nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue);
|
||||||
|
|
||||||
|
var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
|
||||||
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
|
nextCashflowMSFOColumn);
|
||||||
|
nextCashflowMSFOColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn);
|
||||||
|
|
||||||
|
var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn);
|
||||||
|
|
||||||
|
var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn);
|
||||||
|
nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates);
|
||||||
|
|
||||||
|
var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||||
|
|
||||||
|
var nextSumCurrentInterestColumn =
|
||||||
|
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||||
|
|
||||||
|
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
|
||||||
|
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn,
|
||||||
|
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
||||||
|
nextSumRepaymentColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
||||||
|
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
||||||
|
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
||||||
|
preparedValues);
|
||||||
|
|
||||||
|
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
|
nextSumCreditColumn.ComputeValues(preparedValues, 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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,252 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CURRENT
|
||||||
|
*/
|
||||||
|
var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateColumn.ComputeValues(currentTablePayments);
|
||||||
|
|
||||||
|
var currentDateTempColumn =
|
||||||
|
new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateTempColumn.ComputeValues(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)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var nextSumColumn = new 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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,218 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
/*
|
||||||
|
* NEXT
|
||||||
|
*/
|
||||||
|
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
|
TLMCostColumn nextTlmCostColumn = null;
|
||||||
|
TLMGrColumn nextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var tlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, nextDateColumn);
|
||||||
|
|
||||||
|
if (tlmData != null)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var nextSumColumn = new SumColumnVT4(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
nextSumColumn.ComputeValues();
|
||||||
|
|
||||||
|
var nextVATColumn = new VATColumnVT2();
|
||||||
|
nextVATColumn.ComputeValues(preparedValues, currentTablePayments, constants);
|
||||||
|
|
||||||
|
var nextSumWithVATColumn = new SumWithVATColumnVT3();
|
||||||
|
nextSumWithVATColumn.ComputeValues(preparedValues, currentTablePayments, constants);
|
||||||
|
// nextSumWithVATColumn.PostCheck();
|
||||||
|
// nextVATColumn.PostCheck();
|
||||||
|
// nextSumColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT2();
|
||||||
|
nextNSIBBruttoGrColumn.ComputeValues(currentTablePayments);
|
||||||
|
|
||||||
|
var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
|
||||||
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
|
nextCashflowMSFOColumn);
|
||||||
|
// nextCashflowMSFOColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn);
|
||||||
|
|
||||||
|
var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn);
|
||||||
|
|
||||||
|
var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn);
|
||||||
|
// nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates);
|
||||||
|
|
||||||
|
var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||||
|
|
||||||
|
var nextSumCurrentInterestColumn =
|
||||||
|
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||||
|
|
||||||
|
var nextSumRepaymentColumn = new SumRepaymentColumnVT2();
|
||||||
|
nextSumRepaymentColumn.ComputeValues(currentTablePayments);
|
||||||
|
// nextSumRepaymentColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
||||||
|
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
||||||
|
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
||||||
|
preparedValues);
|
||||||
|
|
||||||
|
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
|
nextSumCreditColumn.ComputeValues(preparedValues, 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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,349 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TECH
|
||||||
|
*/
|
||||||
|
var techNextDateColumn = new DateColumnVT2(preparedValues.Nmper.Current + 1);
|
||||||
|
techNextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var techNextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
techNextDateTempColumn.ComputeValues(preparedValues, techNextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn techNextTlmDateColumn = null;
|
||||||
|
TLMCostColumn techNextTlmCostColumn = null;
|
||||||
|
TLMGrColumn techNextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var techTlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, techNextDateColumn);
|
||||||
|
|
||||||
|
if (techTlmData != null)
|
||||||
|
{
|
||||||
|
techNextTlmDateColumn = new TLMDateColumn(techTlmData.Duration + 1);
|
||||||
|
techNextTlmDateColumn.ComputeValues(techTlmData);
|
||||||
|
techNextTlmCostColumn = new TLMCostColumn(techTlmData.Duration + 1, techNextTlmDateColumn.Values);
|
||||||
|
techNextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
techNextTlmCostColumn.PostCheck();
|
||||||
|
techNextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
techNextTlmGrColumn.ComputeValues(techNextDateColumn, techNextTlmDateColumn, techNextTlmCostColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, techNextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Current + 1, techNextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
|
||||||
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Current + 1);
|
||||||
|
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||||
|
|
||||||
|
var techNextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Current + 1, preparedValues,
|
||||||
|
techNextSumColumn, currentTablePayments, techNextVATColumn, constants, nextValues);
|
||||||
|
techNextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected);
|
||||||
|
|
||||||
|
var techNextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Current + 1,
|
||||||
|
preparedValues,
|
||||||
|
currentTablePayments, techNextSumColumn);
|
||||||
|
var nsibRequiredValue = currentTablePayments
|
||||||
|
.Where((x, i) => i >= preparedValues.EditPaymentNumber - 1)
|
||||||
|
.Sum(x => x.NSIBBruttoPayment);
|
||||||
|
techNextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue);
|
||||||
|
|
||||||
|
var techNextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
techNextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
var techNextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
techNextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, techNextSumColumn,
|
||||||
|
techNextTlmCostColumn,
|
||||||
|
techNextSubsidyExpensesColumn, techNextNSIBBruttoGrColumn, nextTableInsurance,
|
||||||
|
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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,306 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CURRENT
|
||||||
|
*/
|
||||||
|
var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateColumn.ComputeValues(currentTablePayments);
|
||||||
|
|
||||||
|
var currentDateTempColumn =
|
||||||
|
new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateTempColumn.ComputeValues(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)
|
||||||
|
{
|
||||||
|
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();
|
||||||
|
|
||||||
|
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
||||||
|
nextValues.ComputeNmper(nextTablePayments, currentTablePayments);
|
||||||
|
/*
|
||||||
|
* TECH
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NEXT
|
||||||
|
*/
|
||||||
|
var nextDateColumn = new DateColumnVT1(nextValues.Nmper + 1);
|
||||||
|
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(nextValues.Nmper + 1);
|
||||||
|
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
|
TLMCostColumn nextTlmCostColumn = null;
|
||||||
|
TLMGrColumn nextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var tlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, nextDateColumn);
|
||||||
|
|
||||||
|
if (tlmData != null)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(nextValues.Nmper + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
var nextSumColumn = new SumColumnVT2(nextValues.Nmper + 1, nextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
|
||||||
|
var nextVATColumn = new VATColumnVT1(nextValues.Nmper + 1);
|
||||||
|
|
||||||
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(nextValues.Nmper + 1, preparedValues,
|
||||||
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
|
nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
|
||||||
|
nextSumWithVATColumn.PostCheck();
|
||||||
|
nextVATColumn.PostCheck();
|
||||||
|
nextSumColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(nextValues.Nmper + 1, preparedValues,
|
||||||
|
currentTablePayments, nextSumColumn);
|
||||||
|
var nsibRequiredValue = currentTablePayments
|
||||||
|
.Where((x, i) => i >= preparedValues.EditPaymentNumber - 1)
|
||||||
|
.Sum(x => x.NSIBBruttoPayment);
|
||||||
|
nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue);
|
||||||
|
|
||||||
|
var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(nextValues.Nmper + 1);
|
||||||
|
nextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
|
||||||
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
|
nextCashflowMSFOColumn);
|
||||||
|
nextCashflowMSFOColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn);
|
||||||
|
|
||||||
|
var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn);
|
||||||
|
|
||||||
|
var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn);
|
||||||
|
nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates);
|
||||||
|
|
||||||
|
var nextSumCurrentColumn = new SumCurrentColumn(nextValues.Nmper + 1);
|
||||||
|
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(nextValues.Nmper + 1);
|
||||||
|
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||||
|
|
||||||
|
var nextSumCurrentInterestColumn =
|
||||||
|
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(nextValues.Nmper + 1);
|
||||||
|
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||||
|
|
||||||
|
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
|
||||||
|
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn,
|
||||||
|
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
||||||
|
nextSumRepaymentColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
||||||
|
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
||||||
|
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
||||||
|
preparedValues);
|
||||||
|
|
||||||
|
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
|
nextSumCreditColumn.ComputeValues(preparedValues, nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||||
|
nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
|
||||||
|
|
||||||
|
var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
||||||
|
nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
|
||||||
|
|
||||||
|
var nextCreditVATColumn = new CreditVATColumn(12 + 4);
|
||||||
|
nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
|
||||||
|
|
||||||
|
var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1);
|
||||||
|
nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues);
|
||||||
|
|
||||||
|
var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1);
|
||||||
|
nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues);
|
||||||
|
|
||||||
|
var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1);
|
||||||
|
nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn);
|
||||||
|
|
||||||
|
|
||||||
|
nextValues.ComputeNiAtInception(currentTablePayments);
|
||||||
|
nextValues.ComputeNiAtInceptionMSFO();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* NEXT
|
||||||
|
*/
|
||||||
|
|
||||||
|
var postValues = new v2.PostValues(preparedValues);
|
||||||
|
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
|
||||||
|
postValues.ComputeContractEconomyWithVAT(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,265 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Current.DateTempColumn;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* CURRENT
|
||||||
|
*/
|
||||||
|
var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateColumn.ComputeValues(currentTablePayments);
|
||||||
|
|
||||||
|
var currentDateTempColumn =
|
||||||
|
new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||||
|
currentDateTempColumn.ComputeValues(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)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||||
|
|
||||||
|
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||||
|
|
||||||
|
var techNextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
techNextSumColumn, currentTablePayments, techNextVATColumn, constants);
|
||||||
|
techNextSumWithVATColumn.ComputeValues();
|
||||||
|
|
||||||
|
nextValues.ComputeSumTotal(techNextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn, preparedValues,
|
||||||
|
nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
|
||||||
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
|
nextSumWithVATColumn.ComputeValues(nextValues.SumTotal);
|
||||||
|
nextSumColumn.PostCheck();
|
||||||
|
nextSumWithVATColumn.PostCheck();
|
||||||
|
nextVATColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
currentTablePayments, nextSumColumn);
|
||||||
|
var nsibRequiredValue = currentTablePayments
|
||||||
|
.Where((x, i) => i >= preparedValues.EditPaymentNumber - 1)
|
||||||
|
.Sum(x => x.NSIBBruttoPayment);
|
||||||
|
nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue);
|
||||||
|
|
||||||
|
var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
|
||||||
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
|
nextCashflowMSFOColumn);
|
||||||
|
nextCashflowMSFOColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn);
|
||||||
|
|
||||||
|
var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn);
|
||||||
|
|
||||||
|
var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn);
|
||||||
|
nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates);
|
||||||
|
|
||||||
|
var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||||
|
|
||||||
|
var nextSumCurrentInterestColumn =
|
||||||
|
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||||
|
|
||||||
|
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
|
||||||
|
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn,
|
||||||
|
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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
222
EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs
Normal file
222
EvoCalculator.Core.PostCalculation/v2/Managers/Suspension.cs
Normal file
@ -0,0 +1,222 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Columns.Next;
|
||||||
|
using SumCreditColumn = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumCreditColumn;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
|
||||||
|
public static partial class CalculateManager
|
||||||
|
{
|
||||||
|
public static ManagerResult Suspension(RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var preparedValues = requestCalculation.PreparedValues;
|
||||||
|
|
||||||
|
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||||
|
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||||
|
|
||||||
|
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||||
|
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||||
|
|
||||||
|
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||||
|
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||||
|
/*
|
||||||
|
* NEXT
|
||||||
|
*/
|
||||||
|
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||||
|
|
||||||
|
var nextDateTempColumn = new DateTempColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
||||||
|
|
||||||
|
|
||||||
|
TLMDateColumn nextTlmDateColumn = null;
|
||||||
|
TLMCostColumn nextTlmCostColumn = null;
|
||||||
|
TLMGrColumn nextTlmGrColumn = null;
|
||||||
|
|
||||||
|
var tlmData = new Helper().GetTLMData(preparedValues
|
||||||
|
, currentTableTLMTracker, nextTableTLMTracker
|
||||||
|
, nextDateColumn);
|
||||||
|
|
||||||
|
if (tlmData != null)
|
||||||
|
{
|
||||||
|
nextTlmDateColumn = new TLMDateColumn(tlmData.Duration + 1);
|
||||||
|
nextTlmDateColumn.ComputeValues(tlmData);
|
||||||
|
nextTlmCostColumn = new TLMCostColumn(tlmData.Duration + 1, nextTlmDateColumn.Values);
|
||||||
|
nextTlmCostColumn.ComputeValues(preparedValues, requestCalculation.TableTLMTracker);
|
||||||
|
// nextTlmCostColumn.PostCheck();
|
||||||
|
nextTlmGrColumn = new TLMGrColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextTlmGrColumn.ComputeValues(nextDateColumn, nextTlmDateColumn, nextTlmCostColumn);
|
||||||
|
// nextTlmGrColumn.PostCheck();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var nextValues = new NextValues(preparedValues);
|
||||||
|
nextValues.ComputeBaseCost(nextTableInsurance, nextTlmGrColumn,
|
||||||
|
currentTablePayments);
|
||||||
|
|
||||||
|
|
||||||
|
var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||||
|
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||||
|
var nextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||||
|
|
||||||
|
var nextSumWithVATColumn = new SumWithVATColumnVT2(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
nextSumColumn, currentTablePayments, nextVATColumn, constants, nextValues);
|
||||||
|
nextSumWithVATColumn.ComputeValues(preparedValues.TotalExpected);
|
||||||
|
// nextSumWithVATColumn.PostCheck();
|
||||||
|
// nextVATColumn.PostCheck();
|
||||||
|
// nextSumColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextNSIBBruttoGrColumn = new NSIBBruttoGrColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
|
||||||
|
currentTablePayments, nextSumColumn);
|
||||||
|
var nsibRequiredValue = currentTablePayments
|
||||||
|
.Where((x, i) => i >= preparedValues.EditPaymentNumber - 1)
|
||||||
|
.Sum(x => x.NSIBBruttoPayment);
|
||||||
|
nextNSIBBruttoGrColumn.ComputeValues(nsibRequiredValue);
|
||||||
|
|
||||||
|
var nextSubsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSubsidyExpensesColumn.ComputeValues(preparedValues);
|
||||||
|
|
||||||
|
nextValues.ComputeAcquisitionExpenses(nextTableInsurance);
|
||||||
|
|
||||||
|
|
||||||
|
var nextCashflowMSFOColumn = new CashflowMSFOColumn();
|
||||||
|
nextCashflowMSFOColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
|
||||||
|
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
|
||||||
|
nextTlmDateColumn);
|
||||||
|
|
||||||
|
var nextCashflowMSFOForNIColumn = new CashflowMSFOForNIColumn();
|
||||||
|
nextCashflowMSFOForNIColumn.ComputeValues(preparedValues, nextValues, nextDateTempColumn,
|
||||||
|
nextCashflowMSFOColumn);
|
||||||
|
// nextCashflowMSFOColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextIRRGrColumn = new IRRGrColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextIRRGrColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextCashflowMSFOColumn);
|
||||||
|
|
||||||
|
var nextNIColumn = new NIColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextNIColumn.ComputeValues(nextCashflowMSFOForNIColumn, nextIRRGrColumn);
|
||||||
|
|
||||||
|
var nextInterestColumn = new InterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextInterestColumn.ComputeValues(nextNIColumn, nextIRRGrColumn);
|
||||||
|
// nextInterestColumn.PostCheck(nextSumColumn, nextDateColumn, nextCashflowMSFOColumn.Dates);
|
||||||
|
|
||||||
|
var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||||
|
|
||||||
|
var nextSumCurrentInterestColumn =
|
||||||
|
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||||
|
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||||
|
|
||||||
|
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
|
||||||
|
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||||
|
|
||||||
|
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
|
||||||
|
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
|
||||||
|
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn,
|
||||||
|
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
||||||
|
// nextSumRepaymentColumn.PostCheck();
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
||||||
|
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
||||||
|
|
||||||
|
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
||||||
|
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
||||||
|
preparedValues);
|
||||||
|
|
||||||
|
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||||
|
nextSumCreditColumn.ComputeValues(preparedValues, 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(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,
|
||||||
|
nextSumVATCreditColumn,
|
||||||
|
nextCreditVATColumn,
|
||||||
|
nextNSIBExpensesColumn,
|
||||||
|
nextCashflowNSIBColumn,
|
||||||
|
nextRevenueColumn
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return new ManagerResult
|
||||||
|
{
|
||||||
|
Errors = new List<string>
|
||||||
|
{
|
||||||
|
ex.Message
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
19
EvoCalculator.Core.PostCalculation/v2/PostValues.cs
Normal file
19
EvoCalculator.Core.PostCalculation/v2/PostValues.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.PostCalculation.v2;
|
||||||
|
|
||||||
|
public class PostValues : v1.PostValues
|
||||||
|
{
|
||||||
|
public decimal ContractEconomyWithVAT;
|
||||||
|
|
||||||
|
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ComputeContractEconomyWithVAT(BaseColumn<decimal> nextCreditVATColumn)
|
||||||
|
{
|
||||||
|
ContractEconomyWithVAT = this.ContractEconomy + nextCreditVATColumn.GetValue(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
namespace EvoCalculator.Core.Tests.PostCalculation.v1.Managers;
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
using System;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@ -8,9 +9,22 @@ namespace EvoCalculator.Core.Controllers.PostCalculation;
|
|||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
public class PostCalculationController
|
public class PostCalculationController
|
||||||
{
|
{
|
||||||
|
private Func<RequestCalculation, ActionResult<ManagerResult>> GetCalculateVersion(DateTime targetDate)
|
||||||
|
{
|
||||||
|
var envDateV2 = Environment.GetEnvironmentVariable("POST_CALCULATION_V2_DATE");
|
||||||
|
var calculationV2Date = DateTime.Parse(envDateV2);
|
||||||
|
|
||||||
|
if (targetDate >= calculationV2Date) return new v2.PostCalculationController().Calculate;
|
||||||
|
|
||||||
|
return new v1.PostCalculationController().Calculate;
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("[action]")]
|
[HttpPost("[action]")]
|
||||||
public ActionResult<ManagerResult> Calculate([FromBody] RequestCalculation requestCalculation)
|
public ActionResult<ManagerResult> Calculate([FromBody] RequestCalculation requestCalculation)
|
||||||
{
|
{
|
||||||
return new v1.PostCalculationController().Calculate(requestCalculation);
|
var calcDate = requestCalculation.PreparedValues.CalcDate;
|
||||||
|
var calculateMethod = GetCalculateVersion(calcDate);
|
||||||
|
|
||||||
|
return calculateMethod(requestCalculation);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,6 +4,7 @@ using EvoCalculator.Core.PostCalculation.v1.Managers;
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using Newtonsoft.Json.Serialization;
|
using Newtonsoft.Json.Serialization;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
|
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,46 @@
|
|||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||||
|
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||||
|
using EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Serialization;
|
||||||
|
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||||
|
|
||||||
|
namespace EvoCalculator.Core.Controllers.PostCalculation.v2;
|
||||||
|
|
||||||
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
|
[ApiController]
|
||||||
|
[ApiVersion("2.0")]
|
||||||
|
[Route("api/v{version:apiVersion}/[controller]")]
|
||||||
|
public class PostCalculationController : Controller
|
||||||
|
{
|
||||||
|
[HttpPost("[action]")]
|
||||||
|
public ActionResult<ManagerResult> Calculate([FromBody] RequestCalculation requestCalculation)
|
||||||
|
{
|
||||||
|
// TEMP
|
||||||
|
requestCalculation.TableInsurance.Next = requestCalculation.TableInsurance.Current;
|
||||||
|
|
||||||
|
var result = requestCalculation.PreparedValues.CalcType switch
|
||||||
|
{
|
||||||
|
100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation),
|
||||||
|
100000003 => CalculateManager.EarlyRedemption(requestCalculation),
|
||||||
|
100000004 => CalculateManager.PERWithoutChangingTheTerm(requestCalculation),
|
||||||
|
100000005 => CalculateManager.PERWithChangingTheTerm(requestCalculation),
|
||||||
|
100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation),
|
||||||
|
100000007 => CalculateManager.Suspension(requestCalculation),
|
||||||
|
100000008 => CalculateManager.ChangingLastPayment(requestCalculation),
|
||||||
|
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||||
|
};
|
||||||
|
|
||||||
|
var hasErrors = result.Errors is {Count: > 0};
|
||||||
|
var statusCode = hasErrors ? 500 : 200;
|
||||||
|
|
||||||
|
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||||
|
result,
|
||||||
|
new JsonSerializerSettings
|
||||||
|
{
|
||||||
|
Formatting = Formatting.Indented,
|
||||||
|
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -25,7 +25,8 @@
|
|||||||
"environmentVariables": {
|
"environmentVariables": {
|
||||||
"ASPNETCORE_ENVIRONMENT": "Development",
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
"calculation_v2_date": "2021-09-02",
|
"calculation_v2_date": "2021-09-02",
|
||||||
"calculation_v3_date": "2022-03-30"
|
"calculation_v3_date": "2022-03-30",
|
||||||
|
"post_calculation_v2_date": "2022-04-14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user