+ 2 columns

This commit is contained in:
Chika 2020-10-25 21:29:27 +03:00
parent 3759c6f55c
commit 1e8bff1cd3
6 changed files with 764 additions and 22 deletions

View File

@ -49,6 +49,8 @@
<e p="BaseColumnWithXIRR.cs" t="Include" />
<e p="BaseColumnWithXNPV.cs" t="Include" />
<e p="CashflowColumn.cs" t="Include" />
<e p="CashflowLeasingColumn.cs" t="Include" />
<e p="CashflowMSFOColumn.cs" t="Include" />
<e p="ComissionBonusExpensesColumn.cs" t="Include" />
<e p="DateColumn.cs" t="Include" />
<e p="DateTempColumn.cs" t="Include" />
@ -148,6 +150,8 @@
<e p="AcceptOsagoTests.cs" t="Include" />
<e p="AcceptSumTests.cs" t="Include" />
<e p="AgentComissionExpensesTests.cs" t="Include" />
<e p="CashflowLeasingTests.cs" t="Include" />
<e p="CashflowMSFOTests.cs" t="Include" />
<e p="CashflowTests.cs" t="Include" />
<e p="ComissionBonusExpensesTests.cs" t="Include" />
<e p="DateColumnTests.cs" t="Include" />

View File

@ -14,13 +14,12 @@
</component>
<component name="ChangeListManager">
<list default="true" id="2c3b0650-5589-43d4-b4b7-2979612bb30f" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowLeasingColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowMSFOColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/CashflowLeasingTests.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/CashflowMSFOTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/contentModel.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/.idea.EvoCalculator.Core/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -45,6 +44,7 @@
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/92/f4ccca9d/GoalSeekResult.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/F680C866-D120-4163-9634-EBD842255BE9/3D/HttpPostAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/F680C866-D120-4163-9634-EBD842255BE9/24/ControllerBase.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9D995D4A-0EBE-4A93-85A6-BE06CB7C70EE/f6/ada9c10c/FactAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/558EFF1A-6D86-468A-B5D3-8B990CD1FB1A/C/Controller.cs" root0="SKIP_HIGHLIGHTING" />
@ -55,16 +55,6 @@
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DeprecationLDColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoBonusGrSumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVBonusExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumWithVATColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/VATColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/DoubleArrayComparer.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/AcceptInsuranceTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/AcceptKaskoTests.cs" />
@ -98,14 +88,24 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/DateColumnTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/FinanceFormulas/FinanceFormulasTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/GPS_GrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/InsuranceBonusExpensesTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/InsuranceBonusExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/KaskoNmperGrTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/RatExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/AgentComissionExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/ComissionBonusExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NSIBExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/RegistrExpensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TLM_GrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TransExprensesColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowLeasingColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/CashflowLeasingTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/CashflowMSFOTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowMSFOColumn.cs" />
</list>
</option>
</component>
@ -181,7 +181,7 @@
<workItem from="1603359602644" duration="13087000" />
<workItem from="1603447491537" duration="4025000" />
<workItem from="1603451569606" duration="6133000" />
<workItem from="1603639854245" duration="6806000" />
<workItem from="1603639854245" duration="10024000" />
</task>
<task id="LOCAL-00001" summary="rename: flow">
<created>1602593830686</created>
@ -211,7 +211,14 @@
<option name="project" value="LOCAL" />
<updated>1603456459093</updated>
</task>
<option name="localTasksCounter" value="5" />
<task id="LOCAL-00005" summary="fix InsuranceBonusExpensesColumn">
<created>1603646824466</created>
<option name="number" value="00005" />
<option name="presentableId" value="LOCAL-00005" />
<option name="project" value="LOCAL" />
<updated>1603646824466</updated>
</task>
<option name="localTasksCounter" value="6" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -238,7 +245,8 @@
<MESSAGE value="more columns(expenses)" />
<MESSAGE value="refactor columns" />
<MESSAGE value="refactor types: double to decimal" />
<option name="LAST_COMMIT_MESSAGE" value="refactor types: double to decimal" />
<MESSAGE value="fix InsuranceBonusExpensesColumn" />
<option name="LAST_COMMIT_MESSAGE" value="fix InsuranceBonusExpensesColumn" />
</component>
<component name="WindowStateProjectService">
<state x="1077" y="489" key="#Web_Browsers" timestamp="1602508282238">
@ -377,10 +385,10 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="898" y="0" width="1161" height="1387" key="dock-window-1/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603198596935" />
<state x="759" y="244" width="1137" height="959" key="find.popup" timestamp="1603457115656">
<state x="759" y="244" width="1137" height="959" key="find.popup" timestamp="1603648670658">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="759" y="244" width="1137" height="959" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603457115656" />
<state x="759" y="244" width="1137" height="959" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603648670658" />
<state x="936" y="330" key="run.anything.popup" timestamp="1603290743275">
<screen x="0" y="0" width="2560" height="1400" />
</state>

