FINERACT-2312: Reverse of Accruals to adjust late deposits
This commit is contained in:
+7
-1
@@ -158,13 +158,19 @@ public class SavingsAccrualWritePlatformServiceImpl implements SavingsAccrualWri
|
||||
|
||||
final List<LocalDate> accrualTransactionDates = savingsAccount.retrieveOrderedAccrualTransactions().stream()
|
||||
.map(transaction -> transaction.getTransactionDate()).toList();
|
||||
final List<LocalDate> reversedAccrualTransactionDates = savingsAccount.retrieveOrderedAccrualTransactions().stream()
|
||||
.filter(transaction -> transaction.isReversed()).map(transaction -> transaction.getTransactionDate()).toList();
|
||||
|
||||
LocalDate accruedTillDate = fromDate;
|
||||
|
||||
for (PostingPeriod period : allPostingPeriods) {
|
||||
LocalDate valueDate = period.getPeriodInterval().endDate();
|
||||
List<LocalDate> matchingAccrualDates = reversedAccrualTransactionDates.stream()
|
||||
.filter(accrualDate -> accrualDate.equals(valueDate)).toList();
|
||||
period.calculateInterest(compoundInterestValues);
|
||||
final LocalDate endDate = period.getPeriodInterval().endDate();
|
||||
if (!accrualTransactionDates.contains(period.getPeriodInterval().endDate())
|
||||
&& !MathUtil.isZero(period.closingBalance().getAmount())) {
|
||||
&& (!MathUtil.isZero(period.closingBalance().getAmount()) || !matchingAccrualDates.isEmpty())) {
|
||||
String refNo = (refNoProvider != null) ? refNoProvider.apply(endDate) : null;
|
||||
SavingsAccountTransaction savingsAccountTransaction = SavingsAccountTransaction.accrual(savingsAccount,
|
||||
savingsAccount.office(), period.getPeriodInterval().endDate(), period.getInterestEarned().abs(), false, refNo);
|
||||
|
||||
Reference in New Issue
Block a user