diff --git a/apps/web/process/supplier-agent/reactions/agents.ts b/apps/web/process/supplier-agent/reactions/agents.ts index 7b9b23d..c308076 100644 --- a/apps/web/process/supplier-agent/reactions/agents.ts +++ b/apps/web/process/supplier-agent/reactions/agents.ts @@ -1,9 +1,10 @@ +/* eslint-disable max-len */ /* eslint-disable @typescript-eslint/naming-convention */ import { gql } from '@apollo/client'; import dayjs from 'dayjs'; import utc from 'dayjs/plugin/utc'; import type * as CRMTypes from 'graphql/crm.types'; -import { reaction } from 'mobx'; +import { autorun, reaction } from 'mobx'; import type { ReactionsContext } from 'process/types'; import { makeDisposable } from 'tools/mobx'; import * as createReactions from '../lib/create-reactions'; @@ -551,6 +552,8 @@ export function commonReactions({ store, apolloClient }: ReactionsContext) { } export function validationReactions({ store, apolloClient }: ReactionsContext) { + const { $calculation } = store; + createReactions.validateAgentRewardSumm(store, apolloClient, { rewardConditionField: 'selectIndAgentRewardCondition', rewardSummField: 'tbxIndAgentRewardSumm', @@ -570,4 +573,140 @@ export function validationReactions({ store, apolloClient }: ReactionsContext) { 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 + */ + + 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 && + !!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 && + !!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 && + !!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 && + !!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 && + !!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 && + !!calcFinDepartment && + ((calcFinDepartment === dealerPerson && dealerRewardSumm > 0) || + (calcFinDepartment === dealerBroker && dealerBrokerRewardSumm > 0) || + (calcFinDepartment === indAgent && indAgentRewardSumm > 0) || + (calcFinDepartment === calcDoubleAgent && calcDoubleAgentRewardSumm > 0) || + (calcFinDepartment === calcBroker && calcBrokerRewardSum > 0)), + message, + }); + }); }