Clean code pt.2

This commit is contained in:
Chika 2021-12-15 12:43:51 +03:00
parent a7beb1212e
commit 4fbd107039
258 changed files with 17473 additions and 17731 deletions

View File

@ -1,35 +1,34 @@
using System;
using System.Linq;
namespace EvoCalculator.Core.Base.Columns
namespace EvoCalculator.Core.Base.Columns;
public abstract class BaseColumn<T>
{
public abstract class BaseColumn<T>
protected BaseColumn(int count)
{
protected BaseColumn(int count)
Values = new T[count];
}
protected BaseColumn()
{
}
public T[] Values { get; set; }
public T GetValue(int i)
{
if (i < Values.Length) return Values[i];
return (T) Convert.ChangeType(0.0, typeof(T));
}
public T[] GetValues(int from = 0)
{
return from switch
{
Values = new T[count];
}
protected BaseColumn()
{
}
public T[] Values { get; set; }
public T GetValue(int i)
{
if (i < Values.Length) return Values[i];
return (T) Convert.ChangeType(0.0, typeof(T));
}
public T[] GetValues(int from = 0)
{
return from switch
{
0 => Values,
_ => Values.Skip(from).ToArray()
};
}
0 => Values,
_ => Values.Skip(from).ToArray()
};
}
}

View File

@ -1,11 +1,10 @@
namespace EvoCalculator.Core.Base.Columns
{
public abstract class BaseColumnForGoalSeek<T> : BaseColumn<T>
{
protected BaseColumnForGoalSeek(int count) : base(count)
{
}
namespace EvoCalculator.Core.Base.Columns;
public abstract void ComputeValues(T x);
public abstract class BaseColumnForGoalSeek<T> : BaseColumn<T>
{
protected BaseColumnForGoalSeek(int count) : base(count)
{
}
public abstract void ComputeValues(T x);
}

View File

@ -1,16 +1,15 @@
using System;
using TridentGoalSeek;
namespace EvoCalculator.Core.Base.Columns
{
public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm
{
public BaseColumnWithGoalSeek(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Base.Columns;
public abstract decimal Calculate(decimal inputVariable);
protected abstract void FillValues(decimal x);
public abstract void ComputeValues(decimal requiredValue);
public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm
{
public BaseColumnWithGoalSeek(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
public abstract decimal Calculate(decimal inputVariable);
protected abstract void FillValues(decimal x);
public abstract void ComputeValues(decimal requiredValue);
}

View File

@ -1,21 +1,20 @@
using System;
namespace EvoCalculator.Core.Base.Columns
namespace EvoCalculator.Core.Base.Columns;
public class BaseColumnWithNominal : BaseColumnWithXIRR
{
public class BaseColumnWithNominal : BaseColumnWithXIRR
protected BaseColumnWithNominal(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
protected BaseColumnWithNominal(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
public BaseColumnWithNominal(int count) : base(count)
{
}
protected BaseColumnWithNominal()
{
}
public double Nominal => (Math.Pow(IRR + 1, (double) 1 / 12) - 1) * 12;
}
public BaseColumnWithNominal(int count) : base(count)
{
}
protected BaseColumnWithNominal()
{
}
public double Nominal => (Math.Pow(IRR + 1, (double) 1 / 12) - 1) * 12;
}

View File

@ -1,16 +1,15 @@
using System.Linq;
namespace EvoCalculator.Core.Base.Columns
{
public class BaseColumnWithSum : BaseColumn<decimal>
{
public BaseColumnWithSum(int count) : base(count)
{
}
namespace EvoCalculator.Core.Base.Columns;
public decimal Sum
{
get { return Values.Skip(1).Sum(x => x); }
}
public class BaseColumnWithSum : BaseColumn<decimal>
{
public BaseColumnWithSum(int count) : base(count)
{
}
public decimal Sum
{
get { return Values.Skip(1).Sum(x => x); }
}
}

View File

@ -3,53 +3,52 @@ using System.Linq;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Common;
namespace EvoCalculator.Core.Base.Columns
namespace EvoCalculator.Core.Base.Columns;
public class BaseColumnWithXIRR : BaseColumn<decimal>
{
public class BaseColumnWithXIRR : BaseColumn<decimal>
protected BaseColumnWithXIRR(int count, BaseColumn<DateTime> dateTempColumn) : base(count)
{
protected BaseColumnWithXIRR(int count, BaseColumn<DateTime> dateTempColumn) : base(count)
Dates = dateTempColumn.Values;
}
protected BaseColumnWithXIRR(int count) : base(count)
{
}
protected BaseColumnWithXIRR()
{
}
public DateTime[] Dates { get; set; }
private Flow[] Flows
{
get
{
Dates = dateTempColumn.Values;
}
var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
protected BaseColumnWithXIRR(int count) : base(count)
{
}
protected BaseColumnWithXIRR()
{
}
public DateTime[] Dates { get; set; }
private Flow[] Flows
{
get
{
var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
return flows;
}
}
public double IRR
{
get
{
var XIRR = new XIRR(Flows);
return XIRR.GetResult();
}
}
public void RoundValues(int precision = 2)
{
Values = Values.Select(x => Math.Round(x, precision)).ToArray();
return flows;
}
}
public double IRR
{
get
{
var XIRR = new XIRR(Flows);
return XIRR.GetResult();
}
}
public void RoundValues(int precision = 2)
{
Values = Values.Select(x => Math.Round(x, precision)).ToArray();
}
}

View File

@ -2,43 +2,42 @@
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Common;
namespace EvoCalculator.Core.Base.Columns
namespace EvoCalculator.Core.Base.Columns;
public class BaseColumnWithXNPV : BaseColumn<decimal>
{
public class BaseColumnWithXNPV : BaseColumn<decimal>
private readonly double rate;
public BaseColumnWithXNPV(int count, BaseColumn<DateTime> dateTempColumn, double rate) : base(count)
{
private readonly double rate;
Dates = dateTempColumn.Values;
this.rate = rate;
}
public BaseColumnWithXNPV(int count, BaseColumn<DateTime> dateTempColumn, double rate) : base(count)
private DateTime[] Dates { get; }
private Flow[] Flows
{
get
{
Dates = dateTempColumn.Values;
this.rate = rate;
var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
return flows;
}
}
private DateTime[] Dates { get; }
private Flow[] Flows
public decimal XNPV
{
get
{
get
{
var flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
flows[i] = new Flow
{
Date = Dates[i],
Value = Values[i]
};
return flows;
}
}
public decimal XNPV
{
get
{
var XNPV = new XNPV(Flows, rate);
return Convert.ToDecimal(XNPV.GetResult());
}
var XNPV = new XNPV(Flows, rate);
return Convert.ToDecimal(XNPV.GetResult());
}
}
}

View File

@ -1,10 +1,9 @@
using TridentGoalSeek;
namespace EvoCalculator.Core.Base.Interfaces.Columns
namespace EvoCalculator.Core.Base.Interfaces.Columns;
public interface IColumnWithGoalSeek : IGoalSeekAlgorithm
{
public interface IColumnWithGoalSeek : IGoalSeekAlgorithm
{
public new decimal Calculate(decimal inputVariable);
public void ComputeValues(decimal requiredValue);
}
public new decimal Calculate(decimal inputVariable);
public void ComputeValues(decimal requiredValue);
}

View File

@ -1,7 +1,6 @@
namespace EvoCalculator.Core.Base.PostValues
namespace EvoCalculator.Core.Base.PostValues;
public class BasePostValue<T>
{
public class BasePostValue<T>
{
public T Value { get; set; }
}
public T Value { get; set; }
}

View File

@ -1,19 +1,18 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class AcceptInsuranceColumn : BaseColumnWithSum
{
public class AcceptInsuranceColumn : BaseColumnWithSum
public AcceptInsuranceColumn(int count) : base(count)
{
public AcceptInsuranceColumn(int count) : base(count)
{
}
}
public void ComputeValues(AcceptKaskoColumn acceptKaskoColumn, AcceptOsagoColumn acceptOsagoColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = acceptKaskoColumn.Values[i] + acceptOsagoColumn.Values[i];
public void ComputeValues(AcceptKaskoColumn acceptKaskoColumn, AcceptOsagoColumn acceptOsagoColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = acceptKaskoColumn.Values[i] + acceptOsagoColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class AcceptKaskoColumn : BaseColumnWithSum
{
public class AcceptKaskoColumn : BaseColumnWithSum
public AcceptKaskoColumn(int count) : base(count)
{
public AcceptKaskoColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length; i++)
Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1);
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length; i++)
Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1);
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class AcceptOsagoColumn : BaseColumnWithSum
{
public class AcceptOsagoColumn : BaseColumnWithSum
public AcceptOsagoColumn(int count) : base(count)
{
public AcceptOsagoColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = i > 1 && i <= 12 ? preparedValues.InsuranceOsago / 11 : 0;
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = i > 1 && i <= 12 ? preparedValues.InsuranceOsago / 11 : 0;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,25 +1,24 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class AcceptSumColumn : BaseColumnWithSum
{
public class AcceptSumColumn : BaseColumnWithSum
public AcceptSumColumn(int count) : base(count)
{
public AcceptSumColumn(int count) : base(count)
{
}
}
public void ComputeValues(
PreparedValues preparedValues
, SumColumn sumColumn
, VATColumn vatColumn
, BaseSumWithVATColumn sumWithVatColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] /
(sumWithVatColumn.Values[0] - vatColumn.Values[0]);
public void ComputeValues(
PreparedValues preparedValues
, SumColumn sumColumn
, VATColumn vatColumn
, BaseSumWithVATColumn sumWithVatColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] /
(sumWithVatColumn.Values[0] - vatColumn.Values[0]);
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,24 +1,23 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class AgentComissionExpensesColumn : BaseColumnWithSum
{
public class AgentComissionExpensesColumn : BaseColumnWithSum
public AgentComissionExpensesColumn(int count) : base(count)
{
public AgentComissionExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum +
preparedValues.DeliverySum +
preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum +
preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum;
public void ComputeValues(PreparedValues preparedValues)
{
var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum +
preparedValues.DeliverySum +
preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum +
preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum;
Values[2] = -agentComission;
Values[2] = -agentComission;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowColumn : BaseColumnWithXIRR
{
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i];
}
public class CashflowColumn : BaseColumnWithXIRR
{
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i];
}
}

View File

@ -1,26 +1,25 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowLeasingColumn : BaseColumnWithXIRR
{
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.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];
}
public class CashflowLeasingColumn : BaseColumnWithXIRR
{
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.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];
}
}

View File

@ -3,68 +3,67 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class BaseCashflowMSFOColumn : BaseColumnWithNominal
{
public class BaseCashflowMSFOColumn : BaseColumnWithNominal
protected readonly AgentComissionExpensesColumn _agentComissionExpensesColumn;
protected readonly BaseColumn<decimal> _gpsGrColumn;
protected readonly NegativeCashflowColumn _negativeCashflowColumn;
protected readonly BaseColumnWithSum _npvBonusExpensesColumn;
protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
protected readonly BaseColumn<decimal> _tlmGrColumn;
protected SumColumn _sumColumn;
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn)
{
protected readonly AgentComissionExpensesColumn _agentComissionExpensesColumn;
protected readonly BaseColumn<decimal> _gpsGrColumn;
protected readonly NegativeCashflowColumn _negativeCashflowColumn;
protected readonly BaseColumnWithSum _npvBonusExpensesColumn;
protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
protected readonly BaseColumn<decimal> _tlmGrColumn;
protected SumColumn _sumColumn;
_postValues = postValues;
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_sumColumn = sumColumn;
_negativeCashflowColumn = negativeCashflowColumn;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
_tlmGrColumn = tlmGrColumn;
_gpsGrColumn = gpsGrColumn;
_npvBonusExpensesColumn = npvBonusExpensesColumn;
_agentComissionExpensesColumn = agentComissionExpensesColumn;
}
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn)
protected virtual void FillValues()
{
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];
}
public void PostCheck(AdditionalData additionalData)
{
if (additionalData != null)
{
_postValues = postValues;
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_sumColumn = sumColumn;
_negativeCashflowColumn = negativeCashflowColumn;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
_tlmGrColumn = tlmGrColumn;
_gpsGrColumn = gpsGrColumn;
_npvBonusExpensesColumn = npvBonusExpensesColumn;
_agentComissionExpensesColumn = agentComissionExpensesColumn;
}
if (additionalData.MinCashflowMSFONominal != null)
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
protected virtual void FillValues()
{
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];
}
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}");
}
if (additionalData.MaxCashflowMSFONominal != null)
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
}
}
}

View File

@ -4,43 +4,42 @@ using EvoCalculator.Core.Base.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
{
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Nominal);
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Nominal);
}
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
}

