merge release/dyn-2121_supplier-financing

This commit is contained in:
vchikalkin 2023-02-01 09:35:54 +03:00
parent 0c0271bf10
commit 9cdb9bc586
4 changed files with 21 additions and 3 deletions

View File

@ -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;
namespace EvoCalculator.Core.Calculation.v2.Columns;
@ -19,4 +21,17 @@ public class CreditColumn : BaseColumnWithSum
Values[i] = 0;
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}");
}
}
}

View File

@ -268,6 +268,7 @@ public static partial class CalculateManager
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
creditColumn.PostCheck(preparedValues, sumColumn);
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);

View File

@ -267,6 +267,7 @@ public static partial class CalculateManager
var creditColumn = new CreditColumn(preparedValues.LoanRatePeriod + 4);
creditColumn.ComputeValues(preparedValues, sumCreditColumn);
creditColumn.PostCheck(preparedValues, sumColumn);
var sumVATCreditColumn = new SumVATCreditColumn(12 + 2);
sumVATCreditColumn.ComputeValues(preparedValues, vatColumn);

View File

@ -182,4 +182,5 @@ public class PreparedValues
public decimal DirectorBonusFinGAP { get; set; }
public decimal InsuranceEvoKasko { get; set; }
public decimal InsuranceBonusLoss { get; set; }
public bool SupplierFinancing { get; set; }
}