merge branch release/dyn-3888_post-floating-rate

This commit is contained in:
vchikalkin 2024-02-12 14:57:59 +03:00
parent 4262650411
commit ff6ae4fe36
14 changed files with 467 additions and 14 deletions

View File

@ -8,7 +8,7 @@ using EvoCalculator.Core.Tools.Array;
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Current;
public class SumColumn : BaseColumnWithXIRR
public class SumColumn : BaseColumnWithNominal
{
private BaseColumn<DateTime> _dateTempColumn;

View File

@ -35,10 +35,10 @@ public class SumColumnVT3 : BaseSumColumn
else if (i == _preparedValues.EditPaymentNumber)
{
if (_preparedValues.ChangeRepayment && _preparedValues.Repayment > 0)
Values[i] = techNextSumRepaymentColumn.GetValue(i) / (decimal) (1 + _constants.VatValue);
Values[i] = techNextSumRepaymentColumn.GetValue(i) / (decimal)(1 + _constants.VatValue);
else
Values[i] = _preparedValues.SumRepayment /
(decimal) (1 + _constants.VatValue);
Values[i] = Math.Round(_preparedValues.SumRepayment /
(decimal)(1 + _constants.VatValue), 2);
if (_preparedValues.LastPaymentFix)
// вычитает последний платеж из того что посчитали выше

View File

@ -28,7 +28,7 @@ public class BaseSumWithVATColumn : BaseColumnWithSum
protected void FillValues()
{
Values[1] = _currentTablePayments[0].SumWithVATPayment +
_preparedValues.SubsidySum * (decimal) (1 + _constants.VatValue);
_preparedValues.SubsidySum * (decimal)(1 + _constants.VatValue);
for (var i = 2; i < Values.Length; i++)
if (i < _preparedValues.EditPaymentNumber)
@ -38,6 +38,24 @@ public class BaseSumWithVATColumn : BaseColumnWithSum
Values[0] = Sum;
}
/**
* Приведение копеек под сумму досрочки в графике ДЛ
*/
public void FixValues()
{
if (_preparedValues.LastPaymentFix == false)
{
var difference = _preparedValues.SumRepayment - Values[_preparedValues.EditPaymentNumber];
if (difference != 0.0m)
{
_nextVatColumnVt1.Values[_preparedValues.EditPaymentNumber] += difference;
Values[_preparedValues.EditPaymentNumber] =
_nextSumColumn.Values[_preparedValues.EditPaymentNumber] +
_nextVatColumnVt1.Values[_preparedValues.EditPaymentNumber];
}
}
}
public void PostCheck()
{

View File

@ -0,0 +1,11 @@
using System;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next;
public class BaseSumIRRColumn : BaseColumnWithNominal
{
protected BaseSumIRRColumn(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
}

View File

@ -10,7 +10,7 @@ using TridentGoalSeek;
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
{
public class SumIRRColumn : BaseColumnWithXIRR, IGoalSeekAlgorithm
public class SumIRRColumnVT1 : BaseSumIRRColumn, IGoalSeekAlgorithm
{
protected readonly NextValues _nextValues;
protected readonly PreparedValues _preparedValues;
@ -20,7 +20,7 @@ namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
protected readonly BaseColumn<DateTime> _currentDateTempColumn;
protected readonly TableInsuranceRow[] _nextTableInsurance;
public SumIRRColumn(int count, BaseColumn<DateTime> dateTempColumn, BaseColumn<DateTime> currentDateTempColumn,
public SumIRRColumnVT1(int count, BaseColumn<DateTime> dateTempColumn, BaseColumn<DateTime> currentDateTempColumn,
PreparedValues preparedValues,
NextValues nextValues, TablePaymentsRow[] currentTablePayments,
TableInsuranceRow[] nextTableInsurance, BaseSumColumn sumColumn

View File

@ -0,0 +1,145 @@
using System;
using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
using EvoCalculator.Core.PostCalculation.v1;
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
using EvoCalculator.Core.Tools.Array;
using TridentGoalSeek;
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Next.DateTempColumn;
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
{
public class SumIRRColumnVT2 : BaseSumIRRColumn, IGoalSeekAlgorithm
{
protected readonly NextValues _nextValues;
protected readonly PreparedValues _preparedValues;
protected readonly BaseSumColumn _sumColumn;
protected readonly TablePaymentsRow[] _currentTablePayments;
protected readonly BaseColumn<DateTime> _dateTempColumn;
protected readonly BaseColumn<DateTime> _currentDateTempColumn;
protected readonly TableInsuranceRow[] _nextTableInsurance;
protected readonly BaseColumnWithNominal _currentSumColumn;
public SumIRRColumnVT2(int count, BaseColumn<DateTime> dateTempColumn,
BaseColumn<DateTime> currentDateTempColumn,
PreparedValues preparedValues,
NextValues nextValues, TablePaymentsRow[] currentTablePayments,
TableInsuranceRow[] nextTableInsurance, BaseSumColumn sumColumn, SumColumn currentSumColumn) : base(count,
dateTempColumn)
{
_dateTempColumn = dateTempColumn;
_preparedValues = preparedValues;
_nextValues = nextValues;
_currentTablePayments = currentTablePayments;
_nextTableInsurance = nextTableInsurance;
_sumColumn = sumColumn;
_currentDateTempColumn = currentDateTempColumn;
_currentSumColumn = currentSumColumn;
}
private void FillValues()
{
var costInsurances = Array.Empty<decimal>();
if (_nextTableInsurance != null)
{
costInsurances = _nextTableInsurance
.Where(ins =>
ins.PeriodNumberInsurance > 1
&& (ins.TypeRiskInsurance is "KASKO" or "OSAGO" or "GAP" or "EvoKASKO")
)
.OrderBy(x => x.TypeRiskInsurance)
.Select(x => -(x.CostInsurance + x.InsuranceBonusLoss))
.ToArray();
}
var dateStartPeriodInsurances = Array.Empty<DateTime>();
if (_nextTableInsurance != null)
{
dateStartPeriodInsurances = _nextTableInsurance
.Where(ins =>
ins.PeriodNumberInsurance > 1
&& (ins.TypeRiskInsurance is "KASKO" or "OSAGO" or "GAP" or "EvoKASKO")
)
.OrderBy(x => x.TypeRiskInsurance)
.Select(x => x.DateStartPeriodInsurance)
.ToArray();
}
var lastDateTempValue = _dateTempColumn.Values.Last();
var lastCurrentDateTempValue = _currentDateTempColumn.Values.Last();
var evoKasko = _nextTableInsurance.FirstOrDefault(x => x.TypeRiskInsurance == "EvoKASKO");
var evoKaskoSum = 0m;
var evoKaskoDate = DateTime.MinValue;
if (evoKasko != null &&
new DateTime(lastDateTempValue.Year, lastDateTempValue.Month, 1) >
new DateTime(lastCurrentDateTempValue.Year, lastCurrentDateTempValue.Month, 1))
{
evoKaskoSum = -((evoKasko.CostInsurance + evoKasko.InsuranceBonusLoss) / 12) *
((lastDateTempValue.Year - lastCurrentDateTempValue.Year) * 12 +
lastDateTempValue.Month - lastCurrentDateTempValue.Month);
Values = Values.Append(evoKaskoSum).ToArray();
evoKaskoDate = _currentDateTempColumn.Values.Last().AddDays(1);
Dates = Dates.Append(evoKaskoDate).ToArray();
}
var xnpvValues = Array<decimal>.Concat(
new[] { 0m, },
_sumColumn.GetValues(_preparedValues.EditPaymentNumber),
costInsurances,
new[] { evoKaskoSum }
);
var xnpvDates = Array<DateTime>.Concat(
new[] { _dateTempColumn.GetValue(_preparedValues.EditPaymentNumber - 1) },
_dateTempColumn.GetValues(_preparedValues.EditPaymentNumber),
dateStartPeriodInsurances,
new[] { evoKaskoDate }
);
var xnpvColumn =
new BaseColumnWithXNPV(0, new DateTempColumn(0) { Values = xnpvDates }, _currentSumColumn.IRR)
{
Values = xnpvValues
};
Values = Array<decimal>.Concat(
new[] { -xnpvColumn.XNPV },
_sumColumn.Values.Skip(_preparedValues.EditPaymentNumber),
costInsurances,
new[] { evoKaskoSum }
);
Dates = xnpvDates;
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return (decimal)IRR;
}
public void ComputeValues(decimal requiredValue)
{
var goalSeek = new GoalSeek(this);
// Чтобы IRR не получился меньше заданного
goalSeek.SeekResult(requiredValue + 0.00001m,
new GoalSeekOptions(
startingStabPoint:
(_nextValues.BaseCost - _currentTablePayments[0].SumPayment) /
(_preparedValues.Nmper.Next - 1),
maximumAttempts: 1000,
initialTineSpacing: 100
// , focusPercentage: 50
));
}
}
}

View File

@ -83,7 +83,7 @@ public static partial class CalculateManager
var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
var techSumIRRColumn = new SumIRRColumn(0, techNextDateTempColumn, currentDateTempColumn, preparedValues,
var techSumIRRColumn = new SumIRRColumnVT1(0, techNextDateTempColumn, currentDateTempColumn, preparedValues,
nextValues,
currentTablePayments,
nextTableInsurance, techNextSumColumn);

View File

@ -85,7 +85,7 @@ public static partial class CalculateManager
var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
var sumIRRColumn = new SumIRRColumn(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
var sumIRRColumn = new SumIRRColumnVT1(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
currentTablePayments,
nextTableInsurance, nextSumColumn);
sumIRRColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);

View File

@ -85,7 +85,7 @@ public static partial class CalculateManager
var nextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
var sumIRRColumn = new SumIRRColumn(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
var sumIRRColumn = new SumIRRColumnVT1(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
currentTablePayments,
nextTableInsurance, nextSumColumn);
sumIRRColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);

View File

@ -0,0 +1,263 @@
using System.Linq;
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
using EvoCalculator.Core.PostCalculation.Tools;
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 SumRepaymentColumnVT1 = EvoCalculator.Core.PostCalculation.v2.Columns.Next.SumRepaymentColumnVT1;
namespace EvoCalculator.Core.PostCalculation.v2.Managers;
public static partial class CalculateManager
{
public static ManagerResult CalculateWithChangeIRR(RequestCalculation requestCalculation)
{
new Validation().ValidateRequest(requestCalculation);
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, currentTableInsurance);
/*
* 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 SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
var sumIRRColumn = new SumIRRColumnVT2(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
currentTablePayments,
nextTableInsurance, nextSumColumn, currentSumColumn);
sumIRRColumn.ComputeValues((decimal)currentSumColumn.Nominal + 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, currentDateTempColumn);
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, currentDateTempColumn);
var nextSumCurrentInterestColumn =
new SumCurrentInterestColumn(nextCashflowMSFOForNIColumn.Values.Length);
nextSumCurrentInterestColumn.ComputeValues(nextInterestColumn);
var nextSumCurrentTLMColumn = new SumCurrentTLMColumn(preparedValues.Nmper.Next + 1);
nextSumCurrentTLMColumn.ComputeValues(nextTlmGrColumn);
nextValues.Nmper = preparedValues.Nmper.Next;
var nextSumRepaymentColumn = new SumRepaymentColumnVT1();
nextSumRepaymentColumn.ComputeValues(preparedValues, currentTablePayments, nextSumCurrentNegativeColumn,
nextSumCurrentColumn, nextSumCurrentTLMColumn, nextSumCurrentInterestColumn, nextSumWithVATColumn,
nextDateTempColumn, nextCashflowMSFOForNIColumn, constants, nextValues);
nextSumRepaymentColumn.PostCheck();
var nextCashflowMSFOFinalColumn = new CashflowMSFOFinalColumn();
nextCashflowMSFOFinalColumn.ComputeValues(nextCashflowMSFOColumn, nextDateTempColumn, preparedValues);
var nextCashflowMSFOFinal2Column = new CashflowMSFOFinal2Column();
nextCashflowMSFOFinal2Column.ComputeValues(nextCashflowMSFOFinalColumn, nextDateTempColumn,
preparedValues);
var nextSumCreditColumn = new SumCreditColumnVT1(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);
var nextCreditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
nextCreditPaymentColumn.ComputeValues(preparedValues, nextSumCreditColumn, nextCreditColumn);
var nextVATRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
nextVATRecoverableColumn.ComputeValues(nextVATColumn);
nextValues.ComputeAcquisitionExpensesWithVAT(nextTableInsurance);
var nextCashflowMSFOWithCFColumn = new CashflowMSFOWithCFColumn(0, preparedValues, nextCashflowMSFOFinal2Column,
nextCreditPaymentColumn, nextValues, nextSumCreditColumn, nextVATRecoverableColumn, nextDateTempColumn);
nextCashflowMSFOWithCFColumn.ComputeValues();
var nextPiColumn = new PIColumn(61, nextCashflowMSFOFinal2Column, nextCashflowMSFOWithCFColumn, preparedValues);
nextPiColumn.ComputeValues();
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,
sumIRRColumn,
nextNSIBBruttoGrColumn,
nextSubsidyExpensesColumn,
nextCashflowMSFOColumn,
nextVATColumn,
nextSumWithVATColumn,
nextCashflowMSFOForNIColumn,
nextIRRGrColumn,
nextNIColumn,
nextInterestColumn,
nextSumCurrentColumn,
nextSumCurrentNegativeColumn,
nextSumCurrentInterestColumn,
nextSumCurrentTLMColumn,
nextSumRepaymentColumn,
nextCashflowMSFOFinalColumn,
nextCashflowMSFOFinal2Column,
nextSumCreditColumn,
nextCreditColumn,
nextSumVATCreditColumn,
nextCreditVATColumn,
nextNSIBExpensesColumn,
nextCashflowNSIBColumn,
nextRevenueColumn,
nextCreditPaymentColumn,
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
}
};
}
}

View File

@ -193,6 +193,7 @@ public static partial class CalculateManager
var nextSumWithVATColumn = new SumWithVATColumnVT1(preparedValues.Nmper.Next + 1, preparedValues,
nextSumColumn, currentTablePayments, nextVATColumn, constants);
nextSumWithVATColumn.ComputeValues();
nextSumWithVATColumn.FixValues();
nextVATColumn.PostCheck();
nextSumWithVATColumn.PostCheck();

View File

@ -81,9 +81,15 @@ public static partial class CalculateManager
currentTablePayments);
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
var techSumIRRColumn = new SumIRRColumnVT1(0, techNextDateTempColumn, currentDateColumn, preparedValues, nextValues,
currentTablePayments,
nextTableInsurance, techNextSumColumn);
techSumIRRColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
techNextSumColumn.PostCheck();
techNextSumColumn.RoundValues();
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
@ -269,6 +275,7 @@ public static partial class CalculateManager
techNextTlmCostColumn,
techNextTlmGrColumn,
techNextSumColumn,
techSumIRRColumn,
techNextVATColumn,
techNextSumWithVATColumn,

View File

@ -82,9 +82,15 @@ public static partial class CalculateManager
currentTablePayments);
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
var techNextSumColumn = new SumColumnVT2(preparedValues.Nmper.Next + 1, nextDateTempColumn,
preparedValues, nextValues, currentTablePayments, nextTablePayments);
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
var techSumIRRColumn = new SumIRRColumnVT1(0, nextDateTempColumn, currentDateColumn, preparedValues, nextValues,
currentTablePayments,
nextTableInsurance, techNextSumColumn);
techSumIRRColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
techNextSumColumn.PostCheck();
techNextSumColumn.RoundValues();
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
@ -234,6 +240,7 @@ public static partial class CalculateManager
nextTlmCostColumn,
nextTlmGrColumn,
techNextSumColumn,
techSumIRRColumn,
techNextVATColumn,
techNextSumWithVATColumn,
nextSumColumn,

View File

@ -23,6 +23,7 @@ public class PostCalculationController : Controller
100000006 => CalculateManager.CalculateByIRRAndSum(requestCalculation),
100000007 => CalculateManager.Suspension(requestCalculation),
100000008 => CalculateManager.ChangingLastPayment(requestCalculation),
100000009 => CalculateManager.CalculateWithChangeIRR(requestCalculation),
100000000 when requestCalculation.Flags.DISABLE_CHECKS_RESULTS =>
CalculateManager.CalculateByIRRNoLimit(requestCalculation),
_ => CalculateManager.CalculateDefault(requestCalculation)