diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java index 2f2d36835..b3dd27ec1 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/LoansApiResource.java @@ -57,6 +57,7 @@ import org.mifosng.platform.staff.service.StaffReadPlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; @Path("/loans") @Component @@ -204,6 +205,7 @@ public class LoansApiResource { LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveLoanAccountDetails(loanId); + int loanRepaymentsCount = 0; Collection loanRepayments = null; Collection repaymentSchedule = null; LoanAccountSummaryData summary = null; @@ -219,13 +221,17 @@ public class LoansApiResource { responseParameters.addAll(associationParameters); } - loanRepayments = this.loanReadPlatformService.retrieveLoanPayments(loanId); + Collection currentLoanRepayments = this.loanReadPlatformService.retrieveLoanPayments(loanId); + if (!CollectionUtils.isEmpty(currentLoanRepayments)) { + loanRepayments = currentLoanRepayments; + loanRepaymentsCount = loanRepayments.size(); + } repaymentSchedule = this.loanReadPlatformService.retrieveRepaymentSchedule(loanId); summary = this.loanReadPlatformService.retrieveSummary(loanBasicDetails.getCurrency(), repaymentSchedule, loanRepayments); boolean isWaiveAllowed = summary.isWaiveAllowed(loanBasicDetails.getCurrency(), loanBasicDetails.getInArrearsTolerance()); - permissions = this.loanReadPlatformService.retrieveLoanPermissions(loanBasicDetails, isWaiveAllowed, loanRepayments.size()); + permissions = this.loanReadPlatformService.retrieveLoanPermissions(loanBasicDetails, isWaiveAllowed, loanRepaymentsCount); convenienceDataRequired = true; charges = this.chargeReadPlatformService.retrieveLoanCharges(loanId); diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java index 5f512276b..19e529403 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/service/LoanReadPlatformServiceImpl.java @@ -148,12 +148,14 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { // sum up all repayment transactions Long waiverType = (long) 4; MoneyData totalRepaymentAmount = MoneyData.of(currencyData, BigDecimal.ZERO); - for (LoanRepaymentTransactionData loanRepayment : loanRepayments) { - Long transactionType = loanRepayment.getTransactionType().getId(); - if (transactionType.equals(waiverType)) { - // skip - } else { - totalRepaymentAmount = totalRepaymentAmount.plus(loanRepayment.getTotal()); + if (loanRepayments != null) { + for (LoanRepaymentTransactionData loanRepayment : loanRepayments) { + Long transactionType = loanRepayment.getTransactionType().getId(); + if (transactionType.equals(waiverType)) { + // skip + } else { + totalRepaymentAmount = totalRepaymentAmount.plus(loanRepayment.getTotal()); + } } }