From 40594d377b6b662561ee661c7ead6c795f3c528e Mon Sep 17 00:00:00 2001 From: Chika Date: Thu, 27 Jan 2022 17:26:25 +0300 Subject: [PATCH] =?UTF-8?q?recalc:=20=D0=B7=D0=B0=D0=BA=D1=80=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D0=BC=20=D0=BF=D0=BE=D0=BB=D1=8F=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B2=D0=BE=D0=BC=20=D0=BF=D0=BB?= =?UTF-8?q?=D0=B0=D1=82=D0=B5=D0=B6=D0=B5=20=3D=200?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../reactions/recalcWoRevisionReactions.ts | 35 +++++++++++++++++++ .../subStores/calculationProcess.ts | 27 +++++++++----- 2 files changed, 53 insertions(+), 9 deletions(-) diff --git a/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts b/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts index 397de9e..6a01169 100644 --- a/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts +++ b/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts @@ -356,6 +356,24 @@ const reactionEffects: IReactionEffect[] = [ }, }), + (calculationStore, calculationProcess) => ({ + expression: () => + calculationStore.getValues(['firstPaymentPerc', 'recalcWithRevision']), + effect: ({ firstPaymentPerc, recalcWithRevision }) => { + if (firstPaymentPerc === 0 && recalcWithRevision === true) { + calculationProcess.addToBypass({ + param: 'status', + target: agentsElementsToDisable, + }); + } else { + calculationProcess.removeFromByPass({ + param: 'status', + target: agentsElementsToDisable, + }); + } + }, + }), + (calculationStore, calculationProcess) => ({ expression: () => { return { @@ -601,4 +619,21 @@ const elementsToDisable: (ElementsNames | TableNames)[] = [ 'selectSubsidy', ]; +// Для recalc = true и первого платежа = 0 +const agentsElementsToDisable: ElementsNames[] = [ + 'selectDealerRewardCondition', + 'tbxDealerRewardSumm', + 'selectDealerBroker', + 'selectDealerBrokerRewardCondition', + 'tbxDealerBrokerRewardSumm', + 'selectIndAgentRewardCondition', + 'tbxIndAgentRewardSumm', + 'selectCalcDoubleAgentRewardCondition', + 'tbxCalcDoubleAgentRewardSumm', + 'selectCalcBrokerRewardCondition', + 'tbxCalcBrokerRewardSum', + 'selectFinDepartmentRewardCondtion', + 'tbxFinDepartmentRewardSumm', +]; + export default reactionEffects; diff --git a/src/client/stores/CalculationStore/subStores/calculationProcess.ts b/src/client/stores/CalculationStore/subStores/calculationProcess.ts index ada0634..2495d78 100644 --- a/src/client/stores/CalculationStore/subStores/calculationProcess.ts +++ b/src/client/stores/CalculationStore/subStores/calculationProcess.ts @@ -4,6 +4,12 @@ import { TableNames } from 'core/types/Calculation/Store/tables'; import { ElementStatus } from 'core/types/statuses'; import { makeAutoObservable } from 'mobx'; +type BypassParams = { + param: ElementParam; + target: (ElementsNames | TableNames)[]; + value: ElementStatus; +}; + const calculationProcess = makeAutoObservable({ processes: new Set(), addProcess(process) { @@ -19,23 +25,26 @@ const calculationProcess = makeAutoObservable({ return this.processes.size === 0; }, + //TODO: move to substore bypass: { status: undefined, }, - setBypass({ - param, - target, - value, - }: { - param: ElementParam; - target: (ElementsNames | TableNames)[]; - value: ElementStatus; - }) { + setBypass({ param, target, value }: BypassParams) { this.bypass[param] = { target, value }; }, clearBypass(param: ElementParam) { this.bypass[param] = undefined; }, + addToBypass({ param, target }: Omit) { + const newTarget = this.bypass[param].target.concat(target); + this.bypass[param].target.replace(newTarget); + }, + removeFromByPass({ param, target }: Omit) { + const newTarget = this.bypass[param].target.filter( + x => target.indexOf(x) < 0, + ); + this.bypass[param].target.replace(newTarget); + }, }); export default calculationProcess;