using EvoCalculator.Core.Models.Calculation.Models.Prepared; namespace EvoCalculator.Core.Calculation.Columns { public class InsuranceBonusExpensesColumn : BaseColumnWithSum { public InsuranceBonusExpensesColumn(int count) : base(count) { } public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) { if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod) Values[2] = preparedValues.InsuranceBonus; else /* * +1 - компенсация того, что считается с 0 позиции */ for (var i = 2; i < Values.Length; i += i == 2 ? 11 : 12) if (preparedValues.NmperInsurance - i >= 3) { if ( preparedValues.NmperInsurance == constants.MaxOnePolicePeriod && i <= 3 || preparedValues.NmperInsurance > constants.MaxOnePolicePeriod && preparedValues.NmperInsurance - i > constants.MaxOnePolicePeriod ) Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * 12; else Values[i] = preparedValues.InsuranceBonus / preparedValues.NmperInsurance * (preparedValues.NmperInsurance - i + 1); } Values[0] = Sum; } } }