/* 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 { 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, }, }; }