Clean code pt.2
This commit is contained in:
parent
a7beb1212e
commit
4fbd107039
@ -1,35 +1,34 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
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];
|
0 => Values,
|
||||||
}
|
_ => Values.Skip(from).ToArray()
|
||||||
|
};
|
||||||
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()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,11 +1,10 @@
|
|||||||
namespace EvoCalculator.Core.Base.Columns
|
namespace EvoCalculator.Core.Base.Columns;
|
||||||
{
|
|
||||||
public abstract class BaseColumnForGoalSeek<T> : BaseColumn<T>
|
|
||||||
{
|
|
||||||
protected BaseColumnForGoalSeek(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
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 System;
|
||||||
using TridentGoalSeek;
|
using TridentGoalSeek;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Base.Columns
|
namespace EvoCalculator.Core.Base.Columns;
|
||||||
{
|
|
||||||
public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm
|
|
||||||
{
|
|
||||||
public BaseColumnWithGoalSeek(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract decimal Calculate(decimal inputVariable);
|
public abstract class BaseColumnWithGoalSeek : BaseColumnWithNominal, IGoalSeekAlgorithm
|
||||||
protected abstract void FillValues(decimal x);
|
{
|
||||||
public abstract void ComputeValues(decimal requiredValue);
|
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;
|
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;
|
using System.Linq;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Base.Columns
|
namespace EvoCalculator.Core.Base.Columns;
|
||||||
{
|
|
||||||
public class BaseColumnWithSum : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public BaseColumnWithSum(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public decimal Sum
|
public class BaseColumnWithSum : BaseColumn<decimal>
|
||||||
{
|
{
|
||||||
get { return Values.Skip(1).Sum(x => x); }
|
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.FinanceFormulas;
|
||||||
using EvoCalculator.Core.Models.Common;
|
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)
|
return flows;
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.FinanceFormulas;
|
||||||
using EvoCalculator.Core.Models.Common;
|
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;
|
var flows = new Flow[Values.Length];
|
||||||
this.rate = rate;
|
for (var i = 0; i < Values.Length; i++)
|
||||||
|
flows[i] = new Flow
|
||||||
|
{
|
||||||
|
Date = Dates[i],
|
||||||
|
Value = Values[i]
|
||||||
|
};
|
||||||
|
|
||||||
|
return flows;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private DateTime[] Dates { get; }
|
public decimal XNPV
|
||||||
|
{
|
||||||
private Flow[] Flows
|
get
|
||||||
{
|
{
|
||||||
get
|
var XNPV = new XNPV(Flows, rate);
|
||||||
{
|
return Convert.ToDecimal(XNPV.GetResult());
|
||||||
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());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,10 +1,9 @@
|
|||||||
using TridentGoalSeek;
|
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;
|
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)
|
public void ComputeValues(AcceptKaskoColumn acceptKaskoColumn, AcceptOsagoColumn acceptOsagoColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = acceptKaskoColumn.Values[i] + acceptOsagoColumn.Values[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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[1] = 0;
|
Values[1] = 0;
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[i] = preparedValues.InsuranceKaskoNmper / (preparedValues.Nmper - 1);
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < Values.Length; i++)
|
for (var i = 0; i < Values.Length; i++)
|
||||||
Values[i] = i > 1 && i <= 12 ? preparedValues.InsuranceOsago / 11 : 0;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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(
|
public void ComputeValues(
|
||||||
PreparedValues preparedValues
|
PreparedValues preparedValues
|
||||||
, SumColumn sumColumn
|
, SumColumn sumColumn
|
||||||
, VATColumn vatColumn
|
, VATColumn vatColumn
|
||||||
, BaseSumWithVATColumn sumWithVatColumn)
|
, BaseSumWithVATColumn sumWithVatColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] /
|
Values[i] = preparedValues.AcceptSum * sumColumn.Values[i] /
|
||||||
(sumWithVatColumn.Values[0] - vatColumn.Values[0]);
|
(sumWithVatColumn.Values[0] - vatColumn.Values[0]);
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,24 +1,23 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum +
|
var agentComission = preparedValues.AgentsSum + preparedValues.DoubleAgentsSum +
|
||||||
preparedValues.DeliverySum +
|
preparedValues.DeliverySum +
|
||||||
preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum +
|
preparedValues.BrokerSum + preparedValues.BrokerOfDeliverySum +
|
||||||
preparedValues.FinancialDeptOfDeliverySum + preparedValues.ImporterSum;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class CashflowColumn : BaseColumnWithXIRR
|
|
||||||
{
|
|
||||||
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
public class CashflowColumn : BaseColumnWithXIRR
|
||||||
NegativeCashflowColumn negativeCashflowColumn)
|
{
|
||||||
{
|
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
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 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class CashflowLeasingColumn : BaseColumnWithXIRR
|
|
||||||
{
|
|
||||||
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
public class CashflowLeasingColumn : BaseColumnWithXIRR
|
||||||
NegativeCashflowColumn negativeCashflowColumn,
|
{
|
||||||
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn)
|
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
{
|
{
|
||||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
}
|
||||||
Values[1] = sumColumn.Values[1];
|
|
||||||
for (var i = 2; i < Values.Length; i++)
|
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
||||||
Values[i] = sumColumn.Values[i]
|
NegativeCashflowColumn negativeCashflowColumn,
|
||||||
+ negativeCashflowColumn.Values[i]
|
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn)
|
||||||
- nsibBruttoGrColumn.Values[i]
|
{
|
||||||
- tlmGrColumn.Values[i]
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||||
- gpsGrColumn.Values[i];
|
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;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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;
|
_postValues = postValues;
|
||||||
protected readonly BaseColumn<decimal> _gpsGrColumn;
|
_preparedValues = preparedValues;
|
||||||
protected readonly NegativeCashflowColumn _negativeCashflowColumn;
|
_percentPaymentColumn = percentPaymentColumn;
|
||||||
protected readonly BaseColumnWithSum _npvBonusExpensesColumn;
|
_sumColumn = sumColumn;
|
||||||
protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn;
|
_negativeCashflowColumn = negativeCashflowColumn;
|
||||||
protected readonly PercentPaymentColumn _percentPaymentColumn;
|
_nsibBruttoGrColumn = nsibBruttoGrColumn;
|
||||||
protected readonly PostValues.PostValues _postValues;
|
_tlmGrColumn = tlmGrColumn;
|
||||||
protected readonly PreparedValues _preparedValues;
|
_gpsGrColumn = gpsGrColumn;
|
||||||
protected readonly BaseColumn<decimal> _tlmGrColumn;
|
_npvBonusExpensesColumn = npvBonusExpensesColumn;
|
||||||
protected SumColumn _sumColumn;
|
_agentComissionExpensesColumn = agentComissionExpensesColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
|
protected virtual void FillValues()
|
||||||
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
|
{
|
||||||
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
|
Values[0] = -_preparedValues.AcquisitionExpenses;
|
||||||
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
|
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
|
||||||
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn)
|
_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;
|
if (additionalData.MinCashflowMSFONominal != null)
|
||||||
_preparedValues = preparedValues;
|
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
|
||||||
_percentPaymentColumn = percentPaymentColumn;
|
throw new Exception(
|
||||||
_sumColumn = sumColumn;
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
|
||||||
_negativeCashflowColumn = negativeCashflowColumn;
|
|
||||||
_nsibBruttoGrColumn = nsibBruttoGrColumn;
|
|
||||||
_tlmGrColumn = tlmGrColumn;
|
|
||||||
_gpsGrColumn = gpsGrColumn;
|
|
||||||
_npvBonusExpensesColumn = npvBonusExpensesColumn;
|
|
||||||
_agentComissionExpensesColumn = agentComissionExpensesColumn;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual void FillValues()
|
if (additionalData.MaxCashflowMSFONominal != null)
|
||||||
{
|
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
|
||||||
Values[0] = -_preparedValues.AcquisitionExpenses;
|
throw new Exception(
|
||||||
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
|
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
|
||||||
_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}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4,43 +4,42 @@ using EvoCalculator.Core.Base.Interfaces.Columns;
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using TridentGoalSeek;
|
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)
|
public decimal Calculate(decimal inputVariable)
|
||||||
{
|
{
|
||||||
_sumColumn.ComputeValues(inputVariable);
|
_sumColumn.ComputeValues(inputVariable);
|
||||||
FillValues();
|
FillValues();
|
||||||
return Convert.ToDecimal(Nominal);
|
return Convert.ToDecimal(Nominal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(decimal requiredValue)
|
public void ComputeValues(decimal requiredValue)
|
||||||
{
|
{
|
||||||
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
||||||
.Skip(2)
|
.Skip(2)
|
||||||
.Take(_percentPaymentColumn.Values.Length - 1)
|
.Take(_percentPaymentColumn.Values.Length - 1)
|
||||||
.Where(x => x >= 10).ToArray().Length;
|
.Where(x => x >= 10).ToArray().Length;
|
||||||
|
|
||||||
var goalSeek = new GoalSeek(this);
|
var goalSeek = new GoalSeek(this);
|
||||||
goalSeek.SeekResult(requiredValue,
|
goalSeek.SeekResult(requiredValue,
|
||||||
new GoalSeekOptions(
|
new GoalSeekOptions(
|
||||||
startingStabPoint:
|
startingStabPoint:
|
||||||
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
||||||
, maximumAttempts: 1000
|
, maximumAttempts: 1000
|
||||||
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
|
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
|
||||||
// , focusPercentage: 50
|
// , focusPercentage: 50
|
||||||
));
|
));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,22 +1,21 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues()
|
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
|
||||||
{
|
{
|
||||||
FillValues();
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class CashflowMSFOFinal2Column : BaseColumnWithNominal
|
|
||||||
{
|
|
||||||
public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> directorBonusSumColumn,
|
public class CashflowMSFOFinal2Column : BaseColumnWithNominal
|
||||||
CashflowMSFOFinalColumn cashflowMsfoFinalColumn)
|
{
|
||||||
{
|
public CashflowMSFOFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
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 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class CashflowMSFOFinalColumn : BaseColumnWithNominal
|
|
||||||
{
|
|
||||||
public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
public class CashflowMSFOFinalColumn : BaseColumnWithNominal
|
||||||
ExtraBonusSumColumn extraBonusSumColumn)
|
{
|
||||||
{
|
public CashflowMSFOFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
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 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
||||||
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
|
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn)
|
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn)
|
||||||
{
|
{
|
||||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||||
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
|
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
|
||||||
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1);
|
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) + nsibExpensesColumn.GetValue(1);
|
||||||
|
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) +
|
Values[i] = sumColumn.GetValue(i) + negativeCashflowColumn.GetValue(i) +
|
||||||
npvBonusExpensesColumn.GetValue(i) +
|
npvBonusExpensesColumn.GetValue(i) +
|
||||||
agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) -
|
agentComissionExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i) -
|
||||||
taxColumn.GetValue(i) -
|
taxColumn.GetValue(i) -
|
||||||
transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) +
|
transExpensesColumn.GetValue(i) + nsibExpensesColumn.GetValue(i) +
|
||||||
tlmExpensesColumn.GetValue(i) +
|
tlmExpensesColumn.GetValue(i) +
|
||||||
gpsExpensesColumn.GetValue(i);
|
gpsExpensesColumn.GetValue(i);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,22 +1,21 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn,
|
||||||
BaseColumn<decimal> directorBonusSumColumn)
|
BaseColumn<decimal> directorBonusSumColumn)
|
||||||
{
|
{
|
||||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||||
Values[1] = cashflowNpvFinalColumn.GetValue(1);
|
Values[1] = cashflowNpvFinalColumn.GetValue(1);
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i);
|
Values[i] = cashflowNpvFinalColumn.GetValue(i) + directorBonusSumColumn.GetValue(i);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,21 +1,20 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class CashflowNPVFinalColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public CashflowNPVFinalColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
|
public class CashflowNPVFinalColumn : BaseColumn<decimal>
|
||||||
BaseColumn<decimal> cashflowNpvColumn)
|
{
|
||||||
{
|
public CashflowNPVFinalColumn(int count) : base(count)
|
||||||
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 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 EvoCalculator.Core.Base.Interfaces.Columns;
|
||||||
using TridentGoalSeek;
|
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;
|
_NSIBBruttoGrColumn = nsibBruttoGrColumn;
|
||||||
private readonly NSIBExpensesColumn _NSIBExpensesColumn;
|
_NSIBExpensesColumn = nsibExpensesColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public CashflowNSIBColumn(int count, DateTempColumn dateTempColumn,
|
public decimal Calculate(decimal inputVariable)
|
||||||
NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn) : base(count, dateTempColumn)
|
{
|
||||||
{
|
FillValues(inputVariable);
|
||||||
_NSIBBruttoGrColumn = nsibBruttoGrColumn;
|
return Convert.ToDecimal(IRR);
|
||||||
_NSIBExpensesColumn = nsibExpensesColumn;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public decimal Calculate(decimal inputVariable)
|
public void ComputeValues(decimal requiredValue)
|
||||||
{
|
{
|
||||||
FillValues(inputVariable);
|
var goalSeek = new GoalSeek(this);
|
||||||
return Convert.ToDecimal(IRR);
|
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)
|
private void FillValues(decimal x)
|
||||||
{
|
{
|
||||||
var goalSeek = new GoalSeek(this);
|
Values[1] = _NSIBBruttoGrColumn.Values[1] - x;
|
||||||
goalSeek.SeekResult(requiredValue,
|
for (var i = 2; i < Values.Length; i++)
|
||||||
new GoalSeekOptions(
|
Values[i] = _NSIBBruttoGrColumn.Values[i] -
|
||||||
startingStabPoint: Convert.ToDecimal(_NSIBBruttoGrColumn.Values[0] / 2)
|
x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1];
|
||||||
, 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];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,18 +1,17 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class ComissionBonusExpensesColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public ComissionBonusExpensesColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues)
|
public class ComissionBonusExpensesColumn : BaseColumnWithSum
|
||||||
{
|
{
|
||||||
Values[1] = preparedValues.ComissionRub;
|
public ComissionBonusExpensesColumn(int count) : base(count)
|
||||||
Values[0] = Sum;
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
|
{
|
||||||
|
Values[1] = preparedValues.ComissionRub;
|
||||||
|
Values[0] = Sum;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,35 +2,34 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
|
||||||
{
|
{
|
||||||
Values[0] = preparedValues.DogDate;
|
Values[0] = preparedValues.DogDate;
|
||||||
Values[1] = Values[0];
|
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),
|
100000000 => preparedValues.PaymentDateNew == null
|
||||||
100000001 => preparedValues.PaymentDateNew ?? Values[1].AddDays(constants.DeliveryDays),
|
? Values[1].AddMonths(i - 1)
|
||||||
|
: Values[2].AddMonths(i - 2),
|
||||||
|
100000001 => Values[2].AddMonths(i - 2),
|
||||||
_ => Values[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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
|
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
|
||||||
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
|
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
|
||||||
: preparedValues.DogDate;
|
: preparedValues.DogDate;
|
||||||
Values[1] = Values[0];
|
Values[1] = Values[0];
|
||||||
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);
|
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);
|
||||||
|
|
||||||
for (var i = 3; i < Values.Length; i++)
|
for (var i = 3; i < Values.Length; i++)
|
||||||
Values[i] = preparedValues.PaymentDateNew == null
|
Values[i] = preparedValues.PaymentDateNew == null
|
||||||
? Values[1].AddMonths(i - 1)
|
? Values[1].AddMonths(i - 1)
|
||||||
: Values[2].AddMonths(i - 2);
|
: Values[2].AddMonths(i - 2);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,21 +1,20 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
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)
|
public void ComputeValues(DeprecationLPColumn deprecationLpColumn, DeprecationLDColumn deprecationLdColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = i < deprecationLpColumn.Values.Length
|
Values[i] = i < deprecationLpColumn.Values.Length
|
||||||
? deprecationLpColumn.Values[i] + deprecationLdColumn.Values[i]
|
? deprecationLpColumn.Values[i] + deprecationLdColumn.Values[i]
|
||||||
: 0 + 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[1] = 0;
|
Values[1] = 0;
|
||||||
for (var i = 2; i < Values.Length - 1; i++)
|
for (var i = 2; i < Values.Length - 1; i++)
|
||||||
Values[i] = preparedValues.BalanceHolder == 100000001
|
Values[i] = preparedValues.BalanceHolder == 100000001
|
||||||
? (decimal) preparedValues.DeprecationTime *
|
? (decimal) preparedValues.DeprecationTime *
|
||||||
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
|
(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)
|
|
||||||
: 0;
|
: 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, AcceptSumColumn acceptSumColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = preparedValues.BalanceHolder == 100000000 ? acceptSumColumn.Values[i] : 0;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class DirectorBonusSumColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public DirectorBonusSumColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
|
public class DirectorBonusSumColumn : BaseColumnWithSum
|
||||||
{
|
{
|
||||||
Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
|
public DirectorBonusSumColumn(int count) : base(count)
|
||||||
(decimal) (1 + preparedValues.SalaryRate) *
|
{
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
}
|
||||||
Values[0] = Sum;
|
|
||||||
}
|
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;
|
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,
|
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
||||||
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
||||||
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
|
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
|
||||||
ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn)
|
ComissionBonusExpensesColumn comissionBonusExpensesColumn, NPVBonusExpensesColumn npvBonusExpensesColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] =
|
Values[i] =
|
||||||
agentComissionExpensesColumn.Values[i]
|
agentComissionExpensesColumn.Values[i]
|
||||||
+ ratExpensesColumn.Values[i]
|
+ ratExpensesColumn.Values[i]
|
||||||
+ transExpensesColumn.Values[i]
|
+ transExpensesColumn.Values[i]
|
||||||
+ nsibExpensesColumn.Values[i]
|
+ nsibExpensesColumn.Values[i]
|
||||||
+ tlmExpensesColumn.Values[i]
|
+ tlmExpensesColumn.Values[i]
|
||||||
+ gpsExpensesColumn.Values[i]
|
+ gpsExpensesColumn.Values[i]
|
||||||
+ registrExpensesColumn.Values[i]
|
+ registrExpensesColumn.Values[i]
|
||||||
+ insuranceBonusExpensesColumn.Values[i]
|
+ insuranceBonusExpensesColumn.Values[i]
|
||||||
+ comissionBonusExpensesColumn.Values[i]
|
+ comissionBonusExpensesColumn.Values[i]
|
||||||
+ npvBonusExpensesColumn.Values[i];
|
+ npvBonusExpensesColumn.Values[i];
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,24 +1,23 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class ExtraBonusSumColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public ExtraBonusSumColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
public class ExtraBonusSumColumn : BaseColumnWithSum
|
||||||
PostValues.PostValues postValues)
|
{
|
||||||
{
|
public ExtraBonusSumColumn(int count) : base(count)
|
||||||
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) *
|
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
|
PostValues.PostValues postValues)
|
||||||
: 0;
|
{
|
||||||
Values[0] = Sum;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
|
||||||
{
|
{
|
||||||
Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment);
|
Values[1] = -(preparedValues.TrackerCost + preparedPayments.Rows[0].GpsBasePayment);
|
||||||
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
|
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 System;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class IRRGrColumn : BaseColumn<double>
|
|
||||||
{
|
|
||||||
public IRRGrColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowMSFOColumn)
|
public class IRRGrColumn : BaseColumn<double>
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
public IRRGrColumn(int count) : base(count)
|
||||||
Values[i] = Math.Pow(1 + cashflowMSFOColumn.IRR,
|
{
|
||||||
(double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1;
|
}
|
||||||
}
|
|
||||||
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
|
||||||
{
|
{
|
||||||
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
|
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
|
||||||
Values[2] = preparedValues.InsuranceBonus;
|
Values[2] = preparedValues.InsuranceBonus;
|
||||||
else
|
else
|
||||||
/*
|
/*
|
||||||
* +1 - компенсация того, что считается с 0 позиции
|
* +1 - компенсация того, что считается с 0 позиции
|
||||||
*/
|
*/
|
||||||
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
|
for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12)
|
||||||
if (preparedValues.NmperInsurance - i >= 3)
|
if (preparedValues.NmperInsurance - i >= 3)
|
||||||
{
|
{
|
||||||
if (
|
if (
|
||||||
preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 ||
|
preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 ||
|
||||||
preparedValues.NmperInsurance > constants.MaxOnePolicePeriod &&
|
preparedValues.NmperInsurance > constants.MaxOnePolicePeriod &&
|
||||||
preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod
|
preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod
|
||||||
)
|
)
|
||||||
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
|
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12;
|
||||||
else
|
else
|
||||||
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
|
Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance *
|
||||||
(preparedValues.NmperInsurance - i + 1);
|
(preparedValues.NmperInsurance - i + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,27 +2,26 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
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)
|
public void PostCheck(SumColumn sumColumn)
|
||||||
{
|
{
|
||||||
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
||||||
if (Values[i] > sumColumn.Values[i])
|
if (Values[i] > sumColumn.Values[i])
|
||||||
throw new Exception(
|
throw new Exception(
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
|
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
|
||||||
{
|
{
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i];
|
Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i];
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,25 +1,24 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
if (i < 13)
|
if (i < 13)
|
||||||
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
|
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
|
||||||
else if (i <= 24)
|
else if (i <= 24)
|
||||||
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7;
|
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7;
|
||||||
else
|
else
|
||||||
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5;
|
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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
Values[0] = -XNPV;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,21 +1,20 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class NIColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public NIColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> cashflowMSFOColumn,
|
public class NIColumn : BaseColumn<decimal>
|
||||||
IRRGrColumn irrGrColumn)
|
{
|
||||||
{
|
public NIColumn(int count) : base(count)
|
||||||
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 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
|
||||||
{
|
{
|
||||||
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
|
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
|
||||||
(decimal) (1 + preparedValues.SalaryRate) *
|
(decimal) (1 + preparedValues.SalaryRate) *
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
||||||
|
|
||||||
Values[2] = preparedValues.BonusFix > 0
|
Values[2] = preparedValues.BonusFix > 0
|
||||||
? -preparedValues.BonusFix
|
? -preparedValues.BonusFix
|
||||||
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
|
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
|
||||||
(decimal) (1 + preparedValues.SalaryRate) *
|
(decimal) (1 + preparedValues.SalaryRate) *
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
(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;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class NPVColumn : BaseColumnWithNominal
|
|
||||||
{
|
|
||||||
public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(BaseColumn<decimal> cashflowNpvColumn, NPVWeightColumn npvWeightColumn)
|
public class NPVColumn : BaseColumnWithNominal
|
||||||
{
|
{
|
||||||
for (var i = 0; i < Values.Length; i++)
|
public NPVColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class NPVFinal2Column : BaseColumnWithNominal
|
|
||||||
{
|
|
||||||
public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn)
|
public class NPVFinal2Column : BaseColumnWithNominal
|
||||||
{
|
{
|
||||||
for (var i = 0; i < Values.Length; i++)
|
public NPVFinal2Column(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class NPVFinalColumn : BaseColumnWithNominal
|
|
||||||
{
|
|
||||||
public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn)
|
public class NPVFinalColumn : BaseColumnWithNominal
|
||||||
{
|
{
|
||||||
for (var i = 0; i < Values.Length; i++)
|
public NPVFinalColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class NPVWeightColumn : BaseColumn<double>
|
|
||||||
{
|
|
||||||
public NPVWeightColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, DateTempColumn dateTempColumn)
|
public class NPVWeightColumn : BaseColumn<double>
|
||||||
{
|
{
|
||||||
Values[0] = 1;
|
public NPVWeightColumn(int count) : base(count)
|
||||||
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 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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[1] = 0;
|
Values[1] = 0;
|
||||||
for (var i = 2; i < Values.Length - 1; i++)
|
for (var i = 2; i < Values.Length - 1; i++)
|
||||||
Values[i] = preparedValues.NsibBrutto / (preparedValues.Nmper - 1 - 1);
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i += 12)
|
for (var i = 1; i < Values.Length; i += 12)
|
||||||
if (i <= preparedValues.Nmper)
|
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 *
|
||||||
if (preparedValues.Nmper - i < 16 - 1)
|
(preparedValues.Nmper - i + 1);
|
||||||
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper *
|
|
||||||
(preparedValues.Nmper - i + 1);
|
|
||||||
else
|
|
||||||
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
Values[i] = -preparedValues.NsibNetto / preparedValues.Nmper * 12;
|
||||||
Values[i] = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Values[i] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,18 +1,17 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
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)
|
public void ComputeValues(BaseColumn<decimal> kaskoNmperGrColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i];
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedPayments preparedPayments)
|
||||||
{
|
{
|
||||||
Values[0] = 0;
|
Values[0] = 0;
|
||||||
Values[1] = 0;
|
Values[1] = 0;
|
||||||
for (var i = 2; i < Values.Length - 1; i++)
|
for (var i = 2; i < Values.Length - 1; i++)
|
||||||
Values[i] = preparedPayments.Rows[i - 1].PercentPayment;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[1] = -preparedValues.BaseRatCost;
|
Values[1] = -preparedValues.BaseRatCost;
|
||||||
Values[4] = preparedValues.RetroBonus;
|
Values[4] = preparedValues.RetroBonus;
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,19 +1,18 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[1] = -preparedValues.BaseRegistration;
|
Values[1] = -preparedValues.BaseRegistration;
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,26 +1,25 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class RevenueColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public RevenueColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(NSIBBruttoGrColumn nsibBruttoGrColumn, NSIBExpensesColumn nsibExpensesColumn,
|
public class RevenueColumn : BaseColumn<decimal>
|
||||||
CashflowNSIBColumn cashflowNsibColumn)
|
{
|
||||||
|
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;
|
||||||
{
|
}
|
||||||
for (var i = 0; i < Values.Length; i++) Values[i] = 0;
|
else
|
||||||
}
|
{
|
||||||
else
|
Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1];
|
||||||
{
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[1] = nsibBruttoGrColumn.Values[1] - cashflowNsibColumn.Values[1];
|
Values[i] = Values[1] * nsibExpensesColumn.Values[i] / nsibExpensesColumn.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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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;
|
_preparedValues = preparedValues;
|
||||||
protected readonly PercentPaymentColumn _percentPaymentColumn;
|
_percentPaymentColumn = percentPaymentColumn;
|
||||||
protected readonly PostValues.PostValues _postValues;
|
_postValues = postValues;
|
||||||
protected readonly PreparedValues _preparedValues;
|
_nsibBruttoGrColumn = nsibBruttoGrColumn;
|
||||||
|
}
|
||||||
|
|
||||||
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
|
public virtual void ComputeValues(decimal x)
|
||||||
PercentPaymentColumn percentPaymentColumn,
|
{
|
||||||
PostValues.PostValues postValues, BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn)
|
Values[0] = -_postValues.BaseCost.Value;
|
||||||
{
|
Values[1] = _preparedValues.FirstPaymentSum;
|
||||||
_preparedValues = preparedValues;
|
|
||||||
_percentPaymentColumn = percentPaymentColumn;
|
|
||||||
_postValues = postValues;
|
|
||||||
_nsibBruttoGrColumn = nsibBruttoGrColumn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void ComputeValues(decimal x)
|
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
|
||||||
{
|
|
||||||
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;
|
Values[^1] = _preparedValues.LastPaymentSum;
|
||||||
|
}
|
||||||
|
|
||||||
Values[^1] = _preparedValues.LastPaymentSum;
|
public void PostCheck()
|
||||||
}
|
{
|
||||||
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
|
|
||||||
public void PostCheck()
|
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
|
||||||
{
|
throw new Exception(
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
"Первый платеж по графику более 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(
|
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 System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class SumCurrentColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public SumCurrentColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(BaseSumWithVATColumn sumWithVatColumn)
|
public class SumCurrentColumn : BaseColumn<decimal>
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = sumWithVatColumn.Values.Skip(i).Sum(x => x);
|
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 System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class SumCurrentInterestColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public SumCurrentInterestColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(InterestColumn interestColumn)
|
public class SumCurrentInterestColumn : BaseColumn<decimal>
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = interestColumn.Values.Skip(i + 1).Sum(x => x);
|
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 System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class SumCurrentNegativeColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public SumCurrentNegativeColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(NegativeCashflowColumn negativeCashflowColumn)
|
public class SumCurrentNegativeColumn : BaseColumn<decimal>
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = negativeCashflowColumn.Values.Skip(i).Sum(x => x);
|
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 System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
{
|
|
||||||
public class SumCurrentTLMColumn : BaseColumn<decimal>
|
|
||||||
{
|
|
||||||
public SumCurrentTLMColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(BaseColumn<decimal> tlmGrColumn)
|
public class SumCurrentTLMColumn : BaseColumn<decimal>
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
public SumCurrentTLMColumn(int count) : base(count)
|
||||||
Values[i] = tlmGrColumn.Values.Skip(i + 1).Sum(x => x);
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
|
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
|
||||||
SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn,
|
SumCurrentColumn sumCurrentColumn, SumCurrentNegativeColumn sumCurrentNegativeColumn,
|
||||||
SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn)
|
SumCurrentInterestColumn sumCurrentInterestColumn, SumCurrentTLMColumn sumCurrentTlmColumn)
|
||||||
{
|
{
|
||||||
for (var i = 7; i < Values.Length; i++)
|
for (var i = 7; i < Values.Length; i++)
|
||||||
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
|
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
|
||||||
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
|
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
|
||||||
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
|
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
|
||||||
(decimal) preparedValues.Repayment;
|
(decimal) preparedValues.Repayment;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,37 +2,36 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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;
|
_sumColumn = sumColumn;
|
||||||
protected readonly PreparedValues _preparedValues;
|
_preparedValues = preparedValues;
|
||||||
protected SumColumn _sumColumn;
|
_constants = constants;
|
||||||
|
}
|
||||||
|
|
||||||
protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues,
|
protected void FillValues()
|
||||||
Constants.Calculation constants) : base(count)
|
{
|
||||||
{
|
Values[0] = 0;
|
||||||
_sumColumn = sumColumn;
|
Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0
|
||||||
_preparedValues = preparedValues;
|
? _preparedValues.FirstPaymentWithNdsAbs
|
||||||
_constants = constants;
|
: (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] = Sum;
|
||||||
{
|
}
|
||||||
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;
|
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;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues()
|
public class SumWithVATColumnVT1 : BaseSumWithVATColumn
|
||||||
{
|
{
|
||||||
FillValues();
|
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 EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using TridentGoalSeek;
|
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;
|
_percentPaymentColumn = percentPaymentColumn;
|
||||||
private readonly PostValues.PostValues _postValues;
|
_postValues = postValues;
|
||||||
|
}
|
||||||
|
|
||||||
public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues,
|
public decimal Calculate(decimal inputVariable)
|
||||||
Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn,
|
{
|
||||||
PostValues.PostValues postValues) : base(
|
_sumColumn.ComputeValues(inputVariable);
|
||||||
count, sumColumn,
|
FillValues();
|
||||||
preparedValues, constants)
|
return Convert.ToDecimal(Sum);
|
||||||
{
|
}
|
||||||
_percentPaymentColumn = percentPaymentColumn;
|
|
||||||
_postValues = postValues;
|
|
||||||
}
|
|
||||||
|
|
||||||
public decimal Calculate(decimal inputVariable)
|
public void ComputeValues(decimal requiredValue)
|
||||||
{
|
{
|
||||||
_sumColumn.ComputeValues(inputVariable);
|
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
||||||
FillValues();
|
.Skip(2)
|
||||||
return Convert.ToDecimal(Sum);
|
.Take(_percentPaymentColumn.Values.Length - 1)
|
||||||
}
|
.Where(x => x >= 10).ToArray().Length;
|
||||||
|
|
||||||
public void ComputeValues(decimal requiredValue)
|
var goalSeek = new GoalSeek(this);
|
||||||
{
|
goalSeek.SeekResult(requiredValue,
|
||||||
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
new GoalSeekOptions(
|
||||||
.Skip(2)
|
startingStabPoint:
|
||||||
.Take(_percentPaymentColumn.Values.Length - 1)
|
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
||||||
.Where(x => x >= 10).ToArray().Length;
|
, maximumAttempts: 1000
|
||||||
|
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
|
||||||
var goalSeek = new GoalSeek(this);
|
// , focusPercentage: 50
|
||||||
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, PreparedPayments preparedPayments)
|
||||||
{
|
{
|
||||||
Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment);
|
Values[1] = -(preparedValues.TLMCost + preparedPayments.Rows[0].TlmBasePayment);
|
||||||
for (var i = 2; i < Values.Length; i++) Values[i] = -preparedPayments.Rows[i - 1].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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
|
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;
|
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,
|
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn,
|
||||||
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
|
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
||||||
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
|
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
||||||
GPSExpensesColumn gpsExpensesColumn)
|
GPSExpensesColumn gpsExpensesColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
||||||
- acceptInsuranceColumn.GetValue(i)
|
- acceptInsuranceColumn.GetValue(i)
|
||||||
- deprecationColumn.GetValue(i)
|
- deprecationColumn.GetValue(i)
|
||||||
+ ratExpensesColumn.GetValue(i)
|
+ ratExpensesColumn.GetValue(i)
|
||||||
+ registrExpensesColumn.GetValue(i)
|
+ registrExpensesColumn.GetValue(i)
|
||||||
+ comissionBonusExpensesColumn.GetValue(i)
|
+ comissionBonusExpensesColumn.GetValue(i)
|
||||||
+ transExpensesColumn.GetValue(i)
|
+ transExpensesColumn.GetValue(i)
|
||||||
+ npvBonusExpensesColumn.GetValue(i)
|
+ npvBonusExpensesColumn.GetValue(i)
|
||||||
+ agentComissionExpensesColumn.GetValue(i)
|
+ agentComissionExpensesColumn.GetValue(i)
|
||||||
+ insuranceBonusExpensesColumn.GetValue(i)
|
+ insuranceBonusExpensesColumn.GetValue(i)
|
||||||
+ tlmExpensesColumn.GetValue(i)
|
+ tlmExpensesColumn.GetValue(i)
|
||||||
+ gpsExpensesColumn.GetValue(i)
|
+ gpsExpensesColumn.GetValue(i)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,22 +2,21 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < Values.Length; i += 12)
|
for (var i = 0; i < Values.Length; i += 12)
|
||||||
if (i > 0)
|
if (i > 0)
|
||||||
Values[i] = -preparedValues.TransportTaxGrYear;
|
Values[i] = -preparedValues.TransportTaxGrYear;
|
||||||
|
|
||||||
Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x));
|
Values[^1] = -(preparedValues.TransportTaxGr + Values.Skip(1).Take(Values.Length - 1).Sum(x => x));
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,28 +2,27 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
|
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
Values[0] = 0;
|
Values[0] = 0;
|
||||||
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
|
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
|
||||||
? preparedValues.FirstPaymentNdsAbs
|
? preparedValues.FirstPaymentNdsAbs
|
||||||
: (decimal) constants.VatValue * sumColumn.Values[1];
|
: (decimal) constants.VatValue * sumColumn.Values[1];
|
||||||
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
|
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.Models.Calculation.Models.Request;
|
||||||
using EvoCalculator.Core.Tools.Validation;
|
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 dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
dateColumn.ComputeValues(preparedValues, constants);
|
||||||
var additionalData = requestCalculation.additionalData;
|
|
||||||
|
|
||||||
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
|
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
||||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
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
|
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
||||||
? preparedValues.Nmper + 1
|
preparedValues.IrrExpected);
|
||||||
: preparedValues.NmperDeprecation + 2;
|
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);
|
PostValues = postValues.GetValues(),
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
{
|
||||||
dateTempColumn.ComputeValues(preparedValues);
|
dateColumn,
|
||||||
|
dateTempColumn,
|
||||||
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
|
percentPaymentColumn,
|
||||||
percentPaymentColumn.ComputeValues(preparedPayments);
|
kaskoNmperGrColumn,
|
||||||
|
tlmGrColumn,
|
||||||
var kaskoNmperGrColumn =
|
gpsGrColumn,
|
||||||
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
|
sumColumn,
|
||||||
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
|
vatColumn,
|
||||||
kaskoNmperGrColumn.PostCheck();
|
sumWithVatColumn,
|
||||||
|
acceptSumColumn,
|
||||||
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
acceptKaskoColumn,
|
||||||
preparedValues.IrrExpected);
|
acceptOsagoColumn,
|
||||||
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
|
acceptInsuranceColumn,
|
||||||
tlmGrColumn.PostCheck();
|
deprecationLpColumn,
|
||||||
|
deprecationLdColumn,
|
||||||
|
deprecationColumn,
|
||||||
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
npvBonusExpensesColumn,
|
||||||
preparedValues.IrrExpected);
|
kaskoBonusGrSumColumn,
|
||||||
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
agentComissionExpensesColumn,
|
||||||
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,
|
|
||||||
ratExpensesColumn,
|
ratExpensesColumn,
|
||||||
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
nsibExpensesColumn,
|
||||||
|
tlmExpensesColumn,
|
||||||
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
|
gpsExpensesColumn,
|
||||||
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
|
registrExpensesColumn,
|
||||||
|
insuranceBonusExpensesColumn,
|
||||||
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
|
comissionBonusExpensesColumn,
|
||||||
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
|
expensesColumn,
|
||||||
|
negativeCashflowColumn,
|
||||||
nsibBruttoGrColumn,
|
nsibBruttoGrColumn,
|
||||||
tlmGrColumn, gpsGrColumn);
|
taxColumn,
|
||||||
|
cashflowColumn,
|
||||||
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
|
cashflowLeasingColumn,
|
||||||
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
|
cashflowMsfoColumn,
|
||||||
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
|
cashflowNpvColumn,
|
||||||
ratExpensesColumn,
|
npvWeightColumn,
|
||||||
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
npvColumn,
|
||||||
|
irrGrColumn,
|
||||||
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
|
niColumn,
|
||||||
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
|
interestColumn,
|
||||||
|
cashflowNsibColumn,
|
||||||
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
|
revenueColumn,
|
||||||
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
|
sumCurrentColumn,
|
||||||
|
sumCurrentNegativeColumn,
|
||||||
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
|
sumCurrentInterestColumn,
|
||||||
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
|
sumCurrentTlmColumn,
|
||||||
|
sumRepaymentColumn,
|
||||||
var niColumn = new NIColumn(preparedValues.Nmper + 1);
|
extraBonusSumColumn,
|
||||||
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
|
cashflowMsfoFinalColumn,
|
||||||
|
cashflowNpvFinalColumn,
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
npvFinalColumn,
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
directorBonusSumColumn,
|
||||||
interestColumn.PostCheck(sumColumn);
|
cashflowMsfoFinal2Column,
|
||||||
|
cashflowNpvFinal2Column,
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
npvFinal2Column
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
}
|
||||||
|
};
|
||||||
if (nsibBruttoGrColumn.Sum != 0)
|
}
|
||||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
catch (Exception ex)
|
||||||
|
{
|
||||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
return new ManagerResult
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
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.Models.Calculation.Models.Request;
|
||||||
using EvoCalculator.Core.Tools.Validation;
|
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 dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
dateColumn.ComputeValues(preparedValues, constants);
|
||||||
var additionalData = requestCalculation.additionalData;
|
|
||||||
|
|
||||||
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
|
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
||||||
? preparedValues.Nmper + 1
|
preparedValues.IrrExpected);
|
||||||
: preparedValues.NmperDeprecation + 2;
|
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);
|
PostValues = postValues.GetValues(),
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
{
|
||||||
dateTempColumn.ComputeValues(preparedValues);
|
dateColumn,
|
||||||
|
dateTempColumn,
|
||||||
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
|
percentPaymentColumn,
|
||||||
percentPaymentColumn.ComputeValues(preparedPayments);
|
kaskoNmperGrColumn,
|
||||||
|
tlmGrColumn,
|
||||||
var kaskoNmperGrColumn =
|
gpsGrColumn,
|
||||||
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
|
sumColumn,
|
||||||
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
|
vatColumn,
|
||||||
kaskoNmperGrColumn.PostCheck();
|
sumWithVatColumn,
|
||||||
|
acceptSumColumn,
|
||||||
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
acceptKaskoColumn,
|
||||||
preparedValues.IrrExpected);
|
acceptOsagoColumn,
|
||||||
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
|
acceptInsuranceColumn,
|
||||||
tlmGrColumn.PostCheck();
|
deprecationLpColumn,
|
||||||
|
deprecationLdColumn,
|
||||||
|
deprecationColumn,
|
||||||
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
|
npvBonusExpensesColumn,
|
||||||
preparedValues.IrrExpected);
|
kaskoBonusGrSumColumn,
|
||||||
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
agentComissionExpensesColumn,
|
||||||
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,
|
|
||||||
ratExpensesColumn,
|
ratExpensesColumn,
|
||||||
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
nsibExpensesColumn,
|
||||||
|
tlmExpensesColumn,
|
||||||
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
|
gpsExpensesColumn,
|
||||||
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
|
registrExpensesColumn,
|
||||||
|
insuranceBonusExpensesColumn,
|
||||||
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
|
comissionBonusExpensesColumn,
|
||||||
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
|
expensesColumn,
|
||||||
|
negativeCashflowColumn,
|
||||||
nsibBruttoGrColumn,
|
nsibBruttoGrColumn,
|
||||||
tlmGrColumn, gpsGrColumn);
|
taxColumn,
|
||||||
|
cashflowColumn,
|
||||||
var cashflowNpvColumn = new CashflowNPVColumn(maxColumnLength);
|
cashflowLeasingColumn,
|
||||||
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
|
cashflowMsfoColumn,
|
||||||
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
|
cashflowNpvColumn,
|
||||||
ratExpensesColumn,
|
npvWeightColumn,
|
||||||
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
|
npvColumn,
|
||||||
|
irrGrColumn,
|
||||||
var npvWeightColumn = new NPVWeightColumn(maxColumnLength);
|
niColumn,
|
||||||
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
|
interestColumn,
|
||||||
|
cashflowNsibColumn,
|
||||||
var npvColumn = new NPVColumn(maxColumnLength, dateTempColumn);
|
revenueColumn,
|
||||||
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
|
sumCurrentColumn,
|
||||||
|
sumCurrentNegativeColumn,
|
||||||
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
|
sumCurrentInterestColumn,
|
||||||
irrGrColumn.ComputeValues(dateTempColumn, cashflowMsfoColumn);
|
sumCurrentTlmColumn,
|
||||||
|
sumRepaymentColumn,
|
||||||
var niColumn = new NIColumn(preparedValues.Nmper + 1);
|
extraBonusSumColumn,
|
||||||
niColumn.ComputeValues(preparedValues, cashflowMsfoColumn, irrGrColumn);
|
cashflowMsfoFinalColumn,
|
||||||
|
cashflowNpvFinalColumn,
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
npvFinalColumn,
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
directorBonusSumColumn,
|
||||||
interestColumn.PostCheck(sumColumn);
|
cashflowMsfoFinal2Column,
|
||||||
|
cashflowNpvFinal2Column,
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
npvFinal2Column
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
}
|
||||||
|
};
|
||||||
if (nsibBruttoGrColumn.Sum != 0)
|
}
|
||||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
catch (Exception ex)
|
||||||
|
{
|
||||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
return new ManagerResult
|
||||||
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)
|
|
||||||
{
|
{
|
||||||
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.Base.PostValues;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
|
||||||
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
|
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats +
|
||||||
{
|
preparedValues.Registration + preparedValues.TrackerCost +
|
||||||
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
|
preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K +
|
||||||
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats +
|
preparedValues.NsibBrutto;
|
||||||
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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.Base.PostValues;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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 /
|
||||||
Value = Math.Abs(npvBonusExpensesColumn.Values[0]) -
|
(decimal) (1 + preparedValues.SalaryRate);
|
||||||
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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;
|
BaseCost = new BaseCost();
|
||||||
public BonusBase BonusBase;
|
BonusBase = new BonusBase();
|
||||||
public BonusResult BonusResult;
|
PriceUP = new PriceUP();
|
||||||
public NPVNI NPVNI;
|
PriceUP_PR = new PriceUP_PR();
|
||||||
public PriceUP PriceUP;
|
PriceUP_Year = new PriceUP_Year();
|
||||||
public PriceUP_PR PriceUP_PR;
|
PriceUP_Year_PR = new PriceUP_Year_PR();
|
||||||
public PriceUP_Year PriceUP_Year;
|
NPVNI = new NPVNI();
|
||||||
public PriceUP_Year_PR PriceUP_Year_PR;
|
BonusResult = new BonusResult();
|
||||||
|
}
|
||||||
|
|
||||||
public PostValues()
|
public virtual object GetValues()
|
||||||
|
{
|
||||||
|
return new
|
||||||
{
|
{
|
||||||
BaseCost = new BaseCost();
|
BaseCost = BaseCost.Value,
|
||||||
BonusBase = new BonusBase();
|
BonusBase = BonusBase.Value,
|
||||||
PriceUP = new PriceUP();
|
PriceUP = PriceUP.Value,
|
||||||
PriceUP_PR = new PriceUP_PR();
|
PriceUP_PR = PriceUP_PR.Value,
|
||||||
PriceUP_Year = new PriceUP_Year();
|
PriceUP_Year = PriceUP_Year.Value,
|
||||||
PriceUP_Year_PR = new PriceUP_Year_PR();
|
PriceUP_Year_PR = PriceUP_Year_PR.Value,
|
||||||
NPVNI = new NPVNI();
|
NPVNI = NPVNI.Value,
|
||||||
BonusResult = new BonusResult();
|
BonusResult = BonusResult.Value
|
||||||
}
|
};
|
||||||
|
|
||||||
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
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3,13 +3,12 @@ using EvoCalculator.Core.Base.PostValues;
|
|||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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.Base.PostValues;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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.Base.PostValues;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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.Base.PostValues;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
{
|
|
||||||
public class CashflowColumn : BaseColumnWithXIRR
|
|
||||||
{
|
|
||||||
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
public class CashflowColumn : BaseColumnWithXIRR
|
||||||
NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn)
|
{
|
||||||
{
|
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
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 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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
{
|
|
||||||
public class CashflowLeasingColumn : BaseColumnWithXIRR
|
|
||||||
{
|
|
||||||
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
public class CashflowLeasingColumn : BaseColumnWithXIRR
|
||||||
NegativeCashflowColumn negativeCashflowColumn,
|
{
|
||||||
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
|
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
|
||||||
SubsidyExpensesColumn subsidyExpensesColumn)
|
{
|
||||||
{
|
}
|
||||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
|
||||||
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
|
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
||||||
for (var i = 2; i < Values.Length; i++)
|
NegativeCashflowColumn negativeCashflowColumn,
|
||||||
Values[i] = sumColumn.Values[i]
|
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
|
||||||
+ negativeCashflowColumn.Values[i]
|
SubsidyExpensesColumn subsidyExpensesColumn)
|
||||||
- nsibBruttoGrColumn.Values[i]
|
{
|
||||||
- tlmGrColumn.Values[i]
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||||
- gpsGrColumn.Values[i]
|
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
|
||||||
+ subsidyExpensesColumn.GetValue(i);
|
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
protected override void FillValues()
|
||||||
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
|
{
|
||||||
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
|
Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum;
|
||||||
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
|
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
|
||||||
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
|
_agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum;
|
||||||
base(count, dateTempColumn, postValues,
|
for (var i = 2; i < Values.Length; i++)
|
||||||
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
|
Values[i] = _sumColumn.Values[i]
|
||||||
tlmGrColumn,
|
+ _negativeCashflowColumn.Values[i]
|
||||||
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
|
- _nsibBruttoGrColumn.Values[i]
|
||||||
{
|
- _tlmGrColumn.Values[i]
|
||||||
_subsidyExpensesColumn = subsidyExpensesColumn;
|
- _gpsGrColumn.Values[i]
|
||||||
}
|
+ _npvBonusExpensesColumn.Values[i]
|
||||||
|
+ _agentComissionExpensesColumn.Values[i]
|
||||||
protected override void FillValues()
|
+ _subsidyExpensesColumn.Values[i];
|
||||||
{
|
|
||||||
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 EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using TridentGoalSeek;
|
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)
|
public decimal Calculate(decimal inputVariable)
|
||||||
{
|
{
|
||||||
_sumColumn.ComputeValues(inputVariable);
|
_sumColumn.ComputeValues(inputVariable);
|
||||||
FillValues();
|
FillValues();
|
||||||
return Convert.ToDecimal(Nominal);
|
return Convert.ToDecimal(Nominal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(decimal requiredValue)
|
public void ComputeValues(decimal requiredValue)
|
||||||
{
|
{
|
||||||
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
||||||
.Skip(2)
|
.Skip(2)
|
||||||
.Take(_percentPaymentColumn.Values.Length - 1)
|
.Take(_percentPaymentColumn.Values.Length - 1)
|
||||||
.Where(x => x >= 10).ToArray().Length;
|
.Where(x => x >= 10).ToArray().Length;
|
||||||
|
|
||||||
var goalSeek = new GoalSeek(this);
|
var goalSeek = new GoalSeek(this);
|
||||||
goalSeek.SeekResult(requiredValue,
|
goalSeek.SeekResult(requiredValue,
|
||||||
new GoalSeekOptions(
|
new GoalSeekOptions(
|
||||||
startingStabPoint:
|
startingStabPoint:
|
||||||
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
||||||
, maximumAttempts: 1000
|
, maximumAttempts: 1000
|
||||||
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
|
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
|
||||||
// , focusPercentage: 50
|
// , focusPercentage: 50
|
||||||
));
|
));
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,24 +1,23 @@
|
|||||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
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)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues()
|
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
|
||||||
{
|
{
|
||||||
FillValues();
|
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
|
||||||
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
|
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn,
|
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn,
|
||||||
SubsidyExpensesColumn subsidyExpensesColumn)
|
SubsidyExpensesColumn subsidyExpensesColumn)
|
||||||
{
|
{
|
||||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||||
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
|
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
|
||||||
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) +
|
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) +
|
||||||
nsibExpensesColumn.GetValue(1) -
|
nsibExpensesColumn.GetValue(1) -
|
||||||
preparedValues.SubsidySum;
|
preparedValues.SubsidySum;
|
||||||
|
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
Values[i] = sumColumn.GetValue(i)
|
Values[i] = sumColumn.GetValue(i)
|
||||||
+ negativeCashflowColumn.GetValue(i)
|
+ negativeCashflowColumn.GetValue(i)
|
||||||
+ npvBonusExpensesColumn.GetValue(i)
|
+ npvBonusExpensesColumn.GetValue(i)
|
||||||
+ agentComissionExpensesColumn.GetValue(i)
|
+ agentComissionExpensesColumn.GetValue(i)
|
||||||
+ ratExpensesColumn.GetValue(i)
|
+ ratExpensesColumn.GetValue(i)
|
||||||
- taxColumn.GetValue(i)
|
- taxColumn.GetValue(i)
|
||||||
+ transExpensesColumn.GetValue(i)
|
+ transExpensesColumn.GetValue(i)
|
||||||
+ nsibExpensesColumn.GetValue(i)
|
+ nsibExpensesColumn.GetValue(i)
|
||||||
+ tlmExpensesColumn.GetValue(i)
|
+ tlmExpensesColumn.GetValue(i)
|
||||||
+ gpsExpensesColumn.GetValue(i)
|
+ gpsExpensesColumn.GetValue(i)
|
||||||
+ subsidyExpensesColumn.GetValue(i);
|
+ subsidyExpensesColumn.GetValue(i);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,23 +1,22 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
{
|
|
||||||
public class CreditColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public CreditColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
|
public class CreditColumn : BaseColumnWithSum
|
||||||
{
|
{
|
||||||
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
public CreditColumn(int count) : base(count)
|
||||||
for (var i = 2; i < Values.Length; i++)
|
{
|
||||||
if (GetValue(i - 1) < 0)
|
}
|
||||||
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
|
|
||||||
else
|
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
|
||||||
Values[i] = 0;
|
{
|
||||||
Values[0] = Sum;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
{
|
|
||||||
public class DirectorBonusSumColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public DirectorBonusSumColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
|
public class DirectorBonusSumColumn : BaseColumnWithSum
|
||||||
{
|
{
|
||||||
Values[2] = -1 * (postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
|
public DirectorBonusSumColumn(int count) : base(count)
|
||||||
(decimal) (1 + preparedValues.SalaryRate) *
|
{
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
|
}
|
||||||
+ preparedValues.DirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate) +
|
|
||||||
preparedValues.RegionalDirectorBonusNsib * (decimal) (1 + preparedValues.SalaryRate));
|
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
|
||||||
Values[0] = Sum;
|
{
|
||||||
}
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Calculation.v1.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,
|
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
||||||
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
||||||
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
|
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
|
||||||
ComissionBonusExpensesColumn comissionBonusExpensesColumn,
|
ComissionBonusExpensesColumn comissionBonusExpensesColumn,
|
||||||
NPVBonusExpensesColumn npvBonusExpensesColumn,
|
NPVBonusExpensesColumn npvBonusExpensesColumn,
|
||||||
SubsidyExpensesColumn subsidyExpensesColumn)
|
SubsidyExpensesColumn subsidyExpensesColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] =
|
Values[i] =
|
||||||
agentComissionExpensesColumn.Values[i]
|
agentComissionExpensesColumn.Values[i]
|
||||||
+ ratExpensesColumn.Values[i]
|
+ ratExpensesColumn.Values[i]
|
||||||
+ transExpensesColumn.Values[i]
|
+ transExpensesColumn.Values[i]
|
||||||
+ nsibExpensesColumn.Values[i]
|
+ nsibExpensesColumn.Values[i]
|
||||||
+ tlmExpensesColumn.Values[i]
|
+ tlmExpensesColumn.Values[i]
|
||||||
+ gpsExpensesColumn.Values[i]
|
+ gpsExpensesColumn.Values[i]
|
||||||
+ registrExpensesColumn.Values[i]
|
+ registrExpensesColumn.Values[i]
|
||||||
+ insuranceBonusExpensesColumn.Values[i]
|
+ insuranceBonusExpensesColumn.Values[i]
|
||||||
+ comissionBonusExpensesColumn.Values[i]
|
+ comissionBonusExpensesColumn.Values[i]
|
||||||
+ npvBonusExpensesColumn.Values[i]
|
+ npvBonusExpensesColumn.Values[i]
|
||||||
+ subsidyExpensesColumn.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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
|
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.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
Values[0] = -Sum;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,29 +2,28 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
|
||||||
{
|
{
|
||||||
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
|
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
|
||||||
(decimal) (1 + preparedValues.SalaryRate);
|
(decimal) (1 + preparedValues.SalaryRate);
|
||||||
|
|
||||||
Values[2] = preparedValues.BonusFix > 0
|
Values[2] = preparedValues.BonusFix > 0
|
||||||
? -preparedValues.BonusFix
|
? -preparedValues.BonusFix
|
||||||
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
|
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
|
||||||
(decimal) (1 + preparedValues.SalaryRate) *
|
(decimal) (1 + preparedValues.SalaryRate) *
|
||||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
(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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
{
|
|
||||||
public class SubsidyExpensesColumn : BaseColumnWithSum
|
|
||||||
{
|
|
||||||
public SubsidyExpensesColumn(int count) : base(count)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues)
|
public class SubsidyExpensesColumn : BaseColumnWithSum
|
||||||
{
|
{
|
||||||
Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum;
|
public SubsidyExpensesColumn(int count) : base(count)
|
||||||
Values[0] = Sum;
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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)
|
public override void ComputeValues(decimal x)
|
||||||
{
|
{
|
||||||
Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum;
|
Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum;
|
||||||
Values[1] = _preparedValues.FirstPaymentSum;
|
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.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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
|
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues
|
||||||
, Constants.Calculation constants, SumColumn sumColumn)
|
, Constants.Calculation constants, SumColumn sumColumn)
|
||||||
{
|
{
|
||||||
Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue);
|
Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal) constants.VatValue);
|
||||||
Values[2] = Values[1];
|
Values[2] = Values[1];
|
||||||
|
|
||||||
for (var i = 3; i < Values.Length; i++)
|
for (var i = 3; i < Values.Length; i++)
|
||||||
if (GetValue(i - 1) > 0)
|
if (GetValue(i - 1) > 0)
|
||||||
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
|
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
|
||||||
else
|
else
|
||||||
Values[i] = 0;
|
Values[i] = 0;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,24 +2,23 @@
|
|||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
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()
|
public void PostCheck()
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
|
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.Calculation.v1.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
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,
|
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn,
|
||||||
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
|
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
|
||||||
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
|
||||||
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
|
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
|
||||||
NPVBonusExpensesColumn npvBonusExpensesColumn,
|
NPVBonusExpensesColumn npvBonusExpensesColumn,
|
||||||
AgentComissionExpensesColumn agentComissionExpensesColumn,
|
AgentComissionExpensesColumn agentComissionExpensesColumn,
|
||||||
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
|
||||||
GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn)
|
GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn)
|
||||||
{
|
{
|
||||||
for (var i = 1; i < Values.Length; i++)
|
for (var i = 1; i < Values.Length; i++)
|
||||||
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
||||||
- acceptInsuranceColumn.GetValue(i)
|
- acceptInsuranceColumn.GetValue(i)
|
||||||
- deprecationColumn.GetValue(i)
|
- deprecationColumn.GetValue(i)
|
||||||
+ ratExpensesColumn.GetValue(i)
|
+ ratExpensesColumn.GetValue(i)
|
||||||
+ registrExpensesColumn.GetValue(i)
|
+ registrExpensesColumn.GetValue(i)
|
||||||
+ comissionBonusExpensesColumn.GetValue(i)
|
+ comissionBonusExpensesColumn.GetValue(i)
|
||||||
+ transExpensesColumn.GetValue(i)
|
+ transExpensesColumn.GetValue(i)
|
||||||
+ npvBonusExpensesColumn.GetValue(i)
|
+ npvBonusExpensesColumn.GetValue(i)
|
||||||
+ agentComissionExpensesColumn.GetValue(i)
|
+ agentComissionExpensesColumn.GetValue(i)
|
||||||
+ insuranceBonusExpensesColumn.GetValue(i)
|
+ insuranceBonusExpensesColumn.GetValue(i)
|
||||||
+ tlmExpensesColumn.GetValue(i)
|
+ tlmExpensesColumn.GetValue(i)
|
||||||
+ gpsExpensesColumn.GetValue(i)
|
+ gpsExpensesColumn.GetValue(i)
|
||||||
+ subsidyExpensesColumn.GetValue(i)
|
+ subsidyExpensesColumn.GetValue(i)
|
||||||
- (i == 1
|
- (i == 1
|
||||||
? preparedValues.SubsidySum
|
? preparedValues.SubsidySum
|
||||||
: 0)
|
: 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 TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
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 dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
dateColumn.ComputeValues(preparedValues, constants);
|
||||||
var additionalData = requestCalculation.additionalData;
|
|
||||||
|
|
||||||
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
|
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
||||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
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
|
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
|
||||||
? preparedValues.Nmper + 1
|
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
||||||
: preparedValues.NmperDeprecation + 2;
|
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);
|
PostValues = postValues.GetValues(),
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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(),
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
tlmGrColumn,
|
||||||
dateTempColumn,
|
gpsGrColumn,
|
||||||
percentPaymentColumn,
|
sumColumn,
|
||||||
kaskoNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
negativeCashflowColumn,
|
||||||
insuranceBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
comissionBonusExpensesColumn,
|
taxColumn,
|
||||||
expensesColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
subsidyExpensesColumn
|
||||||
npvFinal2Column,
|
}
|
||||||
sumCreditColumn,
|
};
|
||||||
creditColumn,
|
}
|
||||||
subsidyExpensesColumn
|
catch (Exception ex)
|
||||||
}
|
{
|
||||||
};
|
return new ManagerResult
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
{
|
||||||
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 TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
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 dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
dateColumn.ComputeValues(preparedValues, constants);
|
||||||
var additionalData = requestCalculation.additionalData;
|
|
||||||
|
|
||||||
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
|
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
||||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
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
|
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1);
|
||||||
? preparedValues.Nmper + 1
|
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
|
||||||
: preparedValues.NmperDeprecation + 2;
|
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);
|
PostValues = postValues.GetValues(),
|
||||||
dateColumn.ComputeValues(preparedValues, constants);
|
PreparedValues = preparedValues,
|
||||||
|
Columns = new
|
||||||
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(),
|
dateColumn,
|
||||||
PreparedValues = preparedValues,
|
dateTempColumn,
|
||||||
Columns = new
|
percentPaymentColumn,
|
||||||
{
|
kaskoNmperGrColumn,
|
||||||
dateColumn,
|
tlmGrColumn,
|
||||||
dateTempColumn,
|
gpsGrColumn,
|
||||||
percentPaymentColumn,
|
sumColumn,
|
||||||
kaskoNmperGrColumn,
|
vatColumn,
|
||||||
tlmGrColumn,
|
sumWithVatColumn,
|
||||||
gpsGrColumn,
|
acceptSumColumn,
|
||||||
sumColumn,
|
acceptKaskoColumn,
|
||||||
vatColumn,
|
acceptOsagoColumn,
|
||||||
sumWithVatColumn,
|
acceptInsuranceColumn,
|
||||||
acceptSumColumn,
|
deprecationLpColumn,
|
||||||
acceptKaskoColumn,
|
deprecationLdColumn,
|
||||||
acceptOsagoColumn,
|
deprecationColumn,
|
||||||
acceptInsuranceColumn,
|
npvBonusExpensesColumn,
|
||||||
deprecationLpColumn,
|
kaskoBonusGrSumColumn,
|
||||||
deprecationLdColumn,
|
agentComissionExpensesColumn,
|
||||||
deprecationColumn,
|
ratExpensesColumn,
|
||||||
npvBonusExpensesColumn,
|
transExprensesColumn,
|
||||||
kaskoBonusGrSumColumn,
|
nsibExpensesColumn,
|
||||||
agentComissionExpensesColumn,
|
tlmExpensesColumn,
|
||||||
ratExpensesColumn,
|
gpsExpensesColumn,
|
||||||
transExprensesColumn,
|
registrExpensesColumn,
|
||||||
nsibExpensesColumn,
|
insuranceBonusExpensesColumn,
|
||||||
tlmExpensesColumn,
|
comissionBonusExpensesColumn,
|
||||||
gpsExpensesColumn,
|
expensesColumn,
|
||||||
registrExpensesColumn,
|
negativeCashflowColumn,
|
||||||
insuranceBonusExpensesColumn,
|
nsibBruttoGrColumn,
|
||||||
comissionBonusExpensesColumn,
|
taxColumn,
|
||||||
expensesColumn,
|
cashflowColumn,
|
||||||
negativeCashflowColumn,
|
cashflowLeasingColumn,
|
||||||
nsibBruttoGrColumn,
|
cashflowMsfoColumn,
|
||||||
taxColumn,
|
cashflowNpvColumn,
|
||||||
cashflowColumn,
|
npvWeightColumn,
|
||||||
cashflowLeasingColumn,
|
npvColumn,
|
||||||
cashflowMsfoColumn,
|
irrGrColumn,
|
||||||
cashflowNpvColumn,
|
niColumn,
|
||||||
npvWeightColumn,
|
interestColumn,
|
||||||
npvColumn,
|
cashflowNsibColumn,
|
||||||
irrGrColumn,
|
revenueColumn,
|
||||||
niColumn,
|
sumCurrentColumn,
|
||||||
interestColumn,
|
sumCurrentNegativeColumn,
|
||||||
cashflowNsibColumn,
|
sumCurrentInterestColumn,
|
||||||
revenueColumn,
|
sumCurrentTlmColumn,
|
||||||
sumCurrentColumn,
|
sumRepaymentColumn,
|
||||||
sumCurrentNegativeColumn,
|
extraBonusSumColumn,
|
||||||
sumCurrentInterestColumn,
|
cashflowMsfoFinalColumn,
|
||||||
sumCurrentTlmColumn,
|
cashflowNpvFinalColumn,
|
||||||
sumRepaymentColumn,
|
npvFinalColumn,
|
||||||
extraBonusSumColumn,
|
directorBonusSumColumn,
|
||||||
cashflowMsfoFinalColumn,
|
cashflowMsfoFinal2Column,
|
||||||
cashflowNpvFinalColumn,
|
cashflowNpvFinal2Column,
|
||||||
npvFinalColumn,
|
npvFinal2Column,
|
||||||
directorBonusSumColumn,
|
sumCreditColumn,
|
||||||
cashflowMsfoFinal2Column,
|
creditColumn,
|
||||||
cashflowNpvFinal2Column,
|
subsidyExpensesColumn
|
||||||
npvFinal2Column,
|
}
|
||||||
sumCreditColumn,
|
};
|
||||||
creditColumn,
|
}
|
||||||
subsidyExpensesColumn
|
catch (Exception ex)
|
||||||
}
|
{
|
||||||
};
|
return new ManagerResult
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
{
|
||||||
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.Columns;
|
||||||
using EvoCalculator.Core.Base.PostValues;
|
using EvoCalculator.Core.Base.PostValues;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.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);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Validate()
|
public class ContractEconomy : BasePostValue<decimal>
|
||||||
{
|
{
|
||||||
// if (Value < 0)
|
public void ComputeValue(BaseColumn<decimal> cashflowMSFOColumn, BaseColumn<decimal> creditColumn,
|
||||||
// throw new Exception(
|
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();
|
BaseCost = BaseCost.Value,
|
||||||
}
|
BonusBase = BonusBase.Value,
|
||||||
|
PriceUP = PriceUP.Value,
|
||||||
public override object GetValues()
|
PriceUP_PR = PriceUP_PR.Value,
|
||||||
{
|
PriceUP_Year = PriceUP_Year.Value,
|
||||||
return new
|
PriceUP_Year_PR = PriceUP_Year_PR.Value,
|
||||||
{
|
NPVNI = NPVNI.Value,
|
||||||
BaseCost = BaseCost.Value,
|
BonusResult = BonusResult.Value,
|
||||||
BonusBase = BonusBase.Value,
|
ContractEconomy = ContractEconomy.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