merge release/dyn-2846_sale-irr-pi
This commit is contained in:
parent
c244f166d3
commit
247d950145
@ -10,7 +10,7 @@ public class CashflowMSFOFinalColumn : BaseColumnWithNominal
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
||||
ExtraBonusSumColumn extraBonusSumColumn)
|
||||
BaseColumn<decimal> extraBonusSumColumn)
|
||||
{
|
||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||
Values[1] = cashflowMsfoColumn.Values[1];
|
||||
|
||||
@ -9,7 +9,7 @@ public class CashflowNPVFinalColumn : BaseColumn<decimal>
|
||||
{
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
|
||||
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> extraBonusSumColumn,
|
||||
BaseColumn<decimal> cashflowNpvColumn)
|
||||
{
|
||||
Values[0] = -preparedValues.AcquisitionExpenses;
|
||||
|
||||
@ -6,8 +6,11 @@ namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||
|
||||
public class VATColumn : BaseColumnWithSum
|
||||
{
|
||||
public VATColumn(int count) : base(count)
|
||||
private Constants.Calculation constants;
|
||||
|
||||
public VATColumn(int count, Constants.Calculation constants) : base(count)
|
||||
{
|
||||
this.constants = constants;
|
||||
}
|
||||
|
||||
public void PostCheck()
|
||||
@ -15,13 +18,13 @@ public class VATColumn : BaseColumnWithSum
|
||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||
}
|
||||
|
||||
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
|
||||
public void ComputeValues(SumColumn sumColumn, PreparedValues preparedValues)
|
||||
{
|
||||
Values[0] = 0;
|
||||
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
|
||||
? preparedValues.FirstPaymentNdsAbs
|
||||
: (decimal) constants.VatValue * sumColumn.Values[1];
|
||||
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
|
||||
: (decimal)constants.VatValue * sumColumn.Values[1];
|
||||
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal)constants.VatValue * sumColumn.Values[i];
|
||||
|
||||
Values[0] = Sum;
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ public static partial class CalculateManager
|
||||
var additionalData = requestCalculation.additionalData;
|
||||
|
||||
var validationErrors = new Validation().ValidateRequest(requestCalculation);
|
||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
||||
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
|
||||
|
||||
var constants = new Constants.Calculation();
|
||||
|
||||
@ -94,8 +94,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.ComputeValues();
|
||||
cashflowMsfoColumn.PostCheck(additionalData);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
|
||||
@ -188,7 +188,7 @@ public static partial class CalculateManager
|
||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||
|
||||
if (nsibBruttoGrColumn.Sum != 0)
|
||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
||||
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
|
||||
|
||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
||||
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
|
||||
|
||||
@ -17,7 +17,7 @@ public static partial class CalculateManager
|
||||
|
||||
var validationErrors = new Validation().ValidateRequest(requestCalculation);
|
||||
|
||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
||||
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
|
||||
|
||||
var constants = new Constants.Calculation();
|
||||
|
||||
@ -89,8 +89,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.PostCheck(additionalData);
|
||||
sumColumn.PostCheck();
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues( sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var sumWithVatColumn =
|
||||
@ -188,7 +188,7 @@ public static partial class CalculateManager
|
||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||
|
||||
if (nsibBruttoGrColumn.Sum != 0)
|
||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
||||
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
|
||||
|
||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
||||
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
|
||||
|
||||
@ -30,7 +30,7 @@ public static partial class CalculateManager
|
||||
var flags = requestCalculation.Flags;
|
||||
|
||||
var validationErrors = new Validation().ValidateRequest(requestCalculation);
|
||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
||||
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
|
||||
|
||||
var constants = new Constants.Calculation();
|
||||
|
||||
@ -109,8 +109,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.ComputeValues();
|
||||
cashflowMsfoColumn.PostCheck(additionalData);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
|
||||
@ -203,7 +203,7 @@ public static partial class CalculateManager
|
||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||
|
||||
if (nsibBruttoGrColumn.Sum != 0)
|
||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
||||
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
|
||||
|
||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
||||
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
|
||||
|
||||
@ -30,7 +30,7 @@ public static partial class CalculateManager
|
||||
var flags = requestCalculation.Flags;
|
||||
|
||||
var validationErrors = new Validation().ValidateRequest(requestCalculation);
|
||||
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
|
||||
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
|
||||
|
||||
var constants = new Constants.Calculation();
|
||||
|
||||
@ -103,8 +103,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.PostCheck(additionalData);
|
||||
sumColumn.PostCheck(flags);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var sumWithVatColumn =
|
||||
@ -202,7 +202,7 @@ public static partial class CalculateManager
|
||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||
|
||||
if (nsibBruttoGrColumn.Sum != 0)
|
||||
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
|
||||
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
|
||||
|
||||
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
|
||||
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
|
||||
|
||||
@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class ExtraBonusSumColumn : BaseColumnWithSum
|
||||
{
|
||||
public ExtraBonusSumColumn(int count) : base(count)
|
||||
{
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
||||
v3.PostValues postValues, Constants.Calculation constants)
|
||||
{
|
||||
Values[2] = cashflowMsfoColumn.Nominal >= postValues.PlanIRRMSFO && preparedValues.BonusCoefficient == 1.0
|
||||
? -1 * postValues.BonusBase *
|
||||
(decimal) (cashflowMsfoColumn.Nominal / postValues.PlanIRRMSFO - 1) *
|
||||
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) *
|
||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
|
||||
: 0;
|
||||
if (Math.Abs(Values[2]) < constants.MinBonus)
|
||||
Values[2] = 0;
|
||||
|
||||
Values[0] = Sum;
|
||||
}
|
||||
}
|
||||
@ -1,23 +0,0 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class PIColumn : BaseColumnWithNPV
|
||||
{
|
||||
public PIColumn(int count) : base(count)
|
||||
{
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> cashflowMSFOWithCFColumn,
|
||||
BaseColumn<decimal> cashflowMSFOColumn)
|
||||
{
|
||||
for (var i = 1; i < Values.Length; i++)
|
||||
{
|
||||
Values[i] = NPV(cashflowMSFOWithCFColumn.Values.Skip(1).Take(i), preparedValues.LoanRate);
|
||||
}
|
||||
|
||||
Values[0] = -Values[^1] / (cashflowMSFOColumn.GetValue(0) + cashflowMSFOColumn.GetValue(1));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,27 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class BasePIColumn : BaseColumnWithNPV
|
||||
{
|
||||
protected readonly PreparedValues _preparedValues;
|
||||
|
||||
public BasePIColumn(int count, PreparedValues preparedValues) :
|
||||
base(count)
|
||||
{
|
||||
_preparedValues = preparedValues;
|
||||
}
|
||||
|
||||
protected void FillValues(BaseColumn<decimal> cashflowMSFOColumn, BaseColumn<decimal> cashflowMSFOWithCFColumn)
|
||||
{
|
||||
for (var i = 1; i < Values.Length; i++)
|
||||
{
|
||||
Values[i] = NPV(cashflowMSFOWithCFColumn.Values.Skip(1).Take(i), _preparedValues.LoanRate);
|
||||
}
|
||||
|
||||
Values[0] = -Values[^1] / (cashflowMSFOColumn.GetValue(0) +
|
||||
cashflowMSFOColumn.GetValue(1));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class PIColumnVT1 : BasePIColumn
|
||||
{
|
||||
public PIColumnVT1(int count, PreparedValues preparedValues) :
|
||||
base(count, preparedValues)
|
||||
{
|
||||
}
|
||||
|
||||
public void ComputeValues(BaseColumn<decimal> cashflowMSFOColumn, BaseColumn<decimal> cashflowMSFOWithCFColumn)
|
||||
{
|
||||
FillValues(cashflowMSFOColumn, cashflowMSFOWithCFColumn);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Base.Interfaces.Columns;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using TridentGoalSeek;
|
||||
using CashflowMSFOColumnVT2 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT2;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class PIColumnVT2 : BasePIColumn, IColumnWithGoalSeek
|
||||
{
|
||||
private readonly PercentPaymentColumn _percentPaymentColumn;
|
||||
protected SumColumn _sumColumn;
|
||||
private CashflowMSFOColumnVT2 _cashflowMsfoColumn;
|
||||
private readonly PostValues _postValues;
|
||||
private SumCreditColumn _sumCreditColumn;
|
||||
private CreditPaymentColumn _creditPaymentColumn;
|
||||
private VATRecoverableColumn _vatRecoverableColumn;
|
||||
private CashflowMSFOWithCFColumn _cashflowMSFOWithCFColumn;
|
||||
private VATColumn _vatColumn;
|
||||
private SumWithVATColumnVT1 _sumWithVatColumn;
|
||||
private CreditColumn _creditColumn;
|
||||
|
||||
|
||||
public PIColumnVT2(int count, PreparedValues preparedValues, CashflowMSFOWithCFColumn cashflowMsfoWithCfColumn,
|
||||
CashflowMSFOColumnVT2 cashflowMsfoColumn, PercentPaymentColumn percentPaymentColumn, PostValues postValues,
|
||||
SumColumn sumColumn, SumCreditColumn sumCreditColumn, CreditPaymentColumn creditPaymentColumn,
|
||||
VATRecoverableColumn vatRecoverableColumn, VATColumn vatColumn, SumWithVATColumnVT1 sumWithVatColumn,
|
||||
CreditColumn creditColumn) : base(
|
||||
count,
|
||||
preparedValues)
|
||||
{
|
||||
_cashflowMSFOWithCFColumn = cashflowMsfoWithCfColumn;
|
||||
_cashflowMsfoColumn = cashflowMsfoColumn;
|
||||
_percentPaymentColumn = percentPaymentColumn;
|
||||
_postValues = postValues;
|
||||
_sumColumn = sumColumn;
|
||||
_sumCreditColumn = sumCreditColumn;
|
||||
_creditPaymentColumn = creditPaymentColumn;
|
||||
_vatRecoverableColumn = vatRecoverableColumn;
|
||||
_vatColumn = vatColumn;
|
||||
_sumWithVatColumn = sumWithVatColumn;
|
||||
_creditColumn = creditColumn;
|
||||
}
|
||||
|
||||
public decimal Calculate(decimal inputVariable)
|
||||
{
|
||||
_sumColumn.ComputeValues(inputVariable);
|
||||
_cashflowMsfoColumn.ComputeValues();
|
||||
_vatColumn.ComputeValues(_sumColumn, _preparedValues);
|
||||
_sumWithVatColumn.ComputeValues();
|
||||
_sumCreditColumn.ComputeValues(_preparedValues, _sumWithVatColumn);
|
||||
_creditColumn.ComputeValues(_preparedValues, _sumCreditColumn);
|
||||
_vatRecoverableColumn.ComputeValues(_vatColumn);
|
||||
_creditPaymentColumn.ComputeValues(_preparedValues, _sumCreditColumn, _creditColumn);
|
||||
|
||||
_cashflowMSFOWithCFColumn.ComputeValues(_preparedValues, _sumCreditColumn, _cashflowMsfoColumn,
|
||||
_creditPaymentColumn, _vatRecoverableColumn);
|
||||
|
||||
FillValues(_cashflowMsfoColumn, _cashflowMSFOWithCFColumn);
|
||||
|
||||
return Convert.ToDecimal(Values.GetValue(0));
|
||||
}
|
||||
|
||||
public void ComputeValues(decimal requiredValue)
|
||||
{
|
||||
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
|
||||
.Skip(2)
|
||||
.Take(_percentPaymentColumn.Values.Length - 1)
|
||||
.Where(x => x >= 10).ToArray().Length;
|
||||
|
||||
var goalSeek = new GoalSeek(this);
|
||||
goalSeek.SeekResult(requiredValue,
|
||||
new GoalSeekOptions(
|
||||
startingStabPoint:
|
||||
(_postValues.BaseCost - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
|
||||
, maximumAttempts: 1000
|
||||
, initialTineSpacing: 1000
|
||||
// , trimFinalInputValue: true
|
||||
// , acceptanceToDecimalPlaces: 2
|
||||
));
|
||||
}
|
||||
}
|
||||
@ -24,7 +24,7 @@ public class VATRecoverableColumn : BaseColumnWithSum
|
||||
{
|
||||
Values[0] = 0;
|
||||
|
||||
for (var i = 3; i < Values.Length; i += 3)
|
||||
for (var i = 6; i < Values.Length; i += 3)
|
||||
{
|
||||
var vatSum = vatColumn.Values.Skip(1).Take(i).Sum();
|
||||
var vatRecoverableSum = this.Values.Skip(1).Take(i - 1).Sum();
|
||||
|
||||
@ -0,0 +1,393 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Calculation.v3.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
using EvoCalculator.Core.Tools.Validation;
|
||||
using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
|
||||
using CashflowLeasingColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowLeasingColumn;
|
||||
using CashflowMSFOColumnVT1 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT1;
|
||||
using CashflowMSFOColumnVT2 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT2;
|
||||
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
|
||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
|
||||
using ExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.ExpensesColumn;
|
||||
using GPS_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.GPS_GrColumn;
|
||||
using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperGrColumn;
|
||||
using NegativeCashflowColumn = EvoCalculator.Core.Calculation.v3.Columns.NegativeCashflowColumn;
|
||||
using NPVBonusExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.NPVBonusExpensesColumn;
|
||||
using SumColumn = EvoCalculator.Core.Calculation.v3.Columns.SumColumn;
|
||||
using SumCreditColumn = EvoCalculator.Core.Calculation.v3.Columns.SumCreditColumn;
|
||||
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
||||
using ExtraBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.ExtraBonusSumColumn;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Managers.Calculation;
|
||||
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByPI(RequestCalculation requestCalculation)
|
||||
{
|
||||
var preparedValues = requestCalculation.preparedValues;
|
||||
var preparedPayments = requestCalculation.preparedPayments;
|
||||
var additionalData = requestCalculation.additionalData;
|
||||
var flags = requestCalculation.Flags;
|
||||
|
||||
var validationErrors = new Validation().ValidateRequest(requestCalculation);
|
||||
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
|
||||
|
||||
var constants = new Constants.Calculation();
|
||||
|
||||
var postValues = new PostValues(preparedValues);
|
||||
|
||||
|
||||
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
var dateTempColumn = new DateTempColumn(maxColumnLength);
|
||||
dateTempColumn.ComputeValues(preparedValues);
|
||||
|
||||
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
|
||||
percentPaymentColumn.ComputeValues(preparedPayments);
|
||||
|
||||
var kaskoNmperGrColumn = new KaskoNmperGrColumn(preparedValues.Nmper + 1);
|
||||
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
|
||||
kaskoNmperGrColumn.PostCheck();
|
||||
|
||||
var finGAPNmperGrColumn = new FinGAPNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
|
||||
finGAPNmperGrColumn.ComputeValues();
|
||||
finGAPNmperGrColumn.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.ComputeBonusBase(kaskoBonusGrSumColumn);
|
||||
|
||||
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
|
||||
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
|
||||
|
||||
postValues.ComputeBaseCost(kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
|
||||
|
||||
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
|
||||
agentComissionExpensesColumn.ComputeValues(preparedValues);
|
||||
|
||||
var evoKaskoNmperGrColumn = new EvoKaskoNmperGrColumn(preparedValues.Nmper + 1, preparedValues);
|
||||
evoKaskoNmperGrColumn.ComputeValues();
|
||||
|
||||
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
|
||||
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn, finGAPNmperGrColumn, evoKaskoNmperGrColumn);
|
||||
|
||||
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
|
||||
nsibBruttoGrColumn.ComputeValues(preparedValues);
|
||||
|
||||
var sumColumn = new SumColumn(
|
||||
preparedValues.Nmper + 1
|
||||
, dateTempColumn
|
||||
, preparedValues
|
||||
, percentPaymentColumn
|
||||
, postValues
|
||||
, nsibBruttoGrColumn
|
||||
, preparedPayments
|
||||
);
|
||||
|
||||
var subsidyExpensesColumn = new SubsidyExpensesColumn(preparedValues.Nmper + 1);
|
||||
subsidyExpensesColumn.ComputeValues(preparedValues);
|
||||
|
||||
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
|
||||
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
|
||||
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn,
|
||||
subsidyExpensesColumn);
|
||||
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
|
||||
|
||||
var sumWithVatColumn =
|
||||
new SumWithVATColumnVT1(preparedValues.Nmper + 1, sumColumn, preparedValues, constants);
|
||||
|
||||
var sumCreditColumn = new SumCreditColumn(preparedValues.LoanRatePeriod + 2);
|
||||
|
||||
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||
|
||||
var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
|
||||
|
||||
var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
|
||||
|
||||
var cashflowMsfoWithCfColumn = new CashflowMSFOWithCFColumn(
|
||||
new[] { preparedValues.LoanRatePeriod + 4, preparedValues.Nmper + 1 }
|
||||
.Max());
|
||||
|
||||
|
||||
var piColumn = new PIColumnVT2(61, preparedValues, cashflowMsfoWithCfColumn, cashflowMsfoColumn,
|
||||
percentPaymentColumn, postValues, sumColumn, sumCreditColumn, creditPaymentColumn,
|
||||
vatRecoverableColumn, vatColumn, sumWithVatColumn, creditColumn);
|
||||
piColumn.ComputeValues((decimal)preparedValues.NpvniExpected);
|
||||
sumColumn.PostCheck(flags);
|
||||
cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
|
||||
vatColumn.PostCheck();
|
||||
sumWithVatColumn.PostCheck();
|
||||
creditColumn.PostCheck(preparedValues, sumColumn);
|
||||
|
||||
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();
|
||||
|
||||
postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
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);
|
||||
|
||||
postValues.ComputeDirectorBonus();
|
||||
postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
|
||||
postValues.ComputeRegionalDirectorBonus();
|
||||
postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
|
||||
|
||||
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 sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
||||
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
|
||||
|
||||
var creditVATColumn = new CreditVATColumn(12 + 4);
|
||||
creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
|
||||
|
||||
postValues.ComputePriceUP(sumColumn);
|
||||
postValues.ComputePriceUP_PR();
|
||||
postValues.ComputePriceUP_Year();
|
||||
postValues.ComputePriceUP_Year_PR();
|
||||
postValues.ComputeNPVNI(npvColumn);
|
||||
postValues.ComputeBonusResult(npvBonusExpensesColumn);
|
||||
postValues.ComputeContractEconomy(cashflowMsfoColumn, creditColumn, directorBonusSumColumn);
|
||||
postValues.ComputeContractEconomyWithVAT(creditVATColumn);
|
||||
|
||||
|
||||
return new ManagerResult
|
||||
{
|
||||
PostValues = postValues,
|
||||
PreparedValues = preparedValues,
|
||||
Columns = new
|
||||
{
|
||||
dateColumn,
|
||||
dateTempColumn,
|
||||
percentPaymentColumn,
|
||||
kaskoNmperGrColumn,
|
||||
finGAPNmperGrColumn,
|
||||
tlmGrColumn,
|
||||
gpsGrColumn,
|
||||
sumColumn,
|
||||
vatColumn,
|
||||
sumWithVatColumn,
|
||||
acceptSumColumn,
|
||||
acceptKaskoColumn,
|
||||
acceptOsagoColumn,
|
||||
acceptInsuranceColumn,
|
||||
deprecationLpColumn,
|
||||
deprecationLdColumn,
|
||||
deprecationColumn,
|
||||
npvBonusExpensesColumn,
|
||||
kaskoBonusGrSumColumn,
|
||||
agentComissionExpensesColumn,
|
||||
ratExpensesColumn,
|
||||
transExprensesColumn,
|
||||
nsibExpensesColumn,
|
||||
tlmExpensesColumn,
|
||||
gpsExpensesColumn,
|
||||
registrExpensesColumn,
|
||||
insuranceBonusExpensesColumn,
|
||||
comissionBonusExpensesColumn,
|
||||
expensesColumn,
|
||||
evoKaskoNmperGrColumn,
|
||||
negativeCashflowColumn,
|
||||
nsibBruttoGrColumn,
|
||||
taxColumn,
|
||||
cashflowColumn,
|
||||
cashflowLeasingColumn,
|
||||
cashflowMsfoColumn,
|
||||
cashflowNpvColumn,
|
||||
npvWeightColumn,
|
||||
npvColumn,
|
||||
irrGrColumn,
|
||||
niColumn,
|
||||
interestColumn,
|
||||
cashflowNsibColumn,
|
||||
revenueColumn,
|
||||
sumCurrentColumn,
|
||||
sumCurrentNegativeColumn,
|
||||
sumCurrentInterestColumn,
|
||||
sumCurrentTlmColumn,
|
||||
sumRepaymentColumn,
|
||||
extraBonusSumColumn,
|
||||
cashflowMsfoFinalColumn,
|
||||
cashflowNpvFinalColumn,
|
||||
npvFinalColumn,
|
||||
directorBonusSumColumn,
|
||||
cashflowMsfoFinal2Column,
|
||||
cashflowNpvFinal2Column,
|
||||
npvFinal2Column,
|
||||
sumCreditColumn,
|
||||
creditColumn,
|
||||
sumVATCreditColumn,
|
||||
creditVATColumn,
|
||||
subsidyExpensesColumn,
|
||||
vatRecoverableColumn,
|
||||
creditPaymentColumn,
|
||||
cashflowMsfoWithCfColumn,
|
||||
piColumn
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -21,6 +21,7 @@ using SumColumn = EvoCalculator.Core.Calculation.v3.Columns.SumColumn;
|
||||
using SumCreditColumn = EvoCalculator.Core.Calculation.v3.Columns.SumCreditColumn;
|
||||
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
||||
using ExtraBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.ExtraBonusSumColumn;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Managers.Calculation;
|
||||
|
||||
@ -122,8 +123,10 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.ComputeValues();
|
||||
cashflowMsfoColumn.PostCheck(additionalData, constants, requestCalculation.Flags);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
|
||||
@ -280,7 +283,7 @@ public static partial class CalculateManager
|
||||
var creditVATColumn = new CreditVATColumn(12 + 4);
|
||||
creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
|
||||
|
||||
var vatRecoverableColumn = new VATRecoverableColumn(preparedValues.Nmper + 1, preparedValues);
|
||||
var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
|
||||
vatRecoverableColumn.ComputeValues(vatColumn);
|
||||
|
||||
var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
|
||||
@ -292,8 +295,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
|
||||
creditPaymentColumn, vatRecoverableColumn);
|
||||
|
||||
var piColumn = new PIColumn(61);
|
||||
piColumn.ComputeValues(preparedValues, cashflowMsfoWithCfColumn, cashflowMsfoColumn);
|
||||
var piColumn = new PIColumnVT1(61, preparedValues);
|
||||
piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
|
||||
|
||||
postValues.ComputePriceUP(sumColumn);
|
||||
postValues.ComputePriceUP_PR();
|
||||
|
||||
@ -21,6 +21,7 @@ using SumColumn = EvoCalculator.Core.Calculation.v3.Columns.SumColumn;
|
||||
using SumCreditColumn = EvoCalculator.Core.Calculation.v3.Columns.SumCreditColumn;
|
||||
using TaxColumn = EvoCalculator.Core.Calculation.v2.Columns.TaxColumn;
|
||||
using TLM_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.TLM_GrColumn;
|
||||
using ExtraBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.ExtraBonusSumColumn;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Managers.Calculation;
|
||||
|
||||
@ -116,8 +117,10 @@ public static partial class CalculateManager
|
||||
cashflowMsfoColumn.PostCheck(additionalData);
|
||||
sumColumn.PostCheck(flags);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
|
||||
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
|
||||
postValues.ComputePlanIRRMSFO(cashflowMsfoColumn);
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var sumWithVatColumn =
|
||||
@ -279,7 +282,7 @@ public static partial class CalculateManager
|
||||
var creditVATColumn = new CreditVATColumn(12 + 4);
|
||||
creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
|
||||
|
||||
var vatRecoverableColumn = new VATRecoverableColumn(preparedValues.Nmper + 1, preparedValues);
|
||||
var vatRecoverableColumn = new VATRecoverableColumn(64, preparedValues);
|
||||
vatRecoverableColumn.ComputeValues(vatColumn);
|
||||
|
||||
var creditPaymentColumn = new CreditPaymentColumn(preparedValues.LoanRatePeriod + 4);
|
||||
@ -291,8 +294,8 @@ public static partial class CalculateManager
|
||||
cashflowMsfoWithCfColumn.ComputeValues(preparedValues, sumCreditColumn, cashflowMsfoColumn,
|
||||
creditPaymentColumn, vatRecoverableColumn);
|
||||
|
||||
var piColumn = new PIColumn(61);
|
||||
piColumn.ComputeValues(preparedValues, cashflowMsfoWithCfColumn, cashflowMsfoColumn);
|
||||
var piColumn = new PIColumnVT1(61, preparedValues);
|
||||
piColumn.ComputeValues(cashflowMsfoColumn, cashflowMsfoWithCfColumn);
|
||||
|
||||
postValues.ComputePriceUP(sumColumn);
|
||||
postValues.ComputePriceUP_PR();
|
||||
|
||||
@ -11,6 +11,7 @@ public class PostValues : v2.PostValues
|
||||
public decimal DirectorExtraBonus;
|
||||
public decimal RegionalDirectorBonus;
|
||||
public decimal RegionalDirectorExtraBonus;
|
||||
public double PlanIRRMSFO;
|
||||
private readonly Constants.Calculation _constants;
|
||||
|
||||
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
|
||||
@ -27,7 +28,7 @@ public class PostValues : v2.PostValues
|
||||
_preparedValues.Registration + _preparedValues.TrackerCost +
|
||||
_preparedValues.TLMCost + _preparedValues.TransportTaxGr +
|
||||
_preparedValues.InsuranceFinGAPNmper) *
|
||||
(decimal) _preparedValues.Leasing0K +
|
||||
(decimal)_preparedValues.Leasing0K +
|
||||
_preparedValues.NsibBrutto;
|
||||
}
|
||||
|
||||
@ -46,20 +47,20 @@ public class PostValues : v2.PostValues
|
||||
}
|
||||
else
|
||||
{
|
||||
DirectorBonus = this.BonusBase * (decimal) _preparedValues.DirectorBonus *
|
||||
(decimal) _preparedValues.BonusCoefficient *
|
||||
(decimal) _preparedValues.MarketRate * (decimal) _preparedValues.DistrictRate;
|
||||
DirectorBonus = this.BonusBase * (decimal)_preparedValues.DirectorBonus *
|
||||
(decimal)_preparedValues.BonusCoefficient *
|
||||
(decimal)_preparedValues.MarketRate * (decimal)_preparedValues.DistrictRate;
|
||||
}
|
||||
}
|
||||
|
||||
public void ComputeDirectorExtraBonus(BaseColumnWithNominal cashflowMSFOColumn)
|
||||
{
|
||||
if (cashflowMSFOColumn.Nominal >= _preparedValues.IRR_MSFO_Plan && _preparedValues.BonusCoefficient == 1.0)
|
||||
if (cashflowMSFOColumn.Nominal >= this.PlanIRRMSFO && _preparedValues.BonusCoefficient == 1.0)
|
||||
{
|
||||
DirectorExtraBonus = this.BonusBase *
|
||||
(decimal) (cashflowMSFOColumn.Nominal / _preparedValues.IRR_MSFO_Plan - 1) *
|
||||
(decimal) _preparedValues.DirectorExtraBonus * (decimal) _preparedValues.MarketRate *
|
||||
(decimal) _preparedValues.DistrictRate;
|
||||
(decimal)(cashflowMSFOColumn.Nominal / this.PlanIRRMSFO - 1) *
|
||||
(decimal)_preparedValues.DirectorExtraBonus * (decimal)_preparedValues.MarketRate *
|
||||
(decimal)_preparedValues.DistrictRate;
|
||||
|
||||
if (DirectorExtraBonus < _constants.MinBonus)
|
||||
DirectorExtraBonus = 0;
|
||||
@ -76,24 +77,31 @@ public class PostValues : v2.PostValues
|
||||
}
|
||||
else
|
||||
{
|
||||
RegionalDirectorBonus = this.BonusBase * (decimal) _preparedValues.RegionalDirectorBonus *
|
||||
(decimal) _preparedValues.MarketRate * (decimal) _preparedValues.DistrictRate;
|
||||
RegionalDirectorBonus = this.BonusBase * (decimal)_preparedValues.RegionalDirectorBonus *
|
||||
(decimal)_preparedValues.MarketRate * (decimal)_preparedValues.DistrictRate;
|
||||
}
|
||||
}
|
||||
|
||||
public void ComputeRegionalDirectorExtraBonus(BaseColumnWithNominal cashflowMSFOColumn)
|
||||
{
|
||||
if (cashflowMSFOColumn.Nominal >= _preparedValues.IRR_MSFO_Plan && _preparedValues.BonusCoefficient == 1.0)
|
||||
if (cashflowMSFOColumn.Nominal >= this.PlanIRRMSFO && _preparedValues.BonusCoefficient == 1.0)
|
||||
{
|
||||
RegionalDirectorExtraBonus = this.BonusBase *
|
||||
(decimal) (cashflowMSFOColumn.Nominal / _preparedValues.IRR_MSFO_Plan - 1) *
|
||||
(decimal) _preparedValues.RegionalDirectorExtraBonus *
|
||||
(decimal) _preparedValues.MarketRate *
|
||||
(decimal) _preparedValues.DistrictRate;
|
||||
(decimal)(cashflowMSFOColumn.Nominal / this.PlanIRRMSFO - 1) *
|
||||
(decimal)_preparedValues.RegionalDirectorExtraBonus *
|
||||
(decimal)_preparedValues.MarketRate *
|
||||
(decimal)_preparedValues.DistrictRate;
|
||||
if (RegionalDirectorExtraBonus < _constants.MinBonus)
|
||||
RegionalDirectorExtraBonus = 0;
|
||||
}
|
||||
else
|
||||
RegionalDirectorExtraBonus = 0;
|
||||
}
|
||||
|
||||
public void ComputePlanIRRMSFO(BaseColumnWithNominal cashflowMSFOColumn)
|
||||
{
|
||||
PlanIRRMSFO = _preparedValues.ChangePlanIRR
|
||||
? cashflowMSFOColumn.Nominal * _preparedValues.IRR_MSFO_Plan / _preparedValues.IrrExpected
|
||||
: _preparedValues.IRR_MSFO_Plan;
|
||||
}
|
||||
}
|
||||
@ -149,6 +149,7 @@ public class PreparedValues
|
||||
|
||||
public decimal TLMCost { get; set; }
|
||||
public double IRR_MSFO_Plan { get; set; }
|
||||
public bool ChangePlanIRR { get; set; } = false;
|
||||
public double ExtraBonus { get; set; }
|
||||
public double DirectorBonus { get; set; }
|
||||
public decimal DirectorBonusFix { get; set; }
|
||||
|
||||
@ -18,7 +18,8 @@ public class CalculationController : Controller
|
||||
{
|
||||
var result = requestCalculation.preparedValues.CalcType switch
|
||||
{
|
||||
100000001 => CalculateManager.CalculateByTotalExpected(requestCalculation),
|
||||
100_000_001 => CalculateManager.CalculateByTotalExpected(requestCalculation),
|
||||
100_000_099 => CalculateManager.CalculateByPI(requestCalculation),
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user