From 69512951cd176c3a9a1784afdfe6dc6a11d1fec9 Mon Sep 17 00:00:00 2001 From: Chika Date: Tue, 27 Sep 2022 16:09:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B6=D1=83=D1=82=D0=BA=D1=83=D1=8E=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=BA=D1=86=D0=B8=D1=8E=20=D0=BF=D0=BE=20=D1=81=D1=82?= =?UTF-8?q?=D1=80=D0=B0=D1=85=D0=BE=D0=B2=D0=BA=D0=B5=20=D0=B8=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=D0=B8=20=D0=BA=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=8B=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../actions/calculate/validate/tables.ts | 43 +++++++++++++++++++ .../Effects/reactions/tablesReactions.ts | 7 ++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/client/stores/CalculationStore/Effects/actions/calculate/validate/tables.ts b/src/client/stores/CalculationStore/Effects/actions/calculate/validate/tables.ts index 4dba0dd..63c7d8d 100644 --- a/src/client/stores/CalculationStore/Effects/actions/calculate/validate/tables.ts +++ b/src/client/stores/CalculationStore/Effects/actions/calculate/validate/tables.ts @@ -122,6 +122,49 @@ function validateInsuranceTable(this: ICalculationStore) { }, }); } + + /** + * Самый откровенный костыль в истории калькулятора, + * потому что мне сейчас лень добавлять проверку текущего значения + * в отфильтрованном списке опций в таблице, + * да и это не имеет смысла + * (связано с самой жуткой реакцией по страховке) + * + * TODO: Для нового калькулятора: + * вместо костыля сбрасывать значение КАСКО на дефолтное, если текущего значения нет в списке опций + * + */ + const leasingWithoutKasko = this.getValue('leasingWithoutKasko'); + const otherInsuranceCompany = + this.tables.tableInsurance.options?.insuranceCompany?.find(x => + x.name?.includes('ПРОЧИЕ'), + ); + if ( + !leasingWithoutKasko && + kaskoRow.insuranceCompany === otherInsuranceCompany?.value + ) { + this.setTableRow('tableInsurance', rows => + rows.findIndex(x => x?.key === 'kasko'), + )({ + insuranceCompany: { + validation: false, + }, + }); + + openNotification({ + type: 'error', + message: 'Ошибка', + description: 'Укажите страховую компанию КАСКО из списка', + }); + } else { + this.setTableRow('tableInsurance', rows => + rows.findIndex(x => x?.key === 'kasko'), + )({ + insuranceCompany: { + validation: undefined, + }, + }); + } } function validatePaymentsTable(this: ICalculationStore) { diff --git a/src/client/stores/CalculationStore/Effects/reactions/tablesReactions.ts b/src/client/stores/CalculationStore/Effects/reactions/tablesReactions.ts index 24821f5..01df5b8 100644 --- a/src/client/stores/CalculationStore/Effects/reactions/tablesReactions.ts +++ b/src/client/stores/CalculationStore/Effects/reactions/tablesReactions.ts @@ -147,6 +147,7 @@ export default [ }, }), + // самая жуткая реакция по страховке (calculationStore, calculationProcess) => ({ expression: () => { const { leasingPeriod, leasingWithoutKasko } = calculationStore.values; @@ -230,7 +231,11 @@ export default [ calculationStore.setTableRow('tableInsurance', rows => rows.findIndex(x => x?.key === 'kasko'), )({ - insuranceCompany: { filter: insuranceKaskoDefaultFilter }, + insuranceCompany: { + filter: insuranceKaskoDefaultFilter, + status: ElementStatus.Default, + }, + insCost: { status: ElementStatus.Default }, }); calculationStore.setTableRow('tableInsurance', rows =>