2020-11-22 23:00:48 +03:00

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.MaxCashflowMSFONominal}");
}
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];
}
}
}