From 6f498a411d1d834b515448845c1efa62205f17c2 Mon Sep 17 00:00:00 2001 From: Chika Date: Mon, 30 May 2022 18:19:27 +0300 Subject: [PATCH] irr: min/max formula --- .../Effects/actions/calculate/index.ts | 13 ++++---- .../CalculationStore/Effects/computed.ts | 33 ++++++++++++++++--- src/core/types/Calculation/Store/values.ts | 1 + 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/client/stores/CalculationStore/Effects/actions/calculate/index.ts b/src/client/stores/CalculationStore/Effects/actions/calculate/index.ts index fafb3c4..7fcba7c 100644 --- a/src/client/stores/CalculationStore/Effects/actions/calculate/index.ts +++ b/src/client/stores/CalculationStore/Effects/actions/calculate/index.ts @@ -81,13 +81,12 @@ export default function (this: ICalculationStore) { console.log('preparedData', preparedData); const getAdditionalData = () => { - const tarif = this.getOption('selectTarif'); - if (tarif) { - return { - minCashflowMSFONominal: tarif.evo_min_irr, - maxCashflowMSFONominal: tarif.evo_max_irr, - }; - } + return { + //@ts-ignore + minCashflowMSFONominal: this.irr().min, + //@ts-ignore + maxCashflowMSFONominal: this.irr().max, + }; }; var additionalData = getAdditionalData.call(this); diff --git a/src/client/stores/CalculationStore/Effects/computed.ts b/src/client/stores/CalculationStore/Effects/computed.ts index 6524d19..3e94d85 100644 --- a/src/client/stores/CalculationStore/Effects/computed.ts +++ b/src/client/stores/CalculationStore/Effects/computed.ts @@ -1,3 +1,4 @@ +import { formatNumber } from 'core/tools/format'; import { ICalculationStore } from 'core/types/Calculation/Store'; import { ComputedValuesNames } from 'core/types/Calculation/Store/values'; import { convertPrice } from './lib/tools'; @@ -8,7 +9,7 @@ const LEASE_OBJECT_RISK = { 100000002: 'Высокий', }; -type ComputedEffect = (this: ICalculationStore) => string | number | undefined; +type ComputedEffect = (this: ICalculationStore) => any; export const insKaskoPriceLeasePeriod: ComputedEffect = function () { const { leasingPeriod } = this.values; @@ -49,12 +50,34 @@ const computedEffects: Record = { return LEASE_OBJECT_RISK[evo_leasingobject_risk]; }, insKaskoPriceLeasePeriod, - irrInfo: function () { + + irr: function () { + const product = this.getOption('selectProduct'); const tarif = this.getOption('selectTarif'); - if (tarif && tarif.evo_min_irr && tarif.evo_max_irr) { - return `Min: ${tarif.evo_min_irr}% - Max: ${tarif.evo_max_irr}%`; + const { bonusCoefficient } = this.values; + + let min = 0; + let max = 0; + + if (product?.evo_cut_proportion_bonus_director && bonusCoefficient < 1) { + min = + (tarif?.evo_min_irr || 0) - + (1 - bonusCoefficient || 0) * + (tarif?.evo_cut_irr_with_bonus_coefficient || 0); + } else { + min = tarif?.evo_min_irr || 0; } - return '-'; + + max = tarif?.evo_max_irr || 0; + + return { min, max }; + }, + irrInfo: function () { + //@ts-ignore + return `Min: ${formatNumber(this.irr().min)}% - Max: ${formatNumber( + //@ts-ignore + this.irr().max, + )}%`; }, registrationDescription: function () { const registration = this.getOption('selectRegistration'); diff --git a/src/core/types/Calculation/Store/values.ts b/src/core/types/Calculation/Store/values.ts index 3b723e5..76d77b5 100644 --- a/src/core/types/Calculation/Store/values.ts +++ b/src/core/types/Calculation/Store/values.ts @@ -146,6 +146,7 @@ export type ValuesNames = export type ComputedValuesNames = | 'leaseObjectRiskName' | 'insKaskoPriceLeasePeriod' + | 'irr' | 'irrInfo' | 'registrationDescription' | 'plPriceRub'