View File

@ -1,22 +1,21 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues()
{
FillValues();
}
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
public void ComputeValues()
{
FillValues();
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowMSFOFinal2Column : BaseColumnWithNominal
{
public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> directorBonusSumColumn,
CashflowMSFOFinalColumn cashflowMsfoFinalColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowMsfoFinalColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowMsfoFinalColumn.Values[i] + directorBonusSumColumn.Values[i];
}
public class CashflowMSFOFinal2Column : BaseColumnWithNominal
{
public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> directorBonusSumColumn,
CashflowMSFOFinalColumn cashflowMsfoFinalColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowMsfoFinalColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowMsfoFinalColumn.Values[i] + directorBonusSumColumn.Values[i];
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowMSFOFinalColumn : BaseColumnWithNominal
{
public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
ExtraBonusSumColumn extraBonusSumColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowMsfoColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowMsfoColumn.Values[i] + extraBonusSumColumn.Values[i];
}
public class CashflowMSFOFinalColumn : BaseColumnWithNominal
{
public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
ExtraBonusSumColumn extraBonusSumColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowMsfoColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowMsfoColumn.Values[i] + extraBonusSumColumn.Values[i];
}
}

View File

@ -1,32 +1,31 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class CashflowNPVColumn : BaseColumn<decimal>
{
public class CashflowNPVColumn : BaseColumn<decimal>
public CashflowNPVColumn(int count) : base(count)
{
public CashflowNPVColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1);
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) +
npvBonusExpensesColumn.GetValue(i) +
agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) -
taxColumn.GetValue(i) -
transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) +
tlmExpensesColumn.GetValue(i) +
gpsExpensesColumn.GetValue(i);
}
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) +
npvBonusExpensesColumn.GetValue(i) +
agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) -
taxColumn.GetValue(i) -
transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) +
tlmExpensesColumn.GetValue(i) +
gpsExpensesColumn.GetValue(i);
}
}

View File

@ -1,22 +1,21 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class CashflowNPVFinal2Column : BaseColumn<decimal>
{
public class CashflowNPVFinal2Column : BaseColumn<decimal>
public CashflowNPVFinal2Column(int count) : base(count)
{
public CashflowNPVFinal2Column(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn,
BaseColumn<decimal> directorBonusSumColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvFinalColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i);
}
public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn,
BaseColumn<decimal> directorBonusSumColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvFinalColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i);
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowNPVFinalColumn : BaseColumn<decimal>
{
public CashflowNPVFinalColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
BaseColumn<decimal> cashflowNpvColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = extraBonusSumColumn.GetValue(i) + cashflowNpvColumn.GetValue(i);
}
public class CashflowNPVFinalColumn : BaseColumn<decimal>
{
public CashflowNPVFinalColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
BaseColumn<decimal> cashflowNpvColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = extraBonusSumColumn.GetValue(i) + cashflowNpvColumn.GetValue(i);
}
}

View File

