80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
import type { GetQuoteInputData, GetQuoteProcessData } from '../load-kp/types';
|
|
import helper from './lib/helper';
|
|
import defaultValues from '@/config/default-values';
|
|
import { getKPData as getKPDataPayments } from '@/process/payments/get-kp-data';
|
|
import { getKPData as getKPDataPrice } from '@/process/price/get-kp-data';
|
|
import { createCurrencyUtility } from '@/utils/currency';
|
|
|
|
export async function getKPData({
|
|
quote,
|
|
values,
|
|
ctx,
|
|
}: GetQuoteInputData): Promise<GetQuoteProcessData> {
|
|
const { apolloClient, queryClient } = ctx;
|
|
|
|
if (!quote?.evo_fingap_accountid) {
|
|
return {
|
|
fingap: {
|
|
keys: [],
|
|
risks: [],
|
|
},
|
|
};
|
|
}
|
|
|
|
const { getFingapRisks } = helper({ apolloClient, queryClient });
|
|
|
|
const kpDataPrice = await getKPDataPrice({ ctx, quote, values });
|
|
const kpDataPayments = await getKPDataPayments({ ctx, quote, values });
|
|
|
|
const leaseObjectPrice = kpDataPrice.values?.leaseObjectPrice ?? defaultValues.leaseObjectPrice;
|
|
const firstPaymentRub = kpDataPrice.values?.firstPaymentRub ?? defaultValues.firstPaymentRub;
|
|
const supplierCurrency = kpDataPrice.values?.supplierCurrency ?? defaultValues.supplierCurrency;
|
|
const supplierDiscountRub =
|
|
kpDataPrice.values?.supplierDiscountRub ?? defaultValues.supplierDiscountRub;
|
|
const leasingPeriod = kpDataPayments.values?.leasingPeriod ?? defaultValues.leasingPeriod;
|
|
|
|
const { RUB } = createCurrencyUtility({ apolloClient });
|
|
|
|
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 risks = await getFingapRisks(
|
|
{
|
|
discountRub,
|
|
firstPaymentRub,
|
|
leasingPeriod,
|
|
plPriceRub,
|
|
},
|
|
{ fingap: { insuranceCompany: quote?.evo_fingap_accountid ?? null } },
|
|
{ values: kpDataPayments.payments?.values ?? [] }
|
|
);
|
|
|
|
const keys: string[] = [];
|
|
quote?.evo_product_risks?.forEach((x) => {
|
|
if (x?.evo_addproduct_typeid) {
|
|
keys.push(x.evo_addproduct_typeid);
|
|
}
|
|
});
|
|
|
|
return {
|
|
fingap: {
|
|
keys,
|
|
risks,
|
|
},
|
|
};
|
|
}
|