Clean code pt.2
This commit is contained in:
parent
a7beb1212e
commit
4fbd107039
@ -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()
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
@ -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); }
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
@ -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; }
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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]
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||
}
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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(
|
||||
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
|
||||
}
|
||||
}
|
||||
@ -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
Loading…
x
Reference in New Issue
Block a user