2023-07-28 10:31:19 +03:00

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;
}
}