FINERACT-2181: fix accrual calculation date condition
This commit is contained in:
committed by
Arnold Gálovics
parent
9c01540990
commit
a3a5aabb7f
+9
-1
@@ -358,7 +358,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
if (progressiveAccrual && accruedTill != null && !DateUtils.isAfter(tillDate, accruedTill)) {
|
||||
if (isFinal) {
|
||||
reverseTransactionsAfter(existingAccruals, accrualDate, addJournal);
|
||||
} else if (existingAccruals.stream().anyMatch(t -> !t.isReversed() && !DateUtils.isBefore(t.getDateOf(), accrualDate))) {
|
||||
} else if (isExistAccrualAfterDate(existingAccruals, accrualDate) && hasNoActiveChargeOnDate(loan, accrualDate)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -445,6 +445,14 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isExistAccrualAfterDate(List<LoanTransaction> existingAccruals, LocalDate accrualDate) {
|
||||
return existingAccruals.stream().anyMatch(t -> !t.isReversed() && !DateUtils.isBefore(t.getDateOf(), accrualDate));
|
||||
}
|
||||
|
||||
private boolean hasNoActiveChargeOnDate(Loan loan, LocalDate accrualDate) {
|
||||
return loan.getLoanCharges(t -> t.isActive() && DateUtils.isEqual(t.getDueDate(), accrualDate)).isEmpty();
|
||||
}
|
||||
|
||||
private AccrualPeriodsData calculateAccrualAmounts(@NotNull final Loan loan, @NotNull final LocalDate tillDate, final boolean periodic,
|
||||
final boolean isFinal, final boolean chargeOnDueDate) {
|
||||
final LoanProductRelatedDetail productDetail = loan.getLoanProductRelatedDetail();
|
||||
|
||||
Reference in New Issue
Block a user