add validation & postcheck

This commit is contained in:
Chika 2020-11-22 21:55:26 +03:00
parent 646b17a1a5
commit 819da95e70
5 changed files with 467 additions and 337 deletions

View File

@ -38,6 +38,7 @@
</e>
<e p="EvoCalculator.Core.Calculation" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />
<e p="CheckTools.cs" t="Include" />
<e p="Columns" t="Include">
<e p="AcceptInsuranceColumn.cs" t="Include" />
<e p="AcceptKaskoColumn.cs" t="Include" />
@ -121,6 +122,7 @@
<e p="PriceUP_Year.cs" t="Include" />
<e p="PriceUP_Year_PR.cs" t="Include" />
</e>
<e p="Validation.cs" t="Include" />
</e>
<e p="EvoCalculator.Core.Constants" t="IncludeRecursive">
<e p="bin" t="ExcludeRecursive" />

View File

@ -14,18 +14,14 @@
</component>
<component name="ChangeListManager">
<list default="true" id="2c3b0650-5589-43d4-b4b7-2979612bb30f" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/CheckTools.cs" afterDir="false" />
<change afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Validation.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$/Dockerfile" beforeDir="false" afterPath="$PROJECT_DIR$/Dockerfile" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinalColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVFinalColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.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" />
<change beforePath="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" beforeDir="false" afterPath="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -36,29 +32,32 @@
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile">
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/69/Convert.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.FinanceFormulas/XIRR.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/DecompilerCache/decompiler/E2E1F770-6781-48FC-97C9-82BA075D5898/af/6846d1ce/GoalSeek.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Constants/Calculation.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/F680C866-D120-4163-9634-EBD842255BE9/136/ActionFilterAttribute.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/168/Future.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PostValues.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core/Controllers/v1/CalculationController.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/F680C866-D120-4163-9634-EBD842255BE9/F3/ActionMethodExecutor.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PriceUP_Year_PR.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/F680C866-D120-4163-9634-EBD842255BE9/194/ObjectMethodExecutor.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/AD61CA47-F8B7-4CC6-93A0-BA44CC73B5C7/262/AsyncValueTaskMethodBuilder.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core/Controllers/v1/CalculationController.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PriceUP_Year.cs" root0="FORCE_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core/Controllers/v1/CalculationController.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock:///Dummy.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$APPLICATION_CONFIG_DIR$/resharper-host/SourcesCache/1E91381A-E6FB-483F-B621-BC63C0219EA8/11/HttpResponseWritingExtensions.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="mock://C:/Users/Chika/Projects/EvoCalculator.Core/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" root0="SKIP_HIGHLIGHTING" />
<setting file="file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PriceUP.cs" root0="FORCE_HIGHLIGHTING" />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PostValues.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Post/PostValuess.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/BaseCost.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Post/BonusBase.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Post/PostValues.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/BasePostValue.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumTest.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Controller/CalculationControllerV1Tests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DirectorBonusSumColumn.cs" />
@ -75,7 +74,6 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/SumWithVatTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/TaxColumnTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Columns/VATColumnTests.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Tests/Calculation/Post/PriceUp.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PriceUP.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PriceUP_PR.cs" />
@ -91,7 +89,6 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/BonusResult.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Post/PostValues.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/Test.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedPayments.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Request/RequestCalculation.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/TaxColumn.cs" />
@ -102,8 +99,16 @@
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/CashflowNPVFinal2Column.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/NPVFinal2Column.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Startup.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Program.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/VATColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Models/Calculation/Models/Prepared/PreparedValues.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Validation.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/BaseColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/DateColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumRepaymentColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs" />
<option value="$PROJECT_DIR$/EvoCalculator.Core.Calculation/CheckTools.cs" />
</list>
</option>
</component>
@ -211,7 +216,10 @@
<workItem from="1605168996296" duration="78000" />
<workItem from="1605195180317" duration="3232000" />
<workItem from="1605201387598" duration="7501000" />
<workItem from="1605700922034" duration="6844000" />
<workItem from="1605700922034" duration="8090000" />
<workItem from="1605776517986" duration="1856000" />
<workItem from="1605809287754" duration="7800000" />
<workItem from="1606059028039" duration="8741000" />
</task>
<task id="LOCAL-00001" summary="rename: flow">
<created>1602593830686</created>
@ -269,7 +277,21 @@
<option name="project" value="LOCAL" />
<updated>1603890043823</updated>
</task>
<option name="localTasksCounter" value="9" />
<task id="LOCAL-00009" summary="fix error when nmper greater than nmperDeprecation">
<created>1605710694822</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1605710694822</updated>
</task>
<task id="LOCAL-00010" summary="fix kaskoNmperGrColumn | dateTempColumn">
<created>1605810502844</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1605810502844</updated>
</task>
<option name="localTasksCounter" value="11" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
@ -300,7 +322,9 @@
<MESSAGE value="new column type | new columns" />
<MESSAGE value="last columns(!!!)" />
<MESSAGE value="add postValues" />
<option name="LAST_COMMIT_MESSAGE" value="add postValues" />
<MESSAGE value="fix error when nmper greater than nmperDeprecation" />
<MESSAGE value="fix kaskoNmperGrColumn | dateTempColumn" />
<option name="LAST_COMMIT_MESSAGE" value="fix kaskoNmperGrColumn | dateTempColumn" />
</component>
<component name="WindowStateProjectService">
<state x="1077" y="489" key="#Web_Browsers" timestamp="1602508282238">
@ -319,131 +343,131 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1027" y="545" key="ANALYSIS_DLG_com.jetbrains.rider.actions.impl.cleanup.RiderCodeCleanupAction$actionPerformed$dlg$1/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603798988775" />
<state width="1645" height="702" key="DebuggerActiveHint" timestamp="1605710440683">
<state width="1180" height="650" key="DebuggerActiveHint" timestamp="1606070751498">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="2131" height="1245" key="DebuggerActiveHint/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208598306" />
<state width="1645" height="702" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710440683" />
<state width="2517" height="316" key="GridCell.Tab.0.bottom" timestamp="1605710425560">
<state width="1180" height="650" key="DebuggerActiveHint/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070751498" />
<state width="2517" height="173" key="GridCell.Tab.0.bottom" timestamp="1606070714519">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="496" key="GridCell.Tab.0.bottom/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208216865" />
<state width="1493" height="321" key="GridCell.Tab.0.bottom/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425560" />
<state width="2517" height="316" key="GridCell.Tab.0.center" timestamp="1605710425559">
<state width="2517" height="173" key="GridCell.Tab.0.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714519" />
<state width="2517" height="173" key="GridCell.Tab.0.center" timestamp="1606070714519">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="496" key="GridCell.Tab.0.center/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208216865" />
<state width="1493" height="321" key="GridCell.Tab.0.center/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563326" />
<state width="2517" height="316" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425559" />
<state width="2517" height="316" key="GridCell.Tab.0.left" timestamp="1605710425559">
<state width="2517" height="173" key="GridCell.Tab.0.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714519" />
<state width="2517" height="173" key="GridCell.Tab.0.left" timestamp="1606070714519">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="496" key="GridCell.Tab.0.left/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208216865" />
<state width="1493" height="321" key="GridCell.Tab.0.left/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563326" />
<state width="2517" height="316" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425559" />
<state width="2517" height="316" key="GridCell.Tab.0.right" timestamp="1605710425560">
<state width="2517" height="173" key="GridCell.Tab.0.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714519" />
<state width="2517" height="173" key="GridCell.Tab.0.right" timestamp="1606070714519">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="496" key="GridCell.Tab.0.right/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208216865" />
<state width="1493" height="321" key="GridCell.Tab.0.right/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425560" />
<state width="2517" height="316" key="GridCell.Tab.1.bottom" timestamp="1605710432197">
<state width="2517" height="173" key="GridCell.Tab.0.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714519" />
<state width="2517" height="173" key="GridCell.Tab.1.bottom" timestamp="1606070722020">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.1.bottom/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.1.bottom/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710432197" />
<state width="2517" height="316" key="GridCell.Tab.1.center" timestamp="1605710432197">
<state width="2517" height="173" key="GridCell.Tab.1.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070722020" />
<state width="2517" height="173" key="GridCell.Tab.1.center" timestamp="1606070722020">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.1.center/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.1.center/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710432197" />
<state width="2517" height="316" key="GridCell.Tab.1.left" timestamp="1605710432197">
<state width="2517" height="173" key="GridCell.Tab.1.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070722020" />
<state width="2517" height="173" key="GridCell.Tab.1.left" timestamp="1606070722020">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.1.left/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.1.left/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710432197" />
<state width="2517" height="316" key="GridCell.Tab.1.right" timestamp="1605710432197">
<state width="2517" height="173" key="GridCell.Tab.1.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070722020" />
<state width="2517" height="173" key="GridCell.Tab.1.right" timestamp="1606070722020">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.1.right/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.1.right/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710432197" />
<state width="2517" height="316" key="GridCell.Tab.2.bottom" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.1.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070722020" />
<state width="2517" height="173" key="GridCell.Tab.2.bottom" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.2.bottom/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.2.bottom/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.2.center" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.2.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.2.center" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.2.center/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.2.center/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.2.left" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.2.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.2.left" timestamp="1606070714387">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.2.left/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.2.left/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.2.right" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.2.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714387" />
<state width="2517" height="173" key="GridCell.Tab.2.right" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.2.right/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.2.right/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.3.bottom" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.2.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.3.bottom" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.3.bottom/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.3.bottom/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="316" key="GridCell.Tab.3.center" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.3.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.3.center" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.3.center/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.3.center/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.3.left" timestamp="1605710425112">
<state width="2517" height="173" key="GridCell.Tab.3.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.3.left" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.3.left/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.3.left/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563327" />
<state width="2517" height="316" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425112" />
<state width="2517" height="316" key="GridCell.Tab.3.right" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.3.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.3.right" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.3.right/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.3.right/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="316" key="GridCell.Tab.4.bottom" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.3.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.4.bottom" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.4.bottom/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.4.bottom/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="316" key="GridCell.Tab.4.center" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.4.bottom/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.4.center" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.4.center/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.4.center/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="316" key="GridCell.Tab.4.left" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.4.center/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.4.left" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.4.left/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.4.left/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="316" key="GridCell.Tab.4.right" timestamp="1605710425113">
<state width="2517" height="173" key="GridCell.Tab.4.left/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state width="2517" height="173" key="GridCell.Tab.4.right" timestamp="1606070714388">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="3029" height="495" key="GridCell.Tab.4.right/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605208200096" />
<state width="1493" height="321" key="GridCell.Tab.4.right/0.0.1536.824/-3840.-1059.3072.1688@0.0.1536.824" timestamp="1605204563328" />
<state width="2517" height="316" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605710425113" />
<state width="2517" height="173" key="GridCell.Tab.4.right/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606070714388" />
<state x="872" y="432" key="Rider.ProjectTemplateDialog.Size" timestamp="1602854431119">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -452,10 +476,10 @@
<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="1603797366348" />
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1603882876984">
<state x="1078" y="410" key="RollbackChangesDialog" timestamp="1606062331179">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="1078" y="410" key="RollbackChangesDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603882876984" />
<state x="1078" y="410" key="RollbackChangesDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606062331179" />
<state x="-3228" y="-780" width="1537" height="899" key="SettingsEditor" timestamp="1605169070638">
<screen x="-3840" y="-1059" width="3072" height="1688" />
</state>
@ -465,15 +489,19 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="498" height="446" key="SwitcherDM/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603454051875" />
<state x="-3730" y="-948" width="2852" height="1467" key="VCS.FileHistoryDialog" timestamp="1605207856924">
<screen x="-3840" y="-1059" width="3072" height="1688" />
</state>
<state x="-3730" y="-948" width="2852" height="1467" key="VCS.FileHistoryDialog/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605207856924" />
<state x="92" y="92" width="2376" height="1216" key="VCS.FileHistoryDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603709850962" />
<state x="872" y="433" key="Vcs.Push.Dialog.v2" timestamp="1603890047888">
<state x="92" y="92" width="2376" height="1216" key="VCS.FileHistoryDialog" timestamp="1606064680864">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="872" y="433" key="Vcs.Push.Dialog.v2/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1603890047888" />
<state x="-3730" y="-948" width="2852" height="1467" key="VCS.FileHistoryDialog/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605207856924" />
<state x="92" y="92" width="2376" height="1216" key="VCS.FileHistoryDialog/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606064680864" />
<state x="872" y="433" key="Vcs.Push.Dialog.v2" timestamp="1605810504729">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="872" y="433" key="Vcs.Push.Dialog.v2/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605810504729" />
<state width="1288" height="708" key="XDebugger.FullValuePopup" timestamp="1606066433182">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state width="1288" height="708" key="XDebugger.FullValuePopup/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1606066433182" />
<state x="92" y="92" width="2376" height="1216" key="com.intellij.history.integration.ui.views.DirectoryHistoryDialog" timestamp="1603456576335">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -486,11 +514,11 @@
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="192" y="0" width="1099" height="909" key="dock-window-1/0.0.2560.1400/2560.0.1920.1040@0.0.2560.1400" timestamp="1605705406149" />
<state x="759" y="244" width="1137" height="959" key="find.popup" timestamp="1605710500054">
<state x="759" y="244" width="1137" height="959" key="find.popup" timestamp="1605815140721">
<screen x="0" y="0" width="2560" height="1400" />
</state>
<state x="-2929" y="-765" width="1365" height="1157" key="find.popup/0.0.1536.824/-3840.-1059.3072.1688@-3840.-1059.3072.1688" timestamp="1605205829000" />
<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="1605710500054" />
<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="1605815140721" />
<state x="936" y="330" key="run.anything.popup" timestamp="1603290743275">
<screen x="0" y="0" width="2560" height="1400" />
</state>
@ -504,17 +532,17 @@
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="DotNet Breakpoints">
<url>file://$PROJECT_DIR$/EvoCalculator.Core/Controllers/v1/CalculationController.cs</url>
<line>222</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core\Controllers\v1\CalculationController.cs" initialLine="222">
<url>file://$PROJECT_DIR$/EvoCalculator.Core.Calculation/Columns/SumColumn.cs</url>
<line>64</line>
<properties documentPath="C:\Users\Chika\Projects\EvoCalculator.Core\EvoCalculator.Core.Calculation\Columns\SumColumn.cs" initialLine="64">
<startOffsets>
<option value="12348" />
<option value="2362" />
</startOffsets>
<endOffsets>
<option value="12424" />
<option value="2420" />
</endOffsets>
</properties>
<option name="timeStamp" value="28" />
<option name="timeStamp" value="25" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
@ -533,6 +561,11 @@
</pinned-members>
</pin-to-top-manager>
<watches-manager>
<configuration name="LaunchSettings">
<watch expression="(_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum)/ _preparedValues.Nmper" language="C#" />
<watch expression="_percentPaymentColumn.Values.Where(x =&gt; x != 0).Min()" />
<watch expression="Convert.ToDecimal(&#10; (_postValues.BaseCost.Value - _preparedValues.FirstPaymentSum) /&#10; _preparedValues.Nmper) * (decimal) _percentPaymentColumn.Values.Where(x =&gt; x != 0).Min()" language="C#" />
</configuration>
<configuration name="RiderUnitTests">
<watch expression="Convert.ToDecimal(&#10; (this._preparedValues.BaseCost - this._preparedValues.FirstPaymentSum) /&#10; this._preparedValues.Nmper)" />
<watch expression="tlmGrColumn.Values.Skip(i).Sum(x =&gt; x)" />

