From 30ad0d3efb0da23078777311ac19336c39f02050 Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Tue, 6 Jun 2023 13:04:14 +0300 Subject: [PATCH] Revert "process:subsidy: fix subsidySum ,importProgramSum" This reverts commit 4a65a39ba38146de54fff26b9224b7336b080bfd. --- apps/web/process/subsidy/get-kp-data.ts | 59 ++-------------- apps/web/process/subsidy/lib/helper.ts | 80 ---------------------- apps/web/process/subsidy/reactions.ts | 91 +++++++++++++++++-------- 3 files changed, 69 insertions(+), 161 deletions(-) delete mode 100644 apps/web/process/subsidy/lib/helper.ts diff --git a/apps/web/process/subsidy/get-kp-data.ts b/apps/web/process/subsidy/get-kp-data.ts index 592139a..11e616f 100644 --- a/apps/web/process/subsidy/get-kp-data.ts +++ b/apps/web/process/subsidy/get-kp-data.ts @@ -1,13 +1,9 @@ import type { GetQuoteInputData, GetQuoteProcessData } from '../load-kp/types'; -import helper from './lib/helper'; import initializeApollo from '@/apollo/client'; import defaultValues from '@/config/default-values'; import * as CRMTypes from '@/graphql/crm.types'; -import { getKPData as getKPDataPrice } from '@/process/price/get-kp-data'; -import { createCurrencyUtility } from '@/utils/currency'; import { gql } from '@apollo/client'; -// eslint-disable-next-line @typescript-eslint/no-unused-vars const QUERY_GET_QUOTE_SUBSIDY_DATA = gql` query GetQuoteSubsidyData($quoteId: Uuid!) { quote(quoteId: $quoteId) { @@ -17,11 +13,11 @@ const QUERY_GET_QUOTE_SUBSIDY_DATA = gql` } `; -export async function getKPData({ values }: GetQuoteInputData): Promise { +export async function getKPData({ + values: { quote: quoteId }, +}: GetQuoteInputData): Promise { const apolloClient = initializeApollo(); - const { quote: quoteId } = values; - const { data: { quote }, } = await apolloClient.query({ @@ -31,55 +27,10 @@ export async function getKPData({ values }: GetQuoteInputData): Promise; - -type GetImportProgramSumInput = Pick< - CalculationValues, - 'discountRub' | 'importProgram' | 'plPriceRub' ->; - -export default function helper({ apolloClient }: Pick) { - return { - async getImportProgramSum({ - importProgram: importProgramId, - plPriceRub, - discountRub, - }: GetImportProgramSumInput) { - if (!importProgramId) { - return 0; - } - - const { - data: { evo_subsidy: importProgram }, - } = await apolloClient.query({ - query: CRMTypes.GetSubsidyDocument, - variables: { - subsidyId: importProgramId, - }, - }); - - if (importProgram?.evo_subsidy_summ && importProgram?.evo_subsidy_summ > 0) { - return importProgram?.evo_subsidy_summ; - } else { - const subsidyPercent = (importProgram?.evo_percent_subsidy || 0) / 100; - - const sum = (plPriceRub - discountRub) * subsidyPercent; - const maxSum = importProgram?.evo_max_subsidy_summ || 0; - - return Math.min(sum, maxSum); - } - }, - - async getSubsidySum({ - subsidy: subsidyId, - plPriceRub, - discountRub, - addEquipmentPrice, - importProgramSum, - }: GetSubsidySumInput) { - if (!subsidyId) { - return 0; - } - - const { - data: { evo_subsidy }, - } = await apolloClient.query({ - query: CRMTypes.GetSubsidyDocument, - variables: { - subsidyId, - }, - }); - - if (evo_subsidy?.evo_subsidy_summ) { - return evo_subsidy?.evo_subsidy_summ; - } - - const price = plPriceRub - discountRub - importProgramSum + addEquipmentPrice; - - let sum = (price * (evo_subsidy?.evo_percent_subsidy ?? 0)) / 100; - const maxSum = evo_subsidy?.evo_max_subsidy_summ ?? 0; - if (sum > maxSum) sum = maxSum; - - return sum; - }, - }; -} diff --git a/apps/web/process/subsidy/reactions.ts b/apps/web/process/subsidy/reactions.ts index d31eb8d..e5209ff 100644 --- a/apps/web/process/subsidy/reactions.ts +++ b/apps/web/process/subsidy/reactions.ts @@ -1,7 +1,6 @@ -import helper from './lib/helper'; +import * as CRMTypes from '@/graphql/crm.types'; import type { ProcessContext } from '@/process/types'; -import { disposableReaction } from '@/utils/mobx'; -import { comparer } from 'mobx'; +import { reaction } from 'mobx'; /** * При изменении "Программа от производителя" selectImportProgram , Стоимости ПЛ tbxLeaseObjectPrice, Валюты selectSupplierCurrency, Скидка от поставщика, в валюте поставщика (tbxSupplierDiscountRub) @@ -20,28 +19,39 @@ import { comparer } from 'mobx'; */ /* eslint-enable */ -export function common(context: ProcessContext) { - const { store } = context; - const { $calculation, $process } = store; +export function common({ store, apolloClient }: ProcessContext) { + const { $calculation } = store; - const { getSubsidySum, getImportProgramSum } = helper(context); + reaction( + () => $calculation.$values.getValues(['importProgram', 'plPriceRub', 'supplierDiscountRub']), + async ({ importProgram: importProgramId, plPriceRub, supplierDiscountRub }) => { + if (importProgramId) { + const { + data: { evo_subsidy: importProgram }, + } = await apolloClient.query({ + query: CRMTypes.GetSubsidyDocument, + variables: { + subsidyId: importProgramId, + }, + }); - disposableReaction( - () => $process.has('LoadKP'), - () => $calculation.$values.getValues(['importProgram', 'plPriceRub', 'discountRub']), - async (values) => { - const importProgramSum = await getImportProgramSum(values); + if (importProgram?.evo_subsidy_summ && importProgram?.evo_subsidy_summ > 0) { + $calculation.element('tbxImportProgramSum').setValue(importProgram?.evo_subsidy_summ); + } else { + const subsidyPercent = (importProgram?.evo_percent_subsidy || 0) / 100; - $calculation.element('tbxImportProgramSum').setValue(importProgramSum); - }, - { - delay: 5, - equals: comparer.shallow, + const sum = (plPriceRub - supplierDiscountRub) * subsidyPercent; + const maxSum = importProgram?.evo_max_subsidy_summ || 0; + + $calculation.element('tbxImportProgramSum').setValue(Math.min(sum, maxSum)); + } + } else { + $calculation.element('tbxImportProgramSum').setValue(0); + } } ); - disposableReaction( - () => $process.has('LoadKP'), + reaction( () => $calculation.$values.getValues([ 'subsidy', @@ -49,15 +59,42 @@ export function common(context: ProcessContext) { 'discountRub', 'addEquipmentPrice', 'importProgramSum', - 'quote', ]), - async (values) => { - const subsidySum = await getSubsidySum(values); - $calculation.element('tbxSubsidySum').setValue(subsidySum); - }, - { - delay: 5, - equals: comparer.shallow, + async ({ + subsidy: subsidyId, + plPriceRub, + discountRub, + addEquipmentPrice, + importProgramSum, + }) => { + if (!subsidyId) { + $calculation.element('tbxSubsidySum').resetValue(); + + return; + } + + const { + data: { evo_subsidy: subsidy }, + } = await apolloClient.query({ + query: CRMTypes.GetSubsidyDocument, + variables: { + subsidyId, + }, + }); + + if (subsidy?.evo_subsidy_summ) { + $calculation.element('tbxSubsidySum').setValue(subsidy?.evo_subsidy_summ); + + return; + } + + const price = plPriceRub - discountRub - importProgramSum + addEquipmentPrice; + + let sum = (price * (subsidy?.evo_percent_subsidy ?? 0)) / 100; + const maxSum = subsidy?.evo_max_subsidy_summ ?? 0; + if (sum > maxSum) sum = maxSum; + + $calculation.element('tbxSubsidySum').setValue(sum); } ); }