add trpc server
get calculation values types from zod schema add loadKP reaction get base agents data from kp
This commit is contained in:
parent
f7cf5134b2
commit
f85373689a
@ -76,7 +76,8 @@
|
|||||||
],
|
],
|
||||||
"import/no-unresolved": "warn",
|
"import/no-unresolved": "warn",
|
||||||
"implicit-arrow-linebreak": "warn",
|
"implicit-arrow-linebreak": "warn",
|
||||||
"operator-linebreak": "warn"
|
"operator-linebreak": "warn",
|
||||||
|
"function-paren-newline": "warn"
|
||||||
},
|
},
|
||||||
"overrides": [
|
"overrides": [
|
||||||
// Only uses Testing Library lint rules in test files
|
// Only uses Testing Library lint rules in test files
|
||||||
|
|||||||
2
Elements/message.js
Normal file
2
Elements/message.js
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/* eslint-disable no-restricted-exports */
|
||||||
|
export { message as default } from 'antd';
|
||||||
144
config/schema/values.ts
Normal file
144
config/schema/values.ts
Normal file
@ -0,0 +1,144 @@
|
|||||||
|
import { z } from 'zod';
|
||||||
|
|
||||||
|
const ValuesSchema = z.object({
|
||||||
|
lead: z.string().nullable(),
|
||||||
|
opportunity: z.string().nullable(),
|
||||||
|
quote: z.string().nullable(),
|
||||||
|
recalcWithRevision: z.boolean(),
|
||||||
|
product: z.string().nullable(),
|
||||||
|
clientRisk: z.string().nullable(),
|
||||||
|
clientType: z.string().nullable(),
|
||||||
|
leaseObjectPrice: z.number(),
|
||||||
|
supplierCurrency: z.string().nullable(),
|
||||||
|
supplierDiscountRub: z.number(),
|
||||||
|
supplierDiscountPerc: z.number(),
|
||||||
|
leasingPeriod: z.number(),
|
||||||
|
firstPaymentPerc: z.number(),
|
||||||
|
firstPaymentRub: z.number(),
|
||||||
|
lastPaymentPerc: z.number(),
|
||||||
|
lastPaymentRub: z.number(),
|
||||||
|
lastPaymentRule: z.number().nullable(),
|
||||||
|
importProgram: z.string().nullable(),
|
||||||
|
importProgramSum: z.number(),
|
||||||
|
addEquipmentPrice: z.number(),
|
||||||
|
redemptionPaymentSum: z.number(),
|
||||||
|
balanceHolder: z.number().nullable(),
|
||||||
|
graphType: z.number().nullable(),
|
||||||
|
parmentsDecreasePercent: z.number(),
|
||||||
|
seasonType: z.number().nullable(),
|
||||||
|
highSeasonStart: z.number().nullable(),
|
||||||
|
comissionPerc: z.number(),
|
||||||
|
comissionRub: z.number(),
|
||||||
|
saleBonus: z.number(),
|
||||||
|
IRR_Perc: z.number(),
|
||||||
|
leaseObjectType: z.string().nullable(),
|
||||||
|
deliveryTime: z.number().nullable(),
|
||||||
|
leaseObjectCount: z.number(),
|
||||||
|
withTrailer: z.boolean(),
|
||||||
|
leaseObjectUsed: z.boolean(),
|
||||||
|
maxMass: z.number(),
|
||||||
|
countSeats: z.number(),
|
||||||
|
maxSpeed: z.number(),
|
||||||
|
brand: z.string().nullable(),
|
||||||
|
model: z.string().nullable(),
|
||||||
|
configuration: z.string().nullable(),
|
||||||
|
leaseObjectYear: z.number(),
|
||||||
|
engineType: z.number().nullable(),
|
||||||
|
leaseObjectCategory: z.number().nullable(),
|
||||||
|
leaseObjectMotorPower: z.number(),
|
||||||
|
engineVolume: z.number(),
|
||||||
|
leaseObjectUseFor: z.number().nullable(),
|
||||||
|
dealer: z.string().nullable(),
|
||||||
|
dealerPerson: z.string().nullable(),
|
||||||
|
dealerRewardCondition: z.string().nullable(),
|
||||||
|
dealerRewardSumm: z.number(),
|
||||||
|
dealerBroker: z.string().nullable(),
|
||||||
|
dealerBrokerRewardCondition: z.string().nullable(),
|
||||||
|
dealerBrokerRewardSumm: z.number(),
|
||||||
|
indAgent: z.string().nullable(),
|
||||||
|
indAgentRewardCondition: z.string().nullable(),
|
||||||
|
indAgentRewardSumm: z.number(),
|
||||||
|
calcDoubleAgent: z.string().nullable(),
|
||||||
|
calcDoubleAgentRewardCondition: z.string().nullable(),
|
||||||
|
calcDoubleAgentRewardSumm: z.number(),
|
||||||
|
calcBroker: z.string().nullable(),
|
||||||
|
calcBrokerRewardCondition: z.string().nullable(),
|
||||||
|
calcBrokerRewardSum: z.number(),
|
||||||
|
calcFinDepartment: z.string().nullable(),
|
||||||
|
finDepartmentRewardCondtion: z.string().nullable(),
|
||||||
|
finDepartmentRewardSumm: z.number(),
|
||||||
|
GPSBrand: z.string().nullable(),
|
||||||
|
GPSModel: z.string().nullable(),
|
||||||
|
regionRegistration: z.string().nullable(),
|
||||||
|
townRegistration: z.string().nullable(),
|
||||||
|
infuranceOPF: z.number().nullable(),
|
||||||
|
insKaskoType: z.number().nullable(),
|
||||||
|
insDecentral: z.boolean(),
|
||||||
|
insFranchise: z.number(),
|
||||||
|
insUnlimitDrivers: z.boolean(),
|
||||||
|
insAgeDrivers: z.number(),
|
||||||
|
insExpDrivers: z.number(),
|
||||||
|
INNForCalc: z.number(),
|
||||||
|
lastPaymentRedemption: z.boolean(),
|
||||||
|
priceWithDiscount: z.boolean(),
|
||||||
|
fullPriceWithDiscount: z.boolean(),
|
||||||
|
costIncrease: z.boolean(),
|
||||||
|
insurance: z.boolean(),
|
||||||
|
registrationQuote: z.boolean(),
|
||||||
|
technicalCardQuote: z.boolean(),
|
||||||
|
NSIB: z.boolean(),
|
||||||
|
quoteName: z.string().nullable(),
|
||||||
|
quoteContactGender: z.number().nullable(),
|
||||||
|
quoteRedemptionGraph: z.boolean(),
|
||||||
|
showFinGAP: z.boolean(),
|
||||||
|
tarif: z.string().nullable(),
|
||||||
|
creditRate: z.number(),
|
||||||
|
rate: z.string().nullable(),
|
||||||
|
requirementTelematic: z.number().nullable(),
|
||||||
|
minPriceChange: z.number(),
|
||||||
|
maxPriceChange: z.number(),
|
||||||
|
importerRewardPerc: z.number(),
|
||||||
|
importerRewardRub: z.number(),
|
||||||
|
disableChecks: z.boolean(),
|
||||||
|
registration: z.string().nullable(),
|
||||||
|
insNSIB: z.string().nullable(),
|
||||||
|
technicalCard: z.string().nullable(),
|
||||||
|
telematic: z.string().nullable(),
|
||||||
|
tracker: z.string().nullable(),
|
||||||
|
mileage: z.number(),
|
||||||
|
calcType: z.number().nullable(),
|
||||||
|
totalPayments: z.number(),
|
||||||
|
objectRegistration: z.number().nullable(),
|
||||||
|
objectRegionRegistration: z.string().nullable(),
|
||||||
|
vehicleTaxInYear: z.number(),
|
||||||
|
vehicleTaxInLeasingPeriod: z.number(),
|
||||||
|
objectCategoryTax: z.number().nullable(),
|
||||||
|
objectTypeTax: z.number().nullable(),
|
||||||
|
typePTS: z.number().nullable(),
|
||||||
|
legalClientRegion: z.string().nullable(),
|
||||||
|
legalClientTown: z.string().nullable(),
|
||||||
|
subsidy: z.string().nullable(),
|
||||||
|
fuelCard: z.string().nullable(),
|
||||||
|
leaseObjectPriceWthtVAT: z.number(),
|
||||||
|
VATInLeaseObjectPrice: z.number(),
|
||||||
|
engineHours: z.number(),
|
||||||
|
bonusCoefficient: z.number(),
|
||||||
|
|
||||||
|
/** Link Values */
|
||||||
|
kpUrl: z.string().nullable(),
|
||||||
|
leadUrl: z.string().nullable(),
|
||||||
|
opportunityUrl: z.string().nullable(),
|
||||||
|
quoteUrl: z.string().nullable(),
|
||||||
|
|
||||||
|
/** Readonly Values */
|
||||||
|
leaseObjectRiskName: z.string().nullable(),
|
||||||
|
insKaskoPriceLeasePeriod: z.number(),
|
||||||
|
irrInfo: z.string().nullable(),
|
||||||
|
registrationDescription: z.string().nullable(),
|
||||||
|
depreciationGroup: z.string().nullable(),
|
||||||
|
subsidySum: z.number(),
|
||||||
|
plPriceRub: z.number(),
|
||||||
|
discountRub: z.number(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default ValuesSchema;
|
||||||
@ -238,6 +238,35 @@ export type GetCurrencyIsoCodeQueryVariables = Exact<{
|
|||||||
|
|
||||||
export type GetCurrencyIsoCodeQuery = { __typename?: 'Query', transactioncurrency?: { __typename?: 'transactioncurrency', isocurrencycode?: string | null } | null };
|
export type GetCurrencyIsoCodeQuery = { __typename?: 'Query', transactioncurrency?: { __typename?: 'transactioncurrency', isocurrencycode?: string | null } | null };
|
||||||
|
|
||||||
|
export type GetAgentsDataFromQuoteQueryVariables = Exact<{
|
||||||
|
quoteId: Scalars['Uuid'];
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
|
export type GetAgentsDataFromQuoteQuery = { __typename?: 'Query', quote?: { __typename?: 'quote', evo_supplier_accountid?: any | null, evo_dealer_person_accountid?: any | null, evo_dealer_reward_conditionid?: any | null, evo_dealer_reward_total?: any | null, evo_dealer_broker_accountid?: any | null, evo_dealer_broker_reward_conditionid?: any | null, evo_dealer_broker_reward_total?: any | null, evo_agent_accountid?: any | null, evo_agent_reward_conditionid?: any | null, evo_agent_reward_total?: any | null, evo_double_agent_accountid?: any | null, evo_double_agent_reward_conditionid?: any | null, evo_double_agent_reward_total?: any | null, evo_broker_accountid?: any | null, evo_broker_reward_conditionid?: any | null, evo_broker_reward_total?: any | null, evo_fin_department_accountid?: any | null, evo_fin_department_reward_conditionid?: any | null, evo_fin_department_reward_total?: any | null } | null };
|
||||||
|
|
||||||
|
export type GetRewardConditionsQueryVariables = Exact<{
|
||||||
|
agentid: Scalars['Uuid'];
|
||||||
|
currentDate?: InputMaybe<Scalars['DateTime']>;
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
|
export type GetRewardConditionsQuery = { __typename?: 'Query', evo_reward_conditions?: Array<{ __typename?: 'evo_reward_condition', evo_reward_summ?: any | null, label?: string | null, value?: any | null } | null> | null };
|
||||||
|
|
||||||
|
export type GetRewardSummQueryVariables = Exact<{
|
||||||
|
conditionId: Scalars['Uuid'];
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
|
export type GetRewardSummQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_reward_summ?: any | null } | null };
|
||||||
|
|
||||||
|
export type GetRewardConditionQueryVariables = Exact<{
|
||||||
|
conditionId: Scalars['Uuid'];
|
||||||
|
}>;
|
||||||
|
|
||||||
|
|
||||||
|
export type GetRewardConditionQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_reward_summ?: any | null, evo_reduce_reward?: boolean | null, evo_min_reward_summ?: any | null } | null };
|
||||||
|
|
||||||
export type GetAgentAccountIdFromLeadQueryVariables = Exact<{
|
export type GetAgentAccountIdFromLeadQueryVariables = Exact<{
|
||||||
leadid: Scalars['Uuid'];
|
leadid: Scalars['Uuid'];
|
||||||
}>;
|
}>;
|
||||||
@ -273,21 +302,6 @@ export type GetAgentQueryVariables = Exact<{
|
|||||||
|
|
||||||
export type GetAgentQuery = { __typename?: 'Query', agent?: { __typename?: 'account', label?: string | null, value?: any | null } | null };
|
export type GetAgentQuery = { __typename?: 'Query', agent?: { __typename?: 'account', label?: string | null, value?: any | null } | null };
|
||||||
|
|
||||||
export type GetRewardConditionsQueryVariables = Exact<{
|
|
||||||
agentid: Scalars['Uuid'];
|
|
||||||
currentDate?: InputMaybe<Scalars['DateTime']>;
|
|
||||||
}>;
|
|
||||||
|
|
||||||
|
|
||||||
export type GetRewardConditionsQuery = { __typename?: 'Query', evo_reward_conditions?: Array<{ __typename?: 'evo_reward_condition', evo_reward_summ?: any | null, label?: string | null, value?: any | null } | null> | null };
|
|
||||||
|
|
||||||
export type GetRewardSummQueryVariables = Exact<{
|
|
||||||
conditionId: Scalars['Uuid'];
|
|
||||||
}>;
|
|
||||||
|
|
||||||
|
|
||||||
export type GetRewardSummQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_reward_summ?: any | null } | null };
|
|
||||||
|
|
||||||
export type GetRewardWithoutOtherAgentQueryVariables = Exact<{
|
export type GetRewardWithoutOtherAgentQueryVariables = Exact<{
|
||||||
conditionId: Scalars['Uuid'];
|
conditionId: Scalars['Uuid'];
|
||||||
}>;
|
}>;
|
||||||
@ -295,13 +309,6 @@ export type GetRewardWithoutOtherAgentQueryVariables = Exact<{
|
|||||||
|
|
||||||
export type GetRewardWithoutOtherAgentQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_agency_agreementidData?: { __typename?: 'evo_agency_agreement', evo_reward_without_other_agent?: boolean | null } | null } | null };
|
export type GetRewardWithoutOtherAgentQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_agency_agreementidData?: { __typename?: 'evo_agency_agreement', evo_reward_without_other_agent?: boolean | null } | null } | null };
|
||||||
|
|
||||||
export type GetRewardConditionQueryVariables = Exact<{
|
|
||||||
conditionId: Scalars['Uuid'];
|
|
||||||
}>;
|
|
||||||
|
|
||||||
|
|
||||||
export type GetRewardConditionQuery = { __typename?: 'Query', evo_reward_condition?: { __typename?: 'evo_reward_condition', evo_reward_summ?: any | null, evo_reduce_reward?: boolean | null, evo_min_reward_summ?: any | null } | null };
|
|
||||||
|
|
||||||
export type GetDealerPersonQueryVariables = Exact<{
|
export type GetDealerPersonQueryVariables = Exact<{
|
||||||
dealerId: Scalars['Uuid'];
|
dealerId: Scalars['Uuid'];
|
||||||
}>;
|
}>;
|
||||||
|
|||||||
@ -16,7 +16,6 @@ const nextConfig = {
|
|||||||
compiler: {
|
compiler: {
|
||||||
styledComponents: true,
|
styledComponents: true,
|
||||||
},
|
},
|
||||||
pageExtensions: ['tsx', 'jsx'],
|
|
||||||
rewrites:
|
rewrites:
|
||||||
process.env.NODE_ENV === 'development' &&
|
process.env.NODE_ENV === 'development' &&
|
||||||
async function rewrites() {
|
async function rewrites() {
|
||||||
|
|||||||
10
package.json
10
package.json
@ -21,7 +21,11 @@
|
|||||||
"@ant-design/icons": "^4.7.0",
|
"@ant-design/icons": "^4.7.0",
|
||||||
"@apollo/client": "^3.7.0",
|
"@apollo/client": "^3.7.0",
|
||||||
"@fontsource/montserrat": "^4.5.12",
|
"@fontsource/montserrat": "^4.5.12",
|
||||||
"@tanstack/react-query": "^4.13.0",
|
"@tanstack/react-query": "^4.14.1",
|
||||||
|
"@trpc/client": "^10.0.0-rc.3",
|
||||||
|
"@trpc/next": "^10.0.0-rc.3",
|
||||||
|
"@trpc/react-query": "^10.0.0-rc.3",
|
||||||
|
"@trpc/server": "^10.0.0-rc.3",
|
||||||
"antd": "^4.21.3",
|
"antd": "^4.21.3",
|
||||||
"axios": "^1.1.3",
|
"axios": "^1.1.3",
|
||||||
"dayjs": "^1.11.2",
|
"dayjs": "^1.11.2",
|
||||||
@ -40,7 +44,9 @@
|
|||||||
"rebass": "^4.0.7",
|
"rebass": "^4.0.7",
|
||||||
"sharp": "^0.30.4",
|
"sharp": "^0.30.4",
|
||||||
"styled-components": "^5.3.5",
|
"styled-components": "^5.3.5",
|
||||||
"use-debounce": "^8.0.1"
|
"superjson": "^1.11.0",
|
||||||
|
"use-debounce": "^8.0.1",
|
||||||
|
"zod": "^3.19.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@graphql-codegen/cli": "2.12.0",
|
"@graphql-codegen/cli": "2.12.0",
|
||||||
|
|||||||
@ -9,6 +9,7 @@ import 'normalize.css';
|
|||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import StoreProvider from 'stores/Provider';
|
import StoreProvider from 'stores/Provider';
|
||||||
import { ThemeProvider } from 'styled-components';
|
import { ThemeProvider } from 'styled-components';
|
||||||
|
import { trpcClient } from 'trpc/client';
|
||||||
import { GlobalStyle } from 'UIKit/colors';
|
import { GlobalStyle } from 'UIKit/colors';
|
||||||
import theme from 'UIKit/theme';
|
import theme from 'UIKit/theme';
|
||||||
import '../styles/fonts.css';
|
import '../styles/fonts.css';
|
||||||
@ -51,4 +52,4 @@ function App({ Component, pageProps }) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default App;
|
export default trpcClient.withTRPC(App);
|
||||||
|
|||||||
8
pages/api/trpc/[trpc].ts
Normal file
8
pages/api/trpc/[trpc].ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import * as trpcNext from '@trpc/server/adapters/next';
|
||||||
|
import appRouter from 'trpc/routers';
|
||||||
|
|
||||||
|
export default trpcNext.createNextApiHandler({
|
||||||
|
router: appRouter,
|
||||||
|
// eslint-disable-next-line object-curly-newline
|
||||||
|
createContext: () => ({}),
|
||||||
|
});
|
||||||
@ -11,6 +11,7 @@ import injectDefaultReactions from 'process/init/inject-reactions/default';
|
|||||||
import { useEffect } from 'react';
|
import { useEffect } from 'react';
|
||||||
import { useStore } from 'stores/hooks';
|
import { useStore } from 'stores/hooks';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
import { trpcPureClient } from 'trpc/client';
|
||||||
import { Box } from 'UIKit/grid';
|
import { Box } from 'UIKit/grid';
|
||||||
import { min } from 'UIKit/mq';
|
import { min } from 'UIKit/mq';
|
||||||
|
|
||||||
@ -45,7 +46,7 @@ function Home() {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
getData(apolloClient, store);
|
getData(apolloClient, store);
|
||||||
injectDefaultReactions(store, apolloClient, queryClient);
|
injectDefaultReactions(store, apolloClient, queryClient, trpcPureClient);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
import loadKpReactions from 'process/load-kp/reactions';
|
||||||
import * as calculateReactions from '../../calculate/reactions';
|
import * as calculateReactions from '../../calculate/reactions';
|
||||||
import * as fingapReactions from '../../fingap/reactions';
|
import * as fingapReactions from '../../fingap/reactions';
|
||||||
import * as leadOpportunityReactions from '../../lead-opportunity/reactions';
|
import * as leadOpportunityReactions from '../../lead-opportunity/reactions';
|
||||||
@ -7,7 +8,7 @@ import * as agentsReactions from '../../supplier-agent/reactions/agents';
|
|||||||
import * as supplierReactions from '../../supplier-agent/reactions/supplier';
|
import * as supplierReactions from '../../supplier-agent/reactions/supplier';
|
||||||
import setInitialValuesReactions from '../set-values/reactions';
|
import setInitialValuesReactions from '../set-values/reactions';
|
||||||
|
|
||||||
export default function injectDefaultReactions(store, apolloClient, queryClient) {
|
export default function injectDefaultReactions(store, apolloClient, queryClient, trpcClient) {
|
||||||
leadOpportunityReactions.common(store, apolloClient, queryClient);
|
leadOpportunityReactions.common(store, apolloClient, queryClient);
|
||||||
leadOpportunityReactions.urls(store, apolloClient, queryClient);
|
leadOpportunityReactions.urls(store, apolloClient, queryClient);
|
||||||
paymentsReactions(store, apolloClient, queryClient);
|
paymentsReactions(store, apolloClient, queryClient);
|
||||||
@ -21,4 +22,5 @@ export default function injectDefaultReactions(store, apolloClient, queryClient)
|
|||||||
fingapReactions.common(store, apolloClient, queryClient);
|
fingapReactions.common(store, apolloClient, queryClient);
|
||||||
fingapReactions.validation(store, apolloClient, queryClient);
|
fingapReactions.validation(store, apolloClient, queryClient);
|
||||||
setInitialValuesReactions(store, apolloClient, queryClient);
|
setInitialValuesReactions(store, apolloClient, queryClient);
|
||||||
|
loadKpReactions(store, apolloClient, queryClient, trpcClient);
|
||||||
}
|
}
|
||||||
|
|||||||
45
process/load-kp/reactions.ts
Normal file
45
process/load-kp/reactions.ts
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
import type { ApolloClient } from '@apollo/client';
|
||||||
|
import type { QueryClient } from '@tanstack/react-query';
|
||||||
|
import message from 'Elements/message';
|
||||||
|
import { reaction, toJS } from 'mobx';
|
||||||
|
import type RootStore from 'stores/root';
|
||||||
|
import type { TRPCPureClient } from 'trpc/types';
|
||||||
|
|
||||||
|
export default function loadKpReactions(
|
||||||
|
store: RootStore,
|
||||||
|
apolloClient: ApolloClient<object>,
|
||||||
|
queryClient: QueryClient,
|
||||||
|
trpcClient: TRPCPureClient
|
||||||
|
) {
|
||||||
|
const { $calculation, $process } = store;
|
||||||
|
|
||||||
|
reaction(
|
||||||
|
() => $calculation.element('selectQuote').getValue(),
|
||||||
|
(quoteId) => {
|
||||||
|
if (!quoteId) return;
|
||||||
|
|
||||||
|
$process.add('LoadKP');
|
||||||
|
|
||||||
|
const quoteName = $calculation.element('selectQuote').getOption()?.label;
|
||||||
|
|
||||||
|
trpcClient.quote.getValues
|
||||||
|
.query({
|
||||||
|
values: toJS($calculation.$values.values),
|
||||||
|
})
|
||||||
|
.then(({ values }) => {
|
||||||
|
$calculation.$values.hydrate(values);
|
||||||
|
message.success({
|
||||||
|
content: `КП ${quoteName} загружено`,
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
message.error({
|
||||||
|
content: `Ошибка во время загрузки КП ${quoteName}`,
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
$process.delete('LoadKP');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
63
process/supplier-agent/get-data-from-kp.ts
Normal file
63
process/supplier-agent/get-data-from-kp.ts
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
import { gql } from '@apollo/client';
|
||||||
|
import initializeApollo from 'apollo/client';
|
||||||
|
import type {
|
||||||
|
GetAgentsDataFromQuoteQuery,
|
||||||
|
GetAgentsDataFromQuoteQueryVariables,
|
||||||
|
} from 'graphql/crm.types';
|
||||||
|
import type { CalculationValues } from 'stores/calculation/values/types';
|
||||||
|
|
||||||
|
const QUERY_GET_AGENTS_DATA_FROM_QUOTE = gql`
|
||||||
|
query GetAgentsDataFromQuote($quoteId: Uuid!) {
|
||||||
|
quote(quoteId: $quoteId) {
|
||||||
|
evo_supplier_accountid
|
||||||
|
evo_dealer_person_accountid
|
||||||
|
evo_dealer_reward_conditionid
|
||||||
|
evo_dealer_reward_total
|
||||||
|
evo_dealer_broker_accountid
|
||||||
|
evo_dealer_broker_reward_conditionid
|
||||||
|
evo_dealer_broker_reward_total
|
||||||
|
evo_agent_accountid
|
||||||
|
evo_agent_reward_conditionid
|
||||||
|
evo_agent_reward_total
|
||||||
|
evo_double_agent_accountid
|
||||||
|
evo_double_agent_reward_conditionid
|
||||||
|
evo_double_agent_reward_total
|
||||||
|
evo_broker_accountid
|
||||||
|
evo_broker_reward_conditionid
|
||||||
|
evo_broker_reward_total
|
||||||
|
evo_fin_department_accountid
|
||||||
|
evo_fin_department_reward_conditionid
|
||||||
|
evo_fin_department_reward_total
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
type SupplierData = {
|
||||||
|
values: Partial<CalculationValues>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export default async function getSupplierAgentsDataFromKP(
|
||||||
|
values: CalculationValues
|
||||||
|
): Promise<SupplierData> {
|
||||||
|
const apolloClient = initializeApollo();
|
||||||
|
|
||||||
|
const {
|
||||||
|
data: { quote },
|
||||||
|
} = await apolloClient.query<GetAgentsDataFromQuoteQuery, GetAgentsDataFromQuoteQueryVariables>({
|
||||||
|
query: QUERY_GET_AGENTS_DATA_FROM_QUOTE,
|
||||||
|
variables: {
|
||||||
|
quoteId: values.quote!,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
values: {
|
||||||
|
dealer: quote?.evo_supplier_accountid,
|
||||||
|
dealerRewardCondition: quote?.evo_dealer_reward_conditionid,
|
||||||
|
dealerBroker: quote?.evo_dealer_broker_accountid,
|
||||||
|
dealerBrokerRewardCondition: quote?.evo_dealer_broker_reward_conditionid,
|
||||||
|
calcDoubleAgent: quote?.evo_double_agent_accountid,
|
||||||
|
calcDoubleAgentRewardCondition: quote?.evo_double_agent_reward_conditionid,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -9,7 +9,6 @@ import { reaction } from 'mobx';
|
|||||||
import type RootStore from 'stores/root';
|
import type RootStore from 'stores/root';
|
||||||
import ValidationHelper from 'stores/validation/helper';
|
import ValidationHelper from 'stores/validation/helper';
|
||||||
import { normalizeOptions } from 'tools/entity';
|
import { normalizeOptions } from 'tools/entity';
|
||||||
import { makeDisposable } from 'tools/mobx';
|
|
||||||
|
|
||||||
dayjs.extend(utc);
|
dayjs.extend(utc);
|
||||||
|
|
||||||
@ -40,37 +39,33 @@ export function fillAgentRewardReaction(
|
|||||||
const { $calculation, $process } = store;
|
const { $calculation, $process } = store;
|
||||||
const { agentField, rewardConditionField } = agentParams;
|
const { agentField, rewardConditionField } = agentParams;
|
||||||
|
|
||||||
makeDisposable(
|
reaction(
|
||||||
() =>
|
() => $calculation.element(agentField).getValue(),
|
||||||
reaction(
|
async (agentId) => {
|
||||||
() => $calculation.element(agentField).getValue(),
|
if (!agentId) {
|
||||||
async (agentId) => {
|
$calculation.element(rewardConditionField).reset();
|
||||||
if (!agentId) {
|
|
||||||
$calculation.element(rewardConditionField).reset();
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const {
|
const {
|
||||||
data: { evo_reward_conditions },
|
data: { evo_reward_conditions },
|
||||||
} = await apolloClient.query<
|
} = await apolloClient.query<
|
||||||
CRMTypes.GetRewardConditionsQuery,
|
CRMTypes.GetRewardConditionsQuery,
|
||||||
CRMTypes.GetRewardConditionsQueryVariables
|
CRMTypes.GetRewardConditionsQueryVariables
|
||||||
>({
|
>({
|
||||||
query: QUERY_GET_REWARD_CONDITIONS,
|
query: QUERY_GET_REWARD_CONDITIONS,
|
||||||
variables: {
|
variables: {
|
||||||
agentid: agentId,
|
agentid: agentId,
|
||||||
currentDate: dayjs().toISOString(),
|
currentDate: dayjs().toISOString(),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (evo_reward_conditions?.length) {
|
if (evo_reward_conditions?.length) {
|
||||||
$calculation
|
$calculation
|
||||||
.element(rewardConditionField)
|
.element(rewardConditionField)
|
||||||
.setOptions(normalizeOptions(evo_reward_conditions));
|
.setOptions(normalizeOptions(evo_reward_conditions));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
),
|
|
||||||
() => $process.has('LoadKP')
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,35 +88,33 @@ export function fillAgentRewardSummReaction(
|
|||||||
const { $calculation, $process } = store;
|
const { $calculation, $process } = store;
|
||||||
const { rewardConditionField, rewardSummField } = agentParams;
|
const { rewardConditionField, rewardSummField } = agentParams;
|
||||||
|
|
||||||
makeDisposable(
|
reaction(
|
||||||
() =>
|
() => $calculation.element(rewardConditionField).getValue(),
|
||||||
reaction(
|
async (rewardConditionId) => {
|
||||||
() => $calculation.element(rewardConditionField).getValue(),
|
if (!rewardConditionId) {
|
||||||
async (rewardConditionId) => {
|
$calculation.element(rewardSummField).reset();
|
||||||
if (!rewardConditionId) {
|
|
||||||
$calculation.element(rewardSummField).reset();
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: { evo_reward_condition },
|
data: { evo_reward_condition },
|
||||||
} = await apolloClient.query<
|
} = await apolloClient.query<
|
||||||
CRMTypes.GetRewardSummQuery,
|
CRMTypes.GetRewardSummQuery,
|
||||||
CRMTypes.GetRewardSummQueryVariables
|
CRMTypes.GetRewardSummQueryVariables
|
||||||
>({
|
>({
|
||||||
query: QUERY_GET_REWARD_SUMM,
|
query: QUERY_GET_REWARD_SUMM,
|
||||||
variables: {
|
variables: {
|
||||||
conditionId: rewardConditionId,
|
conditionId: rewardConditionId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
$calculation.element(rewardSummField).setValue(evo_reward_condition?.evo_reward_summ);
|
if (!$process.has('LoadKP')) {
|
||||||
|
$calculation.element(rewardSummField).setValue(evo_reward_condition?.evo_reward_summ);
|
||||||
|
}
|
||||||
|
|
||||||
$calculation.element(rewardSummField).unblock();
|
$calculation.element(rewardSummField).unblock();
|
||||||
}
|
}
|
||||||
),
|
|
||||||
() => $process.has('LoadKP')
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,6 @@ import type * as CRMTypes from 'graphql/crm.types';
|
|||||||
import { reaction } from 'mobx';
|
import { reaction } from 'mobx';
|
||||||
import type RootStore from 'stores/root';
|
import type RootStore from 'stores/root';
|
||||||
import { normalizeOptions } from 'tools/entity';
|
import { normalizeOptions } from 'tools/entity';
|
||||||
import { makeDisposable } from 'tools/mobx';
|
|
||||||
import * as createReactions from '../lib/create-reactions';
|
import * as createReactions from '../lib/create-reactions';
|
||||||
import * as query from '../lib/query';
|
import * as query from '../lib/query';
|
||||||
|
|
||||||
@ -32,39 +31,36 @@ export function commonReactions(store: RootStore, apolloClient: ApolloClient<obj
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
makeDisposable(
|
reaction(
|
||||||
() =>
|
() => $calculation.element('selectDealer').getValue(),
|
||||||
reaction(
|
async (dealerId) => {
|
||||||
() => $calculation.element('selectDealer').getValue(),
|
if (!dealerId) {
|
||||||
async (dealerId) => {
|
$calculation.element('selectDealerPerson').reset();
|
||||||
if (!dealerId) {
|
$calculation.element('selectDealerBroker').reset();
|
||||||
$calculation.element('selectDealerPerson').reset();
|
|
||||||
$calculation.element('selectDealerBroker').reset();
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: { salon_providers },
|
data: { salon_providers },
|
||||||
} = await apolloClient.query<
|
} = await apolloClient.query<
|
||||||
CRMTypes.GetDealerPersonQuery,
|
CRMTypes.GetDealerPersonQuery,
|
||||||
CRMTypes.GetDealerPersonQueryVariables
|
CRMTypes.GetDealerPersonQueryVariables
|
||||||
>({
|
>({
|
||||||
query: QUERY_GET_DEALER_PERSON,
|
query: QUERY_GET_DEALER_PERSON,
|
||||||
variables: {
|
variables: {
|
||||||
dealerId,
|
dealerId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (salon_providers?.length) {
|
if (salon_providers?.length) {
|
||||||
$calculation
|
$calculation.element('selectDealerPerson').setOptions(normalizeOptions(salon_providers));
|
||||||
.element('selectDealerPerson')
|
|
||||||
.setOptions(normalizeOptions(salon_providers))
|
if (!$process.has('LoadKP')) {
|
||||||
.setValue(salon_providers[0]?.value);
|
$calculation.element('selectDealerPerson').setValue(salon_providers[0]?.value);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
),
|
}
|
||||||
() => $process.has('LoadKP')
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -79,49 +75,46 @@ export function commonReactions(store: RootStore, apolloClient: ApolloClient<obj
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
makeDisposable(
|
reaction(
|
||||||
() =>
|
() => $calculation.element('selectDealerPerson').getValue(),
|
||||||
reaction(
|
async (dealerPersonId) => {
|
||||||
() => $calculation.element('selectDealerPerson').getValue(),
|
if (!dealerPersonId) {
|
||||||
async (dealerPersonId) => {
|
return;
|
||||||
if (!dealerPersonId) {
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const {
|
const {
|
||||||
data: { dealer },
|
data: { dealer },
|
||||||
} = await apolloClient.query<
|
} = await apolloClient.query<
|
||||||
CRMTypes.GetBrokerAccountIdFromDealerQuery,
|
CRMTypes.GetBrokerAccountIdFromDealerQuery,
|
||||||
CRMTypes.GetBrokerAccountIdFromDealerQueryVariables
|
CRMTypes.GetBrokerAccountIdFromDealerQueryVariables
|
||||||
>({
|
>({
|
||||||
query: QUERY_GET_BROKER_ACCOUNTID_FROM_DEALER,
|
query: QUERY_GET_BROKER_ACCOUNTID_FROM_DEALER,
|
||||||
variables: {
|
variables: {
|
||||||
dealerId: dealerPersonId,
|
dealerId: dealerPersonId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (dealer?.evo_broker_accountid) {
|
if (dealer?.evo_broker_accountid) {
|
||||||
const {
|
const {
|
||||||
data: { agent: dealerBroker },
|
data: { agent: dealerBroker },
|
||||||
} = await apolloClient.query<CRMTypes.GetAgentQuery, CRMTypes.GetAgentQueryVariables>({
|
} = await apolloClient.query<CRMTypes.GetAgentQuery, CRMTypes.GetAgentQueryVariables>({
|
||||||
query: query.QUERY_GET_AGENT,
|
query: query.QUERY_GET_AGENT,
|
||||||
variables: {
|
variables: {
|
||||||
agentid: dealer?.evo_broker_accountid,
|
agentid: dealer?.evo_broker_accountid,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (dealerBroker) {
|
if (dealerBroker) {
|
||||||
$calculation
|
$calculation.element('selectDealerBroker').setOptions(normalizeOptions([dealerBroker]));
|
||||||
.element('selectDealerBroker')
|
|
||||||
.setOptions(normalizeOptions([dealerBroker]))
|
if (!$process.has('LoadKP')) {
|
||||||
.setValue(dealerBroker.value);
|
$calculation.element('selectDealerBroker').setValue(dealerBroker.value);
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$calculation.element('selectDealerBroker').reset();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
),
|
} else {
|
||||||
() => $process.has('LoadKP')
|
$calculation.element('selectDealerBroker').reset();
|
||||||
|
}
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
// Заполняем selectDealerRewardCondition
|
// Заполняем selectDealerRewardCondition
|
||||||
|
|||||||
@ -1,142 +1,5 @@
|
|||||||
export type CalculationValues = {
|
import type ValuesSchema from 'config/schema/values';
|
||||||
lead: string | null;
|
import type { z } from 'zod';
|
||||||
opportunity: string | null;
|
|
||||||
quote: string | null;
|
|
||||||
recalcWithRevision: boolean;
|
|
||||||
product: string | null;
|
|
||||||
clientRisk: string | null;
|
|
||||||
clientType: string | null;
|
|
||||||
leaseObjectPrice: number;
|
|
||||||
supplierCurrency: string | null;
|
|
||||||
supplierDiscountRub: number;
|
|
||||||
supplierDiscountPerc: number;
|
|
||||||
leasingPeriod: number;
|
|
||||||
firstPaymentPerc: number;
|
|
||||||
firstPaymentRub: number;
|
|
||||||
lastPaymentPerc: number;
|
|
||||||
lastPaymentRub: number;
|
|
||||||
lastPaymentRule: number | null;
|
|
||||||
importProgram: string | null;
|
|
||||||
importProgramSum: number;
|
|
||||||
addEquipmentPrice: number;
|
|
||||||
redemptionPaymentSum: number;
|
|
||||||
balanceHolder: number | null;
|
|
||||||
graphType: number | null;
|
|
||||||
parmentsDecreasePercent: number;
|
|
||||||
seasonType: number | null;
|
|
||||||
highSeasonStart: number | null;
|
|
||||||
comissionPerc: number;
|
|
||||||
comissionRub: number;
|
|
||||||
saleBonus: number;
|
|
||||||
IRR_Perc: number;
|
|
||||||
leaseObjectType: string | null;
|
|
||||||
deliveryTime: number | null;
|
|
||||||
leaseObjectCount: number;
|
|
||||||
withTrailer: boolean;
|
|
||||||
leaseObjectUsed: boolean;
|
|
||||||
maxMass: number;
|
|
||||||
countSeats: number;
|
|
||||||
maxSpeed: number;
|
|
||||||
brand: string | null;
|
|
||||||
model: string | null;
|
|
||||||
configuration: string | null;
|
|
||||||
leaseObjectYear: number;
|
|
||||||
engineType: number | null;
|
|
||||||
leaseObjectCategory: number | null;
|
|
||||||
leaseObjectMotorPower: number;
|
|
||||||
engineVolume: number;
|
|
||||||
leaseObjectUseFor: number | null;
|
|
||||||
dealer: string | null;
|
|
||||||
dealerPerson: string | null;
|
|
||||||
dealerRewardCondition: string | null;
|
|
||||||
dealerRewardSumm: number;
|
|
||||||
dealerBroker: string | null;
|
|
||||||
dealerBrokerRewardCondition: string | null;
|
|
||||||
dealerBrokerRewardSumm: number;
|
|
||||||
indAgent: string | null;
|
|
||||||
indAgentRewardCondition: string | null;
|
|
||||||
indAgentRewardSumm: number;
|
|
||||||
calcDoubleAgent: string | null;
|
|
||||||
calcDoubleAgentRewardCondition: string | null;
|
|
||||||
calcDoubleAgentRewardSumm: number;
|
|
||||||
calcBroker: string | null;
|
|
||||||
calcBrokerRewardCondition: string | null;
|
|
||||||
calcBrokerRewardSum: number;
|
|
||||||
calcFinDepartment: string | null;
|
|
||||||
finDepartmentRewardCondtion: string | null;
|
|
||||||
finDepartmentRewardSumm: number;
|
|
||||||
GPSBrand: string | null;
|
|
||||||
GPSModel: string | null;
|
|
||||||
regionRegistration: string | null;
|
|
||||||
townRegistration: string | null;
|
|
||||||
infuranceOPF: number | null;
|
|
||||||
insKaskoType: number | null;
|
|
||||||
insDecentral: boolean;
|
|
||||||
insFranchise: number;
|
|
||||||
insUnlimitDrivers: boolean;
|
|
||||||
insAgeDrivers: number;
|
|
||||||
insExpDrivers: number;
|
|
||||||
INNForCalc: number;
|
|
||||||
lastPaymentRedemption: boolean;
|
|
||||||
priceWithDiscount: boolean;
|
|
||||||
fullPriceWithDiscount: boolean;
|
|
||||||
costIncrease: boolean;
|
|
||||||
insurance: boolean;
|
|
||||||
registrationQuote: boolean;
|
|
||||||
technicalCardQuote: boolean;
|
|
||||||
NSIB: boolean;
|
|
||||||
quoteName: string | null;
|
|
||||||
quoteContactGender: number | null;
|
|
||||||
quoteRedemptionGraph: boolean;
|
|
||||||
showFinGAP: boolean;
|
|
||||||
tarif: string | null;
|
|
||||||
creditRate: number;
|
|
||||||
rate: string | null;
|
|
||||||
requirementTelematic: number | null;
|
|
||||||
minPriceChange: number;
|
|
||||||
maxPriceChange: number;
|
|
||||||
importerRewardPerc: number;
|
|
||||||
importerRewardRub: number;
|
|
||||||
disableChecks: boolean;
|
|
||||||
registration: string | null;
|
|
||||||
insNSIB: string | null;
|
|
||||||
technicalCard: string | null;
|
|
||||||
telematic: string | null;
|
|
||||||
tracker: string | null;
|
|
||||||
mileage: number;
|
|
||||||
calcType: number | null;
|
|
||||||
totalPayments: number;
|
|
||||||
objectRegistration: number | null;
|
|
||||||
objectRegionRegistration: string | null;
|
|
||||||
vehicleTaxInYear: number;
|
|
||||||
vehicleTaxInLeasingPeriod: number;
|
|
||||||
objectCategoryTax: number | null;
|
|
||||||
objectTypeTax: number | null;
|
|
||||||
typePTS: number | null;
|
|
||||||
legalClientRegion: string | null;
|
|
||||||
legalClientTown: string | null;
|
|
||||||
subsidy: string | null;
|
|
||||||
fuelCard: string | null;
|
|
||||||
leaseObjectPriceWthtVAT: number;
|
|
||||||
VATInLeaseObjectPrice: number;
|
|
||||||
engineHours: number;
|
|
||||||
bonusCoefficient: number;
|
|
||||||
|
|
||||||
/** Link Values */
|
|
||||||
kpUrl: string | null;
|
|
||||||
leadUrl: string | null;
|
|
||||||
opportunityUrl: string | null;
|
|
||||||
quoteUrl: string | null;
|
|
||||||
|
|
||||||
/** Readonly Values */
|
|
||||||
leaseObjectRiskName: string | null;
|
|
||||||
insKaskoPriceLeasePeriod: number;
|
|
||||||
irrInfo: string | null;
|
|
||||||
registrationDescription: string | null;
|
|
||||||
depreciationGroup: string | null;
|
|
||||||
subsidySum: number;
|
|
||||||
plPriceRub: number;
|
|
||||||
discountRub: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
export type CalculationValues = z.infer<typeof ValuesSchema>;
|
||||||
export type Values = keyof CalculationValues;
|
export type Values = keyof CalculationValues;
|
||||||
|
|||||||
35
trpc/client.ts
Normal file
35
trpc/client.ts
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client';
|
||||||
|
import { createTRPCNext } from '@trpc/next';
|
||||||
|
import SuperJSON from 'superjson';
|
||||||
|
import type { AppRouter } from './routers';
|
||||||
|
|
||||||
|
function getBaseUrl() {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
return `http://localhost:${process.env.PORT ?? 3000}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
export const trpcClient = createTRPCNext<AppRouter>({
|
||||||
|
config() {
|
||||||
|
return {
|
||||||
|
links: [
|
||||||
|
httpBatchLink({
|
||||||
|
url: `${getBaseUrl()}/api/trpc`,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
transformer: SuperJSON,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
ssr: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const trpcPureClient = createTRPCProxyClient<AppRouter>({
|
||||||
|
links: [
|
||||||
|
httpBatchLink({
|
||||||
|
url: `${getBaseUrl()}/api/trpc`,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
transformer: SuperJSON,
|
||||||
|
});
|
||||||
10
trpc/routers/index.ts
Normal file
10
trpc/routers/index.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import { t } from '../server';
|
||||||
|
import quoteRouter from './quote';
|
||||||
|
|
||||||
|
const appRouter = t.router({
|
||||||
|
quote: quoteRouter,
|
||||||
|
});
|
||||||
|
|
||||||
|
export type AppRouter = typeof appRouter;
|
||||||
|
|
||||||
|
export default appRouter;
|
||||||
39
trpc/routers/quote.ts
Normal file
39
trpc/routers/quote.ts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import defaultValues from 'config/default-values';
|
||||||
|
import ValuesSchema from 'config/schema/values';
|
||||||
|
import getSupplierAgentsDataFromKP from 'process/supplier-agent/get-data-from-kp';
|
||||||
|
import { z } from 'zod';
|
||||||
|
import { t } from '../server';
|
||||||
|
|
||||||
|
const quoteRouter = t.router({
|
||||||
|
getValues: t.procedure
|
||||||
|
.input(
|
||||||
|
z.object({
|
||||||
|
values: ValuesSchema,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.output(
|
||||||
|
z.object({
|
||||||
|
values: ValuesSchema,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.query(async ({ input }) => {
|
||||||
|
const { values } = await getSupplierAgentsDataFromKP(input.values);
|
||||||
|
|
||||||
|
const { lead, opportunity, quote, leadUrl, opportunityUrl, quoteUrl } = input.values;
|
||||||
|
|
||||||
|
return {
|
||||||
|
values: {
|
||||||
|
...defaultValues,
|
||||||
|
lead,
|
||||||
|
leadUrl,
|
||||||
|
opportunity,
|
||||||
|
opportunityUrl,
|
||||||
|
quote,
|
||||||
|
quoteUrl,
|
||||||
|
...values,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default quoteRouter;
|
||||||
7
trpc/server.ts
Normal file
7
trpc/server.ts
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
/* eslint-disable import/prefer-default-export */
|
||||||
|
import { initTRPC } from '@trpc/server';
|
||||||
|
import SuperJSON from 'superjson';
|
||||||
|
|
||||||
|
export const t = initTRPC.create({
|
||||||
|
transformer: SuperJSON,
|
||||||
|
});
|
||||||
5
trpc/types.ts
Normal file
5
trpc/types.ts
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import type { trpcClient, trpcPureClient } from './client';
|
||||||
|
|
||||||
|
export type TRPCClient = typeof trpcClient;
|
||||||
|
|
||||||
|
export type TRPCPureClient = typeof trpcPureClient;
|
||||||
69
yarn.lock
69
yarn.lock
@ -2078,17 +2078,17 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
tslib "^2.4.0"
|
tslib "^2.4.0"
|
||||||
|
|
||||||
"@tanstack/query-core@4.13.0":
|
"@tanstack/query-core@4.14.1":
|
||||||
version "4.13.0"
|
version "4.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.13.0.tgz#89153096d1fce42c0294fa1d1ae4b3e72aa5353b"
|
resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.14.1.tgz#a74c4da03e79a8be07fa5ab2ebc12865146915e2"
|
||||||
integrity sha512-PzmLQcEgC4rl2OzkiPHYPC9O79DFcMGaKsOzDEP+U4PJ+tbkcEP+Z+FQDlfvX8mCwYC7UNH7hXrQ5EdkGlJjVg==
|
integrity sha512-mUejKoFDe4NZB8jQJR1uuAl6IwvkUpOD2m8NcuTVPOu0pcxeeFPdrnHaljwOEFPtlqXoiiIIQGYy6whjCMN+iQ==
|
||||||
|
|
||||||
"@tanstack/react-query@^4.13.0":
|
"@tanstack/react-query@^4.14.1":
|
||||||
version "4.13.0"
|
version "4.14.1"
|
||||||
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.13.0.tgz#13797d590a6c0708545881e38aea5eb39b960c28"
|
resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.14.1.tgz#336545119b191e2096c394a3f2df2744cdc5e041"
|
||||||
integrity sha512-dI/5hJ/pGQ74P5hxBLC9h6K0/Cap2T3k0ZjjjFLBCNnohDYgl7LNmMopzrRzBHk2mMjf2hgXHIzcKNG8GOZ5hg==
|
integrity sha512-cRgNzigw4GSPwGlTEkXi8hi/xgUnSEt9jCkiC8oAT3PEIdsQ50onZcpXd+JNJcZk2RTh8KM1fGyWz6xYLiY8bg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@tanstack/query-core" "4.13.0"
|
"@tanstack/query-core" "4.14.1"
|
||||||
use-sync-external-store "^1.2.0"
|
use-sync-external-store "^1.2.0"
|
||||||
|
|
||||||
"@testing-library/dom@^8.5.0":
|
"@testing-library/dom@^8.5.0":
|
||||||
@ -2139,6 +2139,28 @@
|
|||||||
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
|
resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
|
||||||
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
||||||
|
|
||||||
|
"@trpc/client@^10.0.0-rc.3":
|
||||||
|
version "10.0.0-rc.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@trpc/client/-/client-10.0.0-rc.3.tgz#22cea038dd5e38ce0e39ff4a339793bb5808ab18"
|
||||||
|
integrity sha512-gZYVfZra1YB2DluDY+GcIrL7KqPXCI9y0mF4utXYAUAl+jrxfLyG63pCv30USRRYlwwSKaoLJNpjQB9k05aYaw==
|
||||||
|
|
||||||
|
"@trpc/next@^10.0.0-rc.3":
|
||||||
|
version "10.0.0-rc.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@trpc/next/-/next-10.0.0-rc.3.tgz#2585aa271c2916afb2f7291583c9299c324f799d"
|
||||||
|
integrity sha512-L9sHV93dPA4lZ/I8opfn3BJONnlnnJzJERggv7srt8H3aEhKVlNWIqxciNLHGXSq9q0C9i3Q6ND4F5kpRSQ5YA==
|
||||||
|
dependencies:
|
||||||
|
react-ssr-prepass "^1.5.0"
|
||||||
|
|
||||||
|
"@trpc/react-query@^10.0.0-rc.3":
|
||||||
|
version "10.0.0-rc.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@trpc/react-query/-/react-query-10.0.0-rc.3.tgz#34a0449c62544522d1fa0f07844d1f11cf38eb55"
|
||||||
|
integrity sha512-nEBqkTdKsd+vIE4RuDRX/b8U5ayxENp0G2vnh/fn4hiIszrLiPTGvnhGCZm/fT2GGW5nk7EEBcqf2o0z3r8Ftg==
|
||||||
|
|
||||||
|
"@trpc/server@^10.0.0-rc.3":
|
||||||
|
version "10.0.0-rc.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@trpc/server/-/server-10.0.0-rc.3.tgz#4ddc4410305b17a47248b3bfa881df3b52202e60"
|
||||||
|
integrity sha512-aSs3uDQ5wumwVjtxj855WLDjlDC+v50QoqHzvuptI33NhJZV7meu0pU2EJkrSZXFt27CSNfP9o2ZPfoReoPUuw==
|
||||||
|
|
||||||
"@tsconfig/node10@^1.0.7":
|
"@tsconfig/node10@^1.0.7":
|
||||||
version "1.0.9"
|
version "1.0.9"
|
||||||
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
|
||||||
@ -3897,6 +3919,13 @@ copy-anything@^2.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-what "^3.14.1"
|
is-what "^3.14.1"
|
||||||
|
|
||||||
|
copy-anything@^3.0.2:
|
||||||
|
version "3.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.2.tgz#7189171ff5e1893b2287e8bf574b8cd448ed50b1"
|
||||||
|
integrity sha512-CzATjGXzUQ0EvuvgOCI6A4BGOo2bcVx8B+eC2nF862iv9fopnPQwlrbACakNCHRIJbCSBj+J/9JeDf60k64MkA==
|
||||||
|
dependencies:
|
||||||
|
is-what "^4.1.6"
|
||||||
|
|
||||||
copy-to-clipboard@^3.2.0:
|
copy-to-clipboard@^3.2.0:
|
||||||
version "3.3.1"
|
version "3.3.1"
|
||||||
resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
|
resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.1.tgz#115aa1a9998ffab6196f93076ad6da3b913662ae"
|
||||||
@ -5928,6 +5957,11 @@ is-what@^3.14.1:
|
|||||||
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
||||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
||||||
|
|
||||||
|
is-what@^4.1.6:
|
||||||
|
version "4.1.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.7.tgz#c41dc1d2d2d6a9285c624c2505f61849c8b1f9cc"
|
||||||
|
integrity sha512-DBVOQNiPKnGMxRMLIYSwERAS5MVY1B7xYiGnpgctsOFvVDz9f9PFXXxMcTOHuoqYp4NK9qFYQaIC1NRRxLMpBQ==
|
||||||
|
|
||||||
is-windows@^1.0.1:
|
is-windows@^1.0.1:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
|
||||||
@ -8315,6 +8349,11 @@ react-is@^18.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
||||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||||
|
|
||||||
|
react-ssr-prepass@^1.5.0:
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-ssr-prepass/-/react-ssr-prepass-1.5.0.tgz#bc4ca7fcb52365e6aea11cc254a3d1bdcbd030c5"
|
||||||
|
integrity sha512-yFNHrlVEReVYKsLI5lF05tZoHveA5pGzjFbFJY/3pOqqjGOmMmqx83N4hIjN2n6E1AOa+eQEUxs3CgRnPmT0RQ==
|
||||||
|
|
||||||
react@^18.2.0:
|
react@^18.2.0:
|
||||||
version "18.2.0"
|
version "18.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
|
resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5"
|
||||||
@ -9178,6 +9217,13 @@ styled-system@^5.0.0, styled-system@^5.1.5:
|
|||||||
"@styled-system/variant" "^5.1.5"
|
"@styled-system/variant" "^5.1.5"
|
||||||
object-assign "^4.1.1"
|
object-assign "^4.1.1"
|
||||||
|
|
||||||
|
superjson@^1.11.0:
|
||||||
|
version "1.11.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.11.0.tgz#f6e2ae0d8fbac61c3fca09ab6739ac9678414d1b"
|
||||||
|
integrity sha512-6PfAg1FKhqkwWvPb2uXhH4MkMttdc17eJ91+Aoz4s1XUEDZFmLfFx/xVA3wgkPxAGy5dpozgGdK6V/n20Wj9yg==
|
||||||
|
dependencies:
|
||||||
|
copy-anything "^3.0.2"
|
||||||
|
|
||||||
supports-color@^2.0.0:
|
supports-color@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
|
||||||
@ -10028,3 +10074,8 @@ zen-observable@0.8.15, zen-observable@^0.8.0:
|
|||||||
version "0.8.15"
|
version "0.8.15"
|
||||||
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
|
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15"
|
||||||
integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
|
integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==
|
||||||
|
|
||||||
|
zod@^3.19.1:
|
||||||
|
version "3.19.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/zod/-/zod-3.19.1.tgz#112f074a97b50bfc4772d4ad1576814bd8ac4473"
|
||||||
|
integrity sha512-LYjZsEDhCdYET9ikFu6dVPGp2YH9DegXjdJToSzD9rO6fy4qiRYFoyEYwps88OseJlPyl2NOe2iJuhEhL7IpEA==
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user