merge release/nsib-credit-v2

This commit is contained in:
Chika 2021-09-09 11:37:45 +03:00
parent 094f752a32
commit fb7941ea2e
206 changed files with 6233 additions and 618 deletions

View File

@ -1,14 +1,19 @@
# Stage 1
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o /app
# Stage 2
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS final
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
COPY --from=build /app .
EXPOSE 5000
ENTRYPOINT ["dotnet", "EvoCalculator.Core.dll"]
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["EvoCalculator.Core/EvoCalculator.Core.csproj", "EvoCalculator.Core/"]
RUN dotnet restore "EvoCalculator.Core/EvoCalculator.Core.csproj"
COPY . .
WORKDIR "/src/EvoCalculator.Core"
RUN dotnet build "EvoCalculator.Core.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "EvoCalculator.Core.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "EvoCalculator.Core.dll"]

View File

@ -1,6 +1,6 @@
using System;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Base.Columns
{
public abstract class BaseColumn<T>
{
@ -13,12 +13,9 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public T GetValue(int i)
{
if (i < Values.Length)
{
return Values[i];
}
if (i < Values.Length) return Values[i];
return (T) Convert.ChangeType(0.0, typeof(T));
return (T)Convert.ChangeType(0.0, typeof(T));
}
}
}

View File

@ -0,0 +1,11 @@
namespace EvoCalculator.Core.Base.Columns
{
public abstract class BaseColumnForGoalSeek<T> : BaseColumn<T>
{
protected BaseColumnForGoalSeek(int count) : base(count)
{
}
public abstract void ComputeValues(T x);
}
}

View File

@ -0,0 +1,13 @@
using System;
namespace EvoCalculator.Core.Base.Columns
{
public class BaseColumnWithNominal : BaseColumnWithXIRR
{
protected BaseColumnWithNominal(int count, BaseColumn<DateTime> dateTempColumn) : base(count, dateTempColumn)
{
}
public double Nominal => (Math.Pow(IRR + 1, (double)1 / 12) - 1) * 12;
}
}

View File

