merge release/dyn-1290_post-flags
This commit is contained in:
parent
334f666c26
commit
cde4b41f54
@ -0,0 +1,6 @@
|
||||
namespace EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
|
||||
public class Flags
|
||||
{
|
||||
public bool DISABLE_CHECKS_RESULTS { get; set; }
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Collections.Generic;
|
||||
#nullable enable
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib;
|
||||
@ -16,7 +17,8 @@ public class RequestCalculation : IValidatableObject
|
||||
public ChangingValue<TableInsuranceRow[]> TableInsurance { get; set; } = new();
|
||||
|
||||
public ChangingValue<TableTLMTrackerRow[]> TableTLMTracker { get; set; }
|
||||
|
||||
|
||||
public Flags Flags { get; set; }
|
||||
|
||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||
{
|
||||
|
||||
@ -0,0 +1,251 @@
|
||||
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 CalculateByIRRNoLimit(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
|
||||
var currentTablePayments = requestCalculation.TablePayments.Current;
|
||||
var nextTablePayments = requestCalculation.TablePayments.Next;
|
||||
|
||||
var currentTableInsurance = requestCalculation?.TableInsurance?.Current;
|
||||
var nextTableInsurance = requestCalculation?.TableInsurance?.Next;
|
||||
|
||||
var currentTableTLMTracker = requestCalculation?.TableTLMTracker?.Current;
|
||||
var nextTableTLMTracker = requestCalculation?.TableTLMTracker?.Next;
|
||||
|
||||
|
||||
/*
|
||||
* CURRENT
|
||||
*/
|
||||
var currentDateColumn = new DateColumn(preparedValues.Nmper.Current + 1);
|
||||
currentDateColumn.ComputeValues(currentTablePayments);
|
||||
|
||||
var currentDateTempColumn =
|
||||
new DateTempColumn(preparedValues.Nmper.Current + 1);
|
||||
currentDateTempColumn.ComputeValues(preparedValues, currentDateColumn);
|
||||
|
||||
var currentSumColumn = new SumColumn(preparedValues.Nmper.Current + 1, currentDateTempColumn);
|
||||
currentSumColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||
/*
|
||||
* CURRENT
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* NEXT
|
||||
*/
|
||||
var nextDateColumn = new DateColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
nextDateColumn.ComputeValues(preparedValues, currentTablePayments);
|
||||
|
||||
var nextDateTempColumn = new v1.Columns.Next.DateTempColumn(preparedValues.Nmper.Next + 1);
|
||||
nextDateTempColumn.ComputeValues(preparedValues, nextDateColumn);
|
||||
|
||||
|
||||
TLMDateColumn nextTlmDateColumn = null;
|
||||
TLMCostColumn nextTlmCostColumn = null;
|
||||
TLMGrColumn nextTlmGrColumn = null;
|
||||
|
||||
var tlmData = new Helper().GetTLMData(preparedValues
|
||||
, currentTableTLMTracker, nextTableTLMTracker
|
||||
, nextDateColumn);
|
||||
|
||||
if (tlmData != null)
|
||||
{
|
||||
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);
|
||||
|
||||
var nextSumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper.Next + 1);
|
||||
nextSumCurrentColumn.ComputeValues(nextSumWithVATColumn);
|
||||
|
||||
var nextSumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper.Next + 1);
|
||||
nextSumCurrentNegativeColumn.ComputeValues(nextDateTempColumn, nextTableInsurance);
|
||||
|
||||
var nextSumCurrentInterestColumn =
|
||||
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
|
||||
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
|
||||
|
||||
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
|
||||
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
|
||||
|
||||
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
|
||||
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
|
||||
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn,
|
||||
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants);
|
||||
nextSumRepaymentColumn.PostCheck();
|
||||
|
||||
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
|
||||
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
|
||||
|
||||
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
|
||||
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
|
||||
preparedValues);
|
||||
|
||||
var nextSumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||
nextSumCreditColumn.ComputeValues(preparedValues, nextSumWithVATColumn);
|
||||
|
||||
var nextCreditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||
nextCreditColumn.ComputeValues(preparedValues, nextSumCreditColumn);
|
||||
|
||||
nextValues.Nmper = preparedValues.Nmper.Next;
|
||||
|
||||
var nextSumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
||||
nextSumVATCreditColumn.ComputeValues(preparedValues, nextVATColumn);
|
||||
|
||||
var nextCreditVATColumn = new CreditVATColumn(12 + 4);
|
||||
nextCreditVATColumn.ComputeValues(preparedValues, nextSumVATCreditColumn);
|
||||
|
||||
|
||||
var nextRevenueColumn = new RevenueColumnVT1(nextValues.Nmper + 1);
|
||||
nextRevenueColumn.ComputeValues(preparedValues, currentTablePayments, nextValues);
|
||||
|
||||
var nextNSIBExpensesColumn = new NSIBExpensesColumnVT1(nextValues.Nmper + 1);
|
||||
nextNSIBExpensesColumn.ComputeValues(preparedValues, currentTablePayments, nextValues);
|
||||
|
||||
var nextCashflowNSIBColumn = new CashflowNSIBColumn(nextValues.Nmper + 1);
|
||||
nextCashflowNSIBColumn.ComputeValues(nextNSIBBruttoGrColumn, nextRevenueColumn);
|
||||
|
||||
|
||||
nextValues.ComputeNiAtInception(currentTablePayments);
|
||||
nextValues.ComputeNiAtInceptionMSFO();
|
||||
/*
|
||||
* NEXT
|
||||
*/
|
||||
|
||||
var postValues = new v2.PostValues(preparedValues);
|
||||
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
|
||||
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
|
||||
|
||||
|
||||
return new ManagerResult
|
||||
{
|
||||
PostValues = postValues,
|
||||
NextValues = nextValues,
|
||||
PreparedValues = preparedValues,
|
||||
Columns = new
|
||||
{
|
||||
currentDateColumn,
|
||||
currentDateTemp = currentDateTempColumn,
|
||||
currentSumColumn,
|
||||
|
||||
nextDateColumn,
|
||||
nextDateTempColumn,
|
||||
nextTlmDateColumn,
|
||||
nextTlmCostColumn,
|
||||
nextTlmGrColumn,
|
||||
nextSumColumn,
|
||||
nextNSIBBruttoGrColumn,
|
||||
nextSubsidyExpensesColumn,
|
||||
nextCashflowMSFOColumn,
|
||||
nextVATColumn,
|
||||
nextSumWithVATColumn,
|
||||
nextCashflowMSFOForNIColumn,
|
||||
nextIRRGrColumn,
|
||||
nextNIColumn,
|
||||
nextInterestColumn,
|
||||
nextSumCurrentColumn,
|
||||
nextSumCurrentNegativeColumn,
|
||||
nextSumCurrentInterestColumn,
|
||||
nextSumCurrentTLMColumn,
|
||||
nextSumRepaymentColumn,
|
||||
nextCashflowMSFOFinalColumn,
|
||||
nextCashflowMSFOFinal2Column,
|
||||
nextSumCreditColumn,
|
||||
nextCreditColumn,
|
||||
nextSumVATCreditColumn,
|
||||
nextCreditVATColumn,
|
||||
nextNSIBExpensesColumn,
|
||||
nextCashflowNSIBColumn,
|
||||
nextRevenueColumn
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -26,6 +26,8 @@ public class PostCalculationController : Controller
|
||||
100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation),
|
||||
100000007 => CalculateManager.Suspension(requestCalculation),
|
||||
100000008 => CalculateManager.ChangingLastPayment(requestCalculation),
|
||||
100000000 when requestCalculation.Flags.DISABLE_CHECKS_RESULTS =>
|
||||
CalculateManager.CalculateByIRRNoLimit(requestCalculation),
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user