process/load-kp: typescript fixes

This commit is contained in:
Chika 2022-11-09 13:31:12 +03:00
parent f03ba9d979
commit 58fdfb1ed9
4 changed files with 45 additions and 35 deletions

View File

@ -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({

25
process/load-kp/types.ts Normal file
View File

@ -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<typeof GetQuoteDataInputSchema>;
export const GetQuoteDataOutputSchema = z.object({
values: ValuesSchema,
});
export type GetQuoteDataOutput = z.infer<typeof GetQuoteDataOutputSchema>;
export const GetQuoteDataPartOutputSchema = z.object({
values: ValuesSchema.partial(),
});
export type GetQuoteDataPartOutput = z.infer<typeof GetQuoteDataPartOutputSchema>;

View File

@ -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<CRMTypes.GetAgentsDataFromQuoteQuery['quote']>;
type GetSupplierAgentsFromKP = {
quoteId: NonNullable<CalculationValues['quote']>;
};
type GetSupplierAgentsFromKPResult = {
values: Partial<CalculationValues>;
};
export default async function getSupplierAgentsDataFromKP({
quoteId,
}: GetSupplierAgentsFromKP): Promise<GetSupplierAgentsFromKPResult> {
values: { quote: quoteId },
}: GetQuoteDataInput): Promise<GetQuoteDataPartOutput> {
const apolloClient = initializeApollo();
const {

View File

@ -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,
},
};
}),
});