@ -1,6 +1,6 @@
using System.Linq;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Base.Columns
{
public class BaseColumnWithSum : BaseColumn<decimal>
{

View File

@ -2,11 +2,11 @@
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Base.Columns
{
public class BaseColumnWithXIRR : BaseColumn<decimal>
{
public BaseColumnWithXIRR(int count, DateTempColumn dateTempColumn) : base(count)
public BaseColumnWithXIRR(int count, BaseColumn<DateTime> dateTempColumn) : base(count)
{
Dates = dateTempColumn.Values;
}

View File

@ -2,13 +2,13 @@
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.v1.Columns
namespace EvoCalculator.Core.Base.Columns
{
public class BaseColumnWithXNPV : BaseColumn<decimal>
{
private readonly double rate;
public BaseColumnWithXNPV(int count, DateTempColumn dateTempColumn, double rate) : base(count)
public BaseColumnWithXNPV(int count, BaseColumn<DateTime> dateTempColumn, double rate) : base(count)
{
Dates = dateTempColumn.Values;
this.rate = rate;

View File

@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>default</LangVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,4 @@
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Base.PostValues
{
public class BasePostValue<T>
{

View File

@ -1,16 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TargetFramework>net5.0</TargetFramework>
<LangVersion>default</LangVersion>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Base\EvoCalculator.Core.Base.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Tools\EvoCalculator.Core.Tools.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup>
</Project>

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class AcceptInsuranceColumn : BaseColumnWithSum
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,13 +0,0 @@
using System;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class BaseColumnWithNominal : BaseColumnWithXIRR
{
protected BaseColumnWithNominal(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public double Nominal => (Math.Pow(IRR + 1, (double) 1 / 12) - 1) * 12;
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,5 +1,5 @@
using System;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
@ -7,18 +7,36 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class BaseCashflowMSFOColumn : BaseColumnWithNominal
{
protected readonly PostValues _postValues;
protected readonly PreparedValues _preparedValues;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected SumColumn _sumColumn;
protected readonly NegativeCashflowColumn _negativeCashflowColumn;
protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn;
protected readonly TLM_GrColumn _tlmGrColumn;
protected readonly GPS_GrColumn _gpsGrColumn;
protected readonly NPVBonusExpensesColumn _npvBonusExpensesColumn;
protected readonly AgentComissionExpensesColumn _agentComissionExpensesColumn;
protected readonly BaseColumn<decimal> _gpsGrColumn;
protected readonly NegativeCashflowColumn _negativeCashflowColumn;
protected readonly BaseColumnWithSum _npvBonusExpensesColumn;
protected readonly NSIBBruttoGrColumn _nsibBruttoGrColumn;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
protected readonly BaseColumn<decimal> _tlmGrColumn;
protected SumColumn _sumColumn;
protected void FillValues()
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn)
{
_postValues = postValues;
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_sumColumn = sumColumn;
_negativeCashflowColumn = negativeCashflowColumn;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
_tlmGrColumn = tlmGrColumn;
_gpsGrColumn = gpsGrColumn;
_npvBonusExpensesColumn = npvBonusExpensesColumn;
_agentComissionExpensesColumn = agentComissionExpensesColumn;
}
protected virtual void FillValues()
{
Values[0] = -_preparedValues.AcquisitionExpenses;
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
@ -39,36 +57,14 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
if (additionalData.MinCashflowMSFONominal != null)
if (Nominal < additionalData.MinCashflowMSFONominal / 100)
{
throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
}
if (additionalData.MaxCashflowMSFONominal != null)
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
{
throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}");
}
}
}
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn)
{
_postValues = postValues;
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_sumColumn = sumColumn;
_negativeCashflowColumn = negativeCashflowColumn;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
_tlmGrColumn = tlmGrColumn;
_gpsGrColumn = gpsGrColumn;
_npvBonusExpensesColumn = npvBonusExpensesColumn;
_agentComissionExpensesColumn = agentComissionExpensesColumn;
}
}
}

View File

@ -1,6 +1,5 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
@ -9,6 +8,16 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
{
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
@ -33,15 +42,5 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , focusPercentage: 50
));
}
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn) : base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
}
}

View File

@ -1,16 +1,10 @@
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public void ComputeValues()
{
FillValues();
}
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues postValues,
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
@ -19,5 +13,10 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
}
public void ComputeValues()
{
FillValues();
}
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,7 +9,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(PreparedValues preparedValues, DirectorBonusSumColumn directorBonusSumColumn,
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> directorBonusSumColumn,
CashflowMSFOFinalColumn cashflowMsfoFinalColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -10,7 +11,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn,
DirectorBonusSumColumn directorBonusSumColumn)
BaseColumn<decimal> directorBonusSumColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvFinalColumn.GetValue(1);

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -9,7 +10,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
}
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
CashflowNPVColumn cashflowNpvColumn)
BaseColumn<decimal> cashflowNpvColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvColumn.GetValue(1);

View File

@ -1,4 +1,5 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using TridentGoalSeek;
@ -22,14 +23,6 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
return Convert.ToDecimal(IRR);
}
private void FillValues(decimal x)
{
Values[1] = _NSIBBruttoGrColumn.Values[1] - x;
for (var i = 2; i < Values.Length; i++)
Values[i] = _NSIBBruttoGrColumn.Values[i] -
x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1];
}
public void ComputeValues(decimal requiredValue)
{
var goalSeek = new GoalSeek(this);
@ -43,5 +36,13 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , trimFinalInputValue: true
));
}
private void FillValues(decimal x)
{
Values[1] = _NSIBBruttoGrColumn.Values[1] - x;
for (var i = 2; i < Values.Length; i++)
Values[i] = _NSIBBruttoGrColumn.Values[i] -
x * _NSIBExpensesColumn.Values[i] / _NSIBExpensesColumn.Values[1];
}
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns

View File

