184 lines
6.4 KiB
TypeScript
184 lines
6.4 KiB
TypeScript
import { openNotification } from 'client/Elements/Notification';
|
||
import CalculationStore from 'client/stores/CalculationStore';
|
||
import { TAction } from 'core/types/effect';
|
||
import { Status } from 'core/types/statuses';
|
||
|
||
const actions: TAction = {
|
||
createLead: () => {
|
||
const {
|
||
contactClient,
|
||
contact,
|
||
newClient,
|
||
account,
|
||
commentLead,
|
||
phoneNumber,
|
||
} = CalculationStore.values;
|
||
if (!contactClient && !contact) {
|
||
CalculationStore.setValidation('selectContactClient', false);
|
||
CalculationStore.setValidation('tbxContact', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан контакт клиента',
|
||
})();
|
||
}
|
||
if (!newClient && !account) {
|
||
CalculationStore.setValidation('tbxNewClient', false);
|
||
CalculationStore.setValidation('selectAccount', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан клиент',
|
||
})();
|
||
}
|
||
if (!commentLead) {
|
||
CalculationStore.setValidation('tbxCommentLead', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан комментарий к интересу',
|
||
})();
|
||
}
|
||
if (contact && !phoneNumber) {
|
||
CalculationStore.setValidation('tbxPhoneNumber', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан телефон контактного лица',
|
||
})();
|
||
}
|
||
|
||
const { channel } = CalculationStore.values;
|
||
if (!channel) {
|
||
CalculationStore.setValidation('selectChannel', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан канал привлечения',
|
||
})();
|
||
} else {
|
||
const {
|
||
supplier,
|
||
agent,
|
||
finDepartment,
|
||
broker,
|
||
} = CalculationStore.values;
|
||
switch (channel) {
|
||
case 100000000: {
|
||
CalculationStore.setValidation('selectFinDepartment', true);
|
||
CalculationStore.setValidation('selectBroker', true);
|
||
if (!supplier) {
|
||
CalculationStore.setValidation('selectSupplier', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан поставщик',
|
||
})();
|
||
}
|
||
if (!agent) {
|
||
CalculationStore.setValidation('selectAgent', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан агент',
|
||
})();
|
||
}
|
||
break;
|
||
}
|
||
case 100000001: {
|
||
CalculationStore.setValidation('selectAgent', true);
|
||
CalculationStore.setValidation('selectBroker', true);
|
||
if (!supplier) {
|
||
CalculationStore.setValidation('selectSupplier', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан поставщик',
|
||
})();
|
||
}
|
||
if (!finDepartment) {
|
||
CalculationStore.setValidation('selectFinDepartment', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан финотдел',
|
||
})();
|
||
}
|
||
break;
|
||
}
|
||
case 100000002: {
|
||
CalculationStore.setValidation('selectFinDepartment', true);
|
||
CalculationStore.setValidation('selectSupplier', true);
|
||
CalculationStore.setValidation('selectBroker', true);
|
||
if (!agent) {
|
||
CalculationStore.setValidation('selectAgent', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан агент',
|
||
})();
|
||
}
|
||
break;
|
||
}
|
||
case 100000003: {
|
||
CalculationStore.setValidation('selectFinDepartment', true);
|
||
CalculationStore.setValidation('selectSupplier', true);
|
||
CalculationStore.setValidation('selectAgent', true);
|
||
if (!broker) {
|
||
CalculationStore.setValidation('selectBroker', false);
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время создания интереса',
|
||
description: 'Не указан брокер',
|
||
})();
|
||
}
|
||
break;
|
||
}
|
||
case 100000004:
|
||
default: {
|
||
CalculationStore.setValidation('selectFinDepartment', true);
|
||
CalculationStore.setValidation('selectSupplier', true);
|
||
CalculationStore.setValidation('selectAgent', true);
|
||
CalculationStore.setValidation('selectBroker', true);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
},
|
||
calculate: () => {
|
||
const { rows } = CalculationStore.tables.tableInsurance;
|
||
const kaskoRow = rows[1];
|
||
const DGORow = rows[2];
|
||
const NSRow = rows[3];
|
||
|
||
if (
|
||
kaskoRow &&
|
||
kaskoRow.insCost?.value === 0 &&
|
||
((DGORow && DGORow.insCost?.value > 0) ||
|
||
(NSRow && NSRow.insCost?.value > 0))
|
||
) {
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время расчета графика',
|
||
description: 'Укажите стоимость КАСКО',
|
||
})();
|
||
return;
|
||
}
|
||
|
||
if (
|
||
kaskoRow &&
|
||
kaskoRow.insured?.value === 100000001 &&
|
||
kaskoRow.insCost?.value === 0
|
||
) {
|
||
openNotification({
|
||
type: 'error',
|
||
title: 'Ошибка во время расчета графика',
|
||
description: 'Укажите стоимость КАСКО, включаемую в график',
|
||
})();
|
||
return;
|
||
}
|
||
},
|
||
};
|
||
|
||
export default { actions };
|