merge branch release/dyn-4487_cashflow-msfo-wthtt-bonus-column

This commit is contained in:
vchikalkin 2024-05-31 13:21:39 +03:00
parent cfc2948b7d
commit d9612bffd9
15 changed files with 200 additions and 5 deletions

View File

@ -0,0 +1,19 @@
using System;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v3.Columns;
public class CashflowMSFOWthtBonusColumn : BaseColumnWithNominal
{
public CashflowMSFOWthtBonusColumn(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(BaseColumn<decimal> cashflowMsfoColumn,
BaseColumn<decimal> npvBonusExpensesColumn)
{
Values[0] = cashflowMsfoColumn.GetValue(0);
for (var i = 1; i < Values.Length; i++)
Values[i] = cashflowMsfoColumn.GetValue(i) - npvBonusExpensesColumn.GetValue(i);
}
}

View File

@ -298,6 +298,9 @@ public static partial class CalculateManager
var creditVATColumn = new CreditVATColumn(12 + 4);
creditVATColumn.ComputeValues(preparedValues, sumVATCreditColumn);
var cashflowMsfoWthtBonusColumn = new CashflowMSFOWthtBonusColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoWthtBonusColumn.ComputeValues(cashflowMsfoWithCfColumn, npvBonusExpensesColumn);
postValues.ComputePriceUP(sumColumn);
postValues.ComputePriceUP_PR();
postValues.ComputePriceUP_Year();
@ -379,7 +382,8 @@ public static partial class CalculateManager
vatRecoverableColumn,
creditPaymentColumn,
cashflowMsfoWithCfColumn,
piColumn
piColumn,
cashflowMsfoWthtBonusColumn
}
};
}

View File

@ -303,6 +303,9 @@ public static partial class CalculateManager
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var cashflowMsfoWthtBonusColumn = new CashflowMSFOWthtBonusColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoWthtBonusColumn.ComputeValues(cashflowMsfoWithCfColumn, npvBonusExpensesColumn);
postValues.ComputePriceUP(sumColumn);
postValues.ComputePriceUP_PR();
postValues.ComputePriceUP_Year();
@ -384,7 +387,8 @@ public static partial class CalculateManager
vatRecoverableColumn,
creditPaymentColumn,
cashflowMsfoWithCfColumn,
piColumn
piColumn,
cashflowMsfoWthtBonusColumn
}
};
}

View File

@ -294,15 +294,19 @@ public static partial class CalculateManager
piColumn.ComputeValues(cashflowMsfoFinal2Column, cashflowMsfoWithCfColumn);
var sumRepaymentColumn =
new SumRepaymentColumn(preparedValues.Nmper + 1, postValues, requestCalculation, constants, sumColumn, piColumn,
new SumRepaymentColumn(preparedValues.Nmper + 1, postValues, requestCalculation, constants, sumColumn,
piColumn,
dateTempColumn, tlmGrColumn, percentPaymentColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, negativeCashflowColumn, nsibBruttoGrColumn, subsidyExpensesColumn,
extraBonusSumColumn, directorBonusSumColumn, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentTlmColumn,sumCurrentInterestColumn);
sumCurrentTlmColumn, sumCurrentInterestColumn);
sumRepaymentColumn.ComputeValues(sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
sumRepaymentColumn.PostCheck();
var cashflowMsfoWthtBonusColumn = new CashflowMSFOWthtBonusColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoWthtBonusColumn.ComputeValues(cashflowMsfoWithCfColumn, npvBonusExpensesColumn);
postValues.ComputePriceUP(sumColumn);
postValues.ComputePriceUP_PR();
postValues.ComputePriceUP_Year();
@ -384,7 +388,8 @@ public static partial class CalculateManager
vatRecoverableColumn,
creditPaymentColumn,
cashflowMsfoWithCfColumn,
piColumn
piColumn,
cashflowMsfoWthtBonusColumn
}
};
}

View File

