101 lines
4.3 KiB
C#
101 lines
4.3 KiB
C#
using System;
|
|
using EvoCalculator.Core.Base.Columns;
|
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
|
|
|
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)
|
|
{
|
|
_constants = new Constants.Calculation();
|
|
}
|
|
|
|
public override void ComputeBaseCost(BaseColumn<decimal> kaskoNmperGrColumn, BaseColumn<decimal> tlmGrColumn,
|
|
BaseColumn<decimal> gpsGrColumn)
|
|
{
|
|
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.InsuranceEvoKasko / 12 * _preparedValues.Nmper +
|
|
_preparedValues.InsuranceBonusLoss / 12 * _preparedValues.Nmper) *
|
|
(decimal) _preparedValues.Leasing0K +
|
|
_preparedValues.NsibBrutto;
|
|
}
|
|
|
|
public void ComputeContractEconomyWithVAT(BaseColumn<decimal> creditVATColumn)
|
|
{
|
|
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;
|
|
}
|
|
} |