diff --git a/src/client/stores/CalculationStore/Effects/lib/queries.js b/src/client/stores/CalculationStore/Effects/lib/queries.js index 2afc5b0..9b34d81 100644 --- a/src/client/stores/CalculationStore/Effects/lib/queries.js +++ b/src/client/stores/CalculationStore/Effects/lib/queries.js @@ -21,4 +21,5 @@ link evo_req_telematic evo_req_telematic_accept evo_one_year_insurance +evo_last_payment_perc `; diff --git a/src/client/stores/CalculationStore/Effects/reactions/otherReactions.ts b/src/client/stores/CalculationStore/Effects/reactions/otherReactions.ts index 21c0437..c09e4cb 100644 --- a/src/client/stores/CalculationStore/Effects/reactions/otherReactions.ts +++ b/src/client/stores/CalculationStore/Effects/reactions/otherReactions.ts @@ -655,42 +655,6 @@ const reactionEffects: IReactionEffect[] = [ }, }), - calculationStore => ({ - expression: () => { - const { lastPaymentPerc, balanceHolder } = calculationStore.values; - return { - lastPaymentPerc, - balanceHolder, - }; - }, - effect: ({ lastPaymentPerc, balanceHolder }) => { - if (balanceHolder && balanceHolder === 100000001) { - if (!lastPaymentPerc || parseFloat(lastPaymentPerc) < 1) { - calculationStore.setValidation('tbxLastPaymentPerc', false); - openNotification({ - type: 'error', - title: 'Ошибка', - description: - 'При балансе лизингодатель последний платеж не может быть меньше 1%! Увеличьте значение.', - })(); - return; - } - } else { - if (parseFloat(lastPaymentPerc) === 0) { - calculationStore.setValidation('tbxLastPaymentPerc', false); - openNotification({ - type: 'error', - title: 'Ошибка', - description: - 'Последний платеж не может быть равен 0. Увеличьте значение', - })(); - return; - } - } - calculationStore.setValidation('tbxLastPaymentPerc', true); - }, - }), - calculationStore => ({ expression: () => { const { diff --git a/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts b/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts index c0fd2ef..e5c670d 100644 --- a/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts +++ b/src/client/stores/CalculationStore/Effects/reactions/recalcWoRevisionReactions.ts @@ -460,6 +460,66 @@ const reactionEffects: IReactionEffect[] = [ fireImmediately: true, }, }), + + calculationStore => ({ + expression: () => calculationStore.getValues(['lastPaymentPerc']), + effect: ({ lastPaymentPerc }) => { + if (!calculationStore.getValue('recalcWithRevision')) { + calculationStore.setValidation('tbxLastPaymentPerc', undefined); + return; + } + + const quote = calculationStore.getOption('selectQuote'); + if ( + quote && + quote.evo_last_payment_perc && + lastPaymentPerc > 1 && + lastPaymentPerc > quote.evo_last_payment_perc + ) { + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'При пересчете без пересмотра последний платеж можно уменьшать или увеличивать до 1%', + })(); + calculationStore.setValidation('tbxLastPaymentPerc', false); + } else { + calculationStore.setValidation('tbxLastPaymentPerc', undefined); + } + }, + }), + + calculationStore => ({ + expression: () => + calculationStore.getValues(['lastPaymentPerc', 'balanceHolder']), + effect: ({ lastPaymentPerc, balanceHolder }) => { + if (balanceHolder && balanceHolder === 100000001) { + if (!lastPaymentPerc || parseFloat(lastPaymentPerc) < 1) { + calculationStore.setValidation('tbxLastPaymentPerc', false); + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'При балансе лизингодатель последний платеж не может быть меньше 1%! Увеличьте значение.', + })(); + return; + } + } else { + if (parseFloat(lastPaymentPerc) === 0) { + calculationStore.setValidation('tbxLastPaymentPerc', false); + openNotification({ + type: 'error', + title: 'Ошибка', + description: + 'Последний платеж не может быть равен 0. Увеличьте значение', + })(); + return; + } + } + if (!calculationStore.getValue('recalcWithRevision')) + calculationStore.setValidation('tbxLastPaymentPerc', true); + }, + }), ]; const map_add_product_types_to_values = {