diff --git a/EvoCalculator.Core.PostCalculation/v2/Columns/Next/SumIRRColumn/SumIRRColumnVT2.cs b/EvoCalculator.Core.PostCalculation/v2/Columns/Next/SumIRRColumn/SumIRRColumnVT2.cs index 7f064b6..40bb17a 100644 --- a/EvoCalculator.Core.PostCalculation/v2/Columns/Next/SumIRRColumn/SumIRRColumnVT2.cs +++ b/EvoCalculator.Core.PostCalculation/v2/Columns/Next/SumIRRColumn/SumIRRColumnVT2.cs @@ -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(); - - 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(); - - 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.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.Concat( new[] { -xnpvColumn.XNPV }, - _sumColumn.Values.Skip(_preparedValues.EditPaymentNumber), - costInsurances + _sumColumn.Values.Skip(_preparedValues.EditPaymentNumber) ); if (evoKasko != null)