View File

@ -1,4 +1,5 @@
using System;
using System.Linq;
using EvoCalculator.Core.Calculation.Post;
using EvoCalculator.Core.Models.Calculation.Models.Prepared;
using TridentGoalSeek;
@ -36,6 +37,15 @@ namespace EvoCalculator.Core.Calculation.Columns
Values[^1] = _preparedValues.LastPaymentSum;
}
private void PostCheck()
{
if (Values[1] / Values.Skip(1).Sum() >= 0.5m)
{
throw new Exception(
"Первый платеж по графику более 50% от суммы лизинговых платежей. Необходимо уменьшить первый платеж");
}
}
public override void ComputeValues(decimal requiredValue)
{
var goalSeek = new GoalSeek(this);
@ -50,6 +60,8 @@ namespace EvoCalculator.Core.Calculation.Columns
// , focusPercentage: 100
// , trimFinalInputValue: true
));
PostCheck();
}
}
}

View File

@ -0,0 +1,45 @@
using System.Collections.Generic;
using EvoCalculator.Core.Models.Calculation.Models.Request;
namespace EvoCalculator.Core.Calculation
{
public class Validation
{
public object ValidatePreparedData(RequestCalculation requestCalculation)
{
var preparedValues = requestCalculation.preparedValues;
var errors = new List<string>();
if (preparedValues.AcceptSum <= 0)
{
errors.Add("Стоимость ПЛ с учетом скидки не указана или меньше или равна 0");
}
if (preparedValues.Nmper <= 0)
{
errors.Add("Некорректно указан Срок лизинга");
}
if (preparedValues.IrrExpected <= 0 && preparedValues.Discount <= 0 && preparedValues.ComissionRub <= 0)
{
errors.Add(
"Невозможно посчитать график с IRR=0, необходимо указать или Скидку поставщика или Комиссию");
}
if (preparedValues.PaymentDateNew >= preparedValues.DogDate)
{
errors.Add(
"Некорректно указана Дата второго платежа, она не может быть раньше Даты заключения ДЛ");
}
if (errors.Count > 0)
return new
{
errors
};
return null;
}
}
}

