diff --git a/process/load-kp/reactions.ts b/process/load-kp/reactions.ts index ecf53c3..16926b2 100644 --- a/process/load-kp/reactions.ts +++ b/process/load-kp/reactions.ts @@ -1,6 +1,7 @@ import message from 'Elements/message'; import { reaction } from 'mobx'; import type { ReactionsContext } from 'process/types'; +import { pick } from 'radash'; const key = 'KP_LOADING_INFO'; @@ -21,12 +22,15 @@ export default function loadKpReactions({ store, trpcClient }: ReactionsContext) content: `Загружаем КП ${quoteName}...`, }); + const payload = { + values: { + quote: quoteId, + ...pick($calculation.$values.values, ['recalcWithRevision']), + }, + }; + trpcClient.quote.getValues - .query({ - values: { - quote: quoteId, - }, - }) + .query(payload) .then(({ values }) => { $calculation.$values.setValues({ values, @@ -36,7 +40,6 @@ export default function loadKpReactions({ store, trpcClient }: ReactionsContext) key, content: `КП ${quoteName} загружено`, }); - // hide(); }) .catch(() => { message.error({ diff --git a/process/load-kp/types.ts b/process/load-kp/types.ts new file mode 100644 index 0000000..510ace9 --- /dev/null +++ b/process/load-kp/types.ts @@ -0,0 +1,25 @@ +import ValuesSchema from 'config/schema/values'; +import { z } from 'zod'; + +export const GetQuoteDataInputSchema = z.object({ + values: z + .object({ + quote: ValuesSchema.shape.quote.unwrap(), + }) + .merge( + ValuesSchema.pick({ + recalcWithRevision: true, + }) + ), +}); +export type GetQuoteDataInput = z.infer; + +export const GetQuoteDataOutputSchema = z.object({ + values: ValuesSchema, +}); +export type GetQuoteDataOutput = z.infer; + +export const GetQuoteDataPartOutputSchema = z.object({ + values: ValuesSchema.partial(), +}); +export type GetQuoteDataPartOutput = z.infer; diff --git a/process/supplier-agent/get-kp-values/index.ts b/process/supplier-agent/get-kp-values/index.ts index 37372d4..18d21ab 100644 --- a/process/supplier-agent/get-kp-values/index.ts +++ b/process/supplier-agent/get-kp-values/index.ts @@ -1,7 +1,7 @@ import { gql } from '@apollo/client'; import initializeApollo from 'apollo/client'; import type * as CRMTypes from 'graphql/crm.types'; -import type { CalculationValues } from 'stores/calculation/values/types'; +import type { GetQuoteDataInput, GetQuoteDataPartOutput } from '../../load-kp/types'; import getSums from './get-sums'; const QUERY_GET_AGENTS_DATA_FROM_QUOTE = gql` @@ -38,17 +38,9 @@ const QUERY_GET_AGENTS_DATA_FROM_QUOTE = gql` export type Quote = NonNullable; -type GetSupplierAgentsFromKP = { - quoteId: NonNullable; -}; - -type GetSupplierAgentsFromKPResult = { - values: Partial; -}; - export default async function getSupplierAgentsDataFromKP({ - quoteId, -}: GetSupplierAgentsFromKP): Promise { + values: { quote: quoteId }, +}: GetQuoteDataInput): Promise { const apolloClient = initializeApollo(); const { diff --git a/trpc/routers/quote.ts b/trpc/routers/quote.ts index b85ff3e..45ebfdb 100644 --- a/trpc/routers/quote.ts +++ b/trpc/routers/quote.ts @@ -1,30 +1,20 @@ import defaultValues from 'config/default-values'; -import ValuesSchema from 'config/schema/values'; +import { GetQuoteDataInputSchema, GetQuoteDataOutputSchema } from 'process/load-kp/types'; import getSupplierAgentsDataFromKP from 'process/supplier-agent/get-kp-values'; -import { z } from 'zod'; import { t } from '../server'; const quoteRouter = t.router({ getValues: t.procedure - .input( - z.object({ - values: ValuesSchema.pick({ - quote: true, - }), - }) - ) - .output( - z.object({ - values: ValuesSchema, - }) - ) + .input(GetQuoteDataInputSchema) + .output(GetQuoteDataOutputSchema) .query(async ({ input }) => { - const { values } = await getSupplierAgentsDataFromKP({ - quoteId: input.values.quote!, - }); + const { values: supplierAgentsValues } = await getSupplierAgentsDataFromKP(input); return { - values: Object.assign(defaultValues, values), + values: { + ...defaultValues, + ...supplierAgentsValues, + }, }; }), });