@ -3,46 +3,45 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.Interfaces.Columns;
using TridentGoalSeek;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class CashflowNSIBColumn : BaseColumnWithNominal, IColumnWithGoalSeek
{
public class CashflowNSIBColumn : BaseColumnWithNominal, IColumnWithGoalSeek
private readonly NSIBBruttoGrColumn _NSIBBruttoGrColumn;
private readonly NSIBExpensesColumn _NSIBExpensesColumn;
public CashflowNSIBColumn(int count, DateTempColumn dateTempColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn) : base(count, dateTempColumn)
{
private readonly NSIBBruttoGrColumn _NSIBBruttoGrColumn;
private readonly NSIBExpensesColumn _NSIBExpensesColumn;
_NSIBBruttoGrColumn = nsibBruttoGrColumn;
_NSIBExpensesColumn = nsibExpensesColumn;
}
public CashflowNSIBColumn(int count, DateTempColumn dateTempColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn) : base(count, dateTempColumn)
{
_NSIBBruttoGrColumn = nsibBruttoGrColumn;
_NSIBExpensesColumn = nsibExpensesColumn;
}
public decimal Calculate(decimal inputVariable)
{
FillValues(inputVariable);
return Convert.ToDecimal(IRR);
}
public decimal Calculate(decimal inputVariable)
{
FillValues(inputVariable);
return Convert.ToDecimal(IRR);
}
public void ComputeValues(decimal requiredValue)
{
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint: Convert.ToDecimal(_NSIBBruttoGrColumn.Values[0] / 2)
, tineExplorePercentage: 10
// , maximumAttempts: 10000
// , initialTineSpacing: 1
// , focusPercentage: 100
// , trimFinalInputValue: true
));
}
public void ComputeValues(decimal requiredValue)
{
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint: Convert.ToDecimal(_NSIBBruttoGrColumn.Values[0] / 2)
, tineExplorePercentage: 10
// , maximumAttempts: 10000
// , initialTineSpacing: 1
// , focusPercentage: 100
// , trimFinalInputValue: true
));
}
private void FillValues(decimal x)
{
Values[1] = _NSIBBruttoGrColumn.Values[1] - x;
for (var i = 2; i < Values.Length; i++)
Values[i] = _NSIBBruttoGrColumn.Values[i] -
x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1];
}
private void FillValues(decimal x)
{
Values[1] = _NSIBBruttoGrColumn.Values[1] - x;
for (var i = 2; i < Values.Length; i++)
Values[i] = _NSIBBruttoGrColumn.Values[i] -
x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1];
}
}

View File

@ -1,18 +1,17 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class ComissionBonusExpensesColumn : BaseColumnWithSum
{
public ComissionBonusExpensesColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = preparedValues.ComissionRub;
Values[0] = Sum;
}
public class ComissionBonusExpensesColumn : BaseColumnWithSum
{
public ComissionBonusExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = preparedValues.ComissionRub;
Values[0] = Sum;
}
}

View File

@ -2,35 +2,34 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class DateColumn : BaseColumn<DateTime>
{
public class DateColumn : BaseColumn<DateTime>
public DateColumn(int count) : base(count)
{
public DateColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
Values[0] = preparedValues.DogDate;
Values[1] = Values[0];
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
Values[0] = preparedValues.DogDate;
Values[1] = Values[0];
Values[2] = preparedValues.DeliveryTime switch
Values[2] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew ?? Values[1].AddMonths(1),
100000001 => preparedValues.PaymentDateNew ?? Values[1].AddDays(constants.DeliveryDays),
_ => Values[2]
};
for (var i = 3; i < preparedValues.Nmper + 1; i++)
Values[i] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew ?? Values[1].AddMonths(1),
100000001 => preparedValues.PaymentDateNew ?? Values[1].AddDays(constants.DeliveryDays),
100000000 => preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2),
100000001 => Values[2].AddMonths(i - 2),
_ => Values[2]
};
for (var i = 3; i < preparedValues.Nmper + 1; i++)
Values[i] = preparedValues.DeliveryTime switch
{
100000000 => preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2),
100000001 => Values[2].AddMonths(i - 2),
_ => Values[2]
};
}
}
}

View File

