diff --git a/src/client/Containers/Calculation/Results/resultsList.ts b/src/client/Containers/Calculation/Results/resultsList.ts index 56635fa..0074a28 100644 --- a/src/client/Containers/Calculation/Results/resultsList.ts +++ b/src/client/Containers/Calculation/Results/resultsList.ts @@ -27,8 +27,8 @@ export const calculationResults: IGroup[] = [ title: 'Удорожание, год', Component: Label, props: { - name: 'labelResultPriceUp', - valueName: 'resultPriceUp', + name: 'labelResultPriceUpPr', + valueName: 'resultPriceUpPr', }, }, { diff --git a/src/client/stores/CalculationStore/Effects/action.ts b/src/client/stores/CalculationStore/Effects/action.ts index b2ab93e..e5d3508 100644 --- a/src/client/stores/CalculationStore/Effects/action.ts +++ b/src/client/stores/CalculationStore/Effects/action.ts @@ -9,7 +9,15 @@ import { getUser } from 'client/tools/user'; import { TAction } from 'core/types/Calculation/Store/effect'; import { ITableCell } from 'core/types/Calculation/Store/tables'; import { Status } from 'core/types/statuses'; -import { TableProps } from './../../../../core/types/Calculation/Store/tables'; +import { TableProps } from 'core/types/Calculation/Store/tables'; +import { resultsValues } from 'core/types/Calculation/Store/values'; +import valuesConstants from 'core/constants/values'; + +const cleanResults = () => { + for (let resultValue of resultsValues) { + CalculationStore.setValue(resultValue, ''); + } +}; const actions: TAction = { createLead: () => { @@ -302,6 +310,7 @@ const actions: TAction = { CalculationStore.cleanTable('tableResults'); console.log('preparedData', preparedData); + cleanResults(); return CalculationService.calculate(preparedData) .then(res => { @@ -332,6 +341,74 @@ const actions: TAction = { console.log('calculation res', res); + //set values + CalculationStore.setValue( + 'resultTotalGraphwithNDS', + sumWithVatColumn?.values.shift().reduce((a, b) => a + b), + ); + CalculationStore.setValue( + 'resultPlPrice', + preparedData.preparedValues.acceptSum * (1 + valuesConstants.VAT), + ); + CalculationStore.setValue( + 'resultPriceUpPr', + res?.postValues?.priceUP_PR || '', + ); + CalculationStore.setValue( + 'resultIRRGraphPerc', + res?.columns?.cashflowColumn?.irr || '', + ); + CalculationStore.setValue( + 'resultIRRNominalPerc', + res?.columns?.cashflowMsfoColumn?.nominal || '', + ); + CalculationStore.setValue( + 'resultInsKasko', + preparedData?.preparedValues?.insuranceKasko || '', + ); + CalculationStore.setValue( + 'resultInsOsago', + preparedData?.preparedValues?.insuranceOsago || '', + ); + CalculationStore.setValue( + 'resultInsOsago', + preparedData?.preparedValues?.insuranceOsago || '', + ); + CalculationStore.setValue( + 'resultDopProdSum', + (preparedData?.preparedValues?.rats || 0) + + (preparedData?.preparedValues?.registration || 0) + + (preparedData?.preparedValues?.trackerCost || 0) + + (preparedData?.preparedValues?.tLMCost || 0) + + (preparedData?.preparedValues?.nsibBrutto || 0), + ); + CalculationStore.setValue( + 'resultFirstPayment', + preparedData?.preparedValues?.firstPaymentSum || + 0 * (1 + valuesConstants.VAT), + ); + CalculationStore.setValue( + 'resultLastPayment', + preparedData?.preparedValues?.lastPaymentSum || + 0 * (1 + valuesConstants.VAT), + ); + + CalculationStore.setValue( + 'resultTerm', + preparedData?.preparedValues?.nmper || '', + ); + CalculationStore.setValue( + 'resultAB', + (preparedData?.preparedValues?.agentsSum || 0) + + (preparedData?.preparedValues?.doubleAgentsSum || 0) + + (preparedData?.preparedValues?.deliverySum || 0) + + (preparedData?.preparedValues?.brokerSum || 0) + + (preparedData?.preparedValues?.brokerOfDeliverySum || 0) + + (preparedData?.preparedValues?.financialDeptOfDeliverySum || 0), + ); + + //set values + return { ...res, ...preparedData }; }) .catch(err => { diff --git a/src/core/types/Calculation/Store/elements.ts b/src/core/types/Calculation/Store/elements.ts index b0b6fd6..c01d0f0 100644 --- a/src/core/types/Calculation/Store/elements.ts +++ b/src/core/types/Calculation/Store/elements.ts @@ -137,7 +137,7 @@ export type ElementsNames = export type ResultElementsNames = | 'labelResultTotalGraphwithNDS' | 'labelResultPlPrice' - | 'labelResultPriceUp' + | 'labelResultPriceUpPr' | 'labelResultIRRGraphPerc' | 'labelResultIRRNominalPerc' | 'labelResultInsKasko' @@ -156,5 +156,5 @@ export enum ElementType { } export type TElements = { - [elementName in ElementsNames & ResultElementsNames]?: T; + [elementName in ElementsNames | ResultElementsNames]?: T; }; diff --git a/src/core/types/Calculation/Store/index.ts b/src/core/types/Calculation/Store/index.ts index bdf238f..825b152 100644 --- a/src/core/types/Calculation/Store/index.ts +++ b/src/core/types/Calculation/Store/index.ts @@ -12,7 +12,7 @@ import { TableProps, TCellCallback, } from './tables'; -import { TValue, TValues, ValuesNames } from './values'; +import { TValue, TValues, ValuesNames, ResultValuesNames } from './values'; interface ICalculationValues { staticData: TStaticData; @@ -37,7 +37,10 @@ interface ICalculationValues { values: TValues; getValue: (sourceValueName: ValuesNames) => TValue; - setValue: (sourceValueName: ValuesNames, newValue: TValue) => void; + setValue: ( + sourceValueName: ValuesNames | ResultValuesNames, + newValue: TValue, + ) => void; statuses: TElements; getStatus: (elementName: ElementsNames) => Status; diff --git a/src/core/types/Calculation/Store/values.ts b/src/core/types/Calculation/Store/values.ts index aa05ae9..fba524f 100644 --- a/src/core/types/Calculation/Store/values.ts +++ b/src/core/types/Calculation/Store/values.ts @@ -126,20 +126,23 @@ export type ComputedValuesNames = | 'leaseObjectRiskName' | 'insKaskoPriceLeasePeriod'; -export type ResultValuesNames = - | 'resultTotalGraphwithNDS' - | 'resultPlPrice' - | 'resultPriceUp' - | 'resultIRRGraphPerc' - | 'resultIRRNominalPerc' - | 'resultInsKasko' - | 'resultInsOsago' - | 'resultDopProdSum' - | 'resultFirstPayment' - | 'resultLastPayment' - | 'resultTerm' - | 'resultAB' - | 'resultBonusMPL'; +export const resultsValues = [ + 'resultTotalGraphwithNDS', + 'resultPlPrice', + 'resultPriceUpPr', + 'resultIRRGraphPerc', + 'resultIRRNominalPerc', + 'resultInsKasko', + 'resultInsOsago', + 'resultDopProdSum', + 'resultFirstPayment', + 'resultLastPayment', + 'resultTerm', + 'resultAB', + 'resultBonusMPL', +] as const; // TS 3.4 +type SuitTuple = typeof resultsValues; // readonly ['hearts', 'diamonds', 'spades', 'clubs'] +export type ResultValuesNames = SuitTuple[number]; // union type export type TValues = { [valueName in ValuesNames | ResultValuesNames]?: T;