From e967426db70bdbdf133dd2cd1354ff17fe9450f4 Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Fri, 2 Aug 2024 15:17:42 -0600 Subject: [PATCH] FINERACT-2081: Loan Unpaid Payable Interest fix to include amount paid --- .../portfolio/loanaccount/data/LoanSummaryData.java | 7 +++++++ ...AdvancedPaymentAllocationLoanRepaymentScheduleTest.java | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java index 9adb59de0..46567bf17 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/data/LoanSummaryData.java @@ -26,6 +26,7 @@ import lombok.Builder; import lombok.Data; import lombok.experimental.Accessors; import org.apache.fineract.infrastructure.core.service.DateUtils; +import org.apache.fineract.infrastructure.core.service.MathUtil; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.organisation.monetary.domain.MoneyHelper; @@ -260,6 +261,12 @@ public class LoanSummaryData { remainingDays--; } + totalAccruedInterest = totalAccruedInterest.subtract(period.getInterestPaid()).subtract(period.getInterestWaived()); + if (MathUtil.isLessThanZero(totalAccruedInterest)) { + // Set Zero If the Interest Paid + Waived is greather than Interest Accrued + totalAccruedInterest = BigDecimal.ZERO; + } + return Money.of(currency, totalAccruedInterest).getAmount(); } diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java index f12f9fa93..be43cc313 100644 --- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java +++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/AdvancedPaymentAllocationLoanRepaymentScheduleTest.java @@ -4739,7 +4739,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan addRepaymentForLoan(createdLoanId.get(), 20.50, "30 January 2024"); loanDetails = loanTransactionHelper.getLoanDetails(createdLoanId.get()); assertEquals(BigDecimal.ZERO, loanDetails.getSummary().getTotalUnpaidPayableDueInterest().stripTrailingZeros()); - assertEquals(new BigDecimal("0.97"), loanDetails.getSummary().getTotalUnpaidPayableNotDueInterest().stripTrailingZeros()); + assertEquals(new BigDecimal("0.05"), loanDetails.getSummary().getTotalUnpaidPayableNotDueInterest().stripTrailingZeros()); }); // Not Due and Due Interest