@ -0,0 +1,102 @@
using System;
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.PostCalculation.v1;
using EvoCalculator.Core.Tools.Array;
using EvoCalculator.Core.Tools.Errors;
namespace EvoCalculator.Core.PostCalculation.v2.Columns.Next;
public class CashflowMSFOWthtBonusColumn : BaseColumnWithNominal
{
public void ComputeValues(NextValues nextValues
, PreparedValues preparedValues
, BaseColumn<decimal> nextSumColumn
, BaseColumn<decimal> nextTLMCostColumn
, BaseColumn<decimal> nextSubsidyExpensesColumn
, BaseColumn<decimal> nextNSIBBruttoGrColumn
, TableInsuranceRow[] nextTableInsurance
, BaseColumn<DateTime> nextDateTempColumn
, BaseColumn<DateTime> nextTLMDateColumn
, BaseColumn<DateTime> currentDateTempColumn)
{
var costInsurances = Array.Empty<decimal>();
if (nextTableInsurance != null)
costInsurances = nextTableInsurance
.Where(ins =>
ins.PeriodNumberInsurance > 1
&& ins.TypeRiskInsurance is "KASKO" or "OSAGO" or "GAP" or "EvoKASKO"
&& ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1])
.OrderBy(x => x.TypeRiskInsurance)
.Select(x => -(x.CostInsurance + x.InsuranceBonusLoss))
.ToArray();
var tlmCosts = Array.Empty<decimal>();
if (nextTLMCostColumn != null) tlmCosts = nextTLMCostColumn.Values.Skip(1).Select(x => -x).ToArray();
Values = Array<decimal>.Concat(
new[] { -nextValues.AcquisitionExpenses - preparedValues.FuelCardSum }
, nextSumColumn.Values.Skip(1).ToArray()
, costInsurances
, nextNSIBBruttoGrColumn.Values.Skip(1).ToArray()
, new[]
{
-preparedValues.AgentFLSum - preparedValues.AgentULSum
}
, tlmCosts
, nextSubsidyExpensesColumn.Values.Skip(1).ToArray()
);
var nextTLMDates = Array.Empty<DateTime>();
if (nextTLMDateColumn != null) nextTLMDates = nextTLMDateColumn.Values.Skip(1).ToArray();
var dateStartPeriodInsurances = Array.Empty<DateTime>();
if (nextTableInsurance != null)
dateStartPeriodInsurances = nextTableInsurance
.Where(ins =>
ins.PeriodNumberInsurance > 1
&& ins.TypeRiskInsurance is "KASKO" or "OSAGO" or "GAP" or "EvoKASKO"
&& ins.DateStartPeriodInsurance <= nextDateTempColumn.Values[^1])
.OrderBy(x => x.TypeRiskInsurance)
.Select(x => x.DateStartPeriodInsurance)
.ToArray();
Dates = Array<DateTime>.Concat(
new[] { nextDateTempColumn.GetValue(0) }
, nextDateTempColumn.Values.Skip(1).ToArray()
, dateStartPeriodInsurances
, nextDateTempColumn.Values.Skip(1).ToArray()
, new[]
{
nextDateTempColumn.GetValue(2)
}
, nextTLMDates
, nextDateTempColumn.Values.Skip(1).ToArray()
);
var lastDateTempValue = nextDateTempColumn.Values.Last();
var lastCurrentDateTempValue = currentDateTempColumn.Values.Last();
var evoKasko = nextTableInsurance.FirstOrDefault(x => x.TypeRiskInsurance == "EvoKASKO");
if (evoKasko != null &&
new DateTime(lastDateTempValue.Year, lastDateTempValue.Month, 1) >
new DateTime(lastCurrentDateTempValue.Year, lastCurrentDateTempValue.Month, 1))
{
var evoKaskoSum = -((evoKasko.CostInsurance + evoKasko.InsuranceBonusLoss) / 12) *
((lastDateTempValue.Year - lastCurrentDateTempValue.Year) * 12 +
lastDateTempValue.Month - lastCurrentDateTempValue.Month);
Values = Values.Append(evoKaskoSum).ToArray();
Dates = Dates.Append(currentDateTempColumn.Values.Last().AddDays(1)).ToArray();
}
}
public void PostCheck()
{
if (Values.Length != Dates.Length)
throw new AppException(
$"Ошибка во время расчета столбца {GetType().Name}: не совпадает длина массива значений");
}
}

View File

@ -249,11 +249,17 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
return new ManagerResult
{
PostValues = postValues,
@ -308,6 +314,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -204,6 +204,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -254,6 +259,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -198,6 +198,11 @@ public static partial class CalculateManager
var nextPiColumn = new PIColumn(61, nextCashflowMSFOFinal2Column, nextCashflowMSFOWithCFColumn, preparedValues);
nextPiColumn.ComputeValues();
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
return new ManagerResult
{
PostValues = postValues,
@ -238,6 +243,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -206,6 +206,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -256,6 +261,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -207,6 +207,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -257,6 +262,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -193,6 +193,11 @@ public static partial class CalculateManager
var nextPiColumn = new PIColumn(61, nextCashflowMSFOFinal2Column, nextCashflowMSFOWithCFColumn, preparedValues);
nextPiColumn.ComputeValues();
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
return new ManagerResult
{
PostValues = postValues,
@ -233,6 +238,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -298,6 +298,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -363,6 +368,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -253,6 +253,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -312,6 +317,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn,
}
};
}

View File

@ -218,6 +218,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -271,6 +276,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn
}
};
}

View File

@ -192,6 +192,11 @@ public static partial class CalculateManager
* NEXT
*/
var nextCashflowMSFOWthtBonusColumn = new CashflowMSFOWthtBonusColumn();
nextCashflowMSFOWthtBonusColumn.ComputeValues(nextValues, preparedValues, nextSumColumn, nextTlmCostColumn,
nextSubsidyExpensesColumn, nextNSIBBruttoGrColumn, nextTableInsurance, nextDateTempColumn,
nextTlmDateColumn, currentDateTempColumn);
var postValues = new v2.PostValues(preparedValues);
postValues.ComputeContractEconomy(nextCashflowMSFOColumn, nextCreditColumn);
postValues.ComputeContractEconomyWithVAT(nextCreditVATColumn);
@ -237,6 +242,7 @@ public static partial class CalculateManager
nextVATRecoverableColumn,
nextCashflowMSFOWithCFColumn,
nextPiColumn,
nextCashflowMSFOWthtBonusColumn = nextCashflowMSFOWthtBonusColumn
}
};
}