From e4e47829725c6ac667da6c3b0ae76c00d3e16258 Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Wed, 16 Mar 2022 09:39:05 +0000 Subject: [PATCH] Allow Reschedule feature for multi-disbursal loans w/o expected details --- .../rescheduleloan/RescheduleLoansApiConstants.java | 2 +- .../data/LoanRescheduleRequestDataValidator.java | 8 +++++--- .../loanaccount/service/LoanReadPlatformServiceImpl.java | 4 ---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java index 73163d1fe..87f4ebbb0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/RescheduleLoansApiConstants.java @@ -50,7 +50,7 @@ public final class RescheduleLoansApiConstants { public static final String rescheduleReasonCommentParamName = "rescheduleReasonComment"; public static final String submittedOnDateParamName = "submittedOnDate"; public static final String adjustedDueDateParamName = "adjustedDueDate"; - public static final String resheduleForMultiDisbursementNotSupportedErrorCode = "loan.reschedule.multidisbursement.error.code"; + public static final String resheduleForMultiDisbursementNotSupportedErrorCode = "loan.reschedule.tranche.multidisbursement.error.code"; public static final String resheduleWithInterestRecalculationNotSupportedErrorCode = "loan.reschedule.interestrecalculation.error.code"; public static final String allCommandParamName = "all"; public static final String approveCommandParamName = "approve"; diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java index bf8d82eb3..67d7b8ae6 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/data/LoanRescheduleRequestDataValidator.java @@ -197,9 +197,11 @@ public class LoanRescheduleRequestDataValidator { } if (loan.isMultiDisburmentLoan()) { - dataValidatorBuilder.reset().failWithCodeNoParameterAddedToErrorCode( - RescheduleLoansApiConstants.resheduleForMultiDisbursementNotSupportedErrorCode, - "Loan rescheduling is not supported for multidisbursement loans"); + if (!loan.loanProduct().isDisallowExpectedDisbursements()) { + dataValidatorBuilder.reset().failWithCodeNoParameterAddedToErrorCode( + RescheduleLoansApiConstants.resheduleForMultiDisbursementNotSupportedErrorCode, + "Loan rescheduling is not supported for multidisbursement tranche loans"); + } } validateForOverdueCharges(dataValidatorBuilder, loan, installment); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java index 3fc27eec7..2bead6987 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java @@ -107,7 +107,6 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariationType; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction; import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType; import org.apache.fineract.portfolio.loanaccount.exception.LoanNotFoundException; -import org.apache.fineract.portfolio.loanaccount.exception.LoanRepaymentScheduleNotFoundException; import org.apache.fineract.portfolio.loanaccount.exception.LoanTransactionNotFoundException; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData; import org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData; @@ -565,9 +564,6 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { .getLoanRepaymentScheduleInstallments(loanId); List loanRepaymentScheduleInstallmentData = new ArrayList<>(); - if (loanRepaymentScheduleInstallments == null || loanRepaymentScheduleInstallments.size() == 0) { - throw new LoanRepaymentScheduleNotFoundException(loanId, Integer.valueOf(0)); - } for (LoanRepaymentScheduleInstallment loanRepaymentScheduleInstallment : loanRepaymentScheduleInstallments) { loanRepaymentScheduleInstallmentData.add(LoanRepaymentScheduleInstallmentData.instanceOf( loanRepaymentScheduleInstallment.getId(), loanRepaymentScheduleInstallment.getInstallmentNumber(),