You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@fineract.apache.org by "Ralph Hopman (Jira)" <ji...@apache.org> on 2026/04/02 21:15:00 UTC

[jira] [Resolved] (FINERACT-2567) Fix incorrect and misleading error messages in exception classes

     [ https://issues.apache.org/jira/browse/FINERACT-2567?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ralph Hopman resolved FINERACT-2567.
------------------------------------
    Resolution: Fixed

> Fix incorrect and misleading error messages in exception classes
> ----------------------------------------------------------------
>
>                 Key: FINERACT-2567
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2567
>             Project: Apache Fineract
>          Issue Type: Improvement
>            Reporter: Ralph Hopman
>            Assignee: Ralph Hopman
>            Priority: Trivial
>
> Several exception classes contain error messages that are incorrect, misleading, or contain copy-paste mistakes. These messages are returned as part of API error responses and seen by API clients and end users.
> h2. Changes
> h3. Inverted logic in error messages (user-visible)
> The following error messages are the opposite of what they should say. They occur inside {{CannotBe*}} exception classes (exceptions that are thrown because an action *cannot* be performed) but the messages incorrectly state that the action *can* be performed.
> ||File||Reason constant||Current message||Fixed message||
> |{{LoanChargeCannotBePayedException}}|{{LOAN_INACTIVE}}|"This loan charge *can be payed* as the loan associated with it is currently inactive"|"This loan charge *cannot be paid* as the loan associated with it is currently inactive"|
> |{{LoanChargeCannotBePayedException}}|{{CHARGE_NOT_ACCOUNT_TRANSFER}}|"This loan charge *can be payed* as the charge payment mode is not account transfer"|"This loan charge *cannot be paid* as the charge payment mode is not account transfer"|
> |{{LoanChargeCannotBePayedException}}|{{CHARGE_NOT_PAYABLE}}|"This loan charge is not *Payable* through account transfer"|"This loan charge is not *payable* through account transfer"|
> |{{LoanChargeCannotBeWaivedException}}|{{LOAN_INACTIVE}}|"This loan charge *can be waived* as the loan associated with it is currently inactive"|"This loan charge *cannot be waived* as the loan associated with it is currently inactive"|
> |{{LoanChargeCannotBeWaivedException}}|{{WAIVE_NOT_ALLOWED_FOR_CHARGE}}|"This loan charge {*}can be waived{*}"|"This loan charge {*}cannot be waived{*}"|
> |{{LoanChargeWaiveCannotBeReversedException}}|{{LOAN_INACTIVE}}|"This loan charge *can be waived* as the loan associated with it is currently inactive"|"This loan charge *cannot be waived* as the loan associated with it is currently inactive"|
> |{{LoanChargeWaiveCannotBeReversedException}}|{{WAIVE_NOT_ALLOWED_FOR_CHARGE}}|"This loan charge {*}can be waived{*}"|"This loan charge {*}cannot be waived{*}"|
> h3. Wrong action in error message (user-visible)
> ||File||Current message||Fixed message||
> |{{CollateralCannotBeDeletedException}}|"This collateral cannot be *updated* as the loan it is associated with is not in submitted and pending approval stage"|"This collateral cannot be *deleted* as the loan it is associated with is not in submitted and pending approval stage"|
> |{{GLAccountInvalidUpdateException}}|"{*}This Usage of this{*} (detail) GL Account as it already has transactions logged against it"|"This (detail) GL Account cannot be updated as it already has transactions logged against it"|
> h3. Inconsistent capitalisation in error messages (user-visible)
> ||File||Current messages||Fixed messages||
> |{{PostInterestAsOnDateException}}|"Cannot Post Interest in future Dates"|"Cannot post interest in future dates"|
> | |"Please Pass a valid date"|"Please pass a valid date"|
> | |"Post Interest Date must be after the Activation date"|"Post interest date must be after the activation date"|
> | |"Cannot Post Interest before last transaction date"|"Cannot post interest before last transaction date"|
> h3. Copy-pasted wrong Javadoc comments (internal, not user-visible)
> All of the following classes contain the identical copy-pasted comment {{{}/*** enum of reasons of why Loan Charge cannot be waived ***/{}}}, which is corrected to reflect each class's actual purpose.
>  * {{LoanChargeCannotBePayedException}} → "cannot be paid"
>  * {{LoanChargeCannotBeDeletedException}} → "cannot be deleted"
>  * {{LoanChargeCannotBeUpdatedException}} → "cannot be updated"
>  * {{CollateralCannotBeCreatedException}} → "cannot be created"
>  * {{CollateralCannotBeDeletedException}} (collateral) → "cannot be deleted"
>  * {{CollateralCannotBeUpdatedException}} → "cannot be updated"
>  * {{CollateralCannotBeDeletedException}} (collateralmanagement) → "cannot be deleted"
>  * {{ClientCollateralCannotBeDeletedException}} → "cannot be deleted"
> h2. Impact
> The user-visible message fixes affect the {{defaultUserMessage}} field in JSON error responses. No error codes are changed.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)