@ -1,4 +1,5 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
@ -8,11 +9,11 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public DateTempColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
Values[0] = preparedValues.PaymentDateNew != null && preparedValues.DeliveryTime == 100000001
? preparedValues.PaymentDateNew.Value.AddMonths(-1)
: preparedValues.DogDate;
Values[1] = Values[0];
Values[2] = preparedValues.PaymentDateNew ?? Values[1].AddMonths(1);

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class DeprecationColumn : BaseColumnWithSum
{

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
@ -14,7 +15,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.BalanceHolder == 100000001
? (decimal) preparedValues.DeprecationTime *
? (decimal)preparedValues.DeprecationTime *
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
: 0;

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,4 @@
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
@ -9,11 +9,11 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues postValues)
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -postValues.BonusBase.Value * (decimal) preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
Values[2] = -postValues.BonusBase.Value * (decimal)preparedValues.DirectorBonus *
(decimal)(1 + preparedValues.SalaryRate) *
(decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
Values[0] = Sum;
}
}

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class ExpensesColumn : BaseColumnWithSum
{

View File

@ -1,4 +1,4 @@
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
@ -10,13 +10,13 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
}
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
PostValues postValues)
PostValues.PostValues postValues)
{
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan
? -1 * postValues.BonusBase.Value *
(decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate
(decimal)(cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
(decimal)preparedValues.ExtraBonus * (decimal)(1 + preparedValues.SalaryRate) *
(decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate
: 0;
Values[0] = Sum;
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)

View File

@ -1,4 +1,5 @@
using System;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,11 +9,11 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(DateTempColumn dateTempColumn, CashflowColumn cashflowColumn)
public void ComputeValues(DateTempColumn dateTempColumn, BaseColumnWithXIRR cashflowColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = Math.Pow(1 + cashflowColumn.IRR,
(double) (dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1;
(double)(dateTempColumn.Values[i] - dateTempColumn.Values[i - 1]).Days / 365) - 1;
}
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,5 +1,6 @@
using System;
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -13,17 +14,15 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
for (var i = 1; i < Values.Skip(1).ToList().Count; i++)
if (Values[i] > sumColumn.Values[i])
{
throw new Exception(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
}
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
{
for (var i = 2; i < Values.Length; i++)
Values[i] = niColumn.Values[i - 1] * (decimal) irrGrColumn.Values[i];
Values[i] = niColumn.Values[i - 1] * (decimal)irrGrColumn.Values[i];
}
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,15 +9,15 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(PreparedValues preparedValues, KaskoNmperGrColumn kaskoNmperGrColumn)
public void ComputeValues(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++)
if (i < 13)
Values[i] = kaskoNmperGrColumn.Values[i] * 1;
else if (i <= 24)
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7;
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal)0.7;
else
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5;
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal)0.5;
Values[0] = Sum;
}

View File

@ -1,4 +1,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,30 +10,29 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
rate)
{
}
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
for (var i = 1; i < Values.Length; i += 12)
if (i <= preparedValues.NmperInsurance)
{
if (preparedValues.NmperInsurance - i >= 3)
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
Values[1] = preparedValues.InsuranceKasko;
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
{
if (preparedValues.NmperInsurance - i < constants.MaxOnePolicePeriod - 1)
Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1);
else
Values[i] = preparedValues.InsuranceKasko;
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
else
{
Values[i] = 0;
}
}
}
Values[0] = -XNPV;
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,11 +9,12 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(PreparedValues preparedValues, CashflowColumn cashflowColumn, IRRGrColumn irrGrColumn)
public void ComputeValues(PreparedValues preparedValues, BaseColumnWithXIRR cashflowColumn,
IRRGrColumn irrGrColumn)
{
Values[1] = preparedValues.NiAtInception;
for (var i = 2; i < Values.Length; i++)
Values[i] = Values[i - 1] + Values[i - 1] * (decimal) irrGrColumn.Values[i] - cashflowColumn.Values[i];
Values[i] = Values[i - 1] + Values[i - 1] * (decimal)irrGrColumn.Values[i] - cashflowColumn.Values[i];
}
}
}

View File

@ -1,5 +1,5 @@
using System;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
@ -10,17 +10,17 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues postValues)
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
(decimal)(1 + preparedValues.SalaryRate) *
(decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate;
(decimal)(1 + preparedValues.SalaryRate) *
(decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
for (var i = 3; i < Values.Length; i++) Values[i] = 0;

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVColumn : BaseColumnWithNominal
{
@ -6,10 +8,10 @@
{
}
public void ComputeValues(CashflowNPVColumn cashflowNpvColumn, NPVWeightColumn npvWeightColumn)
public void ComputeValues(BaseColumn<decimal> cashflowNpvColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
Values[i] = cashflowNpvColumn.GetValue(i) * (decimal)npvWeightColumn.GetValue(i);
}
}
}

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVFinal2Column : BaseColumnWithNominal
{
@ -9,9 +11,7 @@
public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
{
Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
}
Values[i] = cashflowNpvFinal2Column.GetValue(i) * (decimal)npvWeightColumn.GetValue(i);
}
}
}

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NPVFinalColumn : BaseColumnWithNominal
{
@ -9,7 +11,7 @@
public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn)
{
for (var i = 0; i < Values.Length; i++)
Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal) npvWeightColumn.GetValue(i);
Values[i] = cashflowNpvFinalColumn.GetValue(i) * (decimal)npvWeightColumn.GetValue(i);
}
}
}

