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/aspnet:5.0 AS base
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
WORKDIR /app WORKDIR /app
COPY --from=build /app .
EXPOSE 5000 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; using System;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Base.Columns
{ {
public abstract class BaseColumn<T> public abstract class BaseColumn<T>
{ {
@ -13,12 +13,9 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public T GetValue(int i) public T GetValue(int i)
{ {
if (i < Values.Length) if (i < Values.Length) return Values[i];
{
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; using System.Linq;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Base.Columns
{ {
public class BaseColumnWithSum : BaseColumn<decimal> public class BaseColumnWithSum : BaseColumn<decimal>
{ {

View File

@ -2,11 +2,11 @@
using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Base.Columns
{ {
public class BaseColumnWithXIRR : BaseColumn<decimal> 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; Dates = dateTempColumn.Values;
} }

View File

@ -2,13 +2,13 @@
using EvoCalculator.Core.FinanceFormulas; using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Base.Columns
{ {
public class BaseColumnWithXNPV : BaseColumn<decimal> public class BaseColumnWithXNPV : BaseColumn<decimal>
{ {
private readonly double rate; 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; Dates = dateTempColumn.Values;
this.rate = rate; 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> public class BasePostValue<T>
{ {

View File

@ -1,16 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework> <TargetFramework>net5.0</TargetFramework>
<LangVersion>default</LangVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" /> <ProjectReference Include="..\EvoCalculator.Core.Base\EvoCalculator.Core.Base.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.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>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
</ItemGroup> </ItemGroup>
</Project> </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 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 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 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 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 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 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {

View File

@ -1,5 +1,5 @@
using System; 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;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
@ -7,18 +7,36 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
public class BaseCashflowMSFOColumn : BaseColumnWithNominal 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 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[0] = -_preparedValues.AcquisitionExpenses;
Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] + Values[1] = _sumColumn.Values[1] + _npvBonusExpensesColumn.Values[1] +
@ -39,36 +57,14 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
if (additionalData.MinCashflowMSFONominal != null) if (additionalData.MinCashflowMSFONominal != null)
if (Nominal < additionalData.MinCashflowMSFONominal / 100) if (Nominal < additionalData.MinCashflowMSFONominal / 100)
{
throw new Exception( throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}"); $"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} меньше мин. IRR по данному продукту: {additionalData.MinCashflowMSFONominal}");
}
if (additionalData.MaxCashflowMSFONominal != null) if (additionalData.MaxCashflowMSFONominal != null)
if (Nominal >= additionalData.MaxCashflowMSFONominal / 100) if (Nominal >= additionalData.MaxCashflowMSFONominal / 100)
{
throw new Exception( throw new Exception(
$"Невозможно осуществить расчет графика, при заданных параметрах IRR {Math.Round(Nominal * 100, 2)} больше макс. IRR по данному продукту: {additionalData.MaxCashflowMSFONominal}"); $"Невозможно осуществить расчет графика, при заданных параметрах 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;
using System.Linq; using System.Linq;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns; using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek; using TridentGoalSeek;
@ -9,6 +8,16 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
public class CashflowMSFOColumnVT1 : BaseCashflowMSFOColumn, IColumnWithGoalSeek 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) public decimal Calculate(decimal inputVariable)
{ {
_sumColumn.ComputeValues(inputVariable); _sumColumn.ComputeValues(inputVariable);
@ -33,15 +42,5 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , focusPercentage: 50 // , 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn public class CashflowMSFOColumnVT2 : BaseCashflowMSFOColumn
{ {
public void ComputeValues() public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues.PostValues postValues,
{
FillValues();
}
public CashflowMSFOColumnVT2(int count, DateTempColumn dateTempColumn, PostValues postValues,
PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn, PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn, NegativeCashflowColumn negativeCashflowColumn, NSIBBruttoGrColumn nsibBruttoGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn, NPVBonusExpensesColumn npvBonusExpensesColumn,
@ -19,5 +13,10 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn) 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 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) CashflowMSFOFinalColumn cashflowMsfoFinalColumn)
{ {
Values[0] = -preparedValues.AcquisitionExpenses; 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 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 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -10,7 +11,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn, public void ComputeValues(PreparedValues preparedValues, CashflowNPVFinalColumn cashflowNpvFinalColumn,
DirectorBonusSumColumn directorBonusSumColumn) BaseColumn<decimal> directorBonusSumColumn)
{ {
Values[0] = -preparedValues.AcquisitionExpenses; Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvFinalColumn.GetValue(1); 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -9,7 +10,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
} }
public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn, public void ComputeValues(PreparedValues preparedValues, ExtraBonusSumColumn extraBonusSumColumn,
CashflowNPVColumn cashflowNpvColumn) BaseColumn<decimal> cashflowNpvColumn)
{ {
Values[0] = -preparedValues.AcquisitionExpenses; Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = cashflowNpvColumn.GetValue(1); Values[1] = cashflowNpvColumn.GetValue(1);

View File

@ -1,4 +1,5 @@
using System; using System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns; using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using TridentGoalSeek; using TridentGoalSeek;
@ -22,14 +23,6 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
return Convert.ToDecimal(IRR); 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) public void ComputeValues(decimal requiredValue)
{ {
var goalSeek = new GoalSeek(this); var goalSeek = new GoalSeek(this);
@ -43,5 +36,13 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , trimFinalInputValue: true // , 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {

View File

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

View File

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

View File

@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Calculation.v1.Columns
@ -14,7 +15,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
Values[1] = 0; Values[1] = 0;
for (var i = 2; i < Values.Length - 1; i++) for (var i = 2; i < Values.Length - 1; i++)
Values[i] = preparedValues.BalanceHolder == 100000001 Values[i] = preparedValues.BalanceHolder == 100000001
? (decimal) preparedValues.DeprecationTime * ? (decimal)preparedValues.DeprecationTime *
(preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100 (preparedValues.AcceptSum - Values.Skip(2).Take(i - 1).Sum(x => x)) / 100
: 0; : 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 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; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns 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 * Values[2] = -postValues.BonusBase.Value * (decimal)preparedValues.DirectorBonus *
(decimal) (1 + preparedValues.SalaryRate) * (decimal)(1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; (decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
Values[0] = Sum; 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 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; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns namespace EvoCalculator.Core.Calculation.v1.Columns
@ -10,13 +10,13 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
} }
public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn, public void ComputeValues(PreparedValues preparedValues, BaseCashflowMSFOColumn cashflowMsfoColumn,
PostValues postValues) PostValues.PostValues postValues)
{ {
Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan Values[2] = cashflowMsfoColumn.Nominal >= preparedValues.IRR_MSFO_Plan
? -1 * postValues.BonusBase.Value * ? -1 * postValues.BonusBase.Value *
(decimal) (cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) * (decimal)(cashflowMsfoColumn.Nominal / preparedValues.IRR_MSFO_Plan - 1) *
(decimal) preparedValues.ExtraBonus * (decimal) (1 + preparedValues.SalaryRate) * (decimal)preparedValues.ExtraBonus * (decimal)(1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate (decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate
: 0; : 0;
Values[0] = Sum; 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 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck() public void PostCheck()
{ {
new CheckTools<decimal>().CheckColumnForZeroValue(Values); new CheckTools().CheckColumnForZeroValue(Values);
} }
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues)

View File

@ -1,4 +1,5 @@
using System; using System;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.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++) for (var i = 1; i < Values.Length; i++)
Values[i] = Math.Pow(1 + cashflowColumn.IRR, 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {

View File

@ -1,5 +1,6 @@
using System; using System;
using System.Linq; using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.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++) for (var i = 1; i < Values.Skip(1).ToList().Count; i++)
if (Values[i] > sumColumn.Values[i]) if (Values[i] > sumColumn.Values[i])
{
throw new Exception( throw new Exception(
"Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж"); "Невозможно осуществить расчет графика, при заданных параметрах получается низкий лизинговый платеж");
}
} }
public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn) public void ComputeValues(IRRGrColumn irrGrColumn, NIColumn niColumn)
{ {
for (var i = 2; i < Values.Length; i++) 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 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++) for (var i = 1; i < Values.Length; i++)
if (i < 13) if (i < 13)
Values[i] = kaskoNmperGrColumn.Values[i] * 1; Values[i] = kaskoNmperGrColumn.Values[i] * 1;
else if (i <= 24) else if (i <= 24)
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.7; Values[i] = kaskoNmperGrColumn.Values[i] * (decimal)0.7;
else else
Values[i] = kaskoNmperGrColumn.Values[i] * (decimal) 0.5; Values[i] = kaskoNmperGrColumn.Values[i] * (decimal)0.5;
Values[0] = Sum; 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -8,30 +10,29 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
rate) rate)
{ {
} }
public void PostCheck() public void PostCheck()
{ {
new CheckTools<decimal>().CheckColumnForZeroValue(Values); new CheckTools().CheckColumnForZeroValue(Values);
} }
public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants) public void ComputeValues(PreparedValues preparedValues, Constants.Calculation constants)
{ {
for (var i = 1; i < Values.Length; i += 12) if (preparedValues.NmperInsurance < constants.MaxOnePolicePeriod)
if (i <= preparedValues.NmperInsurance) Values[1] = preparedValues.InsuranceKasko;
{ else
if (preparedValues.NmperInsurance - i >= 3) {
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.NmperInsurance - i + 1 >= constants.MaxOnePolicePeriod
Values[i] = preparedValues.InsuranceKasko / 12 * (preparedValues.NmperInsurance - i + 1); ? InsuranceKaskoMonth * 12
else : InsuranceKaskoMonth * (preparedValues.NmperInsurance - i + 1);
Values[i] = preparedValues.InsuranceKasko;
} }
else }
{
Values[i] = 0;
}
}
Values[0] = -XNPV; 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 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; Values[1] = preparedValues.NiAtInception;
for (var i = 2; i < Values.Length; i++) 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 System;
using EvoCalculator.Core.Calculation.v1.Post; using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns 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) * Values[1] = -1 * (preparedValues.RatBonus + preparedValues.NsBonus + preparedValues.NsibBonus) *
(decimal) (1 + preparedValues.SalaryRate) * (decimal)(1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; (decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
Values[2] = preparedValues.BonusFix > 0 Values[2] = preparedValues.BonusFix > 0
? -preparedValues.BonusFix ? -preparedValues.BonusFix
: -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) * : -1 * postValues.BonusBase.Value * Convert.ToDecimal(preparedValues.Bonus) *
(decimal) (1 + preparedValues.SalaryRate) * (decimal)(1 + preparedValues.SalaryRate) *
(decimal) preparedValues.MarketRate * (decimal) preparedValues.DistrictRate; (decimal)preparedValues.MarketRate * (decimal)preparedValues.DistrictRate;
for (var i = 3; i < Values.Length; i++) Values[i] = 0; 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 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++) 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 public class NPVFinal2Column : BaseColumnWithNominal
{ {
@ -9,9 +11,7 @@
public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn) public void ComputeValues(CashflowNPVFinal2Column cashflowNpvFinal2Column, NPVWeightColumn npvWeightColumn)
{ {
for (var i = 0; i < Values.Length; i++) 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 public class NPVFinalColumn : BaseColumnWithNominal
{ {
@ -9,7 +11,7 @@
public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn) public void ComputeValues(CashflowNPVFinalColumn cashflowNpvFinalColumn, NPVWeightColumn npvWeightColumn)
{ {
for (var i = 0; i < Values.Length; i++) 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 System;
using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Columns 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 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 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 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]; 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 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 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 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> public class RevenueColumn : BaseColumn<decimal>
{ {
@ -11,10 +13,7 @@
{ {
if (nsibBruttoGrColumn.Sum == 0) if (nsibBruttoGrColumn.Sum == 0)
{ {
for (var i = 0; i < Values.Length; i++) for (var i = 0; i < Values.Length; i++) Values[i] = 0;
{
Values[i] = 0;
}
} }
else else
{ {

View File

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

View File

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

View File

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

View File

@ -1,4 +1,5 @@
using System.Linq; using System.Linq;
using EvoCalculator.Core.Base.Columns;
namespace EvoCalculator.Core.Calculation.v1.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; const int FIRST_YEAR_NUM = 13;
for (var i = 1; i < Values.Length; i++) 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck() public void PostCheck()
{ {
new CheckTools<decimal>().CheckColumnForZeroValue(Values); new CheckTools().CheckColumnForZeroValue(Values);
} }
public void ComputeValues(Constants.Calculation calculation, PreparedValues preparedValues, 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++) for (var i = 7; i < Values.Length; i++)
Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] - Values[i] = sumCurrentColumn.Values[i] + sumCurrentNegativeColumn.Values[i] -
sumCurrentTlmColumn.Values[i] * (1 + (decimal) calculation.VatValue) - sumCurrentTlmColumn.Values[i] * (1 + (decimal)calculation.VatValue) -
sumCurrentInterestColumn.Values[i] * (1 + (decimal) calculation.VatValue) * sumCurrentInterestColumn.Values[i] * (1 + (decimal)calculation.VatValue) *
(decimal) preparedValues.Repayment; (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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
public class BaseSumWithVATColumn : BaseColumnWithSum public class BaseSumWithVATColumn : BaseColumnWithSum
{ {
protected readonly PreparedValues _preparedValues;
protected readonly Constants.Calculation _constants; protected readonly Constants.Calculation _constants;
protected readonly PreparedValues _preparedValues;
protected SumColumn _sumColumn; 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, protected BaseSumWithVATColumn(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count) Constants.Calculation constants) : base(count)
{ {
@ -32,5 +17,22 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
_preparedValues = preparedValues; _preparedValues = preparedValues;
_constants = constants; _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 class SumWithVATColumnVT1 : BaseSumWithVATColumn
{ {
public void ComputeValues()
{
FillValues();
}
public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues, public SumWithVATColumnVT1(int count, SumColumn sumColumn, PreparedValues preparedValues,
Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants) Constants.Calculation constants) : base(count, sumColumn, preparedValues, constants)
{ {
} }
public void ComputeValues()
{
FillValues();
}
} }
} }

View File

@ -1,6 +1,5 @@
using System; using System;
using System.Linq; using System.Linq;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Interfaces.Columns; using EvoCalculator.Core.Models.Calculation.Interfaces.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek; using TridentGoalSeek;
@ -9,8 +8,18 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek public class SumWithVATColumnVT2 : BaseSumWithVATColumn, IColumnWithGoalSeek
{ {
private PercentPaymentColumn _percentPaymentColumn; private readonly PercentPaymentColumn _percentPaymentColumn;
private PostValues _postValues; 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) public decimal Calculate(decimal inputVariable)
{ {
@ -36,14 +45,5 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
// , focusPercentage: 50 // , 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 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 namespace EvoCalculator.Core.Calculation.v1.Columns
{ {
@ -10,7 +12,7 @@ namespace EvoCalculator.Core.Calculation.v1.Columns
public void PostCheck() public void PostCheck()
{ {
new CheckTools<decimal>().CheckColumnForZeroValue(Values); new CheckTools().CheckColumnForZeroValue(Values);
} }
public void ComputeValues(PreparedPayments preparedPayments, PreparedValues preparedValues) 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 public class TaxColumn : BaseColumnWithSum
{ {
@ -15,18 +17,18 @@
GPSExpensesColumn gpsExpensesColumn) GPSExpensesColumn gpsExpensesColumn)
{ {
for (var i = 1; i < Values.Length; i++) 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) - acceptInsuranceColumn.GetValue(i)
- deprecationColumn.GetValue(i) - deprecationColumn.GetValue(i)
+ ratExpensesColumn.GetValue(i) + ratExpensesColumn.GetValue(i)
+ registrExpensesColumn.GetValue(i) + registrExpensesColumn.GetValue(i)
+ comissionBonusExpensesColumn.GetValue(i) + comissionBonusExpensesColumn.GetValue(i)
+ transExpensesColumn.GetValue(i) + transExpensesColumn.GetValue(i)
+ npvBonusExpensesColumn.GetValue(i) + npvBonusExpensesColumn.GetValue(i)
+ agentComissionExpensesColumn.GetValue(i) + agentComissionExpensesColumn.GetValue(i)
+ insuranceBonusExpensesColumn.GetValue(i) + insuranceBonusExpensesColumn.GetValue(i)
+ tlmExpensesColumn.GetValue(i) + tlmExpensesColumn.GetValue(i)
+ gpsExpensesColumn.GetValue(i) + gpsExpensesColumn.GetValue(i)
); );

View File

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

View File

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

View File

@ -1,11 +1,11 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Calculation.v1.Post;
using EvoCalculator.Core.Models.Calculation.Models; using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Request; 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 public static partial class CalculateManager
{ {
@ -15,15 +15,13 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var preparedPayments = requestCalculation.preparedPayments; var preparedPayments = requestCalculation.preparedPayments;
var additionalData = requestCalculation.additionalData; var additionalData = requestCalculation.additionalData;
var validationErrors = new Validation().ValidatePreparedData(requestCalculation); var validationErrors = new Validation().ValidatePreparedValues(preparedValues);
if (validationErrors.Count > 0)
{ if (validationErrors.Count > 0) return new ManagerResult { Errors = validationErrors };
return new ManagerResult {Errors = validationErrors};
}
var constants = new Constants.Calculation(); var constants = new Constants.Calculation();
var postValues = new PostValues(); var postValues = new PostValues.PostValues();
var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation var maxColumnLength = preparedValues.Nmper > preparedValues.NmperDeprecation
@ -75,12 +73,14 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1); var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues); nsibBruttoGrColumn.ComputeValues(preparedValues);
var sumColumn = new SumColumn( var sumColumn = new SumColumn(
preparedValues.Nmper + 1 preparedValues.Nmper + 1
, dateTempColumn , dateColumn
, preparedValues , preparedValues
, percentPaymentColumn, postValues); , percentPaymentColumn
, postValues
, nsibBruttoGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues, var cashflowMsfoColumn = new CashflowMSFOColumnVT1(preparedValues.Nmper + 1, dateTempColumn, postValues,
preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn, preparedValues, percentPaymentColumn, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
@ -188,7 +188,7 @@ namespace EvoCalculator.Core.Calculation.v1.Managers
nsibBruttoGrColumn, nsibExpensesColumn); nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0) if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR); cashflowNsibColumn.ComputeValues((decimal)cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1); var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn); 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 System;
using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Base.Columns;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; 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 class BaseCost : BasePostValue<decimal>
{ {
public void ComputeValue(PreparedValues preparedValues, KaskoNmperGrColumn kaskoNmperGrColumn, public void ComputeValue(PreparedValues preparedValues, BaseColumn<decimal> kaskoNmperGrColumn,
TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn) BaseColumn<decimal> tlmGrColumn, BaseColumn<decimal> gpsGrColumn)
{ {
Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0]) Value = preparedValues.PlPrice + preparedValues.InsuranceOsago + Math.Abs(kaskoNmperGrColumn.Values[0])
+ Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats + + Math.Abs(tlmGrColumn.Values[0]) + Math.Abs(gpsGrColumn.Values[0]) + preparedValues.Rats +
preparedValues.Registration + preparedValues.TrackerCost + preparedValues.Registration + preparedValues.TrackerCost +
preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal) preparedValues.Leasing0K + preparedValues.TLMCost + preparedValues.TransportTaxGr * (decimal)preparedValues.Leasing0K +
preparedValues.NsibBrutto; preparedValues.NsibBrutto;
} }
} }

View File

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

View File

@ -1,16 +1,17 @@
using System; 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; 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 class BonusResult : BasePostValue<decimal>
{ {
public void ComputeValue(PreparedValues preparedValues, NPVBonusExpensesColumn npvBonusExpensesColumn) public void ComputeValue(PreparedValues preparedValues, BaseColumnWithSum npvBonusExpensesColumn)
{ {
Value = Math.Abs(npvBonusExpensesColumn.Values[0]) - Value = Math.Abs(npvBonusExpensesColumn.Values[0]) -
Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal) preparedValues.SalaryRate / Math.Abs(npvBonusExpensesColumn.Values[0]) * (decimal)preparedValues.SalaryRate /
(decimal) (1 + preparedValues.SalaryRate); (decimal)(1 + preparedValues.SalaryRate);
} }
} }
} }

View File

@ -1,14 +1,15 @@
using System.Linq; using System.Linq;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; 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 class NPVNI : BasePostValue<double>
{ {
public void ComputeValue(PreparedValues preparedValues, NPVColumn npvColumn) 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 class PostValues
{ {
public BaseCost BaseCost; public BaseCost BaseCost;
public BonusBase BonusBase; public BonusBase BonusBase;
public BonusResult BonusResult;
public NPVNI NPVNI;
public PriceUP PriceUP; public PriceUP PriceUP;
public PriceUP_PR PriceUP_PR; public PriceUP_PR PriceUP_PR;
public PriceUP_Year PriceUP_Year; public PriceUP_Year PriceUP_Year;
public PriceUP_Year_PR PriceUP_Year_PR; 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 return new
{ {
@ -25,17 +37,5 @@
BonusResult = BonusResult.Value 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 System.Linq;
using EvoCalculator.Core.Base.PostValues;
using EvoCalculator.Core.Calculation.v1.Columns; using EvoCalculator.Core.Calculation.v1.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared; using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.v1.Post namespace EvoCalculator.Core.Calculation.v1.PostValues
{ {
public class PriceUP : BasePostValue<decimal> 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> 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