diff --git a/src/client/stores/CalculationStore/Effects/reaction.ts b/src/client/stores/CalculationStore/Effects/reaction.ts index 986c09d..bb2d9d3 100644 --- a/src/client/stores/CalculationStore/Effects/reaction.ts +++ b/src/client/stores/CalculationStore/Effects/reaction.ts @@ -1775,6 +1775,68 @@ const reactionEffects: IReactionEffect[] = [ calculationStore.setValue('maxPriceChange', maxPriceChange); }, }), + + calculationStore => ({ + expression: () => { + const { recalcWithRevision } = calculationStore.values; + return recalcWithRevision; + }, + effect: recalcWithRevision => { + if (recalcWithRevision === true) { + calculationStore.setStatus('selectLead', Status.Disabled); + calculationStore.setStatus('selectOpportunity', Status.Disabled); + calculationStore.setStatus('selectQuote', Status.Disabled); + } else { + calculationStore.setStatus('selectLead', Status.Default); + calculationStore.setStatus('selectOpportunity', Status.Default); + calculationStore.setStatus('selectQuote', Status.Default); + } + }, + }), + + calculationStore => ({ + expression: () => { + const { + supplierDiscountRub, + leaseObjectPrice, + supplierCurrency, + } = calculationStore.values; + return [supplierDiscountRub, leaseObjectPrice, supplierCurrency]; + }, + effect: ([supplierDiscountRub, leaseObjectPrice, supplierCurrencyId]) => { + const { recalcWithRevision, maxPriceChange } = calculationStore.values; + if (recalcWithRevision === false) { + return; + } + + const supplierCurrency = calculationStore + .getOptions('selectSupplierCurrency') + .find(x => x.transactioncurrencyid === supplierCurrencyId); + const evo_currencychange = calculationStore + .getStaticData('evo_currencychange') + ?.find(x => x.evo_ref_transactioncurrency === supplierCurrencyId); + const evo_currencychangeValue = + (evo_currencychange && evo_currencychange.evo_currencychange) || 0; + let price = calcPrice( + supplierCurrency?.isocurrencycode, + leaseObjectPrice, + evo_currencychangeValue, + ); + + if (price - supplierDiscountRub > maxPriceChange) { + calculationStore.setValidation('tbxLeaseObjectPrice', false); + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'Указанная стоимость предмета лизинга больше возмножного изменения стоимости предмета лизинга при пересчете без пересмотра.' + + 'Уменьшите стоимость предмета лизинга', + })(); + } else { + calculationStore.setValidation('tbxLeaseObjectPrice', true); + } + }, + }), ]; export default reactionEffects;