View File

@ -1,4 +1,5 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class NegativeCashflowColumn : BaseColumnWithSum
{
@ -6,7 +8,7 @@
{
}
public void ComputeValues(KaskoNmperGrColumn kaskoNmperGrColumn)
public void ComputeValues(BaseColumn<decimal> kaskoNmperGrColumn)
{
for (var i = 1; i < Values.Length; i++) Values[i] = -kaskoNmperGrColumn.Values[i];

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class RevenueColumn : BaseColumn<decimal>
{
@ -11,10 +13,7 @@
{
if (nsibBruttoGrColumn.Sum == 0)
{
for (var i = 0; i < Values.Length; i++)
{
Values[i] = 0;
}
for (var i = 0; i < Values.Length; i++) Values[i] = 0;
}
else
{

View File

@ -1,26 +1,29 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumColumn : BaseColumnWithXIRR
{
private readonly PercentPaymentColumn _percentPaymentColumn;
private readonly PreparedValues _preparedValues;
private readonly PostValues _postValues;
protected readonly PercentPaymentColumn _percentPaymentColumn;
protected readonly PostValues.PostValues _postValues;
protected readonly PreparedValues _preparedValues;
protected readonly BaseColumn<decimal> _nsibBruttoGrColumn;
public SumColumn(int count, DateTempColumn dateTempColumn
, PreparedValues preparedValues
, PercentPaymentColumn percentPaymentColumn, PostValues postValues) : base(count, dateTempColumn)
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues, BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn)
{
_preparedValues = preparedValues;
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
_nsibBruttoGrColumn = nsibBruttoGrColumn;
}
public void ComputeValues(decimal x)
public virtual void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value;
Values[1] = _preparedValues.FirstPaymentSum;
@ -32,12 +35,19 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
{
throw new Exception(
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
for (int i = 2; i < Values.Length; i++)
{
if (GetValue(i) < _nsibBruttoGrColumn.GetValue(i))
{
throw new Exception(
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
}
}
}
}

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -8,7 +9,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
}
public void ComputeValues(TLM_GrColumn tlmGrColumn)
public void ComputeValues(BaseColumn<decimal> tlmGrColumn)
{
const int FIRST_YEAR_NUM = 13;
for (var i = 1; i < Values.Length; i++)

View File

@ -1,4 +1,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues,
@ -19,9 +21,9 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
for (var i = 7; i < Values.Length; i++)
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) *
(decimal) preparedValues.Repayment;
sumCurrentTlmColumn.Values[i] * (1 + (decimal)calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal)calculation.VatValue) *
(decimal)preparedValues.Repayment;
}
}
}

View File

@ -1,30 +1,15 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class BaseSumWithVATColumn : BaseColumnWithSum
{
protected readonly PreparedValues _preparedValues;
protected readonly Constants.Calculation _constants;
protected readonly PreparedValues _preparedValues;
protected SumColumn _sumColumn;
protected void FillValues()
{
Values[0] = 0;
Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0
? _preparedValues.FirstPaymentWithNdsAbs
: (decimal) (1 + _constants.VatValue) * _sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = (decimal) (1 + _constants.VatValue) * _sumColumn.Values[i];
Values[0] = Sum;
}
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
}
protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count)
{
@ -32,5 +17,22 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
_preparedValues = preparedValues;
_constants = constants;
}
protected void FillValues()
{
Values[0] = 0;
Values[1] = _preparedValues.FirstPaymentWithNdsAbs > 0
? _preparedValues.FirstPaymentWithNdsAbs
: (decimal)(1 + _constants.VatValue) * _sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++)
Values[i] = (decimal)(1 + _constants.VatValue) * _sumColumn.Values[i];
Values[0] = Sum;
}
public void PostCheck()
{
new CheckTools().CheckColumnForZeroValue(Values);
}
}
}

View File

@ -4,14 +4,14 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumWithVATColumnVT1 : BaseSumWithVATColumn
{
public void ComputeValues()
{
FillValues();
}
public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants)
{
}
public void ComputeValues()
{
FillValues();
}
}
}

View File

