Post/SumIRRColumnVT2: правки

This commit is contained in:
vchikalkin 2024-02-20 13:47:44 +03:00
parent b9ceeb8d61
commit 7ebdc14a5e

View File

@ -7,6 +7,7 @@ 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 EvoCalculator.Core.Tools.GroupColumns;
using TridentGoalSeek;
using DateTempColumn = EvoCalculator.Core.PostCalculation.v1.Columns.Next.DateTempColumn;
@ -42,35 +43,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
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");
@ -97,8 +69,7 @@ namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
var xnpvDates = Array<DateTime>.Concat(
new[] { _dateTempColumn.GetValue(_preparedValues.EditPaymentNumber - 1) },
_currentDateTempColumn.GetValues(_preparedValues.EditPaymentNumber),
dateStartPeriodInsurances
_currentSumColumn.Dates.Skip(_preparedValues.EditPaymentNumber)
);
if (evoKasko != null)
@ -107,6 +78,14 @@ namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
xnpvDates = xnpvDates.Append(evoKaskoDate).ToArray();
}
var xnpv = GroupColumns.Split(
GroupColumns.Create(xnpvDates, xnpvValues).Where(x =>
x.Key >= _dateTempColumn.GetValue(_preparedValues.EditPaymentNumber - 1)));
xnpvValues = xnpv.Values;
xnpvDates = xnpv.Dates;
var xnpvColumn =
new BaseColumnWithXNPV(0, new DateTempColumn(0) { Values = xnpvDates }, _currentSumColumn.IRR)
{
@ -115,8 +94,7 @@ namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next
Values = Array<decimal>.Concat(
new[] { -xnpvColumn.XNPV },
_sumColumn.Values.Skip(_preparedValues.EditPaymentNumber),
costInsurances
_sumColumn.Values.Skip(_preparedValues.EditPaymentNumber)
);
if (evoKasko != null)