@ -2,26 +2,25 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class DateTempColumn : BaseColumn<DateTime>
{
public class DateTempColumn : BaseColumn<DateTime>
public DateTempColumn(int count) : base(count)
{
public DateTempColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
: preparedValues.DogDate;
Values[1] = Values[0];
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);
public void ComputeValues(PreparedValues preparedValues)
{
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
: preparedValues.DogDate;
Values[1] = Values[0];
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);
for (var i = 3; i < Values.Length; i++)
Values[i] = preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2);
}
for (var i = 3; i < Values.Length; i++)
Values[i] = preparedValues.PaymentDateNew == null
? Values[1].AddMonths(i - 1)
: Values[2].AddMonths(i - 2);
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class DeprecationColumn : BaseColumnWithSum
{
public class DeprecationColumn : BaseColumnWithSum
public DeprecationColumn(int count) : base(count)
{
public DeprecationColumn(int count) : base(count)
{
}
}
public void ComputeValues(DeprecationLPColumn deprecationLpColumn, DeprecationLDColumn deprecationLdColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = i < deprecationLpColumn.Values.Length
? deprecationLpColumn.Values[i] + deprecationLdColumn.Values[i]
: 0 + deprecationLdColumn.Values[i];
public void ComputeValues(DeprecationLPColumn deprecationLpColumn, DeprecationLDColumn deprecationLdColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = i < deprecationLpColumn.Values.Length
? deprecationLpColumn.Values[i] + deprecationLdColumn.Values[i]
: 0 + deprecationLdColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,30 +2,29 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class DeprecationLDColumn : BaseColumnWithSum
{
public class DeprecationLDColumn : BaseColumnWithSum
public DeprecationLDColumn(int count) : base(count)
{
public DeprecationLDColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.BalanceHolder == 100000001
? (decimal) preparedValues.DeprecationTime *
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
: 0;
Values[^1] = preparedValues.BalanceHolder == 100000001
? preparedValues.AcceptSum - Values.Skip(2)
.Take(Values.Length - 1)
.Sum(x => x)
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.BalanceHolder == 100000001
? (decimal) preparedValues.DeprecationTime *
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
: 0;
Values[0] = Sum;
}
Values[^1] = preparedValues.BalanceHolder == 100000001
? preparedValues.AcceptSum - Values.Skip(2)
.Take(Values.Length - 1)
.Sum(x => x)
: 0;
Values[0] = Sum;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class DeprecationLPColumn : BaseColumnWithSum
{
public class DeprecationLPColumn : BaseColumnWithSum
public DeprecationLPColumn(int count) : base(count)
{
public DeprecationLPColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, AcceptSumColumn acceptSumColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = preparedValues.BalanceHolder == 100000000 ? acceptSumColumn.Values[i] : 0;
public void ComputeValues(PreparedValues preparedValues, AcceptSumColumn acceptSumColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = preparedValues.BalanceHolder == 100000000 ? acceptSumColumn.Values[i] : 0;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class DirectorBonusSumColumn : BaseColumnWithSum
{
public DirectorBonusSumColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[0] = Sum;
}
public class DirectorBonusSumColumn : BaseColumnWithSum
{
public DirectorBonusSumColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[0] = Sum;
}
}

View File

@ -1,34 +1,33 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class ExpensesColumn : BaseColumnWithSum
{
public class ExpensesColumn : BaseColumnWithSum
public ExpensesColumn(int count) : base(count)
{
public ExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
+ transExpensesColumn.Values[i]
+ nsibExpensesColumn.Values[i]
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
+ registrExpensesColumn.Values[i]
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i];
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
+ transExpensesColumn.Values[i]
+ nsibExpensesColumn.Values[i]
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
+ registrExpensesColumn.Values[i]
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,24 +1,23 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class ExtraBonusSumColumn : BaseColumnWithSum
{
public ExtraBonusSumColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
PostValues.PostValues postValues)
{
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan
? -1 * postValues.BonusBase.Value *
(decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
: 0;
Values[0] = Sum;
}
public class ExtraBonusSumColumn : BaseColumnWithSum
{
public ExtraBonusSumColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
PostValues.PostValues postValues)
{
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan
? -1 * postValues.BonusBase.Value *
(decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
: 0;
Values[0] = Sum;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class GPSExpensesColumn : BaseColumnWithSum
{
public class GPSExpensesColumn : BaseColumnWithSum
public GPSExpensesColumn(int count) : base(count)
{
public GPSExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment);
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].GpsBasePayment;
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment);
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].GpsBasePayment;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,24 +2,23 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class GPS_GrColumn : BaseColumnWithXNPV
{
public class GPS_GrColumn : BaseColumnWithXNPV
public GPS_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
public GPS_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
Values[0] = -XNPV;
}
Values[0] = -XNPV;
}
}

View File

@ -1,19 +1,18 @@
using System;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class IRRGrColumn : BaseColumn<double>
{
public IRRGrColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowMSFOColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = Math.Pow(1 + cashflowMSFOColumn.IRR,
(double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1;
}
public class IRRGrColumn : BaseColumn<double>
{
public IRRGrColumn(int count) : base(count)
{
}
public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowMSFOColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = Math.Pow(1 + cashflowMSFOColumn.IRR,
(double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1;
}
}

View File

@ -1,37 +1,36 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class InsuranceBonusExpensesColumn : BaseColumnWithSum
{
public class InsuranceBonusExpensesColumn : BaseColumnWithSum
public InsuranceBonusExpensesColumn(int count) : base(count)
{
public InsuranceBonusExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
Values[2] = preparedValues.InsuranceBonus;
else
/*
* +1 - компенсация того, что считается с 0 позиции
*/
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
if (preparedValues.NmperInsurance - i >= 3)
{
if (
preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 ||
preparedValues.NmperInsurance > constants.MaxOnePolicePeriod &&
preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod
)
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
else
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
(preparedValues.NmperInsurance - i + 1);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
Values[2] = preparedValues.InsuranceBonus;
else
/*
* +1 - компенсация того, что считается с 0 позиции
*/
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
if (preparedValues.NmperInsurance - i >= 3)
{
if (
preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 ||
preparedValues.NmperInsurance > constants.MaxOnePolicePeriod &&
preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod
)
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
else
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
(preparedValues.NmperInsurance - i + 1);
}
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,27 +2,26 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class InterestColumn : BaseColumn<decimal>
{
public class InterestColumn : BaseColumn<decimal>
public InterestColumn(int count) : base(count)
{
public InterestColumn(int count) : base(count)
{
}
}
public void PostCheck(SumColumn sumColumn)
{
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
if (Values[i] > sumColumn.Values[i])
throw new Exception(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
public void PostCheck(SumColumn sumColumn)
{
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
if (Values[i] > sumColumn.Values[i])
throw new Exception(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
{
for (var i = 2; i < Values.Length; i++)
Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i];
}
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
{
for (var i = 2; i < Values.Length; i++)
Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i];
}
}

View File

@ -1,25 +1,24 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class KaskoBonusGrSumColumn : BaseColumnWithSum
{
public class KaskoBonusGrSumColumn : BaseColumnWithSum
public KaskoBonusGrSumColumn(int count) : base(count)
{
public KaskoBonusGrSumColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++)
if (i < 13)
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
else if (i <= 24)
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7;
else
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5;
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++)
if (i < 13)
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
else if (i <= 24)
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7;
else
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,39 +2,38 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class KaskoNmperGrColumn : BaseColumnWithXNPV
{
public class KaskoNmperGrColumn : BaseColumnWithXNPV
public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn,
rate)
{
public KaskoNmperGrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn,
rate)
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
{
Values[1] = preparedValues.InsuranceKasko;
}
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
{
Values[1] = preparedValues.InsuranceKasko;
}
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
Values[0] = -XNPV;
}
Values[0] = -XNPV;
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NIColumn : BaseColumn<decimal>
{
public NIColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> cashflowMSFOColumn,
IRRGrColumn irrGrColumn)
{
Values[1] = -cashflowMSFOColumn.GetValue(0) - cashflowMSFOColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] -
cashflowMSFOColumn.Values[i];
}
public class NIColumn : BaseColumn<decimal>
{
public NIColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> cashflowMSFOColumn,
IRRGrColumn irrGrColumn)
{
Values[1] = -cashflowMSFOColumn.GetValue(0) - cashflowMSFOColumn.GetValue(1);
for (var i = 2; i < Values.Length; i++)
Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] -
cashflowMSFOColumn.Values[i];
}
}

View File

@ -2,30 +2,29 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class NPVBonusExpensesColumn : BaseColumnWithSum
{
public class NPVBonusExpensesColumn : BaseColumnWithSum
public NPVBonusExpensesColumn(int count) : base(count)
{
public NPVBonusExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
for (var i = 3; i < Values.Length; i++) Values[i] = 0;
for (var i = 3; i < Values.Length; i++) Values[i] = 0;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,17 +1,16 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVColumn : BaseColumnWithNominal
{
public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(BaseColumn<decimal> cashflowNpvColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
public class NPVColumn : BaseColumnWithNominal
{
public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(BaseColumn<decimal> cashflowNpvColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
}

View File

@ -1,17 +1,16 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVFinal2Column : BaseColumnWithNominal
{
public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
public class NPVFinal2Column : BaseColumnWithNominal
{
public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
}

View File

@ -1,17 +1,16 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVFinalColumn : BaseColumnWithNominal
{
public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
public class NPVFinalColumn : BaseColumnWithNominal
{
public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
}

View File

@ -2,21 +2,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVWeightColumn : BaseColumn<double>
{
public NPVWeightColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(PreparedValues preparedValues, DateTempColumn dateTempColumn)
{
Values[0] = 1;
for (var i = 1; i < Values.Length; i++)
Values[i] = Values[i - 1] / Math.Pow(
1 + preparedValues.LoanRate / 365,
(dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days);
}
public class NPVWeightColumn : BaseColumn<double>
{
public NPVWeightColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, DateTempColumn dateTempColumn)
{
Values[0] = 1;
for (var i = 1; i < Values.Length; i++)
Values[i] = Values[i - 1] / Math.Pow(
1 + preparedValues.LoanRate / 365,
(dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days);
}
}

View File

@ -1,21 +1,20 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class NSIBBruttoGrColumn : BaseColumnWithSum
{
public class NSIBBruttoGrColumn : BaseColumnWithSum
public NSIBBruttoGrColumn(int count) : base(count)
{
public NSIBBruttoGrColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1);
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1);
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,34 +1,33 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class NSIBExpensesColumn : BaseColumnWithSum
{
public class NSIBExpensesColumn : BaseColumnWithSum
public NSIBExpensesColumn(int count) : base(count)
{
public NSIBExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i += 12)
if (i <= preparedValues.Nmper)
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i += 12)
if (i <= preparedValues.Nmper)
{
if (preparedValues.Nmper - i >= 3)
{
if (preparedValues.Nmper - i >= 3)
{
if (preparedValues.Nmper - i < 16 - 1)
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper *
(preparedValues.Nmper - i + 1);
else
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12;
}
if (preparedValues.Nmper - i < 16 - 1)
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper *
(preparedValues.Nmper - i + 1);
else
{
Values[i] = 0;
}
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12;
}
else
{
Values[i] = 0;
}
}
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,18 +1,17 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class NegativeCashflowColumn : BaseColumnWithSum
{
public class NegativeCashflowColumn : BaseColumnWithSum
public NegativeCashflowColumn(int count) : base(count)
{
public NegativeCashflowColumn(int count) : base(count)
{
}
}
public void ComputeValues(BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i];
public void ComputeValues(BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,22 +1,21 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class PercentPaymentColumn : BaseColumn<double>
{
public class PercentPaymentColumn : BaseColumn<double>
public PercentPaymentColumn(int count) : base(count)
{
public PercentPaymentColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedPayments preparedPayments)
{
Values[0] = 0;
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedPayments.Rows[i - 1].PercentPayment;
public void ComputeValues(PreparedPayments preparedPayments)
{
Values[0] = 0;
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedPayments.Rows[i - 1].PercentPayment;
Values[^1] = 0;
}
Values[^1] = 0;
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class RatExpensesColumn : BaseColumnWithSum
{
public class RatExpensesColumn : BaseColumnWithSum
public RatExpensesColumn(int count) : base(count)
{
public RatExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = -preparedValues.BaseRatCost;
Values[4] = preparedValues.RetroBonus;
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = -preparedValues.BaseRatCost;
Values[4] = preparedValues.RetroBonus;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,19 +1,18 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class RegistrExpensesColumn : BaseColumnWithSum
{
public class RegistrExpensesColumn : BaseColumnWithSum
public RegistrExpensesColumn(int count) : base(count)
{
public RegistrExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = -preparedValues.BaseRegistration;
public void ComputeValues(PreparedValues preparedValues)
{
Values[1] = -preparedValues.BaseRegistration;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,26 +1,25 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class RevenueColumn : BaseColumn<decimal>
{
public RevenueColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn,
CashflowNSIBColumn cashflowNsibColumn)
public class RevenueColumn : BaseColumn<decimal>
{
public RevenueColumn(int count) : base(count)
{
}
public void ComputeValues(NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn,
CashflowNSIBColumn cashflowNsibColumn)
{
if (nsibBruttoGrColumn.Sum == 0)
{
if (nsibBruttoGrColumn.Sum == 0)
{
for (var i = 0; i < Values.Length; i++) Values[i] = 0;
}
else
{
Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = Values[1] * nsibExpensesColumn.Values[i] / nsibExpensesColumn.Values[1];
}
for (var i = 0; i < Values.Length; i++) Values[i] = 0;
}
else
{
Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = Values[1] * nsibExpensesColumn.Values[i] / nsibExpensesColumn.Values[1];
}
}
}

View File

@ -4,47 +4,46 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class SumColumn : BaseColumnWithXIRR
{
public class SumColumn : BaseColumnWithXIRR
protected readonly BaseColumn<decimal> _nsibBruttoGrColumn;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues, BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn)
{
protected readonly BaseColumn<decimal> _nsibBruttoGrColumn;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
}
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues, BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn)
{
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
}
public virtual void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value;
Values[1] = _preparedValues.FirstPaymentSum;
public virtual void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value;
Values[1] = _preparedValues.FirstPaymentSum;
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
Values[^1] = _preparedValues.LastPaymentSum;
}
Values[^1] = _preparedValues.LastPaymentSum;
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
throw new Exception(
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
for (var i = 2; i < Values.Length - 1; i++)
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
throw new Exception(
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
for (var i = 2; i < Values.Length - 1; i++)
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
throw new Exception(
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
}
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
}
}

View File

@ -1,17 +1,16 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumCurrentColumn : BaseColumn<decimal>
{
public SumCurrentColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(BaseSumWithVATColumn sumWithVatColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = sumWithVatColumn.Values.Skip(i).Sum(x => x);
}
public class SumCurrentColumn : BaseColumn<decimal>
{
public SumCurrentColumn(int count) : base(count)
{
}
public void ComputeValues(BaseSumWithVATColumn sumWithVatColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = sumWithVatColumn.Values.Skip(i).Sum(x => x);
}
}

View File

@ -1,17 +1,16 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumCurrentInterestColumn : BaseColumn<decimal>
{
public SumCurrentInterestColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(InterestColumn interestColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = interestColumn.Values.Skip(i + 1).Sum(x => x);
}
public class SumCurrentInterestColumn : BaseColumn<decimal>
{
public SumCurrentInterestColumn(int count) : base(count)
{
}
public void ComputeValues(InterestColumn interestColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = interestColumn.Values.Skip(i + 1).Sum(x => x);
}
}

View File

@ -1,17 +1,16 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumCurrentNegativeColumn : BaseColumn<decimal>
{
public SumCurrentNegativeColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(NegativeCashflowColumn negativeCashflowColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = negativeCashflowColumn.Values.Skip(i).Sum(x => x);
}
public class SumCurrentNegativeColumn : BaseColumn<decimal>
{
public SumCurrentNegativeColumn(int count) : base(count)
{
}
public void ComputeValues(NegativeCashflowColumn negativeCashflowColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = negativeCashflowColumn.Values.Skip(i).Sum(x => x);
}
}

View File

@ -1,18 +1,17 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumCurrentTLMColumn : BaseColumn<decimal>
{
public SumCurrentTLMColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues(BaseColumn<decimal> tlmGrColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x);
}
public class SumCurrentTLMColumn : BaseColumn<decimal>
{
public SumCurrentTLMColumn(int count) : base(count)
{
}
public void ComputeValues(BaseColumn<decimal> tlmGrColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x);
}
}

View File

@ -2,28 +2,27 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class SumRepaymentColumn : BaseColumn<decimal>
{
public class SumRepaymentColumn : BaseColumn<decimal>
public SumRepaymentColumn(int count) : base(count)
{
public SumRepaymentColumn(int count) : base(count)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn,
SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn)
{
for (var i = 7; i < Values.Length; i++)
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
(decimal) preparedValues.Repayment;
}
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn,
SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn)
{
for (var i = 7; i < Values.Length; i++)
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
(decimal) preparedValues.Repayment;
}
}

View File

@ -2,37 +2,36 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class BaseSumWithVATColumn : BaseColumnWithSum
{
public class BaseSumWithVATColumn : BaseColumnWithSum
protected readonly Constants.Calculation _constants;
protected readonly PreparedValues _preparedValues;
protected SumColumn _sumColumn;
protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count)
{
protected readonly Constants.Calculation _constants;
protected readonly PreparedValues _preparedValues;
protected SumColumn _sumColumn;
_sumColumn = sumColumn;
_preparedValues = preparedValues;
_constants = constants;
}
protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count)
{
_sumColumn = sumColumn;
_preparedValues = preparedValues;
_constants = constants;
}
protected void FillValues()
{
Values[0] = 0;
Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0
? _preparedValues.FirstPaymentWithNdsAbs
: (decimal) (1 + _constants.VatValue) * _sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = (decimal) (1 + _constants.VatValue) * _sumColumn.Values[i];
protected void FillValues()
{
Values[0] = 0;
Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0
? _preparedValues.FirstPaymentWithNdsAbs
: (decimal) (1 + _constants.VatValue) * _sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = (decimal) (1 + _constants.VatValue) * _sumColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
}

View File

@ -1,17 +1,16 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumWithVATColumnVT1 : BaseSumWithVATColumn
{
public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants)
{
}
namespace EvoCalculator.Core.Calculation.v1.Columns;
public void ComputeValues()
{
FillValues();
}
public class SumWithVATColumnVT1 : BaseSumWithVATColumn
{
public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants)
{
}
public void ComputeValues()
{
FillValues();
}
}

View File

@ -4,46 +4,45 @@ using EvoCalculator.Core.Base.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek
{
public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek
private readonly PercentPaymentColumn _percentPaymentColumn;
private readonly PostValues.PostValues _postValues;
public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues) : base(
count, sumColumn,
preparedValues, constants)
{
private readonly PercentPaymentColumn _percentPaymentColumn;
private readonly PostValues.PostValues _postValues;
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
}
public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues) : base(
count, sumColumn,
preparedValues, constants)
{
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Sum);
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Sum);
}
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
}

View File

@ -1,20 +1,19 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class TLMExpensesColumn : BaseColumnWithSum
{
public class TLMExpensesColumn : BaseColumnWithSum
public TLMExpensesColumn(int count) : base(count)
{
public TLMExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment);
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].TlmBasePayment;
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
{
Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment);
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].TlmBasePayment;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,24 +2,23 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class TLM_GrColumn : BaseColumnWithXNPV
{
public class TLM_GrColumn : BaseColumnWithXNPV
public TLM_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
public TLM_GrColumn(int count, DateTempColumn dateTempColumn, double rate) : base(count, dateTempColumn, rate)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
Values[0] = -XNPV;
}
Values[0] = -XNPV;
}
}

View File

@ -1,38 +1,37 @@
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class TaxColumn : BaseColumnWithSum
{
public class TaxColumn : BaseColumnWithSum
public TaxColumn(int count) : base(count)
{
public TaxColumn(int count) : base(count)
{
}
}
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn,
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
);
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn,
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
);
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,22 +2,21 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class TransExpensesColumn : BaseColumnWithSum
{
public class TransExpensesColumn : BaseColumnWithSum
public TransExpensesColumn(int count) : base(count)
{
public TransExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 0; i < Values.Length; i += 12)
if (i > 0)
Values[i] = -preparedValues.TransportTaxGrYear;
public void ComputeValues(PreparedValues preparedValues)
{
for (var i = 0; i < Values.Length; i += 12)
if (i > 0)
Values[i] = -preparedValues.TransportTaxGrYear;
Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x));
Values[0] = Sum;
}
Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x));
Values[0] = Sum;
}
}

View File

@ -2,28 +2,27 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Calculation.v1.Columns;
public class VATColumn : BaseColumnWithSum
{
public class VATColumn : BaseColumnWithSum
public VATColumn(int count) : base(count)
{
public VATColumn(int count) : base(count)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
{
Values[0] = 0;
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
? preparedValues.FirstPaymentNdsAbs
: (decimal) constants.VatValue * sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
{
Values[0] = 0;
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
? preparedValues.FirstPaymentNdsAbs
: (decimal) constants.VatValue * sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -5,317 +5,316 @@ using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using EvoCalculator.Core.Tools.Validation;
namespace EvoCalculator.Core.Calculation.v1.Managers
namespace EvoCalculator.Core.Calculation.v1.Managers;
public static partial class CalculateManager
{
public static partial class CalculateManager
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
{
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
try
{
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var constants = new Constants.Calculation();
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var postValues = new PostValues.PostValues();
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
try
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var sumWithVatColumn =
new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants,
percentPaymentColumn, postValues);
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
sumWithVatColumn.PostCheck();
sumColumn.PostCheck();
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
cashflowMsfoColumn.ComputeValues();
cashflowMsfoColumn.PostCheck(additionalData);
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
return new ManagerResult
{
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var sumWithVatColumn =
new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants,
percentPaymentColumn, postValues);
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
sumWithVatColumn.PostCheck();
sumColumn.PostCheck();
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
cashflowMsfoColumn.ComputeValues();
cashflowMsfoColumn.PostCheck(additionalData);
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
return new ManagerResult
{
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
}
catch (Exception ex)
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
}
catch (Exception ex)
{
return new ManagerResult
{
return new ManagerResult
Errors = new List<string>
{
Errors = new List<string>
{
ex.Message
}
};
}
ex.Message
}
};
}
}
}

View File

@ -5,317 +5,316 @@ using EvoCalculator.Core.Models.Calculation.Models.Manager;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using EvoCalculator.Core.Tools.Validation;
namespace EvoCalculator.Core.Calculation.v1.Managers
namespace EvoCalculator.Core.Calculation.v1.Managers;
public static partial class CalculateManager
{
public static partial class CalculateManager
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
{
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
try
{
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var constants = new Constants.Calculation();
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var postValues = new PostValues.PostValues();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
try
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
cashflowMsfoColumn.PostCheck(additionalData);
sumColumn.PostCheck();
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var sumWithVatColumn =
new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
sumWithVatColumn.ComputeValues();
sumWithVatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
return new ManagerResult
{
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
cashflowMsfoColumn.PostCheck(additionalData);
sumColumn.PostCheck();
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var sumWithVatColumn =
new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
sumWithVatColumn.ComputeValues();
sumWithVatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
return new ManagerResult
{
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
}
catch (Exception ex)
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
}
catch (Exception ex)
{
return new ManagerResult
{
return new ManagerResult
Errors = new List<string>
{
Errors = new List<string>
{
ex.Message
}
};
}
ex.Message
}
};
}
}
}

View File

@ -3,18 +3,17 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class BaseCost : BasePostValue<decimal>
{
public class BaseCost : BasePostValue<decimal>
public void ComputeValue(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
{
public void ComputeValue(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
{
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats +
preparedValues.Registration + preparedValues.TrackerCost +
preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K +
preparedValues.NsibBrutto;
}
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats +
preparedValues.Registration + preparedValues.TrackerCost +
preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K +
preparedValues.NsibBrutto;
}
}

View File

@ -3,14 +3,13 @@ using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class BonusBase : BasePostValue<decimal>
{
public class BonusBase : BasePostValue<decimal>
public void ComputeValue(PreparedValues preparedValues, KaskoBonusGrSumColumn kaskoBonusGrSumColumn)
{
public void ComputeValue(PreparedValues preparedValues, KaskoBonusGrSumColumn kaskoBonusGrSumColumn)
{
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoBonusGrSumColumn.Values[0]) -
preparedValues.Discount - preparedValues.ComissionRub - preparedValues.FirstPaymentSum;
}
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoBonusGrSumColumn.Values[0]) -
preparedValues.Discount - preparedValues.ComissionRub - preparedValues.FirstPaymentSum;
}
}

View File

@ -3,15 +3,14 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class BonusResult : BasePostValue<decimal>
{
public class BonusResult : BasePostValue<decimal>
public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn)
{
public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn)
{
Value = Math.Abs(npvBonusExpensesColumn.Values[0]) -
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate /
(decimal) (1 + preparedValues.SalaryRate);
}
Value = Math.Abs(npvBonusExpensesColumn.Values[0]) -
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate /
(decimal) (1 + preparedValues.SalaryRate);
}
}

View File

@ -3,13 +3,12 @@ using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class NPVNI : BasePostValue<double>
{
public class NPVNI : BasePostValue<double>
public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn)
{
public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn)
{
Value = npvColumn.Values.Sum(x => (double) x) / (double) preparedValues.NpvBase;
}
Value = npvColumn.Values.Sum(x => (double) x) / (double) preparedValues.NpvBase;
}
}

View File

@ -1,41 +1,40 @@
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class PostValues
{
public class PostValues
public BaseCost BaseCost;
public BonusBase BonusBase;
public BonusResult BonusResult;
public NPVNI NPVNI;
public PriceUP PriceUP;
public PriceUP_PR PriceUP_PR;
public PriceUP_Year PriceUP_Year;
public PriceUP_Year_PR PriceUP_Year_PR;
public PostValues()
{
public BaseCost BaseCost;
public BonusBase BonusBase;
public BonusResult BonusResult;
public NPVNI NPVNI;
public PriceUP PriceUP;
public PriceUP_PR PriceUP_PR;
public PriceUP_Year PriceUP_Year;
public PriceUP_Year_PR PriceUP_Year_PR;
BaseCost = new BaseCost();
BonusBase = new BonusBase();
PriceUP = new PriceUP();
PriceUP_PR = new PriceUP_PR();
PriceUP_Year = new PriceUP_Year();
PriceUP_Year_PR = new PriceUP_Year_PR();
NPVNI = new NPVNI();
BonusResult = new BonusResult();
}
public PostValues()
public virtual object GetValues()
{
return new
{
BaseCost = new BaseCost();
BonusBase = new BonusBase();
PriceUP = new PriceUP();
PriceUP_PR = new PriceUP_PR();
PriceUP_Year = new PriceUP_Year();
PriceUP_Year_PR = new PriceUP_Year_PR();
NPVNI = new NPVNI();
BonusResult = new BonusResult();
}
public virtual object GetValues()
{
return new
{
BaseCost = BaseCost.Value,
BonusBase = BonusBase.Value,
PriceUP = PriceUP.Value,
PriceUP_PR = PriceUP_PR.Value,
PriceUP_Year = PriceUP_Year.Value,
PriceUP_Year_PR = PriceUP_Year_PR.Value,
NPVNI = NPVNI.Value,
BonusResult = BonusResult.Value
};
}
BaseCost = BaseCost.Value,
BonusBase = BonusBase.Value,
PriceUP = PriceUP.Value,
PriceUP_PR = PriceUP_PR.Value,
PriceUP_Year = PriceUP_Year.Value,
PriceUP_Year_PR = PriceUP_Year_PR.Value,
NPVNI = NPVNI.Value,
BonusResult = BonusResult.Value
};
}
}

View File

@ -3,13 +3,12 @@ using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class PriceUP : BasePostValue<decimal>
{
public class PriceUP : BasePostValue<decimal>
public void ComputeValue(PreparedValues preparedValues, SumColumn sumColumn)
{
public void ComputeValue(PreparedValues preparedValues, SumColumn sumColumn)
{
Value = sumColumn.Values.Skip(1).Sum(x => x) - preparedValues.PriceUpTotal;
}
Value = sumColumn.Values.Skip(1).Sum(x => x) - preparedValues.PriceUpTotal;
}
}

View File

@ -1,13 +1,12 @@
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class PriceUP_PR : BasePostValue<double>
{
public class PriceUP_PR : BasePostValue<double>
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double) postValues.PriceUP.Value / (double) preparedValues.PriceUpTotal;
}
Value = (double) postValues.PriceUP.Value / (double) preparedValues.PriceUpTotal;
}
}

View File

@ -1,13 +1,12 @@
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class PriceUP_Year : BasePostValue<decimal>
{
public class PriceUP_Year : BasePostValue<decimal>
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = postValues.PriceUP.Value * 12 / preparedValues.Nmper;
}
Value = postValues.PriceUP.Value * 12 / preparedValues.Nmper;
}
}

View File

@ -1,13 +1,12 @@
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
namespace EvoCalculator.Core.Calculation.v1.PostValues;
public class PriceUP_Year_PR : BasePostValue<double>
{
public class PriceUP_Year_PR : BasePostValue<double>
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double) postValues.PriceUP_Year.Value / (double) preparedValues.PriceUpTotal;
}
Value = (double) postValues.PriceUP_Year.Value / (double) preparedValues.PriceUpTotal;
}
}