@ -1,6 +1,5 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
@ -9,8 +8,18 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek
{
private PercentPaymentColumn _percentPaymentColumn;
private PostValues _postValues;
private readonly PercentPaymentColumn _percentPaymentColumn;
private readonly PostValues.PostValues _postValues;
public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn,
PostValues.PostValues postValues) : base(
count, sumColumn,
preparedValues, constants)
{
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
}
public decimal Calculate(decimal inputVariable)
{
@ -36,14 +45,5 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , focusPercentage: 50
));
}
public SumWithVATColumnVT2(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants, PercentPaymentColumn percentPaymentColumn, PostValues postValues) : base(
count, sumColumn,
preparedValues, constants)
{
_percentPaymentColumn = percentPaymentColumn;
_postValues = postValues;
}
}
}

View File

@ -1,4 +1,5 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns
{

View File

@ -1,4 +1,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)

View File

@ -1,4 +1,6 @@
namespace EvoCalculator.Core.Calculation.v1.Columns
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
public class TaxColumn : BaseColumnWithSum
{
@ -15,18 +17,18 @@
GPSExpensesColumn gpsExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
Values[i] = (decimal)constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
);

View File

@ -1,4 +1,5 @@
using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns

View File

@ -1,4 +1,6 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v1.Columns
{
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck()
{
new CheckTools<decimal>().CheckColumnForZeroValue(Values);
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(Constants.Calculation constants, SumColumn sumColumn, PreparedValues preparedValues)
@ -18,8 +20,8 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
Values[0] = 0;
Values[1] = preparedValues.FirstPaymentNdsAbs > 0
? preparedValues.FirstPaymentNdsAbs
: (decimal) constants.VatValue * sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal) constants.VatValue * sumColumn.Values[i];
: (decimal)constants.VatValue * sumColumn.Values[1];
for (var i = 2; i < Values.Length; i++) Values[i] = (decimal)constants.VatValue * sumColumn.Values[i];
Values[0] = Sum;
}

View File

@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using EvoCalculator.Core.Tools.Validation;
namespace EvoCalculator.Core.Calculation.v1.Managers
namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
{
public static partial class CalculateManager
{
@ -15,15 +15,12 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedData(requestCalculation);
if (validationErrors.Count > 0)
{
return new ManagerResult {Errors = validationErrors};
}
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult {Errors = validationErrors};
var constants = new Constants.Calculation();
var postValues = new PostValues();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
@ -67,11 +64,16 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, dateColumn
, preparedValues
, percentPaymentColumn, postValues);
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var sumWithVatColumn =
new SumWithVATColumnVT2(preparedValues.Nmper + 1, sumColumn, preparedValues, constants,
@ -86,9 +88,6 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var cashflowMsfoColumn = new CashflowMSFOColumnVT2(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);

View File

@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using EvoCalculator.Core.Tools.Validation;
namespace EvoCalculator.Core.Calculation.v1.Managers
namespace EvoCalculator.Core.Calculation.v1.Managers.Calculation
{
public static partial class CalculateManager
{
@ -15,15 +15,13 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedData(requestCalculation);
if (validationErrors.Count > 0)
{
return new ManagerResult {Errors = validationErrors};
}
var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
var constants = new Constants.Calculation();
var postValues = new PostValues();
var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
@ -75,12 +73,14 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, dateColumn
, preparedValues
, percentPaymentColumn, postValues);
, percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
@ -188,7 +188,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);

View File

@ -1,12 +0,0 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
{
public class PriceUP_PR : BasePostValue<double>
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double) postValues.PriceUP.Value / (double) preparedValues.PriceUpTotal;
}
}
}

View File

@ -1,12 +0,0 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
{
public class PriceUP_Year_PR : BasePostValue<double>
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double) postValues.PriceUP_Year.Value / (double) preparedValues.PriceUpTotal;
}
}
}

View File

@ -1,18 +1,19 @@
using System;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class BaseCost : BasePostValue<decimal>
{
public void ComputeValue(PreparedValues preparedValues, KaskoNmperGrColumn kaskoNmperGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn)
public void ComputeValue(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
{
Value = 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.TLMCost + preparedValues.TransportTaxGr * (decimal)preparedValues.Leasing0K +
preparedValues.NsibBrutto;
}
}

View File

@ -1,8 +1,9 @@
using System;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class BonusBase : BasePostValue<decimal>
{

View File

@ -1,16 +1,17 @@
using System;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class BonusResult : BasePostValue<decimal>
{
public void ComputeValue(PreparedValues preparedValues, NPVBonusExpensesColumn npvBonusExpensesColumn)
public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn)
{
Value = Math.Abs(npvBonusExpensesColumn.Values[0]) -
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate /
(decimal) (1 + preparedValues.SalaryRate);
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)preparedValues.SalaryRate /
(decimal)(1 + preparedValues.SalaryRate);
}
}
}

