FINERACT-1971 Repayment schedule period - Incorrect values after charge with huge amount

This commit is contained in:
Jose Alberto Hernandez
2025-02-14 10:29:48 +01:00
committed by Adam Saghy
parent d9414a6e7e
commit 22f7972f60
6 changed files with 53 additions and 13 deletions
@@ -19,11 +19,13 @@
package org.apache.fineract.portfolio.loanaccount.loanschedule.data;
import java.math.BigDecimal;
import java.math.MathContext;
import java.time.LocalDate;
import lombok.Builder;
import lombok.Getter;
import org.apache.fineract.infrastructure.core.service.DateUtils;
import org.apache.fineract.infrastructure.core.service.MathUtil;
import org.apache.fineract.organisation.monetary.domain.MoneyHelper;
/**
* Immutable data object that represents a period of a loan schedule.
@@ -156,11 +158,13 @@ public final class LoanSchedulePeriodData {
final BigDecimal totalPaidLateForPeriod, final BigDecimal totalWaived, final BigDecimal totalWrittenOff,
final BigDecimal totalCredits, final boolean isDownPayment, final BigDecimal totalAccruedInterest) {
BigDecimal totalDue = MathUtil.add(principalOriginalDue, interestDue, feeChargesDue, penaltyChargesDue);
BigDecimal totalOutstanding = MathUtil.add(principalOutstanding, interestOutstanding, feeChargesOutstanding,
final MathContext mc = MoneyHelper.getMathContext();
BigDecimal totalDue = MathUtil.add(mc, principalOriginalDue, interestDue, feeChargesDue, penaltyChargesDue);
BigDecimal totalOutstanding = MathUtil.add(mc, principalOutstanding, interestOutstanding, feeChargesOutstanding,
penaltyChargesOutstanding);
BigDecimal totalActualCostOfLoanForPeriod = MathUtil.add(interestDue, feeChargesDue, penaltyChargesDue);
BigDecimal totalInstallmentAmount = MathUtil.add(principalOriginalDue, interestDue);
BigDecimal totalActualCostOfLoanForPeriod = MathUtil.add(mc, interestDue, feeChargesDue, penaltyChargesDue);
BigDecimal totalInstallmentAmount = MathUtil.add(mc, principalOriginalDue, interestDue);
return builder().period(periodNumber) //
.fromDate(fromDate) //