From e0e4415727af43d6987b38cc8353ae0997616408 Mon Sep 17 00:00:00 2001 From: Adam Saghy Date: Mon, 6 Oct 2025 09:43:15 +0200 Subject: [PATCH] FINERACT-2387: Fix zero amount reversed transaction creation issue --- ...edTransactionBusinessEventServiceImpl.java | 4 +++- .../ReprocessLoanTransactionsServiceImpl.java | 19 ++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReplayedTransactionBusinessEventServiceImpl.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReplayedTransactionBusinessEventServiceImpl.java index e82d3bd6b..fe1737c8a 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReplayedTransactionBusinessEventServiceImpl.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReplayedTransactionBusinessEventServiceImpl.java @@ -47,7 +47,9 @@ public class ReplayedTransactionBusinessEventServiceImpl implements ReplayedTran if (oldTransaction != null) { final LoanAdjustTransactionBusinessEvent.Data data = new LoanAdjustTransactionBusinessEvent.Data(oldTransaction); - data.setNewTransactionDetail(newTransaction); + if (newTransaction.isNotReversed()) { + data.setNewTransactionDetail(newTransaction); + } businessEventNotifierService.notifyPostBusinessEvent(new LoanAdjustTransactionBusinessEvent(data)); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReprocessLoanTransactionsServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReprocessLoanTransactionsServiceImpl.java index b35e1c025..4b7322937 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReprocessLoanTransactionsServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReprocessLoanTransactionsServiceImpl.java @@ -195,16 +195,17 @@ public class ReprocessLoanTransactionsServiceImpl implements ReprocessLoanTransa for (TransactionChangeData change : changedTransactionDetail.getTransactionChanges()) { final LoanTransaction newTransaction = change.getNewTransaction(); final LoanTransaction oldTransaction = change.getOldTransaction(); + if (newTransaction.isNotReversed()) { + loanAccountService.saveLoanTransactionWithDataIntegrityViolationChecks(newTransaction); - loanAccountService.saveLoanTransactionWithDataIntegrityViolationChecks(newTransaction); - - // Create journal entries for new transaction - loanJournalEntryPoster.postJournalEntriesForLoanTransaction(newTransaction, false, false); - if (oldTransaction == null && (newTransaction.isAccrual() || newTransaction.isAccrualAdjustment())) { - final LoanTransactionBusinessEvent businessEvent = newTransaction.isAccrual() - ? new LoanAccrualTransactionCreatedBusinessEvent(newTransaction) - : new LoanAccrualAdjustmentTransactionBusinessEvent(newTransaction); - businessEventNotifierService.notifyPostBusinessEvent(businessEvent); + // Create journal entries for new transaction + loanJournalEntryPoster.postJournalEntriesForLoanTransaction(newTransaction, false, false); + if (oldTransaction == null && (newTransaction.isAccrual() || newTransaction.isAccrualAdjustment())) { + final LoanTransactionBusinessEvent businessEvent = newTransaction.isAccrual() + ? new LoanAccrualTransactionCreatedBusinessEvent(newTransaction) + : new LoanAccrualAdjustmentTransactionBusinessEvent(newTransaction); + businessEventNotifierService.notifyPostBusinessEvent(businessEvent); + } } if (oldTransaction != null) {