Sale: add flags usage to InterestColumn & SumColumn

This commit is contained in:
vchikalkin 2024-01-15 18:21:01 +03:00
parent 142e9b6ef5
commit 20b6622eaf
12 changed files with 30 additions and 24 deletions

View File

@ -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];
}
}

View File

@ -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(
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
}
}

View File

@ -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);

View File

@ -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);

View File

@ -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)

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -2,7 +2,7 @@
<PropertyGroup>
<LangVersion>default</LangVersion>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>

View File

@ -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"
}
}
}