diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java index 5d2cb13ca..aa728ff7f 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java @@ -1656,10 +1656,19 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom final DataValidatorBuilder baseDataValidator) { final SavingsAccountStatusType currentStatus = SavingsAccountStatusType.fromInt(this.status); - if (!SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.hasStateOf(currentStatus)) { + final boolean isAllowedState = SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.hasStateOf(currentStatus) + || SavingsAccountStatusType.REJECTED.hasStateOf(currentStatus); + if (!isAllowedState) { baseDataValidator.reset().failWithCodeNoParameterAddedToErrorCode("not.in.submittedandpendingapproval.state"); return; } + // If modifying a rejected application, reset it back to pending approval + if (SavingsAccountStatusType.REJECTED.hasStateOf(currentStatus)) { + this.status = SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.getValue(); + this.rejectedOnDate = null; + this.rejectedBy = null; + actualChanges.put("status", SavingsAccountStatusType.SUBMITTED_AND_PENDING_APPROVAL.getValue()); + } final String localeAsInput = command.locale(); final String dateFormat = command.dateFormat();