FINERACT-2179: Advance Payment Allocation- Next-Last Option behaviour change

This commit is contained in:
mariiaKraievska
2025-05-16 15:51:16 +02:00
committed by Adam Saghy
parent 6d49d76e73
commit ed42fb2410
3 changed files with 99 additions and 22 deletions
@@ -1867,9 +1867,8 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
} else if (FutureInstallmentAllocationRule.NEXT_LAST_INSTALLMENT.equals(futureInstallmentAllocationRule)) {
// try to resolve as current installment ( not due )
inAdvanceInstallments = installments.stream().filter(installment -> installment.getTotalPaid(currency).isGreaterThanZero())
.filter(e -> loanTransaction.isBefore(e.getDueDate())).filter(f -> loanTransaction.isAfter(f.getFromDate())
|| (loanTransaction.isOn(f.getFromDate()) && f.getInstallmentNumber() == 1))
.toList();
.filter(e -> loanTransaction.isBefore(e.getDueDate()))
.filter(f -> loanTransaction.isAfter(f.getFromDate()) || loanTransaction.isOn(f.getFromDate())).toList();
// if there is no current installment, resolve similar to LAST_INSTALLMENT
if (inAdvanceInstallments.isEmpty()) {
inAdvanceInstallments = installments.stream().filter(installment -> installment.getTotalPaid(currency).isGreaterThanZero())
@@ -1993,7 +1992,7 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
.filter(LoanRepaymentScheduleInstallment::isNotFullyPaidOff) //
.filter(e -> context.getLoanTransaction().isBefore(e.getDueDate())) //
.filter(f -> context.getLoanTransaction().isAfter(f.getFromDate())
|| (context.getLoanTransaction().isOn(f.getFromDate()) && f.getInstallmentNumber() == 1)) //
|| context.getLoanTransaction().isOn(f.getFromDate())) //
.toList(); //
// if there is no current installment, resolve similar to LAST_INSTALLMENT
if (inAdvanceInstallments.isEmpty()) {
@@ -2299,8 +2298,7 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
currentInstallments = context.getCtx().getInstallments().stream().filter(predicate)
.filter(e -> context.getLoanTransaction().isBefore(e.getDueDate()))
.filter(f -> context.getLoanTransaction().isAfter(f.getFromDate())
|| (context.getLoanTransaction().isOn(f.getFromDate())
&& f.getInstallmentNumber() == 1))
|| context.getLoanTransaction().isOn(f.getFromDate()))
.toList();
// if there is no current in advance installment resolve similar to LAST_INSTALLMENT
if (currentInstallments.isEmpty()) {