merge release/nsib-credit-v2
This commit is contained in:
parent
094f752a32
commit
fb7941ea2e
25
Dockerfile
25
Dockerfile
@ -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
|
||||
|
||||
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"]
|
||||
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
11
EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs
Normal file
11
EvoCalculator.Core.Base/Columns/BaseColumnForGoalSeek.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
13
EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs
Normal file
13
EvoCalculator.Core.Base/Columns/BaseColumnWithNominal.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
using System.Linq;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
namespace EvoCalculator.Core.Base.Columns
|
||||
{
|
||||
public class BaseColumnWithSum : BaseColumn<decimal>
|
||||
{
|
||||
@ -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;
|
||||
}
|
||||
@ -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;
|
||||
13
EvoCalculator.Core.Base/EvoCalculator.Core.Base.csproj
Normal file
13
EvoCalculator.Core.Base/EvoCalculator.Core.Base.csproj
Normal 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>
|
||||
@ -1,4 +1,4 @@
|
||||
namespace EvoCalculator.Core.Calculation.v1.Post
|
||||
namespace EvoCalculator.Core.Base.PostValues
|
||||
{
|
||||
public class BasePostValue<T>
|
||||
{
|
||||
@ -1,12 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp3.1</TargetFramework>
|
||||
<TargetFramework>net5.0</TargetFramework>
|
||||
<LangVersion>default</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<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>
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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
|
||||
{
|
||||
@ -11,28 +13,27 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
|
||||
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 (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 >= 3)
|
||||
{
|
||||
if (preparedValues.NmperInsurance - i < constants.MaxOnePolicePeriod - 1)
|
||||
Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1);
|
||||
else
|
||||
Values[i] = preparedValues.InsuranceKasko;
|
||||
}
|
||||
else
|
||||
{
|
||||
Values[i] = 0;
|
||||
Values[i] = preparedValues.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
|
||||
? InsuranceKaskoMonth * 12
|
||||
: InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Values[0] = -XNPV;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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];
|
||||
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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(
|
||||
"Невозможно осуществить расчет графика. При заданных параметрах лизинговый платеж не покрывает расходы по НСИБ. Исключите НСИБ или увеличьте лизинговые платежи");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
{
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
{
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using System.Linq;
|
||||
using EvoCalculator.Core.Base.Columns;
|
||||
|
||||
namespace EvoCalculator.Core.Calculation.v1.Columns
|
||||
{
|
||||
|
||||
@ -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++)
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
{
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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,7 +17,7 @@
|
||||
GPSExpensesColumn gpsExpensesColumn)
|
||||
{
|
||||
for (var i = 1; i < Values.Length; i++)
|
||||
Values[i] = (decimal) constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
||||
Values[i] = (decimal)constants.IncomeTaxValue * (sumColumn.GetValue(i)
|
||||
- acceptInsuranceColumn.GetValue(i)
|
||||
- deprecationColumn.GetValue(i)
|
||||
+ ratExpensesColumn.GetValue(i)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -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);
|
||||
@ -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
|
||||
@ -78,9 +76,11 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
|
||||
|
||||
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);
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
{
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
{
|
||||
13
EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs
Normal file
13
EvoCalculator.Core.Calculation/v1/PostValues/PriceUP_PR.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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>
|
||||
{
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
22
EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs
Normal file
22
EvoCalculator.Core.Calculation/v2/Columns/CashflowColumn.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
29
EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs
Normal file
29
EvoCalculator.Core.Calculation/v2/Columns/CreditColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
38
EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs
Normal file
38
EvoCalculator.Core.Calculation/v2/Columns/ExpensesColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
25
EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs
Normal file
25
EvoCalculator.Core.Calculation/v2/Columns/GPS_GrColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
27
EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs
Normal file
27
EvoCalculator.Core.Calculation/v2/Columns/SumColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
31
EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs
Normal file
31
EvoCalculator.Core.Calculation/v2/Columns/SumCreditColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
25
EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs
Normal file
25
EvoCalculator.Core.Calculation/v2/Columns/TLM_GrColumn.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
45
EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs
Normal file
45
EvoCalculator.Core.Calculation/v2/Columns/TaxColumn.cs
Normal 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
Loading…
x
Reference in New Issue
Block a user