diff --git a/src/client/stores/CalculationStore/Data/modal.js b/src/client/stores/CalculationStore/Data/modal.js index d5927dc..a4db2ea 100644 --- a/src/client/stores/CalculationStore/Data/modal.js +++ b/src/client/stores/CalculationStore/Data/modal.js @@ -3,7 +3,7 @@ const modalData = { modal: { isModalVisible: false, modalText: undefined } }; const modalActions = { showModal(text) { this.modal.modalText = text; - this.modal.isModalVisible = false; + this.modal.isModalVisible = true; }, closeModal() { this.modal.isModalVisible = false; diff --git a/src/client/stores/CalculationStore/Effects/reaction.ts b/src/client/stores/CalculationStore/Effects/reaction.ts index 514dd84..08a22bc 100644 --- a/src/client/stores/CalculationStore/Effects/reaction.ts +++ b/src/client/stores/CalculationStore/Effects/reaction.ts @@ -170,10 +170,15 @@ const reactionEffects: IReactionEffect[] = [ entityName: 'account', where: { accountid: opportunity.evo_accountid }, }).then(accounts => { - calculationStore.setValue( - 'clientRisk', - accounts[0].evo_client_riskid || null, - ); + if ( + accounts && + accounts.length > 0 && + accounts[0].evo_client_riskid + ) + calculationStore.setValue( + 'clientRisk', + accounts[0].evo_client_riskid || null, + ); }); } } @@ -215,6 +220,75 @@ const reactionEffects: IReactionEffect[] = [ }, }), + calculationStore => ({ + expression: () => { + const { channel } = calculationStore.values; + return channel; + }, + effect: channel => { + switch (channel) { + case 100000000: + calculationStore.setStatus('selectSupplier', Status.Default); + calculationStore.setStatus('selectAgent', Status.Default); + + calculationStore.setStatus('selectFinDepartment', Status.Disabled); + calculationStore.setValue('finDepartment', undefined); + + calculationStore.setStatus('selectBroker', Status.Disabled); + calculationStore.setValue('broker', undefined); + break; + + case 100000001: + calculationStore.setStatus('selectSupplier', Status.Default); + calculationStore.setStatus('selectAgent', Status.Default); + + calculationStore.setStatus('selectFinDepartment', Status.Default); + + calculationStore.setStatus('selectBroker', Status.Disabled); + calculationStore.setValue('broker', undefined); + break; + case 100000002: + calculationStore.setStatus('selectSupplier', Status.Disabled); + calculationStore.setValue('supplier', undefined); + + calculationStore.setStatus('selectAgent', Status.Default); + + calculationStore.setStatus('selectFinDepartment', Status.Disabled); + calculationStore.setValue('finDepartment', undefined); + + calculationStore.setStatus('selectBroker', Status.Disabled); + calculationStore.setValue('broker', undefined); + break; + case 100000003: + calculationStore.setStatus('selectSupplier', Status.Disabled); + calculationStore.setValue('supplier', undefined); + + calculationStore.setStatus('selectAgent', Status.Default); + calculationStore.setValue('agent', undefined); + + calculationStore.setStatus('selectFinDepartment', Status.Disabled); + calculationStore.setValue('finDepartment', undefined); + + calculationStore.setStatus('selectBroker', Status.Default); + break; + case 100000004: + default: + calculationStore.setStatus('selectSupplier', Status.Disabled); + calculationStore.setValue('supplier', undefined); + + calculationStore.setStatus('selectAgent', Status.Disabled); + calculationStore.setValue('agent', undefined); + + calculationStore.setStatus('selectFinDepartment', Status.Disabled); + calculationStore.setValue('finDepartment', undefined); + + calculationStore.setStatus('selectBroker', Status.Disabled); + calculationStore.setValue('broker', undefined); + break; + } + }, + }), + calculationStore => ({ expression: () => { const { newClient } = calculationStore.values; @@ -566,69 +640,158 @@ const reactionEffects: IReactionEffect[] = [ calculationStore => ({ expression: () => { - const { channel } = calculationStore.values; - return channel; + const { indAgentRewardSumm } = calculationStore.values; + return indAgentRewardSumm; }, - effect: channel => { - switch (channel) { - case 100000000: - calculationStore.setStatus('selectSupplier', Status.Default); - calculationStore.setStatus('selectAgent', Status.Default); + effect: indAgentRewardSumm => { + const indAgentRewardConditionId = + calculationStore.values.indAgentRewardCondition; + if (indAgentRewardConditionId) { + const indAgentRewardCondition = calculationStore.options.selectIndAgentRewardCondition?.find( + x => x.evo_reward_conditionid === indAgentRewardConditionId, + ); + if (indAgentRewardCondition) { + if ( + !indAgentRewardCondition.evo_reduce_reward && + indAgentRewardCondition.evo_reward_summ + ) { + if (indAgentRewardSumm < indAgentRewardCondition.evo_reward_summ) { + calculationStore.showModal( + 'Вознаграждение агента ФЛ указано меньше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + if (indAgentRewardCondition.evo_reward_summ) { + if (indAgentRewardSumm > indAgentRewardCondition.evo_reward_summ) { + calculationStore.showModal( + 'Вознаграждение агента ФЛ указано больше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + } + } + }, + }), - calculationStore.setStatus('selectFinDepartment', Status.Disabled); - calculationStore.setValue('finDepartment', undefined); + calculationStore => ({ + expression: () => { + const { calcDoubleAgentRewardSumm } = calculationStore.values; + return calcDoubleAgentRewardSumm; + }, + effect: calcDoubleAgentRewardSumm => { + const calcDoubleAgentRewardConditionId = + calculationStore.values.calcDoubleAgentRewardCondition; + if (calcDoubleAgentRewardConditionId) { + const selectCalcDoubleAgentRewardCondition = calculationStore.options.selectCalcDoubleAgentRewardCondition?.find( + x => x.evo_reward_conditionid === calcDoubleAgentRewardConditionId, + ); + if (selectCalcDoubleAgentRewardCondition) { + if ( + !selectCalcDoubleAgentRewardCondition.evo_reduce_reward && + selectCalcDoubleAgentRewardCondition.evo_reward_summ + ) { + if ( + calcDoubleAgentRewardSumm < + selectCalcDoubleAgentRewardCondition.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение двойного агента указано меньше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + if (selectCalcDoubleAgentRewardCondition.evo_reward_summ) { + if ( + calcDoubleAgentRewardSumm > + selectCalcDoubleAgentRewardCondition.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение двойного агента указано больше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + } + } + }, + }), - calculationStore.setStatus('selectBroker', Status.Disabled); - calculationStore.setValue('broker', undefined); - break; + calculationStore => ({ + expression: () => { + const { calcBrokerRewardSum } = calculationStore.values; + return calcBrokerRewardSum; + }, + effect: calcBrokerRewardSum => { + const calcBrokerRewardConditionId = + calculationStore.values.calcBrokerRewardCondition; + if (calcBrokerRewardConditionId) { + const selectCalcBrokerRewardCondition = calculationStore.options.selectCalcBrokerRewardCondition?.find( + x => x.evo_reward_conditionid === calcBrokerRewardConditionId, + ); + if (selectCalcBrokerRewardCondition) { + if ( + !selectCalcBrokerRewardCondition.evo_reduce_reward && + selectCalcBrokerRewardCondition.evo_reward_summ + ) { + if ( + calcBrokerRewardSum < + selectCalcBrokerRewardCondition.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение брокера указано меньше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + if (selectCalcBrokerRewardCondition.evo_reward_summ) { + if ( + calcBrokerRewardSum > + selectCalcBrokerRewardCondition.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение брокера указано больше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + } + } + }, + }), - case 100000001: - calculationStore.setStatus('selectSupplier', Status.Default); - calculationStore.setStatus('selectAgent', Status.Default); - - calculationStore.setStatus('selectFinDepartment', Status.Default); - - calculationStore.setStatus('selectBroker', Status.Disabled); - calculationStore.setValue('broker', undefined); - break; - case 100000002: - calculationStore.setStatus('selectSupplier', Status.Disabled); - calculationStore.setValue('supplier', undefined); - - calculationStore.setStatus('selectAgent', Status.Default); - - calculationStore.setStatus('selectFinDepartment', Status.Disabled); - calculationStore.setValue('finDepartment', undefined); - - calculationStore.setStatus('selectBroker', Status.Disabled); - calculationStore.setValue('broker', undefined); - break; - case 100000003: - calculationStore.setStatus('selectSupplier', Status.Disabled); - calculationStore.setValue('supplier', undefined); - - calculationStore.setStatus('selectAgent', Status.Default); - calculationStore.setValue('agent', undefined); - - calculationStore.setStatus('selectFinDepartment', Status.Disabled); - calculationStore.setValue('finDepartment', undefined); - - calculationStore.setStatus('selectBroker', Status.Default); - break; - case 100000004: - default: - calculationStore.setStatus('selectSupplier', Status.Disabled); - calculationStore.setValue('supplier', undefined); - - calculationStore.setStatus('selectAgent', Status.Disabled); - calculationStore.setValue('agent', undefined); - - calculationStore.setStatus('selectFinDepartment', Status.Disabled); - calculationStore.setValue('finDepartment', undefined); - - calculationStore.setStatus('selectBroker', Status.Disabled); - calculationStore.setValue('broker', undefined); - break; + calculationStore => ({ + expression: () => { + const { finDepartmentRewardSumm } = calculationStore.values; + return finDepartmentRewardSumm; + }, + effect: finDepartmentRewardSumm => { + const finDepartmentRewardCondtionid = + calculationStore.values.finDepartmentRewardCondtion; + if (finDepartmentRewardCondtionid) { + const selectFinDepartmentRewardCondtion = calculationStore.options.selectFinDepartmentRewardCondtion?.find( + x => x.evo_reward_conditionid === finDepartmentRewardCondtionid, + ); + if (selectFinDepartmentRewardCondtion) { + if ( + !selectFinDepartmentRewardCondtion.evo_reduce_reward && + selectFinDepartmentRewardCondtion.evo_reward_summ + ) { + if ( + finDepartmentRewardSumm < + selectFinDepartmentRewardCondtion.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение финотдела указано меньше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + if (selectFinDepartmentRewardCondtion.evo_reward_summ) { + if ( + finDepartmentRewardSumm > + selectFinDepartmentRewardCondtion.evo_reward_summ + ) { + calculationStore.showModal( + 'Вознаграждение финотдела указано больше условия по агентскому договору! \nЗначение установлено по условию договора.', + ); + } + } + } } }, }), diff --git a/src/core/fakeData/entityFakes.ts b/src/core/fakeData/entityFakes.ts index 3fcd28e..dfc477b 100644 --- a/src/core/fakeData/entityFakes.ts +++ b/src/core/fakeData/entityFakes.ts @@ -353,6 +353,7 @@ const entityFakeData: { evo_reward_conditionid: REWARD_CONDITION_2_ID, evo_name: 'Не более 2%', evo_reward_summ: 2, + evo_reduce_reward: true, }, { statecode: 0, @@ -367,34 +368,37 @@ const entityFakeData: { evo_reward_conditionid: REWARD_CONDITION_4_ID, evo_name: 'Не более 10%', evo_reward_summ: 10, + evo_reduce_reward: true, }, { statecode: 0, evo_agent_accountid: ACCOUNT_5_ID, evo_reward_conditionid: REWARD_CONDITION_5_ID, - evo_name: 'Не более 15%', - evo_reward_summ: 15, + evo_name: 'Не более 7%', + evo_reward_summ: 7, }, { statecode: 0, evo_agent_accountid: ACCOUNT_5_ID, evo_reward_conditionid: REWARD_CONDITION_6_ID, - evo_name: 'Не более 20%', - evo_reward_summ: 20, + evo_name: 'Не более 8%', + evo_reward_summ: 8, + evo_reduce_reward: true, }, { statecode: 0, evo_agent_accountid: ACCOUNT_4_ID, evo_reward_conditionid: REWARD_CONDITION_7_ID, - evo_name: 'Не более 30%', - evo_reward_summ: 30, + evo_name: 'Не более 3%', + evo_reward_summ: 3, }, { statecode: 0, evo_agent_accountid: ACCOUNT_4_ID, evo_reward_conditionid: REWARD_CONDITION_8_ID, - evo_name: 'Не более 40%', - evo_reward_summ: 40, + evo_name: 'Не более 4%', + evo_reward_summ: 4, + evo_reduce_reward: true, }, ], }; diff --git a/src/core/types/Entities/index.ts b/src/core/types/Entities/index.ts index 8d26628..9422d34 100644 --- a/src/core/types/Entities/index.ts +++ b/src/core/types/Entities/index.ts @@ -91,6 +91,7 @@ export interface IEvoRewardCondition extends IBaseOption { evo_double_agent_accountid?: string; evo_reward_summ?: number; statecode?: number; + evo_reduce_reward?: boolean; } export interface IEvoGPSBrand extends IBaseOption {