58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
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 === 100_000_000 && 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,
|
||
};
|
||
}
|