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