From 928510c8459eb6479411424fd034610d0c866926 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Thu, 9 Feb 2023 11:39:31 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=D0=BB=D0=B8=20=D1=80=D0=B5=D0=B0=D0=BA=D1=86=D0=B8=D0=B8=20ran?= =?UTF-8?q?dom-1=20=D0=BF=D0=BE=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web/process/create-kp/reactions.ts | 19 ++++++++++++ .../process/init/inject-reactions/default.js | 9 ++++-- apps/web/process/payments/reactions.ts | 29 +++++++++++++++---- apps/web/process/price/reactions/common.ts | 13 --------- .../web/process/price/reactions/validation.ts | 20 +------------ 5 files changed, 50 insertions(+), 40 deletions(-) create mode 100644 apps/web/process/create-kp/reactions.ts diff --git a/apps/web/process/create-kp/reactions.ts b/apps/web/process/create-kp/reactions.ts new file mode 100644 index 0000000..e8af874 --- /dev/null +++ b/apps/web/process/create-kp/reactions.ts @@ -0,0 +1,19 @@ +import type { ReactionsContext } from '../types'; +import { reaction } from 'mobx'; + +export default function commonReactions({ store }: ReactionsContext) { + const { $calculation } = store; + + reaction( + () => $calculation.element('radioBalanceHolder').getValue(), + (balanceHolder) => { + if (balanceHolder) { + if (balanceHolder === 100_000_001) { + $calculation.element('cbxLastPaymentRedemption').setValue(true).block(); + } else { + $calculation.element('cbxLastPaymentRedemption').unblock(); + } + } + } + ); +} diff --git a/apps/web/process/init/inject-reactions/default.js b/apps/web/process/init/inject-reactions/default.js index 43612bc..6a98bc7 100644 --- a/apps/web/process/init/inject-reactions/default.js +++ b/apps/web/process/init/inject-reactions/default.js @@ -1,22 +1,24 @@ import * as calculateReactions from '../../calculate/reactions'; import * as configurator from '../../configurator/reactions'; +import createKPReactions from '../../create-kp/reactions'; import * as fingapReactions from '../../fingap/reactions'; import * as leadOpportunityReactions from '../../lead-opportunity/reactions'; import * as leasingObject from '../../leasing-object/reactions'; import * as leasingWithoutKaskoReactions from '../../leasing-without-kasko/reactions'; -import paymentsReactions from '../../payments/reactions'; +import loadKpReactions from '../../load-kp/reactions'; +import * as paymentsReactions from '../../payments/reactions'; import * as priceReactions from '../../price/reactions'; import * as subsidyReactions from '../../subsidy/reactions'; import * as agentsReactions from '../../supplier-agent/reactions/agents'; import leasebackReactions from '../../supplier-agent/reactions/leaseback'; import * as supplierReactions from '../../supplier-agent/reactions/supplier'; import setInitialValuesReactions from '../set-values/reactions'; -import loadKpReactions from '@/process/load-kp/reactions'; export default function injectDefaultReactions(context) { leadOpportunityReactions.common(context); leadOpportunityReactions.urls(context); - paymentsReactions(context); + paymentsReactions.commonReactions(context); + paymentsReactions.validationReactions(context); calculateReactions.validation(context); calculateReactions.common(context); supplierReactions.commonReactions(context); @@ -40,4 +42,5 @@ export default function injectDefaultReactions(context) { configurator.filters(context); configurator.values(context); configurator.validation(context); + createKPReactions(context); } diff --git a/apps/web/process/payments/reactions.ts b/apps/web/process/payments/reactions.ts index 7ad63b9..3d26d08 100644 --- a/apps/web/process/payments/reactions.ts +++ b/apps/web/process/payments/reactions.ts @@ -2,7 +2,7 @@ import * as seasonsConstants from './lib/seasons-constants'; import * as seasonsTools from './lib/seasons-tools'; import validatePaymentsTable from './validation'; import { selectHighSeasonStart } from '@/config/default-options'; -import { MIN_PAYMENT } from '@/constants/values'; +import { MIN_LASTPAYMENT_NSIB, MIN_PAYMENT } from '@/constants/values'; import type { ReactionsContext } from '@/process/types'; import type { Row } from '@/stores/tables/payments/types'; import ValidationHelper from '@/stores/validation/helper'; @@ -22,7 +22,7 @@ const { const { DEFAULT_SEASONS_VALUES, FORBIDDEN_HIGH_SEASON_START, SEASONS_PERIOD_NUMBER } = seasonsConstants; -export default function paymentsReactions({ store }: ReactionsContext) { +export function commonReactions({ store }: ReactionsContext) { const { $calculation, $tables, $process } = store; reaction( @@ -541,10 +541,11 @@ export default function paymentsReactions({ store }: ReactionsContext) { $calculation.element('selectHighSeasonStart').resetValue(); } ); +} + +export function validationReactions({ store }: ReactionsContext) { + const { $calculation, $tables } = store; - /** - * Валидация - */ const validationHelper = new ValidationHelper(); reaction( @@ -577,4 +578,22 @@ export default function paymentsReactions({ store }: ReactionsContext) { equals: comparer.structural, } ); + + reaction( + () => { + const lastPaymentRub = $calculation.element('tbxLastPaymentRub').getValue(); + const insNSIB = $calculation.element('selectInsNSIB').getValue(); + + return { + insNSIB, + lastPaymentRub, + }; + }, + ({ lastPaymentRub, insNSIB }) => { + $calculation.element('tbxLastPaymentRub').validate({ + invalid: Boolean(insNSIB) && lastPaymentRub < MIN_LASTPAYMENT_NSIB, + message: `Последний платеж меньше ${MIN_LASTPAYMENT_NSIB} руб. не может быть при наличии НСИБ, укажите большее значение`, + }); + } + ); } diff --git a/apps/web/process/price/reactions/common.ts b/apps/web/process/price/reactions/common.ts index 0ba28f2..03f5f21 100644 --- a/apps/web/process/price/reactions/common.ts +++ b/apps/web/process/price/reactions/common.ts @@ -32,19 +32,6 @@ export default function commonReactions({ store, apolloClient }: ReactionsContex } ); - reaction( - () => $calculation.element('radioBalanceHolder').getValue(), - (balanceHolder) => { - if (balanceHolder) { - if (balanceHolder === 100000001) { - $calculation.element('cbxLastPaymentRedemption').setValue(true).block(); - } else { - $calculation.element('cbxLastPaymentRedemption').unblock(); - } - } - } - ); - /** * Расчет размера скидки поставщика в валюте */ diff --git a/apps/web/process/price/reactions/validation.ts b/apps/web/process/price/reactions/validation.ts index 7fcec64..dd974c7 100644 --- a/apps/web/process/price/reactions/validation.ts +++ b/apps/web/process/price/reactions/validation.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/naming-convention */ -import { MIN_LASTPAYMENT_NSIB, VAT } from '@/constants/values'; +import { VAT } from '@/constants/values'; import * as CRMTypes from '@/graphql/crm.types'; import type { ReactionsContext } from '@/process/types'; import { reaction } from 'mobx'; @@ -9,24 +9,6 @@ import { round } from 'tools'; export default function validationReactions({ store, apolloClient }: ReactionsContext) { const { $calculation } = store; - reaction( - () => { - const lastPaymentRub = $calculation.element('tbxLastPaymentRub').getValue(); - const insNSIB = $calculation.element('selectInsNSIB').getValue(); - - return { - insNSIB, - lastPaymentRub, - }; - }, - ({ lastPaymentRub, insNSIB }) => { - $calculation.element('tbxLastPaymentRub').validate({ - invalid: Boolean(insNSIB) && lastPaymentRub < MIN_LASTPAYMENT_NSIB, - message: `Последний платеж меньше ${MIN_LASTPAYMENT_NSIB} руб. не может быть при наличии НСИБ, укажите большее значение`, - }); - } - ); - reaction( () => pick($calculation.$values.values, [