86 lines
2.5 KiB
TypeScript
86 lines
2.5 KiB
TypeScript
import type { GetQuoteInputData, GetQuoteProcessData } from '../load-kp/types';
|
|
import helper from './lib/helper';
|
|
import initializeApollo from '@/apollo/client';
|
|
import defaultValues from '@/config/default-values';
|
|
import * as CRMTypes from '@/graphql/crm.types';
|
|
import { getKPData as getKPDataPrice } from '@/process/price/get-kp-data';
|
|
import { createCurrencyUtility } from '@/utils/currency';
|
|
import { gql } from '@apollo/client';
|
|
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
const QUERY_GET_QUOTE_SUBSIDY_DATA = gql`
|
|
query GetQuoteSubsidyData($quoteId: Uuid!) {
|
|
quote(quoteId: $quoteId) {
|
|
evo_subsidyid
|
|
evo_program_import_subsidyid
|
|
}
|
|
}
|
|
`;
|
|
|
|
export async function getKPData({ values }: GetQuoteInputData): Promise<GetQuoteProcessData> {
|
|
const apolloClient = initializeApollo();
|
|
|
|
const { quote: quoteId } = values;
|
|
|
|
const {
|
|
data: { quote },
|
|
} = await apolloClient.query({
|
|
query: CRMTypes.GetQuoteSubsidyDataDocument,
|
|
variables: {
|
|
quoteId,
|
|
},
|
|
});
|
|
|
|
const kpDataPrice = await getKPDataPrice({ values });
|
|
const { RUB } = createCurrencyUtility({ apolloClient });
|
|
|
|
const supplierCurrency = kpDataPrice.values?.supplierCurrency ?? defaultValues.supplierCurrency;
|
|
const leaseObjectPrice = kpDataPrice.values?.leaseObjectPrice ?? defaultValues.leaseObjectPrice;
|
|
const supplierDiscountRub =
|
|
kpDataPrice.values?.supplierDiscountRub ?? defaultValues.supplierDiscountRub;
|
|
|
|
let plPriceRub = 0;
|
|
if (supplierCurrency && leaseObjectPrice) {
|
|
plPriceRub = await RUB({
|
|
currencyid: supplierCurrency,
|
|
value: leaseObjectPrice,
|
|
});
|
|
}
|
|
|
|
let discountRub = 0;
|
|
if (supplierCurrency && supplierDiscountRub) {
|
|
discountRub = await RUB({
|
|
currencyid: supplierCurrency,
|
|
value: supplierDiscountRub,
|
|
});
|
|
}
|
|
|
|
const importProgram = quote?.evo_program_import_subsidyid ?? defaultValues.importProgram;
|
|
const subsidy = quote?.evo_subsidyid ?? defaultValues.subsidy;
|
|
|
|
const { getSubsidySum } = helper({ apolloClient });
|
|
const subsidySum = await getSubsidySum({
|
|
addEquipmentPrice: kpDataPrice.values?.addEquipmentPrice ?? 0,
|
|
discountRub,
|
|
importProgramSum: kpDataPrice.values?.importProgramSum ?? 0,
|
|
plPriceRub,
|
|
subsidy: quote?.evo_subsidyid ?? defaultValues.subsidy,
|
|
});
|
|
|
|
const { getImportProgramSum } = helper({ apolloClient });
|
|
const importProgramSum = await getImportProgramSum({
|
|
discountRub,
|
|
importProgram,
|
|
plPriceRub,
|
|
});
|
|
|
|
return {
|
|
values: {
|
|
importProgram,
|
|
importProgramSum,
|
|
subsidy,
|
|
subsidySum,
|
|
},
|
|
};
|
|
}
|