View File

@ -2,21 +2,20 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowColumn : BaseColumnWithXIRR
{
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + subsidyExpensesColumn.GetValue(i);
}
public class CashflowColumn : BaseColumnWithXIRR
{
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + subsidyExpensesColumn.GetValue(i);
}
}

View File

@ -2,28 +2,27 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowLeasingColumn : BaseColumnWithXIRR
{
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
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]
+ subsidyExpensesColumn.GetValue(i);
}
public class CashflowLeasingColumn : BaseColumnWithXIRR
{
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
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]
+ subsidyExpensesColumn.GetValue(i);
}
}

View File

@ -2,39 +2,38 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn
{
public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn
protected readonly SubsidyExpensesColumn _subsidyExpensesColumn;
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
protected readonly SubsidyExpensesColumn _subsidyExpensesColumn;
_subsidyExpensesColumn = subsidyExpensesColumn;
}
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
_subsidyExpensesColumn = subsidyExpensesColumn;
}
protected override void FillValues()
{
Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum;
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
_agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum;
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]
+ _subsidyExpensesColumn.Values[i];
}
protected override void FillValues()
{
Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum;
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
_agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum;
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]
+ _subsidyExpensesColumn.Values[i];
}
}

View File

@ -5,44 +5,43 @@ using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
{
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
}
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Nominal);
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Nominal);
}
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
}

