50 lines
2.5 KiB
C#
50 lines
2.5 KiB
C#
using System;
|
|
using EvoCalculator.Core.Models.Calculation.Models;
|
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
|
|
|
namespace EvoCalculator.Core.Calculation.Columns
|
|
{
|
|
public class CashflowMSFOColumn : BaseColumnWithNominal
|
|
{
|
|
public CashflowMSFOColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
{
|
|
}
|
|
|
|
public void PostCheck(AdditionalData additionalData)
|
|
{
|
|
if (additionalData != null)
|
|
{
|
|
if (additionalData.MinCashflowMSFONominal != null)
|
|
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
|
|
{
|
|
throw new Exception(
|
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
|
|
}
|
|
|
|
if (additionalData.MaxCashflowMSFONominal != null)
|
|
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
|
|
{
|
|
throw new Exception(
|
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
|
|
}
|
|
}
|
|
}
|
|
|
|
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
|
NegativeCashflowColumn negativeCashflowColumn,
|
|
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
|
|
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn)
|
|
{
|
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
|
Values[1] = sumColumn.Values[1] + npvBonusExpensesColumn.Values[1] + agentComissionExpensesColumn.Values[1];
|
|
for (var i = 2; i < Values.Length; i++)
|
|
Values[i] = sumColumn.Values[i]
|
|
+ negativeCashflowColumn.Values[i]
|
|
- nsibBruttoGrColumn.Values[i]
|
|
- tlmGrColumn.Values[i]
|
|
- gpsGrColumn.Values[i]
|
|
+ npvBonusExpensesColumn.Values[i]
|
|
+ agentComissionExpensesColumn.Values[i];
|
|
}
|
|
}
|
|
} |