merge release/http-error-codes
This commit is contained in:
parent
8eb9dec769
commit
5df209f620
@ -12,8 +12,4 @@
|
||||
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||
|
||||
@ -57,12 +58,12 @@ public class BaseCashflowMSFOColumn : BaseColumnWithNominal
|
||||
{
|
||||
if (additionalData?.MinCashflowMSFONominal != null)
|
||||
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
|
||||
|
||||
if (additionalData?.MaxCashflowMSFONominal != null)
|
||||
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||
|
||||
@ -14,7 +14,7 @@ public class InterestColumn : BaseColumn<decimal>
|
||||
{
|
||||
for (var i = 3; i < Values.Skip(1).ToList().Count; i++)
|
||||
if (Values[i] > sumColumn.Values[i])
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||
}
|
||||
|
||||
|
||||
@ -3,6 +3,7 @@ using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Tools.Check;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||
|
||||
@ -38,12 +39,12 @@ public class SumColumn : BaseColumnWithXIRR
|
||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||
|
||||
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
|
||||
|
||||
for (var i = 2; i < Values.Length - 1; i++)
|
||||
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
@ -27,8 +26,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -306,15 +304,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
@ -28,8 +27,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -90,7 +88,7 @@ public static partial class CalculateManager
|
||||
sumColumn.PostCheck();
|
||||
|
||||
var vatColumn = new VATColumn(preparedValues.Nmper + 1, new Constants.Calculation());
|
||||
vatColumn.ComputeValues( sumColumn, preparedValues);
|
||||
vatColumn.ComputeValues(sumColumn, preparedValues);
|
||||
vatColumn.PostCheck();
|
||||
|
||||
var sumWithVatColumn =
|
||||
@ -306,15 +304,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9,14 +9,14 @@ public class PostValues
|
||||
{
|
||||
protected PreparedValues _preparedValues;
|
||||
|
||||
public decimal BaseCost;
|
||||
public decimal BonusBase;
|
||||
public decimal BonusResult;
|
||||
public double NPVNI;
|
||||
public decimal PriceUP;
|
||||
public double PriceUP_PR;
|
||||
public decimal PriceUP_Year;
|
||||
public double PriceUP_Year_PR;
|
||||
public decimal BaseCost { get; set; }
|
||||
public decimal BonusBase { get; set; }
|
||||
public decimal BonusResult { get; set; }
|
||||
public double NPVNI { get; set; }
|
||||
public decimal PriceUP { get; set; }
|
||||
public double PriceUP_PR { get; set; }
|
||||
public decimal PriceUP_Year { get; set; }
|
||||
public double PriceUP_Year_PR { get; set; }
|
||||
|
||||
|
||||
public PostValues(PreparedValues preparedValues)
|
||||
@ -33,7 +33,7 @@ public class PostValues
|
||||
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats +
|
||||
_preparedValues.Registration + _preparedValues.TrackerCost +
|
||||
_preparedValues.TLMCost + _preparedValues.TransportTaxGr) *
|
||||
(decimal) _preparedValues.Leasing0K +
|
||||
(decimal)_preparedValues.Leasing0K +
|
||||
_preparedValues.NsibBrutto;
|
||||
}
|
||||
|
||||
@ -47,13 +47,13 @@ public class PostValues
|
||||
public void ComputeBonusResult(BaseColumn<decimal> npvBonusExpensesColumn)
|
||||
{
|
||||
BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) -
|
||||
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) _preparedValues.SalaryRate /
|
||||
(decimal) (1 + _preparedValues.SalaryRate);
|
||||
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)_preparedValues.SalaryRate /
|
||||
(decimal)(1 + _preparedValues.SalaryRate);
|
||||
}
|
||||
|
||||
public void ComputeNPVNI(BaseColumn<decimal> npvColumn)
|
||||
{
|
||||
NPVNI = npvColumn.Values.Sum(x => (double) x) / (double) _preparedValues.NpvBase;
|
||||
NPVNI = npvColumn.Values.Sum(x => (double)x) / (double)_preparedValues.NpvBase;
|
||||
}
|
||||
|
||||
public void ComputePriceUP(BaseColumn<decimal> sumColumn)
|
||||
@ -63,7 +63,7 @@ public class PostValues
|
||||
|
||||
public void ComputePriceUP_PR()
|
||||
{
|
||||
PriceUP_PR = (double) PriceUP / (double) _preparedValues.PriceUpTotal;
|
||||
PriceUP_PR = (double)PriceUP / (double)_preparedValues.PriceUpTotal;
|
||||
}
|
||||
|
||||
public void ComputePriceUP_Year()
|
||||
@ -73,6 +73,6 @@ public class PostValues
|
||||
|
||||
public void ComputePriceUP_Year_PR()
|
||||
{
|
||||
PriceUP_Year_PR = (double) PriceUP_Year / (double) _preparedValues.PriceUpTotal;
|
||||
PriceUP_Year_PR = (double)PriceUP_Year / (double)_preparedValues.PriceUpTotal;
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,9 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.Common.Request;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||
|
||||
@ -47,7 +47,7 @@ public class BaseCashflowMSFOColumn : v1.Columns.BaseCashflowMSFOColumn
|
||||
if (flags?.DISABLE_CHECKS_RESULTS == false && _preparedValues.PaymentDateNew != null &&
|
||||
this.Nominal < ((additionalData.MinCashflowMSFONominal / 100) - constants.DeltaIRR))
|
||||
{
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"По итогам результата расчета данное изменение графика влечет к убыточности сделки. Скорректируйте вносимые изменения либо получите согласование с адреса calculator@evoleasing.ru");
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||
|
||||
@ -30,7 +31,7 @@ public class CreditColumn : BaseColumnWithSum
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var expectedPrepaid = Math.Round(financingSupplierCreditSum * (decimal)(1 + constants.VatValue), 2);
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Сумма аванса не покрывает потенциальные потери по финансированию поставщика. Увеличьте размер аванса до {expectedPrepaid}");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.Common.Request;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||
|
||||
@ -31,7 +32,7 @@ public class SumColumn : v1.Columns.SumColumn
|
||||
|
||||
if (flags?.DISABLE_CHECKS_RESULTS == false)
|
||||
if (_preparedValues.LastPaymentFix == false && Values[^1] / _preparedValues.PlPrice < 0.01m)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика, при заданных параметрах последний платеж меньше 1%");
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
@ -41,8 +40,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -330,15 +328,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
@ -41,8 +40,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -329,15 +327,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@ namespace EvoCalculator.Core.Calculation.v2;
|
||||
|
||||
public class PostValues : v1.PostValues
|
||||
{
|
||||
public decimal ContractEconomy;
|
||||
public decimal ContractEconomy { get; set; }
|
||||
|
||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||
{
|
||||
@ -19,7 +19,7 @@ public class PostValues : v1.PostValues
|
||||
directorBonusSumColumn.GetValue(0);
|
||||
|
||||
// if (Value < 0)
|
||||
// throw new Exception(
|
||||
// throw new AppException(
|
||||
// "Невозможно осуществить расчет графика. При заданных параметрах получается отрицательный результат по ДЛ");
|
||||
}
|
||||
}
|
||||
@ -1,7 +1,5 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Tools.Check;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Tools.Check;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
@ -18,7 +19,7 @@ public class FinGAPNmperGrColumn : BaseColumnWithSum
|
||||
{
|
||||
new CheckTools().CheckColumnForLessThanZeroValue(Values);
|
||||
if (Math.Abs(Math.Round(Values[0])) != Math.Round(preparedValues.InsuranceFinGAPNmper))
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает сумма итого");
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
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;
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
using EvoCalculator.Core.Calculation.v3.Columns;
|
||||
@ -9,7 +7,6 @@ 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;
|
||||
@ -47,8 +44,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -379,15 +375,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
@ -46,8 +45,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -383,15 +381,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,5 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Calculation.v1.Columns;
|
||||
using EvoCalculator.Core.Calculation.v2.Columns;
|
||||
@ -46,8 +45,7 @@ public static partial class CalculateManager
|
||||
? preparedValues.Nmper + 1
|
||||
: preparedValues.NmperDeprecation + 2;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
|
||||
dateColumn.ComputeValues(preparedValues, constants);
|
||||
|
||||
@ -382,15 +380,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,12 +6,12 @@ namespace EvoCalculator.Core.Calculation.v3;
|
||||
|
||||
public class PostValues : v2.PostValues
|
||||
{
|
||||
public decimal ContractEconomyWithVAT;
|
||||
public decimal DirectorBonus;
|
||||
public decimal DirectorExtraBonus;
|
||||
public decimal RegionalDirectorBonus;
|
||||
public decimal RegionalDirectorExtraBonus;
|
||||
public double PlanIRRMSFO;
|
||||
public decimal ContractEconomyWithVAT { get; set; }
|
||||
public decimal DirectorBonus { get; set; }
|
||||
public decimal DirectorExtraBonus { get; set; }
|
||||
public decimal RegionalDirectorBonus { get; set; }
|
||||
public decimal RegionalDirectorExtraBonus { get; set; }
|
||||
public double PlanIRRMSFO { get; set; }
|
||||
private readonly Constants.Calculation _constants;
|
||||
|
||||
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
|
||||
|
||||
@ -6,8 +6,4 @@
|
||||
<LangVersion>default</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -7,12 +7,11 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj"/>
|
||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
|
||||
<PackageReference Include="TridentGoalSeek" Version="1.0.5"/>
|
||||
<PackageReference Include="TridentGoalSeek" Version="1.0.5" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="TridentGoalSeek" Version="1.0.5" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||
using EvoCalculator.Core.Tools.Array;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
|
||||
@ -79,7 +80,7 @@ public class CashflowMSFOColumn : BaseColumnWithNominal
|
||||
public void PostCheck()
|
||||
{
|
||||
if (Values.Length != Dates.Length)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
||||
}
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Tools.Check;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
using EvoCalculator.Core.Tools.GroupColumns;
|
||||
using EvoCalculator.Core.Tools.GroupColumns.Models;
|
||||
|
||||
@ -37,7 +37,7 @@ public class InterestColumn : BaseColumn<decimal>
|
||||
});
|
||||
|
||||
if (negativeValuesCount > 1)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||
using EvoCalculator.Core.Tools.Check;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
|
||||
@ -96,7 +97,7 @@ public class BaseSumColumn : BaseColumnWithNominal
|
||||
checkTools.CheckColumnForZeroValue(Values.Skip(2));
|
||||
|
||||
if (Values[1] / Values.Skip(1).Sum() >= (decimal) 0.5)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж. Измените параметры для расчета.");
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.lib;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||
using EvoCalculator.Core.Tools.Array;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
|
||||
@ -115,7 +116,7 @@ public class TLMCostColumn : BaseColumnWithSum
|
||||
public void PostCheck()
|
||||
{
|
||||
if (Values.Length != Dates.Length)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||
@ -13,8 +11,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -81,7 +77,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -276,15 +272,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
@ -11,8 +9,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -197,15 +193,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||
@ -13,8 +11,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -84,7 +80,7 @@ public static partial class CalculateManager
|
||||
|
||||
var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.PostCheck();
|
||||
nextSumColumn.RoundValues();
|
||||
|
||||
@ -226,15 +222,5 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Managers.lib.Helper;
|
||||
@ -10,8 +8,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -192,15 +188,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
@ -11,8 +9,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -323,15 +319,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||
@ -13,8 +11,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -83,7 +79,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -280,15 +276,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Current;
|
||||
@ -13,8 +11,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -84,7 +80,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -239,15 +235,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
@ -11,8 +9,6 @@ namespace EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult Suspension(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -197,15 +193,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,20 +1,20 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Prepared.PreparedTables;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.PostCalculation.v1;
|
||||
|
||||
public class NextValues
|
||||
{
|
||||
public decimal AcquisitionExpenses;
|
||||
public decimal BaseCost;
|
||||
public decimal NiAtInception;
|
||||
public decimal NiAtInceptionMSFO;
|
||||
public int Nmper;
|
||||
public decimal AcquisitionExpenses { get; set; }
|
||||
public decimal BaseCost { get; set; }
|
||||
public decimal NiAtInception { get; set; }
|
||||
public decimal NiAtInceptionMSFO { get; set; }
|
||||
public int Nmper { get; set; }
|
||||
public decimal SumTotal { get; set; }
|
||||
protected PreparedValues preparedValues;
|
||||
public decimal SumTotal;
|
||||
|
||||
public NextValues(PreparedValues preparedValues)
|
||||
{
|
||||
@ -73,7 +73,7 @@ public class NextValues
|
||||
+ preparedValues.InceptDelta;
|
||||
|
||||
if (AcquisitionExpenses <= 0)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ public class NextValues
|
||||
|
||||
// PostCheck
|
||||
if (BaseCost <= 0)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет графика, при заданных параметрах получаются отрицательные значения nextValues. Измените параметры для расчета.");
|
||||
}
|
||||
|
||||
@ -167,14 +167,14 @@ public class NextValues
|
||||
}
|
||||
|
||||
if (i == 0)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"Невозможно осуществить расчет ЧДП с изменением срока. Необходимо увеличить сумму ЧДП");
|
||||
|
||||
Nmper = preparedValues.Nmper.Current - i + 1;
|
||||
|
||||
// PostCheck
|
||||
if (Nmper < 13 && preparedValues.BalanceHolder.Next == 100000001)
|
||||
throw new Exception(
|
||||
throw new AppException(
|
||||
"По итогам расчета срок лизинга получается меньше 13, при балансе ЛД это запрещено. Измените параметры для расчета");
|
||||
}
|
||||
|
||||
@ -182,6 +182,6 @@ public class NextValues
|
||||
{
|
||||
SumTotal = preparedValues.TotalExpected
|
||||
- (preparedValues.TotalExpected - nextSumWithVATColumn.GetValue(0))
|
||||
* (decimal) preparedValues.Repayment;
|
||||
* (decimal)preparedValues.Repayment;
|
||||
}
|
||||
}
|
||||
@ -8,7 +8,7 @@ public class PostValues
|
||||
{
|
||||
protected PreparedValues _preparedValues;
|
||||
|
||||
public decimal ContractEconomy;
|
||||
public decimal ContractEconomy { get; set; }
|
||||
|
||||
public PostValues(PreparedValues preparedValues)
|
||||
{
|
||||
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -17,8 +15,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByIRRAndSum(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -85,7 +81,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -289,15 +285,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -16,8 +14,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByIRRNoLimit(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -87,7 +83,7 @@ public static partial class CalculateManager
|
||||
|
||||
var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.PostCheck();
|
||||
nextSumColumn.RoundValues();
|
||||
|
||||
@ -237,15 +233,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -14,8 +12,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateByTotalExpected(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -209,15 +205,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -16,8 +14,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult CalculateDefault(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -87,7 +83,7 @@ public static partial class CalculateManager
|
||||
|
||||
var nextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
nextSumColumn.ComputeValues((decimal) currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.ComputeValues((decimal)currentSumColumn.IRR + preparedValues.IRRDelta);
|
||||
nextSumColumn.PostCheck();
|
||||
nextSumColumn.RoundValues();
|
||||
|
||||
@ -238,15 +234,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Columns.Next;
|
||||
@ -13,8 +11,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult ChangingLastPayment(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -204,15 +200,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -14,8 +12,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult EarlyRedemption(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -335,15 +331,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -16,8 +14,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult PERWithChangingTheTerm(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -86,7 +82,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, techNextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -292,15 +288,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -16,8 +14,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult PERWithoutChangingTheTerm(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -87,7 +83,7 @@ public static partial class CalculateManager
|
||||
|
||||
var techNextSumColumn = new SumColumnVT1(preparedValues.Nmper.Next + 1, nextDateTempColumn,
|
||||
preparedValues, nextValues, currentTablePayments, nextTablePayments);
|
||||
techNextSumColumn.ComputeValues((decimal) currentSumColumn.IRR);
|
||||
techNextSumColumn.ComputeValues((decimal)currentSumColumn.IRR);
|
||||
|
||||
var techNextVATColumn = new VATColumnVT1(preparedValues.Nmper.Next + 1);
|
||||
techNextVATColumn.ComputeValues(preparedValues, techNextSumColumn, currentTablePayments, constants);
|
||||
@ -251,15 +247,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1;
|
||||
@ -14,8 +12,6 @@ namespace EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
public static partial class CalculateManager
|
||||
{
|
||||
public static ManagerResult Suspension(RequestCalculation requestCalculation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var constants = new Constants.Calculation();
|
||||
var preparedValues = requestCalculation.PreparedValues;
|
||||
@ -208,15 +204,4 @@ public static partial class CalculateManager
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ManagerResult
|
||||
{
|
||||
Errors = new List<string>
|
||||
{
|
||||
ex.Message
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@ namespace EvoCalculator.Core.PostCalculation.v2;
|
||||
|
||||
public class PostValues : v1.PostValues
|
||||
{
|
||||
public decimal ContractEconomyWithVAT;
|
||||
public decimal ContractEconomyWithVAT { get; set; }
|
||||
|
||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||
{
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
namespace EvoCalculator.Core.Tools.Check;
|
||||
|
||||
@ -10,12 +11,12 @@ public class CheckTools
|
||||
string errorMsg =
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах получаются отрицательные значения")
|
||||
{
|
||||
if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new Exception(errorMsg);
|
||||
if (Values.Skip(1).ToList().Exists(x => x < 0)) throw new AppException(errorMsg);
|
||||
}
|
||||
|
||||
public void CheckColumnForZeroValue(IEnumerable<decimal> Values, string errorMsg =
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах получаются нулевые значения платежей")
|
||||
{
|
||||
if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new Exception(errorMsg);
|
||||
if (Values.Skip(1).ToList().Exists(x => x == 0)) throw new AppException(errorMsg);
|
||||
}
|
||||
}
|
||||
23
EvoCalculator.Core.Tools/Errors/AppException.cs
Normal file
23
EvoCalculator.Core.Tools/Errors/AppException.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using System;
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace EvoCalculator.Core.Tools.Errors;
|
||||
|
||||
public class AppException : Exception
|
||||
{
|
||||
public AppException()
|
||||
{
|
||||
}
|
||||
|
||||
protected AppException(SerializationInfo info, StreamingContext context) : base(info, context)
|
||||
{
|
||||
}
|
||||
|
||||
public AppException(string message) : base(message)
|
||||
{
|
||||
}
|
||||
|
||||
public AppException(string message, Exception innerException) : base(message, innerException)
|
||||
{
|
||||
}
|
||||
}
|
||||
@ -6,7 +6,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj"/>
|
||||
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@ -2,8 +2,6 @@
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
namespace EvoCalculator.Core.Controllers.Calculation.v1;
|
||||
|
||||
@ -22,15 +20,6 @@ public class CalculationController : Controller
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
var hasErrors = result.Errors is {Count: > 0};
|
||||
var statusCode = hasErrors ? 500 : 200;
|
||||
|
||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||
result,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||
}));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -2,8 +2,6 @@
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
namespace EvoCalculator.Core.Controllers.Calculation.v2;
|
||||
|
||||
@ -22,15 +20,6 @@ public class CalculationController : Controller
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
var hasErrors = result.Errors is {Count: > 0};
|
||||
var statusCode = hasErrors ? 500 : 200;
|
||||
|
||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||
result,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||
}));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -2,8 +2,6 @@
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Request;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
namespace EvoCalculator.Core.Controllers.Calculation.v3;
|
||||
|
||||
@ -23,15 +21,6 @@ public class CalculationController : Controller
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
var hasErrors = result.Errors is {Count: > 0};
|
||||
var statusCode = hasErrors ? 500 : 200;
|
||||
|
||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||
result,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||
}));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,6 @@
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v1.Managers;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||
|
||||
namespace EvoCalculator.Core.Controllers.PostCalculation.v1;
|
||||
@ -29,15 +26,6 @@ public class PostCalculationController : Controller
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
var hasErrors = result.Errors is {Count: > 0};
|
||||
var statusCode = hasErrors ? 500 : 200;
|
||||
|
||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||
result,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||
}));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -1,9 +1,6 @@
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Manager;
|
||||
using EvoCalculator.Core.Models.PostCalculation.Models.Request;
|
||||
using EvoCalculator.Core.PostCalculation.v2.Managers;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using CalculateManager = EvoCalculator.Core.PostCalculation.v2.Managers.CalculateManager;
|
||||
|
||||
namespace EvoCalculator.Core.Controllers.PostCalculation.v2;
|
||||
@ -31,15 +28,6 @@ public class PostCalculationController : Controller
|
||||
_ => CalculateManager.CalculateDefault(requestCalculation)
|
||||
};
|
||||
|
||||
var hasErrors = result.Errors is {Count: > 0};
|
||||
var statusCode = hasErrors ? 500 : 200;
|
||||
|
||||
return StatusCode(statusCode, JsonConvert.SerializeObject(
|
||||
result,
|
||||
new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
ContractResolver = new CamelCasePropertyNamesContractResolver()
|
||||
}));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@ -7,7 +7,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="NSwag.AspNetCore" Version="13.15.4" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Text.Json;
|
||||
using EvoCalculator.Core.Tools.Errors;
|
||||
using Microsoft.AspNetCore.Builder;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
@ -21,7 +27,11 @@ public class Startup
|
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
||||
public void ConfigureServices(IServiceCollection services)
|
||||
{
|
||||
services.AddControllers();
|
||||
services.AddControllers().AddJsonOptions(options =>
|
||||
{
|
||||
options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
|
||||
options.JsonSerializerOptions.WriteIndented = true;
|
||||
});
|
||||
|
||||
services.AddApiVersioning(opt =>
|
||||
{
|
||||
@ -44,6 +54,28 @@ public class Startup
|
||||
app.UseSwaggerUi3(c => { c.DocumentTitle = DocsName; });
|
||||
app.UseRouting();
|
||||
|
||||
app.Use(async (context, next) =>
|
||||
{
|
||||
var response = context.Response;
|
||||
response.ContentType = "application/json";
|
||||
try
|
||||
{
|
||||
await next(context);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
response.StatusCode = ex switch
|
||||
{
|
||||
AppException e => (int)HttpStatusCode.BadRequest,
|
||||
_ => (int)HttpStatusCode.InternalServerError
|
||||
};
|
||||
|
||||
var result = new { Errors = new List<string> { ex.Message } };
|
||||
|
||||
await response.WriteAsJsonAsync(result);
|
||||
}
|
||||
});
|
||||
|
||||
app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user