From 2092a9a91187dd92615aa77ce4171ab7954b97a7 Mon Sep 17 00:00:00 2001 From: Ruchi Dhamankar Date: Tue, 28 May 2024 11:17:59 +0530 Subject: [PATCH] FINERACT-2081: Chargeback reverse replay fails fix --- ...AdvancedPaymentScheduleTransactionProcessor.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java index 2e0830012..9796c47fc 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java @@ -576,10 +576,23 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep newLoanTransaction.getLoanTransactionToRepaymentScheduleMappings()); } else { createNewTransaction(loanTransaction, newLoanTransaction, changedTransactionDetail); + checkAndUpdateReplayedChargebackRelationWithReplayedTransaction(loanTransaction, newLoanTransaction, ctx); } } } + private void checkAndUpdateReplayedChargebackRelationWithReplayedTransaction(LoanTransaction loanTransaction, + LoanTransaction newLoanTransaction, TransactionCtx ctx) { + // if chargeback is getting reverse-replayed + // find replayed transaction with CHARGEBACK relation with reversed chargeback transaction + // for replayed transaction, add relation to point to new Chargeback transaction + if (loanTransaction.getTypeOf().isChargeback()) { + LoanTransaction originalTransaction = findOriginalTransaction(newLoanTransaction, ctx); + originalTransaction.getLoanTransactionRelations() + .add(LoanTransactionRelation.linkToTransaction(originalTransaction, newLoanTransaction, CHARGEBACK)); + } + } + private void processSingleCharge(LoanCharge loanCharge, MonetaryCurrency currency, List installments, LocalDate disbursementDate) { loanChargeProcessor.reprocess(currency, disbursementDate, installments, loanCharge);