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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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