From 57614ecddc1972777ac195d8b3fa9c5ea180d1a6 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 16 Jan 2023 17:18:53 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=A1=D0=BE=D0=B3=D0=BB=D0=B0=D1=81?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D1=81=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D1=83=20=D0=B4=D0=BE=D0=B3=D0=BE=D0=B2=D0=BE=D1=80=D1=83?= =?UTF-8?q?=20=D0=BE=D0=B1=D1=8F=D0=B7=D0=B0=D1=82=D0=B5=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D0=B0=20=D0=B2=D1=8B=D0=BF=D0=BB=D0=B0=D1=82=D0=B0=20=D0=90?= =?UTF-8?q?=D0=92.=20=D0=97=D0=B0=D0=BB=D0=BE=D0=B6=D0=B8=D1=82=D0=B5=20?= =?UTF-8?q?=D0=90=D0=92=20=D0=B2=20=D1=80=D0=B0=D1=81=D1=87=D0=B5=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../supplier-agent/lib/create-reactions.ts | 46 +++++++++++++------ apps/web/stores/calculation/options/types.ts | 2 +- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/apps/web/process/supplier-agent/lib/create-reactions.ts b/apps/web/process/supplier-agent/lib/create-reactions.ts index a41bd85..ad72e5e 100644 --- a/apps/web/process/supplier-agent/lib/create-reactions.ts +++ b/apps/web/process/supplier-agent/lib/create-reactions.ts @@ -4,7 +4,7 @@ import { gql } from '@apollo/client'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import type * as CRMTypes from 'graphql/crm.types'; -import { reaction } from 'mobx'; +import { autorun, reaction } from 'mobx'; import type RootStore from 'stores/root'; import ValidationHelper from 'stores/validation/helper'; import { normalizeOptions } from 'tools/entity'; @@ -230,18 +230,38 @@ export function validateAgentRewardSumm( validationHelper.add(removeError); }); } - - $calculation - .element(rewardSummField) - .validate({ - invalid: - evo_reward_condition?.evo_agency_agreementidData?.evo_required_reward === true && - rewardSumm === 0, - message: 'Согласно агентскому договору обязательна выплата АВ. Заложите АВ в расчет', - }) - .err((removeError) => { - validationHelper.add(removeError); - }); } ); + + autorun(() => { + const rewardSumm = $calculation.element(rewardSummField).getValue(); + const rewardConditionOptions = $calculation.$options.getOptions(rewardConditionField); + + const conditionIds = rewardConditionOptions.map((x) => x.value); + const requests = conditionIds.map(async (conditionId) => { + const { + data: { evo_reward_condition }, + } = await apolloClient.query< + CRMTypes.GetRewardConditionQuery, + CRMTypes.GetRewardConditionQueryVariables + >({ + query: QUERY_GET_REWARD_CONDITION, + variables: { + conditionId, + }, + }); + + return evo_reward_condition; + }); + + Promise.all(requests).then((results) => { + const required_reward = results.some( + (x) => x?.evo_agency_agreementidData?.evo_required_reward === true + ); + $calculation.element(rewardSummField).validate({ + invalid: rewardSumm === 0 && required_reward, + message: 'Согласно агентскому договору обязательна выплата АВ. Заложите АВ в расчет', + }); + }); + }); } diff --git a/apps/web/stores/calculation/options/types.ts b/apps/web/stores/calculation/options/types.ts index c5ffdde..130f1a9 100644 --- a/apps/web/stores/calculation/options/types.ts +++ b/apps/web/stores/calculation/options/types.ts @@ -2,5 +2,5 @@ import type { Elements, ElementsTypes } from 'Components/Calculation/config/map/ import type { BaseOption } from 'ui/elements/types'; export type CalculationOptions = { - [ElementName in Elements]: BaseOption[]; + [ElementName in Elements]: BaseOption>[]; };