From 6ca02686d2e2c14739bd65137f579b0dd9cfd57b Mon Sep 17 00:00:00 2001 From: Adam Saghy Date: Fri, 23 Aug 2024 16:11:36 +0200 Subject: [PATCH] FINERACT-2114: Reschedule validations enhancement --- .../ProgressiveLoanRescheduleRequestDataValidator.java | 10 +++++++--- .../integrationtests/LoanRescheduleRequestTest.java | 8 ++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/ProgressiveLoanRescheduleRequestDataValidator.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/ProgressiveLoanRescheduleRequestDataValidator.java index 8736ab5c5b1..4f767f5fc58 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/ProgressiveLoanRescheduleRequestDataValidator.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/ProgressiveLoanRescheduleRequestDataValidator.java @@ -94,9 +94,11 @@ public void validateForCreateAction(JsonCommand jsonCommand, Loan loan) { final LocalDate businessDate = DateUtils.getBusinessLocalDate(); if (rescheduleFromDate != null) { if (hasInterestRateChange && !rescheduleFromDate.isAfter(businessDate)) { - dataValidatorBuilder.reset().parameter(RescheduleLoansApiConstants.rescheduleFromDateParamName).failWithCode( + throw new GeneralPlatformDomainRuleException( "loan.reschedule.interest.rate.change.reschedule.from.date.should.be.in.future", - "Loan Reschedule From date should be in the future."); + String.format("Loan Reschedule From date (%s) for Loan: %s should be in the future.", rescheduleFromDate, + loan.getId()), + loan.getId(), rescheduleFromDate); } if (hasInterestRateChange) { validateInterestRateChangeRescheduleFromDate(loan, rescheduleFromDate); @@ -154,7 +156,9 @@ public void validateForApproveAction(JsonCommand jsonCommand, LoanRescheduleRequ if (!rescheduleFromDate.isAfter(DateUtils.getBusinessLocalDate())) { throw new GeneralPlatformDomainRuleException( "loan.reschedule.interest.rate.change.reschedule.from.date.should.be.in.future", - "Loan Reschedule From date should be in the future.", rescheduleFromDate); + String.format("Loan Reschedule From date (%s) for Loan: %s should be in the future.", rescheduleFromDate, + loan.getId()), + loan.getId(), rescheduleFromDate); } } else { installment = loan.getRepaymentScheduleInstallment(rescheduleFromDate); diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java index 0f3b14c586c..2090b7ba7eb 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/LoanRescheduleRequestTest.java @@ -282,6 +282,14 @@ public void testInterestRateChangeForProgressiveLoan() { new PostLoansLoanIdRequest().actualDisbursementDate("15 February 2023").dateFormat(DATETIME_PATTERN) .transactionAmount(BigDecimal.valueOf(500.00)).locale("en")); + exception = assertThrows(CallFailedRuntimeException.class, + () -> loanRescheduleRequestHelper + .createLoanRescheduleRequest(new PostCreateRescheduleLoansRequest().loanId(loanResponse.get().getLoanId()) + .dateFormat(DATETIME_PATTERN).locale("en").submittedOnDate("15 February 2023") + .newInterestRate(BigDecimal.ONE).rescheduleReasonId(1L).rescheduleFromDate("15 February 2023"))); + assertEquals(403, exception.getResponse().code()); + assertTrue(exception.getMessage().contains("loan.reschedule.interest.rate.change.reschedule.from.date.should.be.in.future")); + rescheduleResponse.set(loanRescheduleRequestHelper.createLoanRescheduleRequest(new PostCreateRescheduleLoansRequest() .loanId(loanResponse.get().getLoanId()).dateFormat(DATETIME_PATTERN).locale("en").submittedOnDate("15 February 2023") .newInterestRate(BigDecimal.ONE).rescheduleReasonId(1L).rescheduleFromDate("16 February 2023")));