View File

@ -1,24 +1,23 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues()
{
FillValues();
}
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
}
public void ComputeValues()
{
FillValues();
}
}

View File

@ -2,39 +2,38 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class CashflowNPVColumn : BaseColumn<decimal>
{
public class CashflowNPVColumn : BaseColumn<decimal>
public CashflowNPVColumn(int count) : base(count)
{
public CashflowNPVColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) +
nsibExpensesColumn.GetValue(1) -
preparedValues.SubsidySum;
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) +
nsibExpensesColumn.GetValue(1) -
preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.GetValue(i)
+ negativeCashflowColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
- taxColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ nsibExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i);
}
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.GetValue(i)
+ negativeCashflowColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
- taxColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ nsibExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i);
}
}

View File

@ -1,23 +1,22 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CreditColumn : BaseColumnWithSum
{
public CreditColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
{
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
for (var i = 2; i < Values.Length; i++)
if (GetValue(i - 1) < 0)
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
else
Values[i] = 0;
Values[0] = Sum;
}
public class CreditColumn : BaseColumnWithSum
{
public CreditColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
{
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
for (var i = 2; i < Values.Length; i++)
if (GetValue(i - 1) < 0)
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
else
Values[i] = 0;
Values[0] = Sum;
}
}

View File

@ -1,22 +1,21 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class DirectorBonusSumColumn : BaseColumnWithSum
{
public DirectorBonusSumColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -1 * (postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
+ preparedValues.DirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate) +
preparedValues.RegionalDirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate));
Values[0] = Sum;
}
public class DirectorBonusSumColumn : BaseColumnWithSum
{
public DirectorBonusSumColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -1 * (postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
+ preparedValues.DirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate) +
preparedValues.RegionalDirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate));
Values[0] = Sum;
}
}

