part of SumColumn

This commit is contained in:
Chika 2020-10-16 16:40:54 +03:00
parent b127baeeef
commit 5feb8d42af
13 changed files with 381 additions and 88 deletions

View File

@ -38,16 +38,14 @@
<e p="EvoCalculator.Core.Calculation" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />
<e p="Columns" t="Include">
<e p="BaseColumnWithXIRR.cs" t="Include" />
<e p="DateColumn.cs" t="Include" />
<e p="DateTempColumn.cs" t="Include" />
<e p="KaskoNmperGrColumn.cs" t="Include" />
<e p="PercentPaymentColumn.cs" t="Include" />
<e p="SumColumn.cs" t="Include" />
</e>
<e p="EvoCalculator.Core.Calculation.csproj" t="IncludeRecursive" />
<e p="FinanceFormulas" t="Include">
<e p="XIRR.cs" t="Include" />
<e p="XNPV.cs" t="Include" />
</e>
<e p="obj" t="ExcludeRecursive">
<e p="Debug" t="Include">
<e p="netcoreapp3.1" t="Include">
@ -68,11 +66,25 @@
</e>
</e>
</e>
<e p="EvoCalculator.Core.FinanceFormulas" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />
<e p="EvoCalculator.Core.FinanceFormulas.csproj" t="IncludeRecursive" />
<e p="obj" t="ExcludeRecursive">
<e p="Debug" t="Include">
<e p="netcoreapp3.1" t="Include">
<e p="EvoCalculator.Core.FinanceFormulas.AssemblyInfo.cs" t="Include" />
</e>
</e>
</e>
<e p="XIRR.cs" t="Include" />
<e p="XNPV.cs" t="Include" />
</e>
<e p="EvoCalculator.Core.Models" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />
<e p="Calculation" t="Include">
<e p="Interfaces" t="Include">
<e p="IColumn.cs" t="Include" />
<e p="IColumnWithXIRR.cs" t="Include" />
<e p="IFinanceFormula.cs" t="Include" />
</e>
<e p="Models" t="Include">
@ -111,6 +123,7 @@
<e p="DateTempTests.cs" t="Include" />
<e p="KaskoNmperGrTests.cs" t="Include" />
<e p="PercentPaymentTests.cs" t="Include" />
<e p="SumColumnTest.cs" t="Include" />
</e>
<e p="FinanceFormulasTests.cs" t="Include" />
</e>

View File

