merge branch release/dyn-4487_cashflow-msfo-wthtt-bonus-column
This commit is contained in:
parent
cfc2948b7d
commit
d9612bffd9
@ -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);
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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}: не совпадает длина массива значений");
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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,
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -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
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user