View File

@ -0,0 +1,27 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.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)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1];
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];
}
}
}
}

View File

@ -0,0 +1,30 @@
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
public class CashflowMSFOColumn : BaseColumnWithXIRR
{
public CashflowMSFOColumn(int count, DateTempColumn dateTempColumn) : base(count, dateTempColumn)
{
}
public void ComputeValues(PreparedValues preparedValues, SumColumn sumColumn,
NegativeCashflowColumn negativeCashflowColumn,
NSIBBruttoGrColumn nsibBruttoGrColumn, TLM_GrColumn tlmGrColumn, GPS_GrColumn gpsGrColumn,
NPVBonusExpensesColumn npvBonusExpensesColumn, AgentComissionExpensesColumn agentComissionExpensesColumn)
{
Values[0] = -preparedValues.AcquisitionExpenses;
Values[1] = sumColumn.Values[1] + npvBonusExpensesColumn.Values[1] + agentComissionExpensesColumn.Values[1];
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];
}
}
}
}

View File

@ -0,0 +1,302 @@
using System;
using EvoCalculator.Core.Calculation.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using Xunit;
namespace EvoCalculator.Core.Tests.Calculation.Columns
{
public class CashflowLeasingTests
{
[Fact]
public void CashflowLeasingTest1()
{
var preparedValues = new PreparedValues()
{
Nmper = 25,
AcquisitionExpenses = 2507300
};
var dateTempColumn = new DateTempColumn(67)
{
Values = new[]
{
new DateTime(2018, 10, 31),
new DateTime(2018, 10, 31),
new DateTime(2018, 11, 30),
new DateTime(2018, 12, 31),
new DateTime(2019, 1, 31),
new DateTime(2019, 2, 28),
new DateTime(2019, 3, 31),
new DateTime(2019, 4, 30),
new DateTime(2019, 5, 31),
new DateTime(2019, 6, 30),
new DateTime(2019, 7, 31),
new DateTime(2019, 8, 31),
new DateTime(2019, 9, 30),
new DateTime(2019, 10, 31),
new DateTime(2019, 11, 30),
new DateTime(2019, 12, 31),
new DateTime(2020, 1, 31),
new DateTime(2020, 2, 29),
new DateTime(2020, 3, 31),
new DateTime(2020, 4, 30),
new DateTime(2020, 5, 31),
new DateTime(2020, 6, 30),
new DateTime(2020, 7, 31),
new DateTime(2020, 8, 31),
new DateTime(2020, 9, 30),
new DateTime(2020, 10, 31),
new DateTime(2020, 11, 30),
new DateTime(2020, 12, 31),
new DateTime(2021, 1, 31),
new DateTime(2021, 2, 28),
new DateTime(2021, 3, 31),
new DateTime(2021, 4, 30),
new DateTime(2021, 5, 31),
new DateTime(2021, 6, 30),
new DateTime(2021, 7, 31),
new DateTime(2021, 8, 31),
new DateTime(2021, 9, 30),
new DateTime(2021, 10, 31),
new DateTime(2021, 11, 30),
new DateTime(2021, 12, 31),
new DateTime(2022, 1, 31),
new DateTime(2022, 2, 28),
new DateTime(2022, 3, 31),
new DateTime(2022, 4, 30),
new DateTime(2022, 5, 31),
new DateTime(2022, 6, 30),
new DateTime(2022, 7, 31),
new DateTime(2022, 8, 31),
new DateTime(2022, 9, 30),
new DateTime(2022, 10, 31),
new DateTime(2022, 11, 30),
new DateTime(2022, 12, 31),
new DateTime(2023, 1, 31),
new DateTime(2023, 2, 28),
new DateTime(2023, 3, 31),
new DateTime(2023, 4, 30),
new DateTime(2023, 5, 31),
new DateTime(2023, 6, 30),
new DateTime(2023, 7, 31),
new DateTime(2023, 8, 31),
new DateTime(2023, 9, 30),
new DateTime(2023, 10, 31),
new DateTime(2023, 11, 30),
new DateTime(2023, 12, 31),
new DateTime(2024, 1, 31),
new DateTime(2024, 2, 29),
new DateTime(2024, 3, 31),
}
};
var sumColumn = new SumColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues, null)
{
Values = new[]
{
-2542903.66268442m,
625000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
96000,
96000,
25000,
}
};
var negativeCashFlowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
-110416.666666667m,
-53000,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-57416.6666666667m,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}
};
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
26730.2083333333m,
0.00m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
}
};
var tlmGrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, dateTempColumn, 0)
{
Values = new[]
{
-18562.8003994563m,
0.00m,
1800m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
}
};
var gpsGrColumn = new GPS_GrColumn(preparedValues.Nmper + 1, dateTempColumn, 0)
{
Values = new[]
{
-20625.3337771737m,
0.00m,
2000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
}
};
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashFlowColumn, nsibBruttoGrColumn,
tlmGrColumn,
gpsGrColumn);
var expected = new[]
{
-2507300m,
625000m,
115086.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
104986.241319444m,
47569.5746527778m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
92986.2413194444m,
92986.2413194444m,
21986.2413194444m,
};
Assert.Equal(expected.Length, cashflowLeasingColumn.Values.Length);
Assert.Equal(0.342274123430252, cashflowLeasingColumn.IRR, new DoubleArrayComparer(0.01));
Assert.Equal(expected, cashflowLeasingColumn.Values, new DecimalArrayComparer());
}
}
}

