merge release/dyn-1223_sales-management-bonuses
This commit is contained in:
parent
c39290a5da
commit
75f8296755
@ -1,4 +1,5 @@
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns;
|
||||
@ -10,14 +11,17 @@ public class ExtraBonusSumColumn : BaseColumnWithSum
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
|
||||
PostValues postValues)
|
||||
PostValues postValues, Constants.Calculation constants)
|
||||
{
|
||||
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan
|
||||
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan && preparedValues.BonusCoefficient == 1.0
|
||||
? -1 * postValues.BonusBase *
|
||||
(decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
|
||||
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) *
|
||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
|
||||
: 0;
|
||||
if (Math.Abs(Values[2]) < constants.MinBonus)
|
||||
Values[2] = 0;
|
||||
|
||||
Values[0] = Sum;
|
||||
}
|
||||
}
|
||||
@ -211,7 +211,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
|
||||
@ -211,7 +211,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
|
||||
@ -11,15 +11,16 @@ public class NPVBonusExpensesColumn : BaseColumnWithSum
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, PostValues postValues)
|
||||
{
|
||||
{
|
||||
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
|
||||
(decimal) (1 + preparedValues.SalaryRate);
|
||||
(decimal) (1 + preparedValues.SalaryRate) * (decimal) preparedValues.MarketRate *
|
||||
(decimal) preparedValues.DistrictRate;
|
||||
|
||||
Values[2] = preparedValues.BonusFix > 0
|
||||
? -preparedValues.BonusFix
|
||||
: -1 * postValues.BonusBase * Convert.ToDecimal(preparedValues.Bonus) *
|
||||
(decimal) (1 + preparedValues.SalaryRate) *
|
||||
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
|
||||
Values[2] = -(preparedValues.BonusFix > 0
|
||||
? preparedValues.BonusFix * (decimal) (1 + preparedValues.SalaryRate)
|
||||
: postValues.BonusBase * Convert.ToDecimal(preparedValues.Bonus) *
|
||||
(decimal) (1 + preparedValues.SalaryRate) * (decimal) preparedValues.MarketRate *
|
||||
(decimal) preparedValues.DistrictRate);
|
||||
|
||||
|
||||
for (var i = 3; i < Values.Length; i++) Values[i] = 0;
|
||||
|
||||
@ -225,7 +225,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
|
||||
@ -224,7 +224,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
|
||||
@ -0,0 +1,19 @@
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v3.Columns;
|
||||
|
||||
public class DirectorBonusSumColumn : BaseColumnWithSum
|
||||
{
|
||||
public DirectorBonusSumColumn(int count) : base(count)
|
||||
{
|
||||
}
|
||||
|
||||
public void ComputeValues(PreparedValues preparedValues, PostValues postValues)
|
||||
{
|
||||
Values[2] = -1 * (postValues.DirectorBonus + postValues.DirectorExtraBonus + preparedValues.DirectorBonusNsib +
|
||||
preparedValues.RegionalDirectorBonusNsib + postValues.RegionalDirectorBonus +
|
||||
postValues.RegionalDirectorExtraBonus) * (decimal) (1 + preparedValues.SalaryRate);
|
||||
Values[0] = Sum;
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,7 @@ using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
|
||||
using CashflowLeasingColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowLeasingColumn;
|
||||
using CashflowMSFOColumnVT2 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT2;
|
||||
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
|
||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v2.Columns.DirectorBonusSumColumn;
|
||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
|
||||
using ExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.ExpensesColumn;
|
||||
using GPS_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.GPS_GrColumn;
|
||||
using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperGrColumn;
|
||||
@ -232,7 +232,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
@ -242,6 +242,11 @@ public static partial class CalculateManager
|
||||
|
||||
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
|
||||
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
|
||||
|
||||
postValues.ComputeDirectorBonus();
|
||||
postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
|
||||
postValues.ComputeRegionalDirectorBonus();
|
||||
postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
|
||||
|
||||
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
|
||||
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
|
||||
|
||||
@ -10,7 +10,7 @@ using CashflowColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowColumn;
|
||||
using CashflowLeasingColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowLeasingColumn;
|
||||
using CashflowMSFOColumnVT1 = EvoCalculator.Core.Calculation.v2.Columns.CashflowMSFOColumnVT1;
|
||||
using CashflowNPVColumn = EvoCalculator.Core.Calculation.v2.Columns.CashflowNPVColumn;
|
||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v2.Columns.DirectorBonusSumColumn;
|
||||
using DirectorBonusSumColumn = EvoCalculator.Core.Calculation.v3.Columns.DirectorBonusSumColumn;
|
||||
using ExpensesColumn = EvoCalculator.Core.Calculation.v2.Columns.ExpensesColumn;
|
||||
using GPS_GrColumn = EvoCalculator.Core.Calculation.v2.Columns.GPS_GrColumn;
|
||||
using KaskoNmperGrColumn = EvoCalculator.Core.Calculation.v2.Columns.KaskoNmperGrColumn;
|
||||
@ -231,7 +231,7 @@ public static partial class CalculateManager
|
||||
sumRepaymentColumn.PostCheck();
|
||||
|
||||
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
|
||||
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues, constants);
|
||||
|
||||
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
|
||||
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
|
||||
@ -242,6 +242,11 @@ public static partial class CalculateManager
|
||||
var npvFinalColumn = new NPVFinalColumn(maxColumnLength, dateTempColumn);
|
||||
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
|
||||
|
||||
postValues.ComputeDirectorBonus();
|
||||
postValues.ComputeDirectorExtraBonus(cashflowMsfoColumn);
|
||||
postValues.ComputeRegionalDirectorBonus();
|
||||
postValues.ComputeRegionalDirectorExtraBonus(cashflowMsfoColumn);
|
||||
|
||||
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
|
||||
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
|
||||
|
||||
|
||||
@ -7,18 +7,26 @@ namespace EvoCalculator.Core.Calculation.v3;
|
||||
public class PostValues : v2.PostValues
|
||||
{
|
||||
public decimal ContractEconomyWithVAT;
|
||||
public decimal DirectorBonus;
|
||||
public decimal DirectorExtraBonus;
|
||||
public decimal RegionalDirectorBonus;
|
||||
public decimal RegionalDirectorExtraBonus;
|
||||
private readonly Constants.Calculation _constants;
|
||||
|
||||
public PostValues(PreparedValues preparedValues) : base(preparedValues)
|
||||
public PostValues(PreparedValues _preparedValues) : base(_preparedValues)
|
||||
{
|
||||
_constants = new Constants.Calculation();
|
||||
}
|
||||
|
||||
public override void ComputeBaseCost(BaseColumn<decimal> kaskoNmperGrColumn, BaseColumn<decimal> tlmGrColumn,
|
||||
BaseColumn<decimal> gpsGrColumn)
|
||||
{
|
||||
BaseCost = (_preparedValues.PlPrice + _preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
|
||||
BaseCost = (_preparedValues.PlPrice - _preparedValues.ImportProgramSum + _preparedValues.InsuranceOsago +
|
||||
Math.Abs(kaskoNmperGrColumn.Values[0])
|
||||
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + _preparedValues.Rats +
|
||||
_preparedValues.Registration + _preparedValues.TrackerCost +
|
||||
_preparedValues.TLMCost + _preparedValues.TransportTaxGr + _preparedValues.InsuranceFinGAPNmper) *
|
||||
_preparedValues.TLMCost + _preparedValues.TransportTaxGr +
|
||||
_preparedValues.InsuranceFinGAPNmper) *
|
||||
(decimal) _preparedValues.Leasing0K +
|
||||
_preparedValues.NsibBrutto;
|
||||
}
|
||||
@ -27,4 +35,65 @@ public class PostValues : v2.PostValues
|
||||
{
|
||||
ContractEconomyWithVAT = this.ContractEconomy + creditVATColumn.GetValue(0);
|
||||
}
|
||||
|
||||
public void ComputeDirectorBonus()
|
||||
{
|
||||
if ((_preparedValues.DirectorBonusFix > 0 && _preparedValues.DirectorBonus > 0 &&
|
||||
_preparedValues.BonusCoefficient < 1)
|
||||
|| (_preparedValues.DirectorBonusFix > 0 && _preparedValues.DirectorBonus == 0))
|
||||
{
|
||||
DirectorBonus = _preparedValues.DirectorBonusFix;
|
||||
}
|
||||
else
|
||||
{
|
||||
DirectorBonus = this.BonusBase * (decimal) _preparedValues.DirectorBonus *
|
||||
(decimal) _preparedValues.BonusCoefficient *
|
||||
(decimal) _preparedValues.MarketRate * (decimal) _preparedValues.DistrictRate;
|
||||
}
|
||||
}
|
||||
|
||||
public void ComputeDirectorExtraBonus(BaseColumnWithNominal cashflowMSFOColumn)
|
||||
{
|
||||
if (cashflowMSFOColumn.Nominal >= _preparedValues.IRR_MSFO_Plan && _preparedValues.BonusCoefficient == 1.0)
|
||||
{
|
||||
DirectorExtraBonus = this.BonusBase *
|
||||
(decimal) (cashflowMSFOColumn.Nominal / _preparedValues.IRR_MSFO_Plan - 1) *
|
||||
(decimal) _preparedValues.DirectorExtraBonus * (decimal) _preparedValues.MarketRate *
|
||||
(decimal) _preparedValues.DistrictRate;
|
||||
|
||||
if (DirectorExtraBonus < _constants.MinBonus)
|
||||
DirectorExtraBonus = 0;
|
||||
}
|
||||
else
|
||||
DirectorExtraBonus = 0;
|
||||
}
|
||||
|
||||
public void ComputeRegionalDirectorBonus()
|
||||
{
|
||||
if (_preparedValues.RegionalDirectorBonusFix > 0)
|
||||
{
|
||||
RegionalDirectorBonus = _preparedValues.RegionalDirectorBonusFix;
|
||||
}
|
||||
else
|
||||
{
|
||||
RegionalDirectorBonus = this.BonusBase * (decimal) _preparedValues.RegionalDirectorBonus *
|
||||
(decimal) _preparedValues.MarketRate * (decimal) _preparedValues.DistrictRate;
|
||||
}
|
||||
}
|
||||
|
||||
public void ComputeRegionalDirectorExtraBonus(BaseColumnWithNominal cashflowMSFOColumn)
|
||||
{
|
||||
if (cashflowMSFOColumn.Nominal >= _preparedValues.IRR_MSFO_Plan && _preparedValues.BonusCoefficient == 1.0)
|
||||
{
|
||||
RegionalDirectorExtraBonus = this.BonusBase *
|
||||
(decimal) (cashflowMSFOColumn.Nominal / _preparedValues.IRR_MSFO_Plan - 1) *
|
||||
(decimal) _preparedValues.RegionalDirectorExtraBonus *
|
||||
(decimal) _preparedValues.MarketRate *
|
||||
(decimal) _preparedValues.DistrictRate;
|
||||
if (RegionalDirectorExtraBonus < _constants.MinBonus)
|
||||
RegionalDirectorExtraBonus = 0;
|
||||
}
|
||||
else
|
||||
RegionalDirectorExtraBonus = 0;
|
||||
}
|
||||
}
|
||||
@ -11,4 +11,5 @@ public class Calculation
|
||||
public double IncomeTaxValue = 0.2;
|
||||
public int MaxOnePolicePeriod = 16;
|
||||
public double VatValue = 0.2;
|
||||
public decimal MinBonus = 100;
|
||||
}
|
||||
@ -45,6 +45,7 @@ public class PreparedValues
|
||||
public decimal PlPriceWithVAT { get; set; }
|
||||
public decimal PlPriceVAT { get; set; }
|
||||
public decimal Discount { get; set; }
|
||||
public decimal ImportProgramSum { get; set; }
|
||||
public decimal AcceptSum { get; set; }
|
||||
public string PlTypeId { get; set; }
|
||||
public string BrandId { get; set; }
|
||||
@ -138,6 +139,15 @@ public class PreparedValues
|
||||
public double IRR_MSFO_Plan { get; set; }
|
||||
public double ExtraBonus { get; set; }
|
||||
public double DirectorBonus { get; set; }
|
||||
public decimal DirectorBonusFix { get; set; }
|
||||
public double DirectorExtraBonus { get; set; }
|
||||
public decimal RegionalDirectorBonusFinGAP { get; set; }
|
||||
public double RegionalDirectorBonus { get; set; }
|
||||
public decimal RegionalDirectorBonusFix { get; set; }
|
||||
public double RegionalDirectorExtraBonus { get; set; }
|
||||
public double BonusCoefficient { get; set; }
|
||||
public double ProfitExpected { get; set; } = 0;
|
||||
|
||||
|
||||
public decimal DogCredit => PlPrice +
|
||||
(Insurance + Rats + Registration + TrackerCost + TLMCost + TransportTaxGr) *
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user