View File

@ -1,38 +1,37 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class ExpensesColumn : BaseColumnWithSum
{
public class ExpensesColumn : BaseColumnWithSum
public ExpensesColumn(int count) : base(count)
{
public ExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
+ transExpensesColumn.Values[i]
+ nsibExpensesColumn.Values[i]
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
+ registrExpensesColumn.Values[i]
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i]
+ subsidyExpensesColumn.Values[i];
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
+ transExpensesColumn.Values[i]
+ nsibExpensesColumn.Values[i]
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
+ registrExpensesColumn.Values[i]
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i]
+ subsidyExpensesColumn.Values[i];
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -2,24 +2,23 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class GPS_GrColumn : BaseColumnWithSum
{
public class GPS_GrColumn : BaseColumnWithSum
public GPS_GrColumn(int count) : base(count)
{
public GPS_GrColumn(int count) : base(count)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
Values[0] = -Sum;
}
Values[0] = -Sum;
}
}

View File

@ -2,38 +2,37 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class KaskoNmperGrColumn : BaseColumnWithSum
{
public class KaskoNmperGrColumn : BaseColumnWithSum
public KaskoNmperGrColumn(int count) : base(count)
{
public KaskoNmperGrColumn(int count) : base(count)
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
{
Values[1] = preparedValues.InsuranceKasko;
}
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
{
Values[1] = preparedValues.InsuranceKasko;
}
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
Values[0] = -Sum;
}
Values[0] = -Sum;
}
}

View File

@ -2,29 +2,28 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class NPVBonusExpensesColumn : BaseColumnWithSum
{
public class NPVBonusExpensesColumn : BaseColumnWithSum
public NPVBonusExpensesColumn(int count) : base(count)
{
public NPVBonusExpensesColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate);
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate);
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
for (var i = 3; i < Values.Length; i++) Values[i] = 0;
for (var i = 3; i < Values.Length; i++) Values[i] = 0;
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -1,18 +1,17 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class SubsidyExpensesColumn : BaseColumnWithSum
{
public SubsidyExpensesColumn(int count) : base(count)
{
}
namespace EvoCalculator.Core.Calculation.v2.Columns;
public void ComputeValues(PreparedValues preparedValues)
{
Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum;
Values[0] = Sum;
}
public class SubsidyExpensesColumn : BaseColumnWithSum
{
public SubsidyExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum;
Values[0] = Sum;
}
}

View File

@ -3,25 +3,24 @@ using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class SumColumn : v1.Columns.SumColumn
{
public class SumColumn : v1.Columns.SumColumn
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn, v1.PostValues.PostValues postValues,
BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn, preparedValues, percentPaymentColumn,
postValues, nsibBruttoGrColumn)
{
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn, v1.PostValues.PostValues postValues,
BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn, preparedValues, percentPaymentColumn,
postValues, nsibBruttoGrColumn)
{
}
}
public override void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum;
Values[1] = _preparedValues.FirstPaymentSum;
public override void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum;
Values[1] = _preparedValues.FirstPaymentSum;
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
Values[^1] = _preparedValues.LastPaymentSum;
}
Values[^1] = _preparedValues.LastPaymentSum;
}
}

View File

@ -1,25 +1,24 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class SumCreditColumn : BaseColumn<decimal>
{
public class SumCreditColumn : BaseColumn<decimal>
public SumCreditColumn(int count) : base(count)
{
public SumCreditColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues
, Constants.Calculation constants, SumColumn sumColumn)
{
Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue);
Values[2] = Values[1];
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues
, Constants.Calculation constants, SumColumn sumColumn)
{
Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue);
Values[2] = Values[1];
for (var i = 3; i < Values.Length; i++)
if (GetValue(i - 1) > 0)
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
else
Values[i] = 0;
}
for (var i = 3; i < Values.Length; i++)
if (GetValue(i - 1) > 0)
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
else
Values[i] = 0;
}
}

