From 5c72c272b837b28626213161331c904dcf5c07da Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Mon, 10 Apr 2023 19:02:21 +0300 Subject: [PATCH] loadKP: return correct plPriceRub, discountRub --- apps/web/process/price/get-kp-data.ts | 29 ++++++- apps/web/process/price/reactions/computed.ts | 87 +++++++++++--------- 2 files changed, 75 insertions(+), 41 deletions(-) diff --git a/apps/web/process/price/get-kp-data.ts b/apps/web/process/price/get-kp-data.ts index 7093e4b..584c05f 100644 --- a/apps/web/process/price/get-kp-data.ts +++ b/apps/web/process/price/get-kp-data.ts @@ -2,8 +2,10 @@ import type { GetQuoteInputData, GetQuoteProcessData } from '../load-kp/types'; import initializeApollo from '@/apollo/client'; import defaultValues from '@/config/default-values'; import * as CRMTypes from '@/graphql/crm.types'; +import { createCurrencyUtility } from '@/utils/currency'; import { gql } from '@apollo/client'; +// eslint-disable-next-line @typescript-eslint/no-unused-vars const QUERY_GET_QUOTE_PRICE_DATA = gql` query GetQuotePriceData($quoteId: Uuid!) { quote(quoteId: $quoteId) { @@ -38,22 +40,45 @@ export async function getKPData({ }, }); + const { RUB } = createCurrencyUtility({ apolloClient }); + + const supplierCurrency = quote?.evo_transactioncurrencyid; + + const leaseObjectPrice = quote?.evo_supplier_currency_price ?? defaultValues.leaseObjectPrice; + const plPriceRub = supplierCurrency + ? await RUB({ + currencyid: supplierCurrency, + value: leaseObjectPrice, + }) + : defaultValues.plPriceRub; + + const supplierDiscountRub = + quote?.evo_discount_supplier_currency ?? defaultValues.supplierDiscountRub; + const discountRub = supplierCurrency + ? await RUB({ + currencyid: supplierCurrency, + value: supplierDiscountRub, + }) + : defaultValues.discountRub; + return { values: { VATInLeaseObjectPrice: quote?.evo_nds_in_price_supplier_currency ?? defaultValues.VATInLeaseObjectPrice, addEquipmentPrice: quote?.evo_equip_price ?? defaultValues.addEquipmentPrice, comissionPerc: quote?.evo_comission_perc ?? defaultValues.comissionPerc, + // supplierDiscountRub, + discountRub, // comissionRub: quote?.evo_comission_rub , firstPaymentPerc: quote?.evo_first_payment_perc ?? defaultValues.firstPaymentPerc, // lastPaymentRub: quote?.evo_last_payment_rub , lastPaymentPerc: quote?.evo_last_payment_perc ?? defaultValues.lastPaymentPerc, lastPaymentRule: quote?.evo_last_payment_calc, - leaseObjectPrice: quote?.evo_supplier_currency_price ?? defaultValues.leaseObjectPrice, + leaseObjectPrice, + plPriceRub, // leaseObjectPriceWthtVAT: quote?.evo_price_without_nds_supplier_currency , supplierCurrency: quote?.evo_transactioncurrencyid, supplierDiscountPerc: quote?.evo_discount_perc ?? defaultValues.supplierDiscountPerc, - // supplierDiscountRub: quote?.evo_discount_supplier_currency , }, }; } diff --git a/apps/web/process/price/reactions/computed.ts b/apps/web/process/price/reactions/computed.ts index 9f883ee..51668a4 100644 --- a/apps/web/process/price/reactions/computed.ts +++ b/apps/web/process/price/reactions/computed.ts @@ -1,55 +1,64 @@ import type { ProcessContext } from '@/process/types'; import { createCurrencyUtility } from '@/utils/currency'; import { reaction } from 'mobx'; +import { makeDisposable } from 'tools'; export default function reactions({ store, apolloClient }: ProcessContext) { - const { $calculation } = store; + const { $calculation, $process } = store; const { RUB } = createCurrencyUtility({ apolloClient }); - reaction( - () => $calculation.$values.getValues(['supplierCurrency', 'leaseObjectPrice']), - async ({ supplierCurrency: supplierCurrencyId, leaseObjectPrice }) => { - if (!supplierCurrencyId) { - $calculation.$values.resetValue('plPriceRub'); + makeDisposable( + () => + reaction( + () => $calculation.$values.getValues(['supplierCurrency', 'leaseObjectPrice']), + async ({ supplierCurrency: supplierCurrencyId, leaseObjectPrice }) => { + if (!supplierCurrencyId) { + $calculation.$values.resetValue('plPriceRub'); - return; - } + return; + } - $calculation.$values.setValue( - 'plPriceRub', - await RUB({ - currencyid: supplierCurrencyId, - value: leaseObjectPrice, - }) - ); - }, - { - delay: 100, - fireImmediately: true, - } + $calculation.$values.setValue( + 'plPriceRub', + await RUB({ + currencyid: supplierCurrencyId, + value: leaseObjectPrice, + }) + ); + }, + { + delay: 100, + fireImmediately: true, + } + ), + () => $process.has('LoadKP') ); - reaction( - () => $calculation.$values.getValues(['supplierCurrency', 'supplierDiscountRub']), - async ({ supplierCurrency: supplierCurrencyId, supplierDiscountRub }) => { - if (!supplierCurrencyId) { - $calculation.$values.resetValue('discountRub'); + makeDisposable( + () => + reaction( + () => $calculation.$values.getValues(['supplierCurrency', 'supplierDiscountRub']), + async ({ supplierCurrency: supplierCurrencyId, supplierDiscountRub }) => { + if (!supplierCurrencyId) { + $calculation.$values.resetValue('discountRub'); - return; - } + return; + } - $calculation.$values.setValue( - 'discountRub', - await RUB({ - currencyid: supplierCurrencyId, - value: supplierDiscountRub, - }) - ); - }, - { - delay: 100, - fireImmediately: true, - } + $calculation.$values.setValue( + 'discountRub', + await RUB({ + currencyid: supplierCurrencyId, + value: supplierDiscountRub, + }) + ); + }, + { + delay: 100, + fireImmediately: true, + } + ), + () => $process.has('LoadKP') ); }