686 lines
28 KiB
TypeScript
686 lines
28 KiB
TypeScript
/* eslint-disable @typescript-eslint/naming-convention */
|
||
/* eslint-disable sonarjs/no-identical-functions */
|
||
import * as createReactions from '../lib/create-reactions';
|
||
import * as fillAgentsFromLead from '../lib/fill-agents-from-lead';
|
||
import * as CRMTypes from '@/graphql/crm.types';
|
||
import type { ProcessContext } from '@/process/types';
|
||
import dayjs from 'dayjs';
|
||
import utc from 'dayjs/plugin/utc';
|
||
import { autorun, reaction } from 'mobx';
|
||
import { makeDisposable } from 'tools/mobx';
|
||
|
||
const { fillIndAgent, fillCalcBroker, fillCalcDoubleAgent, fillFinDepartment } = fillAgentsFromLead;
|
||
const { fillAgentRewardReaction, fillAgentRewardSummReaction, validateAgentRewardSumm } =
|
||
createReactions;
|
||
|
||
dayjs.extend(utc);
|
||
|
||
class Helper {
|
||
public enabled: boolean;
|
||
/**
|
||
*
|
||
*/
|
||
constructor() {
|
||
this.enabled = false;
|
||
}
|
||
|
||
public set = (value: boolean) => {
|
||
this.enabled = value;
|
||
};
|
||
}
|
||
|
||
export function common({ store, apolloClient }: ProcessContext) {
|
||
const { $calculation, $process } = store;
|
||
|
||
/**
|
||
* Заполняем агентов из Интереса
|
||
*/
|
||
makeDisposable(
|
||
() =>
|
||
reaction(
|
||
() => $calculation.element('selectLead').getValue(),
|
||
(leadid) => {
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillCalcBroker(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
),
|
||
() => $process.has('LoadKP')
|
||
);
|
||
|
||
/**
|
||
* IndAgent
|
||
*/
|
||
// Заполняем selectIndAgentRewardCondition
|
||
fillAgentRewardReaction(store, apolloClient, {
|
||
agentField: 'selectIndAgent',
|
||
rewardConditionField: 'selectIndAgentRewardCondition',
|
||
});
|
||
|
||
// Заполняем tbxIndAgentRewardSumm
|
||
fillAgentRewardSummReaction(store, apolloClient, {
|
||
rewardConditionField: 'selectIndAgentRewardCondition',
|
||
rewardSummField: 'tbxIndAgentRewardSumm',
|
||
});
|
||
|
||
/**
|
||
* CalcDoubleAgent
|
||
*/
|
||
// Заполняем selectCalcDoubleAgentRewardCondition
|
||
fillAgentRewardReaction(store, apolloClient, {
|
||
agentField: 'selectCalcDoubleAgent',
|
||
rewardConditionField: 'selectCalcDoubleAgentRewardCondition',
|
||
});
|
||
|
||
// Заполняем tbxCalcDoubleAgentRewardSumm
|
||
fillAgentRewardSummReaction(store, apolloClient, {
|
||
rewardConditionField: 'selectCalcDoubleAgentRewardCondition',
|
||
rewardSummField: 'tbxCalcDoubleAgentRewardSumm',
|
||
});
|
||
|
||
/**
|
||
* CalcBroker
|
||
*/
|
||
// Заполняем selectCalcBrokerRewardCondition
|
||
fillAgentRewardReaction(store, apolloClient, {
|
||
agentField: 'selectCalcBroker',
|
||
rewardConditionField: 'selectCalcBrokerRewardCondition',
|
||
});
|
||
|
||
// Заполняем tbxCalcBrokerRewardSum
|
||
fillAgentRewardSummReaction(store, apolloClient, {
|
||
rewardConditionField: 'selectCalcBrokerRewardCondition',
|
||
rewardSummField: 'tbxCalcBrokerRewardSum',
|
||
});
|
||
|
||
/**
|
||
* CalcFinDepartment
|
||
*/
|
||
// Заполняем selectFinDepartmentRewardCondtion
|
||
fillAgentRewardReaction(store, apolloClient, {
|
||
agentField: 'selectCalcFinDepartment',
|
||
rewardConditionField: 'selectFinDepartmentRewardCondtion',
|
||
});
|
||
|
||
// Заполняем tbxCalcBrokerRewardSum
|
||
fillAgentRewardSummReaction(store, apolloClient, {
|
||
rewardConditionField: 'selectFinDepartmentRewardCondtion',
|
||
rewardSummField: 'tbxFinDepartmentRewardSumm',
|
||
});
|
||
|
||
/**
|
||
* Добавить реакцию на изменение списка в поле selectDealerRewardCondition :
|
||
* Если в списке selectDealerRewardCondition есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerBroker
|
||
* selectIndAgent
|
||
* selectCalcDoubleAgent
|
||
* selectCalcBroker
|
||
* selectFinDepartment
|
||
*/
|
||
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectDealerRewardCondition').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillCalcBroker(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerBroker').resetValue();
|
||
$calculation.element('selectIndAgent').reset();
|
||
$calculation.element('selectCalcDoubleAgent').reset();
|
||
$calculation.element('selectCalcBroker').reset();
|
||
$calculation.element('selectCalcFinDepartment').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
/**
|
||
* Добавить реакцию на изменение списка в поле selectDealerBrokerRewardCondition :
|
||
*
|
||
* Если в списке selectDealerBrokerRewardCondition есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerPerson (не обнуляем)
|
||
* selectIndAgent
|
||
* selectCalcDoubleAgent
|
||
* selectCalcBroker
|
||
* selectFinDepartment
|
||
* иначе
|
||
*
|
||
* selectDealerPerson открываем для редактирования
|
||
* selectIndAgent заполняется значением из Интереса
|
||
* selectCalcDoubleAgent заполняется значением из Интереса
|
||
* selectCalcBrokerRewardCondition заполняется значением из Интереса
|
||
* selectFinDepartmentRewardCondtion заполняется значением из Интереса
|
||
*/
|
||
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectDealerBrokerRewardCondition').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillCalcBroker(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerPerson').block();
|
||
$calculation.element('selectIndAgent').reset();
|
||
$calculation.element('selectCalcDoubleAgent').reset();
|
||
$calculation.element('selectCalcBroker').reset();
|
||
$calculation.element('selectCalcFinDepartment').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
$calculation.element('selectDealerPerson').unblock();
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
/**
|
||
* Добавить реакцию на изменение списка в поле selectIndAgentRewardCondition :
|
||
*
|
||
* Если в списке selectIndAgentRewardCondition есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerPerson (не обнуляем)
|
||
* selectDealerBroker
|
||
* selectCalcDoubleAgent
|
||
* selectCalcBroker
|
||
* selectFinDepartment
|
||
* иначе
|
||
*
|
||
* selectDealerPerson открываем для редактирования
|
||
* selectDealerBroker открываем для редактирования
|
||
* selectCalcDoubleAgent заполняется значением из Интереса
|
||
* selectCalcBroker заполняется значением из Интереса
|
||
* selectCalcFinDepartment заполняется значением из Интереса
|
||
*/
|
||
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectIndAgentRewardCondition').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillCalcBroker(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerPerson').block();
|
||
$calculation.element('selectDealerBroker').resetValue();
|
||
$calculation.element('selectCalcDoubleAgent').reset();
|
||
$calculation.element('selectCalcBroker').reset();
|
||
$calculation.element('selectCalcFinDepartment').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
$calculation.element('selectDealerPerson').unblock();
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
|
||
/**
|
||
* Добавить реакцию на изменение списка в поле selectCalcDoubleAgentRewardCondition :
|
||
*
|
||
* Если в списке selectCalcDoubleAgentRewardCondition есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerPerson (не обнуляем)
|
||
* selectDealerBroker
|
||
* selectIndAgent
|
||
* selectCalcBroker
|
||
* selectCalcFinDepartment
|
||
* иначе
|
||
*
|
||
* selectDealerPerson открываем для редактирования
|
||
* selectDealerBroker открываем для редактирования
|
||
* selectIndAgent заполняется значением из Интереса
|
||
* selectCalcBroker заполняется значением из Интереса
|
||
* selectCalcFinDepartment заполняется значением из Интереса
|
||
*/
|
||
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectCalcDoubleAgentRewardCondition').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcBroker(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerPerson').block();
|
||
$calculation.element('selectDealerBroker').resetValue();
|
||
$calculation.element('selectIndAgent').reset();
|
||
$calculation.element('selectCalcBroker').reset();
|
||
$calculation.element('selectCalcFinDepartment').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
$calculation.element('selectDealerPerson').unblock();
|
||
$calculation.element('selectDealerBroker').unblock();
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
/**
|
||
* @description
|
||
* Добавить реакцию на изменение списка в поле selectCalcBrokerRewardCondition:
|
||
*
|
||
* Если в списке selectCalcBrokerRewardCondition есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerPerson (не обнуляем)
|
||
* selectDealerBroker
|
||
* selectIndAgent
|
||
* selectCalcDoubleAgent
|
||
* selectCalcFinDepartment
|
||
* иначе
|
||
*
|
||
* selectDealerPerson открываем для редактирования
|
||
* selectDealerBroker открываем для редактирования
|
||
* selectIndAgent заполняется значением из Интереса
|
||
* selectCalcDoubleAgent заполняется значением из Интереса
|
||
* selectCalcFinDepartment заполняется значением из Интереса
|
||
*/
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectCalcBrokerRewardCondition').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerPerson').block();
|
||
$calculation.element('selectDealerBroker').resetValue();
|
||
$calculation.element('selectIndAgent').reset();
|
||
$calculation.element('selectCalcDoubleAgent').reset();
|
||
$calculation.element('selectCalcFinDepartment').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
$calculation.element('selectDealerPerson').unblock();
|
||
$calculation.element('selectDealerBroker').unblock();
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
|
||
/**
|
||
* Добавить реакцию на изменение списка в поле selectFinDepartmentRewardCondtion:
|
||
*
|
||
* Если в списке selectFinDepartmentRewardCondtion есть запись,
|
||
* у которой evo_reward_condition.evo_agency_agreementid.
|
||
* Выплата без других агентов (evo_reward_without_other_agent) = True,
|
||
* то сбрасывают значение и закрываются для выбора поля:
|
||
*
|
||
* selectDealerPerson (не обнуляем)
|
||
* selectDealerBroker
|
||
* selectIndAgent
|
||
* selectCalcDoubleAgent
|
||
* selectCalcBroker
|
||
* иначе
|
||
*
|
||
* selectDealerPerson открываем для редактирования
|
||
* selectDealerBroker открываем для редактирования
|
||
* selectIndAgent заполняется значением из Интереса
|
||
* selectCalcDoubleAgent заполняется значением из Интереса
|
||
* selectCalcBroker заполняется значением из Интереса
|
||
*/
|
||
|
||
{
|
||
const helper = new Helper();
|
||
reaction(
|
||
() => $calculation.element('selectFinDepartmentRewardCondtion').getValue(),
|
||
async (rewardConditionId) => {
|
||
function fillAgents() {
|
||
const leadid = $calculation.element('selectLead').getValue();
|
||
fillIndAgent(store, apolloClient, leadid);
|
||
fillCalcDoubleAgent(store, apolloClient, leadid);
|
||
fillFinDepartment(store, apolloClient, leadid);
|
||
}
|
||
|
||
if (!rewardConditionId) {
|
||
if (helper.enabled === true) {
|
||
helper.set(false);
|
||
fillAgents();
|
||
}
|
||
|
||
return;
|
||
}
|
||
const {
|
||
data: { evo_reward_condition },
|
||
} = await apolloClient.query({
|
||
query: CRMTypes.GetRewardConditionDocument,
|
||
variables: {
|
||
conditionId: rewardConditionId,
|
||
},
|
||
});
|
||
|
||
if (evo_reward_condition?.evo_agency_agreementidData?.evo_reward_without_other_agent) {
|
||
helper.set(true);
|
||
|
||
$calculation.element('selectDealerPerson').block();
|
||
$calculation.element('selectDealerBroker').resetValue();
|
||
$calculation.element('selectIndAgent').reset();
|
||
$calculation.element('selectCalcDoubleAgent').reset();
|
||
$calculation.element('selectCalcBroker').reset();
|
||
} else {
|
||
helper.set(false);
|
||
|
||
$calculation.element('selectDealerPerson').unblock();
|
||
$calculation.element('selectDealerBroker').unblock();
|
||
fillAgents();
|
||
}
|
||
}
|
||
);
|
||
}
|
||
}
|
||
|
||
export function validation({ store, apolloClient }: ProcessContext) {
|
||
const { $calculation } = store;
|
||
|
||
validateAgentRewardSumm(store, apolloClient, {
|
||
rewardConditionField: 'selectIndAgentRewardCondition',
|
||
rewardSummField: 'tbxIndAgentRewardSumm',
|
||
});
|
||
|
||
validateAgentRewardSumm(store, apolloClient, {
|
||
rewardConditionField: 'selectCalcDoubleAgentRewardCondition',
|
||
rewardSummField: 'tbxCalcDoubleAgentRewardSumm',
|
||
});
|
||
|
||
validateAgentRewardSumm(store, apolloClient, {
|
||
rewardConditionField: 'selectCalcBrokerRewardCondition',
|
||
rewardSummField: 'tbxCalcBrokerRewardSum',
|
||
});
|
||
|
||
validateAgentRewardSumm(store, apolloClient, {
|
||
rewardConditionField: 'selectFinDepartmentRewardCondtion',
|
||
rewardSummField: 'tbxFinDepartmentRewardSumm',
|
||
});
|
||
|
||
/**
|
||
* Добавить валидацию на кнопку Рассчитать:
|
||
* если tbxDealerRewardSumm > 0 и
|
||
* если selectDealerPerson = selectDealerBroker и tbxDealerBrokerRewardSumm > 0, то ругаться на selectDealerPerson
|
||
* если selectDealerPerson = selectIndAgent и tbxIndAgentRewardSumm > 0, то ругаться на selectDealerPerson
|
||
* если selectDealerPerson = selectCalcDoubleAgent и tbxCalcDoubleAgentRewardSumm > 0, то ругаться на selectDealerPerson
|
||
* если selectDealerPerson = selectCalcBroker tbxCalcBrokerRewardSum > 0, то ругаться на selectDealerPerson
|
||
* если selectDealerPerson = selectFinDepartment и tbxFinDepartmentRewardSumm > 0, то ругаться на selectDealerPerson
|
||
* 2.если tbxDealerBrokerRewardSumm > 0 и
|
||
*
|
||
* если selectDealerBroker = selectDealerPerson и tbxDealerRewardSumm > 0, то ругаться на selectDealerBroker
|
||
* если selectDealerBroker = selectIndAgent и tbxIndAgentRewardSumm > 0, то ругаться на selectDealerBroker
|
||
* если selectDealerBroker = selectCalcDoubleAgent и tbxCalcDoubleAgentRewardSumm > 0, то ругаться на selectDealerBroker
|
||
* если selectDealerBroker = selectCalcBroker tbxCalcBrokerRewardSum > 0, то ругаться на selectDealerBroker
|
||
* если selectDealerBroker = selectFinDepartment и tbxFinDepartmentRewardSumm > 0, то ругаться на selectDealerBroker
|
||
* 3. если tbxIndAgentRewardSumm > 0 и
|
||
*
|
||
* если selectIndAgent = selectDealerPerson и tbxDealerRewardSumm > 0, то ругаться на selectIndAgent
|
||
* если selectIndAgent = selectDealerBroker и tbxDealerBrokerRewardSumm > 0, то ругаться на selectIndAgent
|
||
* если selectIndAgent = selectCalcDoubleAgent и tbxCalcDoubleAgentRewardSumm > 0, то ругаться на selectIndAgent
|
||
* если selectIndAgent = selectCalcBroker tbxCalcBrokerRewardSum > 0, то ругаться на selectIndAgent
|
||
* если selectIndAgent = selectFinDepartment и tbxFinDepartmentRewardSumm > 0, то ругаться на selectIndAgent
|
||
* 4. если tbxCalcDoubleAgentRewardSumm > 0 и
|
||
*
|
||
* если selectCalcDoubleAgent = selectDealerPerson и tbxDealerRewardSumm > 0, то ругаться на selectCalcDoubleAgent
|
||
* если selectCalcDoubleAgent = selectDealerBroker и tbxDealerBrokerRewardSumm > 0, то ругаться на selectCalcDoubleAgent
|
||
* если selectCalcDoubleAgent = sselectIndAgent и tbxIndAgentRewardSumm > 0, то ругаться на selectCalcDoubleAgent
|
||
* если selectCalcDoubleAgent = selectCalcBroker tbxCalcBrokerRewardSum > 0, то ругаться на selectCalcDoubleAgent
|
||
* если selectCalcDoubleAgent = selectFinDepartment и tbxFinDepartmentRewardSumm > 0, то ругаться на selectCalcDoubleAgent
|
||
* 5. если tbxCalcBrokerRewardSum > 0 и
|
||
*
|
||
* если selectCalcBroker = selectDealerPerson и tbxDealerRewardSumm > 0, то ругаться на selectCalcBroker
|
||
* если selectCalcBroker = selectDealerBroker и tbxDealerBrokerRewardSumm > 0, то ругаться на selectCalcBroker
|
||
* если selectCalcBroker = sselectIndAgent и tbxIndAgentRewardSumm > 0, то ругаться на selectCalcBroker
|
||
* если selectCalcBroker = selectCalcDoubleAgent и tbxCalcDoubleAgentRewardSumm > 0, то ругаться на selectCalcBroker
|
||
* если selectCalcBroker = selectFinDepartment и tbxFinDepartmentRewardSumm > 0, то ругаться на selectCalcBroker
|
||
* 6. если tbxFinDepartmentRewardSumm > 0 и
|
||
*
|
||
* если selectFinDepartment = selectDealerPerson и tbxDealerRewardSumm > 0, то ругаться на selectFinDepartment
|
||
* если selectFinDepartment = selectDealerBroker и tbxDealerBrokerRewardSumm > 0, то ругаться на selectFinDepartment
|
||
* если selectFinDepartment = sselectIndAgent и tbxIndAgentRewardSumm > 0, то ругаться на selectFinDepartment
|
||
* если selectFinDepartment = selectCalcDoubleAgent и tbxCalcDoubleAgentRewardSumm > 0, то ругаться на selectFinDepartment
|
||
* если selectFinDepartment = selectCalcBroker tbxCalcBrokerRewardSum > 0, то ругаться на selectFinDepartment
|
||
*/
|
||
|
||
// eslint-disable-next-line complexity, sonarjs/cognitive-complexity
|
||
autorun(() => {
|
||
const dealerRewardSumm = $calculation.element('tbxDealerRewardSumm').getValue();
|
||
const dealerBrokerRewardSumm = $calculation.element('tbxDealerBrokerRewardSumm').getValue();
|
||
const indAgentRewardSumm = $calculation.element('tbxIndAgentRewardSumm').getValue();
|
||
const calcDoubleAgentRewardSumm = $calculation
|
||
.element('tbxCalcDoubleAgentRewardSumm')
|
||
.getValue();
|
||
const calcBrokerRewardSum = $calculation.element('tbxCalcBrokerRewardSum').getValue();
|
||
const finDepartmentRewardSumm = $calculation.element('tbxFinDepartmentRewardSumm').getValue();
|
||
|
||
const dealerPerson = $calculation.element('selectDealerPerson').getValue();
|
||
const dealerBroker = $calculation.element('selectDealerBroker').getValue();
|
||
const indAgent = $calculation.element('selectIndAgent').getValue();
|
||
const calcDoubleAgent = $calculation.element('selectCalcDoubleAgent').getValue();
|
||
const calcBroker = $calculation.element('selectCalcBroker').getValue();
|
||
const calcFinDepartment = $calculation.element('selectCalcFinDepartment').getValue();
|
||
|
||
const message = 'Вы закладываете вознаграждение одному и тому же агенту дважды';
|
||
|
||
$calculation.element('selectDealerPerson').validate({
|
||
invalid:
|
||
dealerRewardSumm > 0 &&
|
||
Boolean(dealerPerson) &&
|
||
((dealerPerson === dealerBroker && dealerBrokerRewardSumm > 0) ||
|
||
(dealerPerson === indAgent && indAgentRewardSumm > 0) ||
|
||
(dealerPerson === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) ||
|
||
(dealerPerson === calcBroker && calcBrokerRewardSum > 0) ||
|
||
(dealerPerson === calcFinDepartment && finDepartmentRewardSumm > 0)),
|
||
message,
|
||
});
|
||
|
||
$calculation.element('selectDealerBroker').validate({
|
||
invalid:
|
||
dealerBrokerRewardSumm > 0 &&
|
||
Boolean(dealerBroker) &&
|
||
((dealerBroker === dealerPerson && dealerRewardSumm > 0) ||
|
||
(dealerBroker === indAgent && indAgentRewardSumm > 0) ||
|
||
(dealerBroker === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) ||
|
||
(dealerBroker === calcBroker && calcBrokerRewardSum > 0) ||
|
||
(dealerBroker === calcFinDepartment && finDepartmentRewardSumm > 0)),
|
||
message,
|
||
});
|
||
|
||
$calculation.element('selectIndAgent').validate({
|
||
invalid:
|
||
indAgentRewardSumm > 0 &&
|
||
Boolean(indAgent) &&
|
||
((indAgent === dealerPerson && dealerRewardSumm > 0) ||
|
||
(indAgent === dealerBroker && dealerBrokerRewardSumm > 0) ||
|
||
(indAgent === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) ||
|
||
(indAgent === calcBroker && calcBrokerRewardSum > 0) ||
|
||
(indAgent === calcFinDepartment && finDepartmentRewardSumm > 0)),
|
||
message,
|
||
});
|
||
|
||
$calculation.element('selectCalcDoubleAgent').validate({
|
||
invalid:
|
||
calcDoubleAgentRewardSumm > 0 &&
|
||
Boolean(calcDoubleAgent) &&
|
||
((calcDoubleAgent === dealerPerson && dealerRewardSumm > 0) ||
|
||
(calcDoubleAgent === dealerBroker && dealerBrokerRewardSumm > 0) ||
|
||
(calcDoubleAgent === indAgent && indAgentRewardSumm > 0) ||
|
||
(calcDoubleAgent === calcBroker && calcBrokerRewardSum > 0) ||
|
||
(calcDoubleAgent === calcFinDepartment && finDepartmentRewardSumm > 0)),
|
||
message,
|
||
});
|
||
|
||
$calculation.element('selectCalcBroker').validate({
|
||
invalid:
|
||
calcBrokerRewardSum > 0 &&
|
||
Boolean(calcBroker) &&
|
||
((calcBroker === dealerPerson && dealerRewardSumm > 0) ||
|
||
(calcBroker === dealerBroker && dealerBrokerRewardSumm > 0) ||
|
||
(calcBroker === indAgent && indAgentRewardSumm > 0) ||
|
||
(calcBroker === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) ||
|
||
(calcBroker === calcFinDepartment && finDepartmentRewardSumm > 0)),
|
||
message,
|
||
});
|
||
|
||
$calculation.element('selectCalcFinDepartment').validate({
|
||
invalid:
|
||
finDepartmentRewardSumm > 0 &&
|
||
Boolean(calcFinDepartment) &&
|
||
((calcFinDepartment === dealerPerson && dealerRewardSumm > 0) ||
|
||
(calcFinDepartment === dealerBroker && dealerBrokerRewardSumm > 0) ||
|
||
(calcFinDepartment === indAgent && indAgentRewardSumm > 0) ||
|
||
(calcFinDepartment === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) ||
|
||
(calcFinDepartment === calcBroker && calcBrokerRewardSum > 0)),
|
||
message,
|
||
});
|
||
});
|
||
}
|