View File

@ -2,24 +2,23 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class TLM_GrColumn : BaseColumnWithSum
{
public class TLM_GrColumn : BaseColumnWithSum
public TLM_GrColumn(int count) : base(count)
{
public TLM_GrColumn(int count) : base(count)
{
}
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void PostCheck()
{
new CheckTools().CheckColumnForLessThanZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
Values[0] = -Sum;
}
Values[0] = -Sum;
}
}

View File

@ -2,44 +2,43 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
namespace EvoCalculator.Core.Calculation.v2.Columns;
public class TaxColumn : BaseColumnWithSum
{
public class TaxColumn : BaseColumnWithSum
public TaxColumn(int count) : base(count)
{
public TaxColumn(int count) : base(count)
{
}
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn,
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i)
- (i == 1
? preparedValues.SubsidySum
: 0)
);
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn,
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i)
- (i == 1
? preparedValues.SubsidySum
: 0)
);
Values[0] = Sum;
}
Values[0] = Sum;
}
}

View File

@ -18,329 +18,328 @@ using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation
namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation;
public static partial class CalculateManager
{
public static partial class CalculateManager
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
{
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
try
{
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var constants = new Constants.Calculation();
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var postValues = new PostValues.PostValues();
var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
try
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
subsidyExpensesColumn.ComputeValues(preparedValues);
var sumWithVatColumn =
new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants,
percentPaymentColumn, postValues);
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
sumWithVatColumn.PostCheck();
sumColumn.PostCheck();
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
subsidyExpensesColumn);
cashflowMsfoColumn.ComputeValues();
cashflowMsfoColumn.PostCheck(additionalData);
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn,
subsidyExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn,
npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn,
tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn,
subsidyExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
postValues.ContractEconomy.Validate();
return new ManagerResult
{
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
subsidyExpensesColumn.ComputeValues(preparedValues);
var sumWithVatColumn =
new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants,
percentPaymentColumn, postValues);
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
sumWithVatColumn.PostCheck();
sumColumn.PostCheck();
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
subsidyExpensesColumn);
cashflowMsfoColumn.ComputeValues();
cashflowMsfoColumn.PostCheck(additionalData);
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn,
subsidyExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn,
npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn,
tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn,
subsidyExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
postValues.ContractEconomy.Validate();
return new ManagerResult
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column,
sumCreditColumn,
creditColumn,
subsidyExpensesColumn
}
};
}
catch (Exception ex)
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column,
sumCreditColumn,
creditColumn,
subsidyExpensesColumn
}
};
}
catch (Exception ex)
{
return new ManagerResult
{
return new ManagerResult
Errors = new List<string>
{
Errors = new List<string>
{
ex.Message
}
};
}
ex.Message
}
};
}
}
}

View File

@ -18,328 +18,327 @@ using SumColumn = EvoCalculator.Core.Calculation.v2.Columns.SumColumn;
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation
namespace EvoCalculator.Core.Calculation.v2.Managers.Calculation;
public static partial class CalculateManager
{
public static partial class CalculateManager
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
{
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
try
{
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var constants = new Constants.Calculation();
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var postValues = new PostValues.PostValues();
var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
try
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
subsidyExpensesColumn.ComputeValues(preparedValues);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
subsidyExpensesColumn);
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
cashflowMsfoColumn.PostCheck(additionalData);
sumColumn.PostCheck();
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var sumWithVatColumn =
new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
sumWithVatColumn.ComputeValues();
sumWithVatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn,
subsidyExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn,
npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn,
tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn,
subsidyExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
postValues.ContractEconomy.Validate();
return new ManagerResult
{
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
kaskoNmperGrColumn.PostCheck();
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
tlmGrColumn.PostCheck();
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
gpsGrColumn.PostCheck();
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
subsidyExpensesColumn.ComputeValues(preparedValues);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
subsidyExpensesColumn);
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
cashflowMsfoColumn.PostCheck(additionalData);
sumColumn.PostCheck();
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
vatColumn.PostCheck();
var sumWithVatColumn =
new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
sumWithVatColumn.ComputeValues();
sumWithVatColumn.PostCheck();
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(maxColumnLength);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(maxColumnLength);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn,
subsidyExpensesColumn);
var taxColumn = new TaxColumn(maxColumnLength);
taxColumn.ComputeValues(preparedValues, constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn, registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn,
npvBonusExpensesColumn, agentComissionExpensesColumn, insuranceBonusExpensesColumn,
tlmExpensesColumn, gpsExpensesColumn, subsidyExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, subsidyExpensesColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, subsidyExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn, transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn,
subsidyExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
interestColumn.PostCheck(sumColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(maxColumnLength);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(maxColumnLength);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(maxColumnLength, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
sumCreditColumn.ComputeValues(preparedValues, postValues, constants, sumColumn);
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
postValues.ContractEconomy.ComputeValue(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
postValues.ContractEconomy.Validate();
return new ManagerResult
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
PostValues = postValues.GetValues(),
PreparedValues = preparedValues,
Columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column,
sumCreditColumn,
creditColumn,
subsidyExpensesColumn
}
};
}
catch (Exception ex)
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column,
sumCreditColumn,
creditColumn,
subsidyExpensesColumn
}
};
}
catch (Exception ex)
{
return new ManagerResult
{
return new ManagerResult
Errors = new List<string>
{
Errors = new List<string>
{
ex.Message
}
};
}
ex.Message
}
};
}
}
}

View File

@ -2,22 +2,21 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
namespace EvoCalculator.Core.Calculation.v2.PostValues
{
public class ContractEconomy : BasePostValue<decimal>
{
public void ComputeValue(BaseColumn<decimal> cashflowMSFOColumn, BaseColumn<decimal> creditColumn,
BaseColumn<decimal> directorBonusSumColumn)
{
Value = cashflowMSFOColumn.Values.Sum() + creditColumn.GetValue(0) +
directorBonusSumColumn.GetValue(0);
}
namespace EvoCalculator.Core.Calculation.v2.PostValues;
public void Validate()
{
// if (Value < 0)
// throw new Exception(
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
}
public class ContractEconomy : BasePostValue<decimal>
{
public void ComputeValue(BaseColumn<decimal> cashflowMSFOColumn, BaseColumn<decimal> creditColumn,
BaseColumn<decimal> directorBonusSumColumn)
{
Value = cashflowMSFOColumn.Values.Sum() + creditColumn.GetValue(0) +
directorBonusSumColumn.GetValue(0);
}
public void Validate()
{
// if (Value < 0)
// throw new Exception(
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
}
}

View File

@ -1,28 +1,27 @@
namespace EvoCalculator.Core.Calculation.v2.PostValues
namespace EvoCalculator.Core.Calculation.v2.PostValues;
public class PostValues : v1.PostValues.PostValues
{
public class PostValues : v1.PostValues.PostValues
public ContractEconomy ContractEconomy;
public PostValues()
{
public ContractEconomy ContractEconomy;
ContractEconomy = new ContractEconomy();
}
public PostValues()
public override object GetValues()
{
return new
{
ContractEconomy = new ContractEconomy();
}
public override object GetValues()
{
return new
{
BaseCost = BaseCost.Value,
BonusBase = BonusBase.Value,
PriceUP = PriceUP.Value,
PriceUP_PR = PriceUP_PR.Value,
PriceUP_Year = PriceUP_Year.Value,
PriceUP_Year_PR = PriceUP_Year_PR.Value,
NPVNI = NPVNI.Value,
BonusResult = BonusResult.Value,
ContractEconomy = ContractEconomy.Value
};
}
BaseCost = BaseCost.Value,
BonusBase = BonusBase.Value,
PriceUP = PriceUP.Value,
PriceUP_PR = PriceUP_PR.Value,
PriceUP_Year = PriceUP_Year.Value,
PriceUP_Year_PR = PriceUP_Year_PR.Value,
NPVNI = NPVNI.Value,
BonusResult = BonusResult.Value,
ContractEconomy = ContractEconomy.Value
};
}
}

Some files were not shown because too many files have changed in this diff Show More