@ -14,12 +14,19 @@
</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/KaskoNmperGrColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/EvoCalculator.Core.FinanceFormulas.csproj" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumnWithXIRR.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/SumColumnTest.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/DateTempColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.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.Calculation/EvoCalculator.Core.Calculation.csproj" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/EvoCalculator.Core.Calculation.csproj" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XNPV.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.sln" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.sln" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -31,23 +38,15 @@
</component>
<component name="HighlightingSettingsPerFile">
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/18D5A60D-361A-4AFD-A431-F772FA87FCC3/d9/b0109e6d/TestInvoker`1.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Tests/Calculation/Suite/Columns/DateColumnTests.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateColumn.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="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/9152434B-0FAC-463B-87F2-DD9AF798817F/2e/201d3c41/Assert.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/49/DateTime.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" root0="SKIP_HIGHLIGHTING" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/UnitTest1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/WeatherForecastController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" />
@ -66,7 +65,6 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/WeatherForecastController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedParams.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/ComputableColumn.cs" />
@ -82,12 +80,24 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/PercentPaymentTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGr.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateTempColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/PercentPaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/Class1.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XNPV.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/KaskoNmperGrColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/SumColumnTest.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Interfaces/IColumnWithXIRR.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/FinanceFormulasTests.cs" />
</list>
</option>
</component>
@ -152,7 +162,9 @@
<workItem from="1602504354370" duration="6573000" />
<workItem from="1602584653395" duration="12605000" />
<workItem from="1602678304213" duration="9304000" />
<workItem from="1602754684591" duration="12926000" />
<workItem from="1602754684591" duration="13639000" />
<workItem from="1602850022326" duration="4617000" />
<workItem from="1602854690202" duration="696000" />
</task>
<task id="LOCAL-00001" summary="rename: flow">
<created>1602593830686</created>
@ -200,94 +212,94 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="897" height="464" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767525601" />
<state width="2517" height="437" key="GridCell.Tab.0.bottom" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.0.bottom" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.0.center" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.0.center" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.0.left" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.0.left" timestamp="1602768462756">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.0.right" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462756" />
<state width="2517" height="437" key="GridCell.Tab.0.right" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.1.bottom" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.bottom" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.1.center" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.center" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.1.left" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.left" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.1.right" timestamp="1602767710354">
<state width="2517" height="437" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.1.right" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710354" />
<state width="2517" height="437" key="GridCell.Tab.2.bottom" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.2.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.2.center" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.2.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.2.left" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.2.left" timestamp="1602768462757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.2.right" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462757" />
<state width="2517" height="437" key="GridCell.Tab.2.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.3.bottom" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.3.center" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.3.left" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.left" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.3.right" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.3.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.4.bottom" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.bottom" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.4.center" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.center" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.4.left" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.left" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state width="2517" height="437" key="GridCell.Tab.4.right" timestamp="1602767710355">
<state width="2517" height="437" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state width="2517" height="437" key="GridCell.Tab.4.right" timestamp="1602768462758">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2517" height="437" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602767710355" />
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602683469535">
<state width="2517" height="437" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602768462758" />
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602854431119">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602683469535" />
<state x="1108" y="385" key="RiderGenerateDialog" timestamp="1602761716982">
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602854431119" />
<state x="1108" y="385" key="RiderGenerateDialog" timestamp="1602853905402">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1108" y="385" key="RiderGenerateDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602761716982" />
<state x="1108" y="385" key="RiderGenerateDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602853905402" />
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1602761804757">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -316,29 +328,12 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="930" y="299" width="700" height="801" key="find.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602593714122" />
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup" timestamp="1602764852634">
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup" timestamp="1602850027763">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602764852634" />
<state x="943" y="315" width="672" height="678" key="search.everywhere.popup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1602850027763" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Suite/Columns/KaskoNmperGrTests.cs</url>
<line>254</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core.Tests\Calculation\Suite\Columns\KaskoNmperGrTests.cs" initialLine="254">
<startOffsets>
<option value="9276" />
</startOffsets>
<endOffsets>
<option value="9304" />
</endOffsets>
</properties>
<option name="timeStamp" value="17" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
<pin-to-top-manager>
<pinned-members>
<PinnedItemInfo parentTag="Frame#EvoCalculator.Core.Tests.Calculation.Suite.Columns.KaskoNmperGrTests.KaskoNmperGrTest2" memberName="preparedValues" />

View File

@ -0,0 +1,37 @@
using System;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Interfaces;
namespace EvoCalculator.Core.Models.Calculation.Models
{
public class BaseColumnWithXIRR : IColumnWithXIRR<double>
{
public double[] Values { get; set; }
public double IRR { get; set; }
public DateTime[] Dates { get; set; }
protected Flow[] Flows
{
get
{
Flow[] flows = new Flow[Values.Length];
for (var i = 0; i < Values.Length; i++)
{
flows[i] = new Flow()
{
Date = Dates[i],
Value = Values[i]
};
}
return flows;
}
}
public void ComputeXIRR()
{
var XIRR = new XIRR(this.Flows);
IRR = XIRR.GetResult();
}
}
}

View File

@ -1,5 +1,5 @@
using System;
using EvoCalculator.Core.Calculation.FinanceFormulas;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;

View File

@ -0,0 +1,35 @@
using System;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
namespace EvoCalculator.Core.Calculation.Columns
{
public class SumColumn : BaseColumnWithXIRR
{
public SumColumn(int count, DateTempColumn dateTempColumn)
{
base.Values = new double[count];
base.Dates = new DateTime[dateTempColumn.Values.Length];
for (var i = 0; i < dateTempColumn.Values.Length; i++)
{
base.Dates[i] = dateTempColumn.Values[i];
}
}
public void ComputeValues(PreparedValues preparedValues, PercentPaymentColumn percentPaymentColumn)
{
Values[0] = -preparedValues.BaseCost;
Values[1] = preparedValues.FirstPaymentSum;
Values[2] = 98647.7277641429;
for (var i = 3; i < Values.Length - 1; i++)
{
Values[i] = Values[2] * percentPaymentColumn.Values[i] / 100;
}
Values[^1] = preparedValues.LastPaymentSum;
}
}
}

View File

@ -5,6 +5,7 @@
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj" />
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
</ItemGroup>

View File

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>EvoCalculator.Core.FinanceFormulas</RootNamespace>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\EvoCalculator.Core.Models\EvoCalculator.Core.Models.csproj" />
</ItemGroup>
</Project>

View File

@ -2,7 +2,7 @@
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.FinanceFormulas
namespace EvoCalculator.Core.FinanceFormulas
{
public class XIRR : IFinanceFormula<double>
{

View File

@ -3,7 +3,7 @@ using System.Linq;
using EvoCalculator.Core.Models.Calculation.Interfaces;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Calculation.FinanceFormulas
namespace EvoCalculator.Core.FinanceFormulas
{
public class XNPV : IFinanceFormula<double>
{

View File

@ -0,0 +1,12 @@
using System;
using EvoCalculator.Core.Models.Calculation.Models;
namespace EvoCalculator.Core.Models.Calculation.Interfaces
{
public interface IColumnWithXIRR<T> : IColumn<T>
{
public double IRR { get; set; }
public DateTime[] Dates { get; set; }
public void ComputeXIRR();
}
}

View File

@ -0,0 +1,182 @@
using System;
using EvoCalculator.Core.Calculation.Columns;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using Xunit;
namespace EvoCalculator.Core.Tests.Calculation.Suite.Columns
{
public class SumColumnTest
{
[Fact]
public void SumColumnTest1()
{
var preparedValues =
new PreparedValues()
{
BaseCost = 2842960.70661055,
FirstPaymentSum = 636000,
Nmper = 30,
LastPaymentSum = 25440
};
var percentPaymentColumn = new PercentPaymentColumn(preparedValues.Nmper + 1)
{
Values = new[]
{
0.00,
0.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
100.00,
0.00,
}
};
var dateTempColumn = new DateTempColumn()
{
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);
sumColumn.ComputeValues(preparedValues, percentPaymentColumn);
var expected = new[]
{
-2842960.70661055,
636000,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
98647.7277641429,
25440,
};
var values = sumColumn.Values;
Assert.Equal(expected, values);
sumColumn.ComputeXIRR();
Assert.InRange(sumColumn.IRR, 0.220325, 0.220327);
}
}
}

View File

@ -1,6 +1,6 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.FinanceFormulas;
using EvoCalculator.Core.FinanceFormulas;
using EvoCalculator.Core.Models.Calculation.Models;
using Xunit;
using Xunit.Abstractions;

View File

@ -10,6 +10,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.Models",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.Constants", "EvoCalculator.Core.Constants\EvoCalculator.Core.Constants.csproj", "{A2774317-9EC4-425C-B63F-C5255BE2E5E2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EvoCalculator.Core.FinanceFormulas", "EvoCalculator.Core.FinanceFormulas\EvoCalculator.Core.FinanceFormulas.csproj", "{57FC4E65-3E6B-4C10-8792-58639D068F71}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -36,5 +38,9 @@ Global
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A2774317-9EC4-425C-B63F-C5255BE2E5E2}.Release|Any CPU.Build.0 = Release|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Debug|Any CPU.Build.0 = Debug|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Release|Any CPU.ActiveCfg = Release|Any CPU
{57FC4E65-3E6B-4C10-8792-58639D068F71}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal