From 2d658208f6e66cdb92b84300c3eabc81c9815ff5 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 10 Apr 2023 18:03:50 +0300 Subject: [PATCH] modify createCurrencyUtility.RUB --- apps/web/process/price/reactions/computed.ts | 42 ++++++++----------- .../server/routers/calculate/lib/request.ts | 17 ++------ apps/web/utils/currency.ts | 13 ++++++ 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/apps/web/process/price/reactions/computed.ts b/apps/web/process/price/reactions/computed.ts index 199f479..9f883ee 100644 --- a/apps/web/process/price/reactions/computed.ts +++ b/apps/web/process/price/reactions/computed.ts @@ -1,4 +1,3 @@ -import * as CRMTypes from '@/graphql/crm.types'; import type { ProcessContext } from '@/process/types'; import { createCurrencyUtility } from '@/utils/currency'; import { reaction } from 'mobx'; @@ -9,32 +8,10 @@ export default function reactions({ store, apolloClient }: ProcessContext) { const { RUB } = createCurrencyUtility({ apolloClient }); reaction( - () => - $calculation.$values.getValues([ - 'supplierCurrency', - 'leaseObjectPrice', - 'supplierDiscountRub', - ]), - async ({ supplierCurrency: supplierCurrencyId, supplierDiscountRub, leaseObjectPrice }) => { + () => $calculation.$values.getValues(['supplierCurrency', 'leaseObjectPrice']), + async ({ supplierCurrency: supplierCurrencyId, leaseObjectPrice }) => { if (!supplierCurrencyId) { $calculation.$values.resetValue('plPriceRub'); - $calculation.$values.resetValue('discountRub'); - - return; - } - - const { - data: { transactioncurrency }, - } = await apolloClient.query({ - query: CRMTypes.GetTransactionCurrencyDocument, - variables: { - currencyid: supplierCurrencyId, - }, - }); - - if (transactioncurrency?.isocurrencycode === 'RUB') { - $calculation.$values.setValue('plPriceRub', leaseObjectPrice); - $calculation.$values.setValue('discountRub', supplierDiscountRub); return; } @@ -46,6 +23,21 @@ export default function reactions({ store, apolloClient }: ProcessContext) { value: leaseObjectPrice, }) ); + }, + { + delay: 100, + fireImmediately: true, + } + ); + + reaction( + () => $calculation.$values.getValues(['supplierCurrency', 'supplierDiscountRub']), + async ({ supplierCurrency: supplierCurrencyId, supplierDiscountRub }) => { + if (!supplierCurrencyId) { + $calculation.$values.resetValue('discountRub'); + + return; + } $calculation.$values.setValue( 'discountRub', diff --git a/apps/web/server/routers/calculate/lib/request.ts b/apps/web/server/routers/calculate/lib/request.ts index 4c50c66..13abbb4 100644 --- a/apps/web/server/routers/calculate/lib/request.ts +++ b/apps/web/server/routers/calculate/lib/request.ts @@ -47,15 +47,6 @@ export async function createRequestData({ const currentUTCDate = dayjs().utc(false); - const transactioncurrency = values.supplierCurrency - ? ( - await apolloClient.query({ - query: CRMTypes.GetTransactionCurrencyDocument, - variables: { currencyid: values.supplierCurrency }, - }) - ).data.transactioncurrency - : null; - let systemuser: CRMTypes.GetSystemUserQuery['systemuser'] = null; if (user?.domainName) { @@ -396,7 +387,7 @@ export async function createRequestData({ }, async discount() { - if (values.supplierCurrency && transactioncurrency?.isocurrencycode !== 'RUB') { + if (values.supplierCurrency) { return ( ((await RUB({ currencyid: values.supplierCurrency, @@ -921,7 +912,7 @@ export async function createRequestData({ }, async plPrice() { - if (values.supplierCurrency && transactioncurrency?.isocurrencycode !== 'RUB') { + if (values.supplierCurrency) { return ( (await RUB({ currencyid: values.supplierCurrency, @@ -935,7 +926,7 @@ export async function createRequestData({ }, async plPriceVAT() { - if (values.supplierCurrency && transactioncurrency?.isocurrencycode !== 'RUB') { + if (values.supplierCurrency) { return ( (await RUB({ currencyid: values.supplierCurrency, @@ -952,7 +943,7 @@ export async function createRequestData({ }, async plPriceWithVAT() { - if (values.supplierCurrency && transactioncurrency?.isocurrencycode !== 'RUB') { + if (values.supplierCurrency) { return ( (await RUB({ currencyid: values.supplierCurrency, diff --git a/apps/web/utils/currency.ts b/apps/web/utils/currency.ts index 222de25..c4bf647 100644 --- a/apps/web/utils/currency.ts +++ b/apps/web/utils/currency.ts @@ -17,6 +17,19 @@ type Input = { export function createCurrencyUtility({ apolloClient }: Context) { return { async RUB({ currencyid, value }: Input) { + const { + data: { transactioncurrency }, + } = await apolloClient.query({ + query: CRMTypes.GetTransactionCurrencyDocument, + variables: { + currencyid, + }, + }); + + if (transactioncurrency?.isocurrencycode === 'RUB') { + return value; + } + const { data: { evo_currencychanges }, } = await apolloClient.query({