FINERACT-2204: Fix accrual activity reversal logic: prevent duplicate reverse-replay, copy external ID correctly

This commit is contained in:
Oleksii Novikov
2025-03-09 20:48:32 +00:00
committed by Adam Saghy
parent 03bbad21e8
commit d32ddc91df
4 changed files with 82 additions and 3 deletions
@@ -207,14 +207,21 @@ public class LoanAccrualActivityProcessingServiceImpl implements LoanAccrualActi
newLoanTransaction.copyLoanTransactionRelations(loanTransaction.getLoanTransactionRelations());
newLoanTransaction.getLoanTransactionRelations().add(LoanTransactionRelation.linkToTransaction(newLoanTransaction,
loanTransaction, LoanTransactionRelationTypeEnum.REPLAYED));
newLoanTransaction.updateExternalId(loanTransaction.getExternalId());
loanTransaction.reverse();
loanTransaction.updateExternalId(null);
loanAccountService.saveLoanTransactionWithDataIntegrityViolationChecks(loanTransaction);
loanAccountService.saveLoanTransactionWithDataIntegrityViolationChecks(newLoanTransaction);
loan.addLoanTransaction(newLoanTransaction);
LoanAdjustTransactionBusinessEvent.Data data = new LoanAdjustTransactionBusinessEvent.Data(loanTransaction);
data.setNewTransactionDetail(newLoanTransaction);
businessEventNotifierService.notifyPostBusinessEvent(new LoanAdjustTransactionBusinessEvent(data));
} else {
reverseAccrualActivityTransaction(loanTransaction);
}
reverseAccrualActivityTransaction(loanTransaction);
return newLoanTransaction;
}