ObjectCategory x ObjectUseFor reaction

This commit is contained in:
Chika 2021-06-18 13:51:41 +03:00
parent d3829fabe6
commit 3de8d1bb81
3 changed files with 126 additions and 59 deletions

View File

@ -1,5 +1,6 @@
import eltReactions from './eltReactions';
import gibddReactions from './gibddReactions';
import insuranceReactions from './insuranceReactions';
import loadKpReaction from './loadKpReaction';
import otherReactions from './otherReactions';
import priceReactions from './priceReactions';
@ -17,5 +18,6 @@ export default [
...recalcWoRevisionReactions,
...gibddReactions,
...eltReactions,
...insuranceReactions,
loadKpReaction,
];

View File

@ -0,0 +1,60 @@
import { IReactionEffect } from 'core/types/Calculation/Store/effect';
const mapObjectCategoryToUseFor = {
100000000: [100000000, 100000002],
100000001: [
100000000,
100000001,
100000002,
100000003,
100000004,
100000005,
100000006,
100000007,
100000008,
100000009,
100000010,
100000011,
100000012,
100000013,
],
100000002: [100000002, 100000004, 100000005, 100000006, 100000009, 100000010],
100000003: [
100000002,
100000004,
100000006,
100000007,
100000008,
100000011,
100000012,
100000013,
],
100000004: [100000002, 100000009],
};
const insuranceReactions: IReactionEffect[] = [
calculationStore => ({
expression: () => {
return calculationStore.getValue('leaseObjectCategory');
},
effect: leaseObjectCategory => {
if (leaseObjectCategory) {
const allowedObjectUseFor: number[] =
mapObjectCategoryToUseFor[leaseObjectCategory];
calculationStore.setFilter('selectLeaseObjectUseFor', options =>
options.filter(
option =>
option.value &&
typeof option.value === 'number' &&
allowedObjectUseFor &&
allowedObjectUseFor.includes(option.value),
),
);
} else {
calculationStore.setFilter('selectLeaseObjectUseFor', undefined);
}
},
}),
];
export default insuranceReactions;

View File

@ -1,5 +1,6 @@
import { TElements } from 'core/types/Calculation/Store/elements';
import { IBaseOption } from 'core/types/Calculation/Store/options';
import { orderBy } from 'lodash';
const initialOptions: TElements<IBaseOption[]> = {
selectChannel: [
@ -213,65 +214,69 @@ const initialOptions: TElements<IBaseOption[]> = {
},
],
selectLeaseObjectUseFor: [
{
name: 'Для представительских целей',
value: 100000000,
},
{
name: 'Для использования в качестве «такси»',
value: 100000001,
},
{
name: 'Для передачи третьим лицам (прокат; аренда)',
value: 100000002,
},
{
name: 'Каршеринг',
value: 100000003,
},
{
name: 'Тест-драйв',
value: 100000004,
},
{
name: 'Для доставки продуктов конечному потребителю',
value: 100000005,
},
{
name: 'Для обучения вождению',
value: 100000006,
},
{
name: 'Маршрутные такси / Рейсовые автобусы',
value: 100000007,
},
{
name: 'Междугородние перевозки',
value: 100000008,
},
{
name: 'Для перевозки крупногабаритных грузов',
value: 100000009,
},
{
name: 'Для перевозки малогабаритных грузов',
value: 100000010,
},
{
name: 'Для перевозки сотрудников других организаций (водитель ЛП)',
value: 100000011,
},
{
name: 'Для перевозки сотрудников ЛП',
value: 100000012,
},
{
name:
'Для экскурсионных перевозок в т.ч. на торжества; трансфер в аэропорт и пр.',
value: 100000013,
},
],
selectLeaseObjectUseFor: orderBy(
[
{
name: 'Для представительских целей',
value: 100000000,
},
{
name: 'Для использования в качестве «такси»',
value: 100000001,
},
{
name: 'Для передачи третьим лицам (прокат; аренда)',
value: 100000002,
},
{
name: 'Каршеринг',
value: 100000003,
},
{
name: 'Тест-драйв',
value: 100000004,
},
{
name: 'Для доставки продуктов конечному потребителю',
value: 100000005,
},
{
name: 'Для обучения вождению',
value: 100000006,
},
{
name: 'Маршрутные такси / Рейсовые автобусы',
value: 100000007,
},
{
name: 'Междугородние перевозки',
value: 100000008,
},
{
name: 'Для перевозки крупногабаритных грузов',
value: 100000009,
},
{
name: 'Для перевозки малогабаритных грузов',
value: 100000010,
},
{
name: 'Для перевозки сотрудников других организаций (водитель ЛП)',
value: 100000011,
},
{
name: 'Для перевозки сотрудников ЛП',
value: 100000012,
},
{
name:
'Для экскурсионных перевозок в т.ч. на торжества; трансфер в аэропорт и пр.',
value: 100000013,
},
],
objectUseFor => objectUseFor.name.toLowerCase(),
['asc'],
),
radioInsuranceOPF: [
{