По итогам расчета графика платежей перед выводм результата расчета заложить валидацию
если Пересчете без пересмотра recalcWithRevision = True и если в Предложении selectQuote в поле "КП по итогам КК" = Да и значение из итогов расчета npvBonusExpensesColumn (3я строка)/ (1 + PreparedValue.SalaryRate) больше значения суммы в полях Сумма бонуса МПЛ за лизинг, руб. quote.evo_leasing_bonus_summ + Сумма бонуса МПЛ за РАТ, руб quote.evo_card_bonus_summ + Сумма бонуса МПЛ за НСИБ, руб. quote.evo_nsib_bonus_summ из Предложения , которое указано в Предложении selectQuote в поле Одобренное КА quote.evo_accept_quoteid, больше 100, то выводить сообщение "Нельзя увеличивать бонус МПЛ после рассмотрения предложения на КК"
This commit is contained in:
parent
009c9fb5dd
commit
7797325f8c
@ -126,6 +126,9 @@ query GetQuote($quoteId: Uuid!) {
|
||||
evo_fingap_payer
|
||||
evo_osago_payer
|
||||
evo_kasko_payer
|
||||
evo_leasing_bonus_summ
|
||||
evo_card_bonus_summ
|
||||
evo_nsib_bonus_summ
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -1,4 +1,5 @@
|
||||
import { router } from '../../trpc';
|
||||
import { validateResults } from './lib/post-validation';
|
||||
import { createRequestData } from './lib/request';
|
||||
import { transformCalculateResults } from './lib/transform';
|
||||
import { validate } from './lib/validation';
|
||||
@ -52,6 +53,20 @@ export const calculateRouter = router({
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
const postValidationResult = await validateResults({
|
||||
calculateResult,
|
||||
context: {
|
||||
apolloClient,
|
||||
queryClient,
|
||||
user: ctx.user,
|
||||
},
|
||||
input,
|
||||
});
|
||||
|
||||
if (postValidationResult.success === false) {
|
||||
throw new HttpError(postValidationResult.message, 400);
|
||||
}
|
||||
|
||||
const result = transformCalculateResults({
|
||||
calculateInput: input,
|
||||
requestCalculate: requestData,
|
||||
|
||||
57
apps/web/server/routers/calculate/lib/post-validation.ts
Normal file
57
apps/web/server/routers/calculate/lib/post-validation.ts
Normal file
@ -0,0 +1,57 @@
|
||||
import type { CalculateInput, Context } from '../types';
|
||||
import type { ResponseCalculate } from '@/api/core/types';
|
||||
import * as CRMTypes from '@/graphql/crm.types';
|
||||
|
||||
export async function validateResults({
|
||||
input,
|
||||
context,
|
||||
calculateResult,
|
||||
}: {
|
||||
calculateResult: ResponseCalculate;
|
||||
context: Context;
|
||||
input: CalculateInput;
|
||||
}) {
|
||||
const { recalcWithRevision, quote: quoteId } = input.values;
|
||||
if (recalcWithRevision && quoteId) {
|
||||
const { apolloClient } = context;
|
||||
|
||||
const {
|
||||
data: { quote },
|
||||
} = await apolloClient.query({
|
||||
query: CRMTypes.GetQuoteDocument,
|
||||
variables: {
|
||||
quoteId,
|
||||
},
|
||||
});
|
||||
|
||||
if (quote?.evo_committee_quote && quote.evo_accept_quoteid) {
|
||||
const { preparedValues } = calculateResult;
|
||||
const { npvBonusExpensesColumn } = calculateResult.columns;
|
||||
|
||||
const {
|
||||
data: { quote: accept_quote },
|
||||
} = await apolloClient.query({
|
||||
query: CRMTypes.GetQuoteDocument,
|
||||
variables: { quoteId: quote.evo_accept_quoteid },
|
||||
});
|
||||
|
||||
if (
|
||||
Math.abs(npvBonusExpensesColumn.values.at(3) || 0) / (1 + preparedValues.salaryRate) -
|
||||
((accept_quote?.evo_leasing_bonus_summ || 0) +
|
||||
(accept_quote?.evo_card_bonus_summ || 0) +
|
||||
(accept_quote?.evo_nsib_bonus_summ || 0)) >
|
||||
100
|
||||
) {
|
||||
return {
|
||||
message: 'Нельзя увеличивать бонус МПЛ после рассмотрения предложения на КК',
|
||||
success: false,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
message: '',
|
||||
success: true,
|
||||
};
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
/* eslint-disable canonical/sort-keys */
|
||||
import { protectedProcedure } from '../../procedure';
|
||||
import { router } from '../../trpc';
|
||||
import { validateResults } from '../calculate/lib/post-validation';
|
||||
import { createRequestData } from '../calculate/lib/request';
|
||||
import { transformCalculateResults } from '../calculate/lib/transform';
|
||||
import { validate } from '../calculate/lib/validation';
|
||||
@ -147,6 +148,20 @@ export const quoteRouter = router({
|
||||
|
||||
const calculateResult = await calculate(requestData);
|
||||
|
||||
const postValidationResult = await validateResults({
|
||||
calculateResult,
|
||||
context: {
|
||||
apolloClient,
|
||||
queryClient,
|
||||
user: ctx.user,
|
||||
},
|
||||
input,
|
||||
});
|
||||
|
||||
if (postValidationResult.success === false) {
|
||||
throw new HttpError(postValidationResult.message, 400);
|
||||
}
|
||||
|
||||
const requestCreateKP = compatRequestCreateKP({
|
||||
domainName: user.domainName,
|
||||
finGAP: input.fingap,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user