View File

@ -1,8 +1,12 @@
using System;
using System.Threading.Tasks;
using EvoCalculator.Core.Calculation;
using EvoCalculator.Core.Calculation.Columns;
using EvoCalculator.Core.Calculation.Post;
using EvoCalculator.Core.Models.Calculation.Models.Request;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
namespace EvoCalculator.Core.Controllers.V1
{
@ -18,10 +22,21 @@ namespace EvoCalculator.Core.Controllers.V1
}
[HttpPost("[action]")]
public ActionResult<object> Calculate([FromBody] RequestCalculation requestCalculation)
public async Task Calculate([FromBody] RequestCalculation requestCalculation)
{
var preparedValues = requestCalculation.preparedValues;
var preparedPayments = requestCalculation.preparedPayments;
var validationErrors = new Validation().ValidatePreparedData(requestCalculation);
if (validationErrors != null)
{
Response.StatusCode = 500;
await Response.WriteAsync(JsonConvert.SerializeObject(validationErrors,
new JsonSerializerSettings {Formatting = Formatting.Indented}));
return;
}
var constants = new Constants.Calculation();
var postValues = new PostValues();
@ -31,264 +46,287 @@ namespace EvoCalculator.Core.Controllers.V1
? preparedValues.Nmper + 1
: preparedValues.NmperDeprecation + 2;
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn, postValues);
sumColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
var sumWithVatColumn = new SumWithVATColumn(preparedValues.Nmper + 1);
sumWithVatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(preparedValues.NmperDeprecation + 2);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var taxColumn = new TaxColumn(preparedValues.NmperDeprecation + 2);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn, ratExpensesColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.NmperDeprecation + 2);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn, ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(preparedValues.Nmper + 1);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.NmperDeprecation + 2);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.NmperDeprecation + 2);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
return new
try
{
postValues = postValues.GetValues(),
columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
var dateColumn = new DateColumn(preparedValues.Nmper + 1);
dateColumn.ComputeValues(preparedValues, constants);
var dateTempColumn = new DateTempColumn(maxColumnLength);
dateTempColumn.ComputeValues(preparedValues);
var percentPaymentColumn = new PercentPaymentColumn(preparedPayments.Rows.Length + 1);
percentPaymentColumn.ComputeValues(preparedPayments);
var kaskoNmperGrColumn =
new KaskoNmperGrColumn(preparedValues.Nmper + 1, dateTempColumn, preparedValues.IrrExpected);
kaskoNmperGrColumn.ComputeValues(preparedValues, constants);
var tlmGrColumn = new TLM_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
tlmGrColumn.ComputeValues(preparedPayments, preparedValues);
var gpsGrColumn = new GPS_GrColumn(preparedPayments.Rows.Length + 1, dateTempColumn,
preparedValues.IrrExpected);
gpsGrColumn.ComputeValues(preparedPayments, preparedValues);
postValues.BaseCost.ComputeValue(preparedValues, kaskoNmperGrColumn, tlmGrColumn, gpsGrColumn);
var sumColumn = new SumColumn(
preparedValues.Nmper + 1
, dateTempColumn
, preparedValues
, percentPaymentColumn, postValues);
sumColumn.ComputeValues(Convert.ToDecimal(preparedValues.IrrExpected));
var vatColumn = new VATColumn(preparedValues.Nmper + 1);
vatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
var sumWithVatColumn = new SumWithVATColumn(preparedValues.Nmper + 1);
sumWithVatColumn.ComputeValues(new Constants.Calculation(), sumColumn, preparedValues);
var acceptSumColumn = new AcceptSumColumn(preparedValues.Nmper + 1);
acceptSumColumn.ComputeValues(preparedValues, sumColumn, vatColumn, sumWithVatColumn);
var acceptKaskoColumn = new AcceptKaskoColumn(preparedValues.Nmper + 1);
acceptKaskoColumn.ComputeValues(preparedValues);
var acceptOsagoColumn = new AcceptOsagoColumn(preparedValues.Nmper + 1);
acceptOsagoColumn.ComputeValues(preparedValues);
var acceptInsuranceColumn = new AcceptInsuranceColumn(preparedValues.Nmper + 1);
acceptInsuranceColumn.ComputeValues(acceptKaskoColumn, acceptOsagoColumn);
var deprecationLpColumn = new DeprecationLPColumn(preparedValues.Nmper + 1);
deprecationLpColumn.ComputeValues(preparedValues, acceptSumColumn);
var deprecationLdColumn = new DeprecationLDColumn(preparedValues.NmperDeprecation + 2);
deprecationLdColumn.ComputeValues(preparedValues);
var deprecationColumn = new DeprecationColumn(preparedValues.NmperDeprecation + 2);
deprecationColumn.ComputeValues(deprecationLpColumn, deprecationLdColumn);
var kaskoBonusGrSumColumn = new KaskoBonusGrSumColumn(preparedValues.Nmper + 1);
kaskoBonusGrSumColumn.ComputeValues(preparedValues, kaskoNmperGrColumn);
postValues.BonusBase.ComputeValue(preparedValues, kaskoBonusGrSumColumn);
var npvBonusExpensesColumn = new NPVBonusExpensesColumn(preparedValues.Nmper + 1);
npvBonusExpensesColumn.ComputeValues(preparedValues, postValues);
var agentComissionExpensesColumn = new AgentComissionExpensesColumn(preparedValues.Nmper + 1);
agentComissionExpensesColumn.ComputeValues(preparedValues);
var ratExpensesColumn = new RatExpensesColumn(preparedValues.Nmper + 1);
ratExpensesColumn.ComputeValues(preparedValues);
var transExprensesColumn = new TransExpensesColumn(preparedValues.Nmper + 1);
transExprensesColumn.ComputeValues(preparedValues);
var nsibExpensesColumn = new NSIBExpensesColumn(preparedValues.Nmper + 1);
nsibExpensesColumn.ComputeValues(preparedValues);
var tlmExpensesColumn = new TLMExpensesColumn(preparedValues.Nmper + 1);
tlmExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var gpsExpensesColumn = new GPSExpensesColumn(preparedValues.Nmper + 1);
gpsExpensesColumn.ComputeValues(preparedValues, preparedPayments);
var registrExpensesColumn = new RegistrExpensesColumn(preparedValues.Nmper + 1);
registrExpensesColumn.ComputeValues(preparedValues);
var insuranceBonusExpensesColumn = new InsuranceBonusExpensesColumn(preparedValues.Nmper + 1);
insuranceBonusExpensesColumn.ComputeValues(preparedValues, constants);
var comissionBonusExpensesColumn = new ComissionBonusExpensesColumn(preparedValues.Nmper + 1);
comissionBonusExpensesColumn.ComputeValues(preparedValues);
var expensesColumn = new ExpensesColumn(preparedValues.Nmper + 1);
expensesColumn.ComputeValues(agentComissionExpensesColumn, ratExpensesColumn, transExprensesColumn,
nsibExpensesColumn, tlmExpensesColumn, gpsExpensesColumn, registrExpensesColumn,
insuranceBonusExpensesColumn, comissionBonusExpensesColumn, npvBonusExpensesColumn);
var negativeCashflowColumn = new NegativeCashflowColumn(preparedValues.Nmper + 1);
negativeCashflowColumn.ComputeValues(kaskoNmperGrColumn);
var nsibBruttoGrColumn = new NSIBBruttoGrColumn(preparedValues.Nmper + 1);
nsibBruttoGrColumn.ComputeValues(preparedValues);
var taxColumn = new TaxColumn(preparedValues.NmperDeprecation + 2);
taxColumn.ComputeValues(constants, sumColumn, acceptInsuranceColumn, deprecationColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
registrExpensesColumn, comissionBonusExpensesColumn, transExprensesColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, insuranceBonusExpensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var cashflowColumn = new CashflowColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn);
var cashflowLeasingColumn = new CashflowLeasingColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowLeasingColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
tlmGrColumn, gpsGrColumn);
var cashflowMsfoColumn = new CashflowMSFOColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoColumn.ComputeValues(preparedValues, sumColumn, negativeCashflowColumn, nsibBruttoGrColumn,
tlmGrColumn, gpsGrColumn, npvBonusExpensesColumn, agentComissionExpensesColumn);
var cashflowNpvColumn = new CashflowNPVColumn(preparedValues.NmperDeprecation + 2);
cashflowNpvColumn.ComputeValues(preparedValues, sumColumn, npvBonusExpensesColumn,
agentComissionExpensesColumn, taxColumn, nsibExpensesColumn, negativeCashflowColumn,
ratExpensesColumn,
transExprensesColumn, tlmExpensesColumn, gpsExpensesColumn);
var npvWeightColumn = new NPVWeightColumn(preparedValues.Nmper + 1);
npvWeightColumn.ComputeValues(preparedValues, dateTempColumn);
var npvColumn = new NPVColumn(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvColumn.ComputeValues(cashflowNpvColumn, npvWeightColumn);
var irrGrColumn = new IRRGrColumn(preparedValues.Nmper + 1);
irrGrColumn.ComputeValues(dateTempColumn, cashflowColumn);
var niColumn = new NIColumn(preparedValues.Nmper + 1);
niColumn.ComputeValues(preparedValues, cashflowColumn, irrGrColumn);
var interestColumn = new InterestColumn(preparedValues.Nmper + 1);
interestColumn.ComputeValues(irrGrColumn, niColumn);
var cashflowNsibColumn = new CashflowNSIBColumn(preparedValues.Nmper + 1, dateTempColumn,
nsibBruttoGrColumn, nsibExpensesColumn);
if (nsibBruttoGrColumn.Sum != 0)
cashflowNsibColumn.ComputeValues((decimal) cashflowLeasingColumn.IRR);
var revenueColumn = new RevenueColumn(preparedValues.Nmper + 1);
revenueColumn.ComputeValues(nsibBruttoGrColumn, nsibExpensesColumn, cashflowNsibColumn);
var sumCurrentColumn = new SumCurrentColumn(preparedValues.Nmper + 1);
sumCurrentColumn.ComputeValues(sumWithVatColumn);
var sumCurrentNegativeColumn = new SumCurrentNegativeColumn(preparedValues.Nmper + 1);
sumCurrentNegativeColumn.ComputeValues(negativeCashflowColumn);
var sumCurrentInterestColumn = new SumCurrentInterestColumn(preparedValues.Nmper + 1);
sumCurrentInterestColumn.ComputeValues(interestColumn);
var sumCurrentTlmColumn = new SumCurrentTLMColumn(preparedValues.Nmper + 1);
sumCurrentTlmColumn.ComputeValues(tlmGrColumn);
var sumRepaymentColumn = new SumRepaymentColumn(preparedValues.Nmper + 1);
sumRepaymentColumn.ComputeValues(constants, preparedValues, sumCurrentColumn, sumCurrentNegativeColumn,
sumCurrentInterestColumn, sumCurrentTlmColumn);
var extraBonusSumColumn = new ExtraBonusSumColumn(preparedValues.Nmper + 1);
extraBonusSumColumn.ComputeValues(preparedValues, cashflowMsfoColumn, postValues);
var cashflowMsfoFinalColumn = new CashflowMSFOFinalColumn(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinalColumn.ComputeValues(preparedValues, cashflowMsfoColumn, extraBonusSumColumn);
var cashflowNpvFinalColumn = new CashflowNPVFinalColumn(preparedValues.NmperDeprecation + 2);
cashflowNpvFinalColumn.ComputeValues(preparedValues, extraBonusSumColumn, cashflowNpvColumn);
var npvFinalColumn = new NPVFinalColumn(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvFinalColumn.ComputeValues(cashflowNpvFinalColumn, npvWeightColumn);
var directorBonusSumColumn = new DirectorBonusSumColumn(preparedValues.Nmper + 1);
directorBonusSumColumn.ComputeValues(preparedValues, postValues);
var cashflowMsfoFinal2Column = new CashflowMSFOFinal2Column(preparedValues.Nmper + 1, dateTempColumn);
cashflowMsfoFinal2Column.ComputeValues(preparedValues, directorBonusSumColumn, cashflowMsfoFinalColumn);
var cashflowNpvFinal2Column = new CashflowNPVFinal2Column(preparedValues.NmperDeprecation + 2);
cashflowNpvFinal2Column.ComputeValues(preparedValues, cashflowNpvFinalColumn, directorBonusSumColumn);
var npvFinal2Column = new NPVFinal2Column(preparedValues.NmperDeprecation + 2, dateTempColumn);
npvFinal2Column.ComputeValues(cashflowNpvFinal2Column, npvWeightColumn);
postValues.PriceUP.ComputeValue(preparedValues, sumColumn);
postValues.PriceUP_PR.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year.ComputeValue(preparedValues, postValues);
postValues.PriceUP_Year_PR.ComputeValue(preparedValues, postValues);
postValues.NPVNI.ComputeValue(preparedValues, npvColumn);
postValues.BonusResult.ComputeValue(preparedValues, npvBonusExpensesColumn);
var res = new
{
postValues = postValues.GetValues(),
columns = new
{
dateColumn,
dateTempColumn,
percentPaymentColumn,
kaskoNmperGrColumn,
tlmGrColumn,
gpsGrColumn,
sumColumn,
vatColumn,
sumWithVatColumn,
acceptSumColumn,
acceptKaskoColumn,
acceptOsagoColumn,
acceptInsuranceColumn,
deprecationLpColumn,
deprecationLdColumn,
deprecationColumn,
npvBonusExpensesColumn,
kaskoBonusGrSumColumn,
agentComissionExpensesColumn,
ratExpensesColumn,
transExprensesColumn,
nsibExpensesColumn,
tlmExpensesColumn,
gpsExpensesColumn,
registrExpensesColumn,
insuranceBonusExpensesColumn,
comissionBonusExpensesColumn,
expensesColumn,
negativeCashflowColumn,
nsibBruttoGrColumn,
taxColumn,
cashflowColumn,
cashflowLeasingColumn,
cashflowMsfoColumn,
cashflowNpvColumn,
npvWeightColumn,
npvColumn,
irrGrColumn,
niColumn,
interestColumn,
cashflowNsibColumn,
revenueColumn,
sumCurrentColumn,
sumCurrentNegativeColumn,
sumCurrentInterestColumn,
sumCurrentTlmColumn,
sumRepaymentColumn,
extraBonusSumColumn,
cashflowMsfoFinalColumn,
cashflowNpvFinalColumn,
npvFinalColumn,
directorBonusSumColumn,
cashflowMsfoFinal2Column,
cashflowNpvFinal2Column,
npvFinal2Column
}
};
Response.ContentType = "application/json";
await Response.WriteAsync(JsonConvert.SerializeObject(res,
new JsonSerializerSettings {Formatting = Formatting.Indented}));
}
catch (Exception ex)
{
Response.StatusCode = 500;
await Response.WriteAsync(JsonConvert.SerializeObject(new
{
errors = new[]
{
ex.Message
}
},
new JsonSerializerSettings {Formatting = Formatting.Indented}));
}
}
}
}