78 lines
2.7 KiB
C#
78 lines
2.7 KiB
C#
using System;
|
|
using System.Linq;
|
|
using EvoCalculator.Core.Base.Columns;
|
|
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
|
|
|
namespace EvoCalculator.Core.Calculation.v1;
|
|
|
|
public class PostValues
|
|
{
|
|
protected PreparedValues _preparedValues;
|
|
|
|
public decimal BaseCost { get; set; }
|
|
public decimal BonusBase { get; set; }
|
|
public decimal BonusResult { get; set; }
|
|
public double NPVNI { get; set; }
|
|
public decimal PriceUP { get; set; }
|
|
public double PriceUP_PR { get; set; }
|
|
public decimal PriceUP_Year { get; set; }
|
|
public double PriceUP_Year_PR { get; set; }
|
|
|
|
|
|
public PostValues(PreparedValues preparedValues)
|
|
{
|
|
_preparedValues = preparedValues;
|
|
}
|
|
|
|
|
|
public virtual void ComputeBaseCost(BaseColumn<decimal> kaskoNmperGrColumn,
|
|
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
|
|
{
|
|
BaseCost = (_preparedValues.PlPrice + _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) *
|
|
(decimal)_preparedValues.Leasing0K +
|
|
_preparedValues.NsibBrutto;
|
|
}
|
|
|
|
public void ComputeBonusBase(BaseColumn<decimal> kaskoBonusGrSumColumn)
|
|
{
|
|
BonusBase = _preparedValues.PlPrice + _preparedValues.InsuranceOsago +
|
|
Math.Abs(kaskoBonusGrSumColumn.Values[0]) -
|
|
_preparedValues.Discount - _preparedValues.ComissionRub - _preparedValues.FirstPaymentSum;
|
|
}
|
|
|
|
public void ComputeBonusResult(BaseColumn<decimal> npvBonusExpensesColumn)
|
|
{
|
|
BonusResult = Math.Abs(npvBonusExpensesColumn.Values[0]) -
|
|
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)_preparedValues.SalaryRate /
|
|
(decimal)(1 + _preparedValues.SalaryRate);
|
|
}
|
|
|
|
public void ComputeNPVNI(BaseColumn<decimal> npvColumn)
|
|
{
|
|
NPVNI = npvColumn.Values.Sum(x => (double)x) / (double)_preparedValues.NpvBase;
|
|
}
|
|
|
|
public void ComputePriceUP(BaseColumn<decimal> sumColumn)
|
|
{
|
|
PriceUP = sumColumn.Values.Skip(1).Sum(x => x) - _preparedValues.PriceUpTotal;
|
|
}
|
|
|
|
public void ComputePriceUP_PR()
|
|
{
|
|
PriceUP_PR = (double)PriceUP / (double)_preparedValues.PriceUpTotal;
|
|
}
|
|
|
|
public void ComputePriceUP_Year()
|
|
{
|
|
PriceUP_Year = PriceUP * 12 / _preparedValues.Nmper;
|
|
}
|
|
|
|
public void ComputePriceUP_Year_PR()
|
|
{
|
|
PriceUP_Year_PR = (double)PriceUP_Year / (double)_preparedValues.PriceUpTotal;
|
|
}
|
|
} |