View File

@ -1,14 +1,15 @@
using System.Linq;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class NPVNI : BasePostValue<double>
{
public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn)
{
Value = npvColumn.Values.Sum(x => (double) x) / (double) preparedValues.NpvBase;
Value = npvColumn.Values.Sum(x => (double)x) / (double)preparedValues.NpvBase;
}
}
}

View File

@ -1,17 +1,29 @@
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class PostValues
{
public BaseCost BaseCost;
public BonusBase BonusBase;
public BonusResult BonusResult;
public NPVNI NPVNI;
public PriceUP PriceUP;
public PriceUP_PR PriceUP_PR;
public PriceUP_Year PriceUP_Year;
public PriceUP_Year_PR PriceUP_Year_PR;
public NPVNI NPVNI;
public BonusResult BonusResult;
public object GetValues()
public PostValues()
{
BaseCost = new BaseCost();
BonusBase = new BonusBase();
PriceUP = new PriceUP();
PriceUP_PR = new PriceUP_PR();
PriceUP_Year = new PriceUP_Year();
PriceUP_Year_PR = new PriceUP_Year_PR();
NPVNI = new NPVNI();
BonusResult = new BonusResult();
}
public virtual object GetValues()
{
return new
{
@ -25,17 +37,5 @@
BonusResult = BonusResult.Value
};
}
public PostValues()
{
BaseCost = new BaseCost();
BonusBase = new BonusBase();
PriceUP = new PriceUP();
PriceUP_PR = new PriceUP_PR();
PriceUP_Year = new PriceUP_Year();
PriceUP_Year_PR = new PriceUP_Year_PR();
NPVNI = new NPVNI();
BonusResult = new BonusResult();
}
}
}

View File

@ -1,8 +1,9 @@
using System.Linq;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class PriceUP : BasePostValue<decimal>
{

View File

@ -0,0 +1,13 @@
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class PriceUP_PR : BasePostValue<double>
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double)postValues.PriceUP.Value / (double)preparedValues.PriceUpTotal;
}
}
}

View File

@ -1,6 +1,7 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class PriceUP_Year : BasePostValue<decimal>
{

View File

@ -0,0 +1,13 @@
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.PostValues
{
public class PriceUP_Year_PR : BasePostValue<double>
{
public void ComputeValue(PreparedValues preparedValues, PostValues postValues)
{
Value = (double)postValues.PriceUP_Year.Value / (double)preparedValues.PriceUpTotal;
}
}
}

View File

@ -0,0 +1,22 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowColumn : BaseColumnWithXIRR
{
public CashflowColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.Values[i] + negativeCashflowColumn.Values[i] + subsidyExpensesColumn.GetValue(i);
}
}
}

View File

@ -0,0 +1,29 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowLeasingColumn : BaseColumnWithXIRR
{
public CashflowLeasingColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] - preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.Values[i]
+ negativeCashflowColumn.Values[i]
- nsibBruttoGrColumn.Values[i]
- tlmGrColumn.Values[i]
- gpsGrColumn.Values[i]
+ subsidyExpensesColumn.GetValue(i);
}
}
}

View File

@ -0,0 +1,40 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class BaseCashflowMSFOColumn : EvoCalculator.Core.Calculation.v1.Columns.BaseCashflowMSFOColumn
{
protected readonly SubsidyExpensesColumn _subsidyExpensesColumn;
protected override void FillValues()
{
Values[0] = -_preparedValues.AcquisitionExpenses - _preparedValues.FuelCardSum;
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
_agentComissionExpensesColumn.Values[1] - _preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = _sumColumn.Values[i]
+ _negativeCashflowColumn.Values[i]
- _nsibBruttoGrColumn.Values[i]
- _tlmGrColumn.Values[i]
- _gpsGrColumn.Values[i]
+ _npvBonusExpensesColumn.Values[i]
+ _agentComissionExpensesColumn.Values[i]
+ _subsidyExpensesColumn.Values[i];
}
public BaseCashflowMSFOColumn(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn, BaseColumnWithSum npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn,
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn)
{
_subsidyExpensesColumn = subsidyExpensesColumn;
}
}
}

View File

