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