FINERACT-1760-Link-Transaction-Reverse-Replay

This commit is contained in:
Ruchi Dhamankar
2022-11-29 14:03:57 +01:00
committed by Arnold Gálovics
parent b7f88d1196
commit 53b474b461
4 changed files with 170 additions and 5 deletions
@@ -22,7 +22,8 @@ public enum LoanTransactionRelationTypeEnum {
INVALID(0, "loanTransactionType.invalid"), //
CHARGEBACK(1, "loanTransactionRelationType.chargeback"), //
CHARGE_ADJUSTMENT(2, "loanTransactionRelationType.chargeAdjustment");
CHARGE_ADJUSTMENT(2, "loanTransactionRelationType.chargeAdjustment"), //
REPLAYED(3, "loanTransactionRelationType.replayed");
private final Integer value;
private final String code;
@@ -49,6 +50,7 @@ public enum LoanTransactionRelationTypeEnum {
return switch (transactionType) {
case 1 -> LoanTransactionRelationTypeEnum.CHARGEBACK;
case 2 -> LoanTransactionRelationTypeEnum.CHARGE_ADJUSTMENT;
case 3 -> LoanTransactionRelationTypeEnum.REPLAYED;
default -> LoanTransactionRelationTypeEnum.INVALID;
};
}
@@ -38,6 +38,8 @@ import org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtio
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleProcessingWrapper;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationTypeEnum;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.impl.CreocoreLoanRepaymentScheduleTransactionProcessor;
@@ -186,6 +188,9 @@ public abstract class AbstractLoanRepaymentScheduleTransactionProcessor implemen
loanTransaction.reverse(loanTransaction.getExternalId());
loanTransaction.updateExternalId(null);
newLoanTransaction.copyLoanTransactionRelations(loanTransaction.getLoanTransactionRelations());
// Adding Replayed relation from newly created transaction to reversed transaction
newLoanTransaction.getLoanTransactionRelations().add(LoanTransactionRelation.linkToTransaction(newLoanTransaction,
loanTransaction, LoanTransactionRelationTypeEnum.REPLAYED));
changedTransactionDetail.getNewTransactionMappings().put(loanTransaction.getId(), newLoanTransaction);
}
}