@ -0,0 +1,48 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek
{
public CashflowMSFOColumnVT1(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
}
public decimal Calculate(decimal inputVariable)
{
_sumColumn.ComputeValues(inputVariable);
FillValues();
return Convert.ToDecimal(Nominal);
}
public void ComputeValues(decimal requiredValue)
{
var NUMBER_OF_LARGE_PERCENTS = _percentPaymentColumn.Values
.Skip(2)
.Take(_percentPaymentColumn.Values.Length - 1)
.Where(x => x >= 10).ToArray().Length;
var goalSeek = new GoalSeek(this);
goalSeek.SeekResult(requiredValue,
new GoalSeekOptions(
startingStabPoint:
(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / NUMBER_OF_LARGE_PERCENTS
, maximumAttempts: 1000
, initialTineSpacing: (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) / _preparedValues.Nmper
// , focusPercentage: 50
));
}
}
}

View File

@ -0,0 +1,24 @@
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn) :
base(count, dateTempColumn, postValues, preparedValues, percentPaymentColumn, sumColumn,
negativeCashflowColumn, nsibBruttoGrColumn, tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, subsidyExpensesColumn)
{
}
public void ComputeValues()
{
FillValues();
}
}
}

View File

@ -0,0 +1,40 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CashflowNPVColumn : BaseColumn<decimal>
{
public CashflowNPVColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn,
TaxColumn taxColumn, NSIBExpensesColumn nsibExpensesColumn, NegativeCashflowColumn negativeCashflowColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
TLMExpensesColumn tlmExpensesColumn, GPSExpensesColumn gpsExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.GetValue(1) + npvBonusExpensesColumn.GetValue(1) +
agentComissionExpensesColumn.GetValue(1) - taxColumn.GetValue(1) +
nsibExpensesColumn.GetValue(1) -
preparedValues.SubsidySum;
for (var i = 2; i < Values.Length; i++)
Values[i] = sumColumn.GetValue(i)
+ negativeCashflowColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
- taxColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ nsibExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i);
}
}
}

View File

@ -0,0 +1,29 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class CreditColumn : BaseColumnWithSum
{
public CreditColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, SumCreditColumn sumCreditColumn)
{
Values[1] = -sumCreditColumn.GetValue(1) * (decimal)preparedValues.LoanRate / 12;
for (var i = 2; i < Values.Length; i++)
{
if (GetValue(i - 1) < 0)
{
Values[i] = -sumCreditColumn.GetValue(i - 1) * (decimal)preparedValues.LoanRate / 12;
}
else
{
Values[i] = 0;
}
}
Values[0] = Sum;
}
}
}

View File

@ -0,0 +1,22 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class DirectorBonusSumColumn : BaseColumnWithSum
{
public DirectorBonusSumColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[2] = -1 * (postValues.BonusBase.Value * (decimal)preparedValues.DirectorBonus *
(decimal)(1 + preparedValues.SalaryRate) *
(decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate
+ preparedValues.DirectorBonusNsib * (decimal)(1 + preparedValues.SalaryRate) +
preparedValues.RegionalDirectorBonusNsib * (decimal)(1 + preparedValues.SalaryRate));
Values[0] = Sum;
}
}
}

View File

@ -0,0 +1,38 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class ExpensesColumn : BaseColumnWithSum
{
public ExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(AgentComissionExpensesColumn agentComissionExpensesColumn,
RatExpensesColumn ratExpensesColumn, TransExpensesColumn transExpensesColumn,
NSIBExpensesColumn nsibExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] =
agentComissionExpensesColumn.Values[i]
+ ratExpensesColumn.Values[i]
+ transExpensesColumn.Values[i]
+ nsibExpensesColumn.Values[i]
+ tlmExpensesColumn.Values[i]
+ gpsExpensesColumn.Values[i]
+ registrExpensesColumn.Values[i]
+ insuranceBonusExpensesColumn.Values[i]
+ comissionBonusExpensesColumn.Values[i]
+ npvBonusExpensesColumn.Values[i]
+ subsidyExpensesColumn.Values[i];
Values[0] = Sum;
}
}
}

View File

@ -0,0 +1,25 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class GPS_GrColumn : BaseColumnWithSum
{
public GPS_GrColumn(int count) : base(count)
{
}
public void PostCheck()
{
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].GpsCostPayment;
Values[0] = -Sum;
}
}
}

View File

