FINERACT-2232: Validations and cob step fix

- Add validation for capitalized income transaction not being in the future
- CapitalizedIncomeAmortizationBusinessStep add filter against too early amortization
This commit is contained in:
adam.magyari
2025-06-02 13:22:02 +02:00
committed by Adam Saghy
parent 1aff3fc9b6
commit 5281c7b17d
4 changed files with 102 additions and 8 deletions
@@ -66,12 +66,14 @@ public class CapitalizedIncomeAmortizationBusinessStep implements LoanCOBBusines
BigDecimal totalAmortizationAmount = BigDecimal.ZERO;
for (LoanCapitalizedIncomeBalance balance : balances) {
long daysUntilMaturity = businessDate.until(loan.getMaturityDate(), ChronoUnit.DAYS);
Money dailyAmortization = CapitalizedIncomeAmortizationUtil.calculateDailyAmortization(
loan.getLoanProductRelatedDetail().getCapitalizedIncomeStrategy(), daysUntilMaturity, balance.getUnrecognizedAmount(),
loan.getCurrency().toData());
totalAmortizationAmount = totalAmortizationAmount.add(dailyAmortization.getAmount(), mc);
balance.setUnrecognizedAmount(balance.getUnrecognizedAmount().subtract(dailyAmortization.getAmount(), mc));
if (DateUtils.isAfterInclusive(businessDate, balance.getDate())) {
long daysUntilMaturity = businessDate.until(loan.getMaturityDate(), ChronoUnit.DAYS);
Money dailyAmortization = CapitalizedIncomeAmortizationUtil.calculateDailyAmortization(
loan.getLoanProductRelatedDetail().getCapitalizedIncomeStrategy(), daysUntilMaturity,
balance.getUnrecognizedAmount(), loan.getCurrency().toData());
totalAmortizationAmount = totalAmortizationAmount.add(dailyAmortization.getAmount(), mc);
balance.setUnrecognizedAmount(balance.getUnrecognizedAmount().subtract(dailyAmortization.getAmount(), mc));
}
}
capitalizedIncomeBalanceRepository.saveAll(balances);