2022-04-06 10:49:33 +03:00

78 lines
2.6 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;
public decimal BonusBase;
public decimal BonusResult;
public double NPVNI;
public decimal PriceUP;
public double PriceUP_PR;
public decimal PriceUP_Year;
public double PriceUP_Year_PR;
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;
}
}