@ -0,0 +1,39 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class KaskoNmperGrColumn : BaseColumnWithSum
{
public KaskoNmperGrColumn(int count) : base(count)
{
}
public void PostCheck()
{
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{
if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
Values[1] = preparedValues.InsuranceKasko;
else
{
var InsuranceKaskoMonth = preparedValues.NmperInsurance >= constants.MaxOnePolicePeriod
? preparedValues.InsuranceKasko / 12
: preparedValues.InsuranceKasko / preparedValues.NmperInsurance;
for (var i = 1; i < preparedValues.NmperInsurance; i += 12)
if (i <= preparedValues.NmperInsurance)
{
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
? InsuranceKaskoMonth * 12
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
}
}
Values[0] = -Sum;
}
}
}

View File

@ -0,0 +1,30 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class NPVBonusExpensesColumn : BaseColumnWithSum
{
public NPVBonusExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues)
{
Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal)(1 + preparedValues.SalaryRate);
Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * 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;
Values[0] = Sum;
}
}
}

View File

@ -0,0 +1,18 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class SubsidyExpensesColumn : BaseColumnWithSum
{
public SubsidyExpensesColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues)
{
Values[preparedValues.SubsidyPaymentNumber] = preparedValues.SubsidySum;
Values[0] = Sum;
}
}
}

View File

@ -0,0 +1,27 @@
using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class SumColumn : EvoCalculator.Core.Calculation.v1.Columns.SumColumn
{
public SumColumn(int count, BaseColumn<DateTime> dateTempColumn, PreparedValues preparedValues,
PercentPaymentColumn percentPaymentColumn, v1.PostValues.PostValues postValues,
BaseColumn<decimal> nsibBruttoGrColumn) : base(count, dateTempColumn, preparedValues, percentPaymentColumn,
postValues, nsibBruttoGrColumn)
{
}
public override void ComputeValues(decimal x)
{
Values[0] = -_postValues.BaseCost.Value - _preparedValues.FuelCardSum;
Values[1] = _preparedValues.FirstPaymentSum;
for (var i = 2; i < Values.Length - 1; i++) Values[i] = x * (decimal) _percentPaymentColumn.Values[i] / 100;
Values[^1] = _preparedValues.LastPaymentSum;
}
}
}

View File

@ -0,0 +1,31 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class SumCreditColumn : BaseColumn<decimal>
{
public SumCreditColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, PostValues.PostValues postValues
, Constants.Calculation constants, SumColumn sumColumn)
{
Values[1] = (postValues.BaseCost.Value - sumColumn.GetValue(1)) * (1 + (decimal)constants.VatValue);
Values[2] = Values[1];
for (var i = 3; i < Values.Length; i++)
{
if (GetValue(i - 1) > 0)
{
Values[i] = GetValue(i - 1) - GetValue(2) / preparedValues.LoanRatePeriod;
}
else
{
Values[i] = 0;
}
}
}
}
}

View File

@ -0,0 +1,25 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using EvoCalculator.Core.Tools.Check;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class TLM_GrColumn : BaseColumnWithSum
{
public TLM_GrColumn(int count) : base(count)
{
}
public void PostCheck()
{
new CheckTools().CheckColumnForZeroValue(Values);
}
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)
{
for (var i = 1; i < Values.Length; i++) Values[i] = preparedPayments.Rows[i - 1].TlmCostPayment;
Values[0] = -Sum;
}
}
}

View File

@ -0,0 +1,45 @@
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v2.Columns
{
public class TaxColumn : BaseColumnWithSum
{
public TaxColumn(int count) : base(count)
{
}
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants, SumColumn sumColumn,
AcceptInsuranceColumn acceptInsuranceColumn, DeprecationColumn deprecationColumn,
RatExpensesColumn ratExpensesColumn, RegistrExpensesColumn registrExpensesColumn,
ComissionBonusExpensesColumn comissionBonusExpensesColumn, TransExpensesColumn transExpensesColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn,
AgentComissionExpensesColumn agentComissionExpensesColumn,
InsuranceBonusExpensesColumn insuranceBonusExpensesColumn, TLMExpensesColumn tlmExpensesColumn,
GPSExpensesColumn gpsExpensesColumn, SubsidyExpensesColumn subsidyExpensesColumn)
{
for (var i = 1; i < Values.Length; i++)
Values[i] = (decimal)constants.IncomeTaxValue * (sumColumn.GetValue(i)
- acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i)
+ subsidyExpensesColumn.GetValue(i)
- (i == 1
? preparedValues.SubsidySum
: 0)
);
Values[0] = Sum;
}
}
}

Some files were not shown because too many files have changed in this diff Show More