Sale: add flags usage to InterestColumn & SumColumn
This commit is contained in:
parent
142e9b6ef5
commit
20b6622eaf
@ -1,5 +1,6 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
|
using EvoCalculator.Core.Models.Common.Request;
|
||||||
using EvoCalculator.Core.Tools.Errors;
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||||
@ -10,18 +11,19 @@ public class InterestColumn : BaseColumn<decimal>
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PostCheck(SumColumn sumColumn)
|
public void PostCheck(SumColumn sumColumn, Flags flags)
|
||||||
{
|
{
|
||||||
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
||||||
if (Values[i] > sumColumn.Values[i])
|
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
||||||
throw new AppException(
|
if (Values[i] > sumColumn.Values[i])
|
||||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
throw new AppException(
|
||||||
|
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2,6 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using EvoCalculator.Core.Base.Columns;
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
using EvoCalculator.Core.Models.Common.Request;
|
||||||
using EvoCalculator.Core.Tools.Check;
|
using EvoCalculator.Core.Tools.Check;
|
||||||
using EvoCalculator.Core.Tools.Errors;
|
using EvoCalculator.Core.Tools.Errors;
|
||||||
|
|
||||||
@ -29,12 +30,12 @@ public class SumColumn : BaseColumnWithXIRR
|
|||||||
Values[0] = -_postValues.BaseCost;
|
Values[0] = -_postValues.BaseCost;
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual void PostCheck()
|
public virtual void PostCheck(Flags flags)
|
||||||
{
|
{
|
||||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||||
|
|
||||||
@ -42,9 +43,10 @@ public class SumColumn : BaseColumnWithXIRR
|
|||||||
throw new AppException(
|
throw new AppException(
|
||||||
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
|
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
|
||||||
|
|
||||||
for (var i = 2; i < Values.Length - 1; i++)
|
if (flags.DISABLE_CHECKS_RESULTS == false)
|
||||||
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
|
for (var i = 2; i < Values.Length - 1; i++)
|
||||||
throw new AppException(
|
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
|
||||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
throw new AppException(
|
||||||
|
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -13,6 +13,7 @@ public static partial class CalculateManager
|
|||||||
var preparedValues = requestCalculation.preparedValues;
|
var preparedValues = requestCalculation.preparedValues;
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
var preparedPayments = requestCalculation.preparedPayments;
|
||||||
var additionalData = requestCalculation.additionalData;
|
var additionalData = requestCalculation.additionalData;
|
||||||
|
var flags = requestCalculation.Flags;
|
||||||
|
|
||||||
new Validation().ValidateRequest(requestCalculation);
|
new Validation().ValidateRequest(requestCalculation);
|
||||||
|
|
||||||
@ -78,7 +79,7 @@ public static partial class CalculateManager
|
|||||||
percentPaymentColumn, postValues);
|
percentPaymentColumn, postValues);
|
||||||
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
|
sumWithVatColumn.ComputeValues(Convert.ToDecimal(preparedValues.TotalExpected));
|
||||||
sumWithVatColumn.PostCheck();
|
sumWithVatColumn.PostCheck();
|
||||||
sumColumn.PostCheck();
|
sumColumn.PostCheck(flags);
|
||||||
|
|
||||||
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
|
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
|
||||||
agentComissionExpensesColumn.ComputeValues(preparedValues);
|
agentComissionExpensesColumn.ComputeValues(preparedValues);
|
||||||
@ -180,7 +181,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -13,6 +13,7 @@ public static partial class CalculateManager
|
|||||||
var preparedValues = requestCalculation.preparedValues;
|
var preparedValues = requestCalculation.preparedValues;
|
||||||
var preparedPayments = requestCalculation.preparedPayments;
|
var preparedPayments = requestCalculation.preparedPayments;
|
||||||
var additionalData = requestCalculation.additionalData;
|
var additionalData = requestCalculation.additionalData;
|
||||||
|
var flags = requestCalculation.Flags;
|
||||||
|
|
||||||
new Validation().ValidateRequest(requestCalculation);
|
new Validation().ValidateRequest(requestCalculation);
|
||||||
|
|
||||||
@ -84,7 +85,7 @@ public static partial class CalculateManager
|
|||||||
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
|
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
|
||||||
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
|
cashflowMsfoColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
|
||||||
cashflowMsfoColumn.PostCheck(additionalData);
|
cashflowMsfoColumn.PostCheck(additionalData);
|
||||||
sumColumn.PostCheck();
|
sumColumn.PostCheck(flags);
|
||||||
|
|
||||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||||
@ -179,7 +180,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -28,7 +28,7 @@ public class SumColumn : v1.Columns.SumColumn
|
|||||||
|
|
||||||
public void PostCheck(Flags flags)
|
public void PostCheck(Flags flags)
|
||||||
{
|
{
|
||||||
base.PostCheck();
|
base.PostCheck(flags);
|
||||||
|
|
||||||
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
||||||
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
|
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
|
||||||
|
|||||||
@ -195,7 +195,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -194,7 +194,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -240,7 +240,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -212,7 +212,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -211,7 +211,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
|
||||||
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
interestColumn.ComputeValues(irrGrColumn, niColumn);
|
||||||
interestColumn.PostCheck(sumColumn);
|
interestColumn.PostCheck(sumColumn, flags);
|
||||||
|
|
||||||
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
|
||||||
nsibBruttoGrColumn, nsibExpensesColumn);
|
nsibBruttoGrColumn, nsibExpensesColumn);
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<LangVersion>default</LangVersion>
|
<LangVersion>default</LangVersion>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -27,7 +27,7 @@
|
|||||||
"calculation_v2_date": "2021-09-02",
|
"calculation_v2_date": "2021-09-02",
|
||||||
"calculation_v3_date": "2022-03-30",
|
"calculation_v3_date": "2022-03-30",
|
||||||
"post_calculation_v2_date": "2022-04-14",
|
"post_calculation_v2_date": "2022-04-14",
|
||||||
"calculation_irr": "0.21"
|
"calculation_irr": "0.24"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user