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