View File

@ -0,0 +1,371 @@
using System;
using EvoCalculator.Core.Calculation.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using Xunit;
namespace EvoCalculator.Core.Tests.Calculation.Columns
{
public class CashflowMSFOTests
{
[Fact]
public void CashflowMSFOTest1()
{
var preparedValues = new PreparedValues()
{
Nmper = 25,
AcquisitionExpenses = 2507300
};
var dateTempColumn = new DateTempColumn(67)
{
Values = new[]
{
new DateTime(2018, 10, 31),
new DateTime(2018, 10, 31),
new DateTime(2018, 11, 30),
new DateTime(2018, 12, 31),
new DateTime(2019, 1, 31),
new DateTime(2019, 2, 28),
new DateTime(2019, 3, 31),
new DateTime(2019, 4, 30),
new DateTime(2019, 5, 31),
new DateTime(2019, 6, 30),
new DateTime(2019, 7, 31),
new DateTime(2019, 8, 31),
new DateTime(2019, 9, 30),
new DateTime(2019, 10, 31),
new DateTime(2019, 11, 30),
new DateTime(2019, 12, 31),
new DateTime(2020, 1, 31),
new DateTime(2020, 2, 29),
new DateTime(2020, 3, 31),
new DateTime(2020, 4, 30),
new DateTime(2020, 5, 31),
new DateTime(2020, 6, 30),
new DateTime(2020, 7, 31),
new DateTime(2020, 8, 31),
new DateTime(2020, 9, 30),
new DateTime(2020, 10, 31),
new DateTime(2020, 11, 30),
new DateTime(2020, 12, 31),
new DateTime(2021, 1, 31),
new DateTime(2021, 2, 28),
new DateTime(2021, 3, 31),
new DateTime(2021, 4, 30),
new DateTime(2021, 5, 31),
new DateTime(2021, 6, 30),
new DateTime(2021, 7, 31),
new DateTime(2021, 8, 31),
new DateTime(2021, 9, 30),
new DateTime(2021, 10, 31),
new DateTime(2021, 11, 30),
new DateTime(2021, 12, 31),
new DateTime(2022, 1, 31),
new DateTime(2022, 2, 28),
new DateTime(2022, 3, 31),
new DateTime(2022, 4, 30),
new DateTime(2022, 5, 31),
new DateTime(2022, 6, 30),
new DateTime(2022, 7, 31),
new DateTime(2022, 8, 31),
new DateTime(2022, 9, 30),
new DateTime(2022, 10, 31),
new DateTime(2022, 11, 30),
new DateTime(2022, 12, 31),
new DateTime(2023, 1, 31),
new DateTime(2023, 2, 28),
new DateTime(2023, 3, 31),
new DateTime(2023, 4, 30),
new DateTime(2023, 5, 31),
new DateTime(2023, 6, 30),
new DateTime(2023, 7, 31),
new DateTime(2023, 8, 31),
new DateTime(2023, 9, 30),
new DateTime(2023, 10, 31),
new DateTime(2023, 11, 30),
new DateTime(2023, 12, 31),
new DateTime(2024, 1, 31),
new DateTime(2024, 2, 29),
new DateTime(2024, 3, 31),
}
};
var sumColumn = new SumColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues, null)
{
Values = new[]
{
-2542903.66268442m,
625000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
120000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
108000,
96000,
96000,
25000,
}
};
var negativeCashFlowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
-110416.666666667m,
-53000,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-57416.6666666667m,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}
};
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
26730.2083333333m,
0.00m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
1113.75868055556m,
}
};
var tlmGrColumn = new TLM_GrColumn(preparedValues.Nmper + 1, dateTempColumn, 0)
{
Values = new[]
{
-18562.8003994563m,
0.00m,
1800m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
900m,
}
};
var gpsGrColumn = new GPS_GrColumn(preparedValues.Nmper + 1, dateTempColumn, 0)
{
Values = new[]
{
-20625.3337771737m,
0.00m,
2000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
1000m,
}
};
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
-29266.5425270833m,
-1676.30246875m,
-27590.2400583333m,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}
};
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
-446104.166666667m,
0,
-446104.166666667m,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
}
};
var cashflowMsfoColumn = new CashflowMSFOColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoColumn.ComputeValues(preparedValues, sumColumn, negativeCashFlowColumn, nsibBruttoGrColumn,
tlmGrColumn,
gpsGrColumn,
npvBonusExpensesColumn,
agentComissionExpensesColumn
);
var expected = new[]
{
-2507300m,
623323.69753125m,
-358608.165405556m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
116986.241319444m,
104986.241319444m,
47569.5746527778m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
104986.241319444m,
92986.2413194444m,
92986.2413194444m,
21986.2413194444m,
};
Assert.Equal(expected.Length, cashflowMsfoColumn.Values.Length);
Assert.Equal(0.0517445296049118, cashflowMsfoColumn.IRR, new DoubleArrayComparer(0.01));
Assert.Equal(expected, cashflowMsfoColumn.Values, new DecimalArrayComparer());
}
}
}