merge release/dyn-2121_supplier-financing
This commit is contained in:
parent
0c0271bf10
commit
9cdb9bc586
@ -1,4 +1,6 @@
|
|||||||
using EvoCalculator.Core.Base.Columns;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using EvoCalculator.Core.Base.Columns;
|
||||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||||
|
|
||||||
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
namespace EvoCalculator.Core.Calculation.v2.Columns;
|
||||||
@ -11,12 +13,25 @@ public class CreditColumn : BaseColumnWithSum
|
|||||||
|
|
||||||
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> sumCreditColumn)
|
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> sumCreditColumn)
|
||||||
{
|
{
|
||||||
Values[1] = -sumCreditColumn.GetValue(1) * (decimal) preparedValues.LoanRate / 12;
|
Values[1] = -sumCreditColumn.GetValue(1) * (decimal)preparedValues.LoanRate / 12;
|
||||||
for (var i = 2; i < Values.Length; i++)
|
for (var i = 2; i < Values.Length; i++)
|
||||||
if (GetValue(i - 1) < 0)
|
if (GetValue(i - 1) < 0)
|
||||||
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal) preparedValues.LoanRate / 12;
|
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal)preparedValues.LoanRate / 12;
|
||||||
else
|
else
|
||||||
Values[i] = 0;
|
Values[i] = 0;
|
||||||
Values[0] = Sum;
|
Values[0] = Sum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void PostCheck(PreparedValues preparedValues, BaseColumn<decimal> sumColumn)
|
||||||
|
{
|
||||||
|
var financingSupplierCreditSum = Math.Abs(this.Values.Skip(1).Take(4).Sum());
|
||||||
|
if (preparedValues.SupplierFinancing &&
|
||||||
|
(sumColumn.GetValue(1) - preparedValues.SubsidySum) < financingSupplierCreditSum)
|
||||||
|
{
|
||||||
|
var constants = new Constants.Calculation();
|
||||||
|
var expectedPrepaid = Math.Round(financingSupplierCreditSum * (decimal)(1 + constants.VatValue), 2);
|
||||||
|
throw new Exception(
|
||||||
|
$"Сумма аванса не покрывает потенциальные потери по финансированию поставщика. Увеличьте размер аванса до {expectedPrepaid}");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -268,6 +268,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||||
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
||||||
|
creditColumn.PostCheck(preparedValues, sumColumn);
|
||||||
|
|
||||||
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
||||||
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
|
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
|
||||||
|
|||||||
@ -267,6 +267,7 @@ public static partial class CalculateManager
|
|||||||
|
|
||||||
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
|
||||||
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
|
||||||
|
creditColumn.PostCheck(preparedValues, sumColumn);
|
||||||
|
|
||||||
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
|
||||||
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
|
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);
|
||||||
|
|||||||
@ -182,4 +182,5 @@ public class PreparedValues
|
|||||||
public decimal DirectorBonusFinGAP { get; set; }
|
public decimal DirectorBonusFinGAP { get; set; }
|
||||||
public decimal InsuranceEvoKasko { get; set; }
|
public decimal InsuranceEvoKasko { get; set; }
|
||||||
public decimal InsuranceBonusLoss { get; set; }
|
public decimal InsuranceBonusLoss { get; set; }
|
||||||
|
public bool SupplierFinancing { get; set; }
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user