vchikalkin 8836b358c2 В разделе ELT в таблицу "ОСАГО" добавить изменения в формирование списка СК - должны отображаться записи Контрагентов, у которых "Тип полиса" evo_type_ins_policy содержит "ОСАГО" 100 000 001 И ("ID Наш расчет ОСАГО" evo_osago_id содержит данные или "ID ELT ОСАГО" evo_id_elt_osago содержит данные).
В массив записей надо добавить признак "metodCalc", который заполняется следующим образом:

если в Контрагенте поле "ID ELT ОСАГО"  evo_id_elt_osago содержит данные, то указывается "ELT"
если в Контрагенте поле "ID Наш расчет ОСАГО" evo_osago_id  содержит данные, то указывается "CRM"
иначе указывается null
    "osago": {
      "id": "YUGORIA",
      "key": "a48b3d07-7b40-eb11-bae6-00155d088a12",
      "message": "",
      "name": "ГСК ЮГОРИЯ",
      "numCalc": 3890624,
      "requestId": "",
      "skCalcId": "0",
      "status": null,
      "sum": 28243.98,
      "totalFranchise": 0

       "methodCalc": CRM

В момент нажатия кнопки "Расчет ОСАГО по ELT" (отдельную кнопку не делаем, т.к. проверки на расчет ЕЛТ должны и тут действовать) необходимо добавить развилку:

если у записи "metodCalc": ELT, то отправляется запрос в ELT по текущей логике
если у записи "metodCalc": CRM, то ищется запись Типа дополнительных продуктов evo_addproduct_type, у которой:
"Статус" statecode = активная

И "Тип продукта" evo_product_type = ОСАГО 100 000 008

И "Отображать для расчета в ЛК" evo_visible_calc = Да

И "Провайдер услуг"  evo_accountid = "key" данной записи

И "Начало действия" evo_datefrom меньше или равно текущей даты

И "Окончание действия" evo_dateto больше или равно текущей даты

И "Категория ТС" evo_category = значению из поля Категория ТС на форме (значение "Не выбрано" на форме должно быть равно "пусто" в поле карточки)

И "Min мощность, л.с." evo_min_power меньше или равна значению из поля Мощность на форме

И "Max мощность, л.с." evo_max_power больше или равна значению из поля Мощность на форме

И "Min количество мест" evo_min_seats_count меньше или равна значению из поля Количество мест на форме

И "Max количество мест" evo_max_seats_count если больше или равна значению из поля Количество мест на форме

И "Min Разрешенная макс.масса, кг" evo_min_mass меньше или равна значению из поля Разрешенная макс.масса на форме

И "Max Разрешенная макс.масса, кг" evo_max_mass больше или равна значению из поля Разрешенная макс.масса на форме

Если найдена одна запись,то в массиве записываются  значения:

"numCalc" = значение поля evo_addproduct_type.evo_id ID,
"sum"= evo_addproduct_type.evo_graph_price_withoutnds Стоимость (закладываем в график), без НДС, руб.,
"totalFranchise" = 0
Если не найдена такая запись, то в массиве записываются  значения:

"numCalc" = null,
"sum"= 0.00,
"totalFranchise" = 0
Если найдено несколько записей, то берем последнюю по дате создания и по ней записываем в массив значения:

"numCalc" = значение поля evo_addproduct_type.evo_id ID,
"sum"= evo_addproduct_type.evo_graph_price_withoutnds Стоимость (закладываем в график), без НДС, руб.,
"totalFranchise" = 0
2024-03-26 11:15:49 +03:00

69 lines
2.1 KiB
TypeScript

import type { ProcessContext } from '../../types';
import type { Row } from '@/Components/Calculation/Form/ELT/types';
import * as CRMTypes from '@/graphql/crm.types';
import { defaultRow } from '@/stores/tables/elt/default-values';
export default function helper({
apolloClient,
store,
}: Pick<ProcessContext, 'apolloClient' | 'store'>) {
const { $calculation } = store;
return {
async init() {
const {
data: { accounts },
} = await apolloClient.query({
query: CRMTypes.GetInsuranceCompaniesDocument,
});
let evo_leasingobject_type: CRMTypes.GetLeaseObjectTypeQuery['evo_leasingobject_type'];
const leaseObjectTypeId = $calculation.element('selectLeaseObjectType').getValue();
if (leaseObjectTypeId) {
const { data } = await apolloClient.query({
query: CRMTypes.GetLeaseObjectTypeDocument,
variables: {
leaseObjectTypeId,
},
});
({ evo_leasingobject_type } = data);
}
return {
kasko: (accounts
?.filter((x) =>
x?.evo_type_ins_policy?.includes(100_000_000) &&
evo_leasingobject_type?.evo_id &&
['6', '9', '10'].includes(evo_leasingobject_type?.evo_id)
? Boolean(x.evo_id_elt_smr)
: Boolean(x?.evo_id_elt)
)
.map((x) => ({
...defaultRow,
id:
evo_leasingobject_type?.evo_id &&
['6', '9', '10'].includes(evo_leasingobject_type?.evo_id)
? x?.evo_id_elt_smr
: x?.evo_id_elt,
key: x?.value,
name: x?.label,
})) || []) as Row[],
osago: (accounts
?.filter(
(x) =>
x?.evo_type_ins_policy?.includes(100_000_001) &&
(x?.evo_id_elt_osago || x.evo_osago_id)
)
.map((x) => ({
...defaultRow,
id: x?.evo_id_elt_osago || x?.evo_osago_id,
key: x?.value,
metodCalc: x?.evo_osago_id ? 'CRM' : 'ELT',
name: x?.label,
})) || []) as Row[],
};
},
};
}