DYN-488: досрочка телематики, НСИБ на последнем платеже, и NI от CashflowMSFO

This commit is contained in:
Chika 2021-10-29 13:10:28 +03:00
parent 71dd096a11
commit 98f0cd6e2e
7 changed files with 14 additions and 17 deletions

View File

@ -9,12 +9,13 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
} }
public void ComputeValues(PreparedValues preparedValues, BaseColumnWithXIRR cashflowColumn, public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> cashflowMSFOColumn,
IRRGrColumn irrGrColumn) IRRGrColumn irrGrColumn)
{ {
Values[1] = preparedValues.NiAtInception; Values[1] = -cashflowMSFOColumn.GetValue(0) - cashflowMSFOColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++) for (var i = 2; i < Values.Length; i++)
Values[i] = Values[i - 1] + Values[i - 1] * (decimal)irrGrColumn.Values[i] - cashflowColumn.Values[i]; Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] -
cashflowMSFOColumn.Values[i];
} }
} }
} }

View File

@ -12,8 +12,8 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void ComputeValues(PreparedValues preparedValues) public void ComputeValues(PreparedValues preparedValues)
{ {
Values[1] = 0; Values[1] = 0;
for (var i = 2; i < Values.Length; i++) for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1); Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1);
Values[0] = Sum; Values[0] = Sum;
} }

View File

@ -11,12 +11,8 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void ComputeValues(BaseColumn<decimal> tlmGrColumn) public void ComputeValues(BaseColumn<decimal> tlmGrColumn)
{ {
const int FIRST_YEAR_NUM = 13;
for (var i = 1; i < Values.Length; i++) for (var i = 1; i < Values.Length; i++)
if (i < FIRST_YEAR_NUM) Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x);
Values[i] = tlmGrColumn.Values.Skip(FIRST_YEAR_NUM).Sum(x => x);
else
Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x);
} }
} }
} }

View File

@ -178,7 +178,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1); var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn); niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1); var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn); interestColumn.ComputeValues(irrGrColumn, niColumn);

View File

@ -17,7 +17,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
var validationErrors = new Validation().ValidatePreparedValues(preparedValues); var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors }; if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation(); var constants = new Constants.Calculation();
@ -73,7 +73,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues); nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn( var sumColumn = new SumColumn(
preparedValues.Nmper + 1 preparedValues.Nmper + 1
, dateColumn , dateColumn
@ -178,7 +178,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1); var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn); niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1); var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn); interestColumn.ComputeValues(irrGrColumn, niColumn);
@ -188,7 +188,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
nsibBruttoGrColumn, nsibExpensesColumn); nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0) if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR); cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);

View File

@ -192,7 +192,7 @@ namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1); var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn); niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1); var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn); interestColumn.ComputeValues(irrGrColumn, niColumn);

View File

@ -191,7 +191,7 @@ namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn); irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1); var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn); niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1); var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn); interestColumn.ComputeValues(irrGrColumn, niColumn);