FINERACT-2081: Loan Unpaid Payable Interest fix to include amount paid

This commit is contained in:
Jose Alberto Hernandez
2024-08-05 12:00:10 +02:00
committed by Adam Saghy
parent ec1c55d022
commit e967426db7
2 changed files with 8 additions and 1 deletions
@@ -26,6 +26,7 @@ import lombok.Builder;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import org.apache.fineract.infrastructure.core.service.DateUtils; 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.data.CurrencyData;
import org.apache.fineract.organisation.monetary.domain.Money; import org.apache.fineract.organisation.monetary.domain.Money;
import org.apache.fineract.organisation.monetary.domain.MoneyHelper; import org.apache.fineract.organisation.monetary.domain.MoneyHelper;
@@ -260,6 +261,12 @@ public class LoanSummaryData {
remainingDays--; 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(); return Money.of(currency, totalAccruedInterest).getAmount();
} }
@@ -4739,7 +4739,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
addRepaymentForLoan(createdLoanId.get(), 20.50, "30 January 2024"); addRepaymentForLoan(createdLoanId.get(), 20.50, "30 January 2024");
loanDetails = loanTransactionHelper.getLoanDetails(createdLoanId.get()); loanDetails = loanTransactionHelper.getLoanDetails(createdLoanId.get());
assertEquals(BigDecimal.ZERO, loanDetails.getSummary().getTotalUnpaidPayableDueInterest().stripTrailingZeros()); 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 // Not Due and Due Interest