diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java index d97e419f8..f82dab2ca 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java @@ -760,14 +760,6 @@ public class Loan extends AbstractAuditableWithUTCDateTimeCustom { return maturityDate; } - public List findExistingReversedTransactionIds() { - return getLoanTransactions().stream() // - .filter(LoanTransaction::isReversed) // - .filter(loanTransaction -> loanTransaction.getId() != null) // - .map(LoanTransaction::getId) // - .collect(Collectors.toList()); - } - public List getDisbursedLoanDisbursementDetails() { return getDisbursementDetails().stream() // .filter(it -> it.actualDisbursementDate() != null) // diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java index 1bb0f618e..24256ea15 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransactionRepository.java @@ -105,4 +105,12 @@ public interface LoanTransactionRepository extends JpaRepository findTransactionIdsByLoan(@Param("loan") Loan loan); + @Query(""" + SELECT lt.id FROM LoanTransaction lt + WHERE lt.loan = :loan + AND lt.id IS NOT NULL + AND lt.reversed = true + """) + List findReversedTransactionIdsByLoan(@Param("loan") Loan loan); + } diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeService.java index d383641f5..6005fe3c2 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeService.java @@ -104,7 +104,7 @@ public class LoanChargeService { final List existingReversedTransactionIds, final LoanTransaction paymentTransaction, final Integer installmentNumber) { loanChargeValidator.validateChargePaymentNotInFuture(paymentTransaction); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); LoanCharge charge = null; for (final LoanCharge loanCharge : loan.getCharges()) { if (loanCharge.isActive() && chargeId.equals(loanCharge.getId())) { diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanRefundService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanRefundService.java index 9500471d9..1799373aa 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanRefundService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanRefundService.java @@ -41,7 +41,7 @@ public class LoanRefundService { public void makeRefund(final Loan loan, final LoanTransaction loanTransaction, final List existingTransactionIds, final List existingReversedTransactionIds) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loanRefundValidator.validateTransferRefund(loan, loanTransaction); @@ -62,7 +62,7 @@ public class LoanRefundService { public void makeRefundForActiveLoan(final Loan loan, final LoanTransaction loanTransaction, final List existingTransactionIds, final List existingReversedTransactionIds) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); handleRefundTransaction(loan, loanTransaction); } @@ -72,7 +72,7 @@ public class LoanRefundService { loanRefundValidator.validateCreditBalanceRefund(loan, newCreditBalanceRefundTransaction); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loan.getLoanTransactions().add(newCreditBalanceRefundTransaction); diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanScheduleService.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanScheduleService.java index 44f5ea1a5..fd6cfa918 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanScheduleService.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanScheduleService.java @@ -72,7 +72,7 @@ public class LoanScheduleService { public void recalculateScheduleFromLastTransaction(final Loan loan, final ScheduleGeneratorDTO generatorDTO, final List existingTransactionIds, final List existingReversedTransactionIds) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); if (!loan.isProgressiveSchedule()) { if (loan.isInterestBearingAndInterestRecalculationEnabled() && !loan.isChargedOff()) { regenerateRepaymentScheduleWithInterestRecalculation(loan, generatorDTO); diff --git a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/CapitalizedIncomeWritePlatformServiceImpl.java b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/CapitalizedIncomeWritePlatformServiceImpl.java index 43e98b9ed..5c09f015f 100644 --- a/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/CapitalizedIncomeWritePlatformServiceImpl.java +++ b/fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/CapitalizedIncomeWritePlatformServiceImpl.java @@ -61,7 +61,7 @@ public class CapitalizedIncomeWritePlatformServiceImpl implements CapitalizedInc loanTransactionValidator.validateCapitalizedIncome(command, loanId); final Loan loan = loanAssembler.assembleFrom(loanId); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final Map changes = new LinkedHashMap<>(); // Create payment details final PaymentDetail paymentDetail = this.paymentDetailWritePlatformService.createAndPersistPaymentDetail(command, changes); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java index 89e54ff47..f50ea4c2b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java @@ -445,7 +445,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { private void handlePayDisbursementTransaction(final Loan loan, final Long chargeId, final LoanTransaction chargesPayment, final List existingTransactionIds, final List existingReversedTransactionIds) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); LoanCharge charge = null; for (final LoanCharge loanCharge : loan.getCharges()) { if (loanCharge.isActive() && chargeId.equals(loanCharge.getId())) { @@ -768,7 +768,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { final List existingTransactionIds = new ArrayList<>(); final List existingReversedTransactionIds = new ArrayList<>(); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final ScheduleGeneratorDTO scheduleGeneratorDTO = null; final LoanRepaymentScheduleInstallment foreCloseDetail = loanBalanceService.fetchLoanForeclosureDetail(loan, foreClosureDate); @@ -989,7 +989,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { final List existingTransactionIds = new ArrayList<>(); final List existingReversedTransactionIds = new ArrayList<>(); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final LoanTransaction interestRefundTransaction = LoanTransaction.interestRefund(loan, loan.getOffice(), refundAmount, loanRefundRequest.getPrincipal(), loanRefundRequest.getInterest(), loanRefundRequest.getFeeCharges(), @@ -1077,7 +1077,7 @@ public class LoanAccountDomainServiceJpa implements LoanAccountDomainService { final List existingReversedTransactionIds, final ScheduleGeneratorDTO scheduleGeneratorDTO) { loanChargeValidator.validateRepaymentTypeTransactionNotBeforeAChargeRefund(loan, repaymentTransaction, "created"); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loanDownPaymentHandlerService.handleRepaymentOrRecoveryOrWaiverTransaction(loan, repaymentTransaction, null, scheduleGeneratorDTO); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java index f93b3ec5f..ebc1cf86c 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java @@ -358,7 +358,8 @@ public class LoanRescheduleRequestWritePlatformServiceImpl implements LoanResche Loan loan = loanRescheduleRequest.getLoan(); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>( + loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); ScheduleGeneratorDTO scheduleGeneratorDTO = this.loanUtilService.buildScheduleGeneratorDTO(loan, loanRescheduleRequest.getRescheduleFromDate()); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java index 885c983af..e80399092 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java @@ -246,7 +246,7 @@ public class LoanAccrualsProcessingServiceImpl implements LoanAccrualsProcessing return; } final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); processIncomePostingAndAccruals(loan); this.loanRepositoryWrapper.saveAndFlush(loan); postJournalEntries(loan, existingTransactionIds, existingReversedTransactionIds); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java index a6ee2d661..040ff7f52 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanCapitalizedIncomeAmortizationProcessingServiceImpl.java @@ -60,7 +60,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L @Transactional public void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NotNull final Loan loan) { final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); LocalDate transactionDate = loan.getChargedOffOnDate(); if (transactionDate == null) { @@ -106,7 +106,7 @@ public class LoanCapitalizedIncomeAmortizationProcessingServiceImpl implements L public void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NotNull final LoanTransaction loanTransaction) { final Loan loan = loanTransaction.getLoan(); final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); loan.getLoanTransactions().stream().filter(LoanTransaction::isCapitalizedIncomeAmortization) .filter(transaction -> transaction.getTransactionDate().equals(loanTransaction.getTransactionDate())) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java index 32a242200..0853fdaf4 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java @@ -220,7 +220,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo validateAddingNewChargeAllowed(loanDisburseDetails); } final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); boolean isAppliedOnBackDate = false; LoanCharge loanCharge = null; @@ -842,7 +842,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo return; } final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); boolean runInterestRecalculation = false; LocalDate recalculateFrom = DateUtils.getBusinessLocalDate(); LocalDate lastChargeDate = null; @@ -904,7 +904,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo final LocalDate transactionDate, final ExternalId txnExternalId, PaymentDetail paymentDetail) { businessEventNotifierService.notifyPreBusinessEvent(new LoanChargeAdjustmentPreBusinessEvent(loan)); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); LoanTransaction loanChargeAdjustmentTransaction = LoanTransaction.chargeAdjustment(loan, transactionAmount, transactionDate, txnExternalId, paymentDetail); @@ -953,7 +953,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo private void undoInstalmentFee(Map changes, Loan loan, LoanTransaction loanTransaction, LoanChargePaidBy loanChargePaidBy) { final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); LoanCharge loanCharge = loanChargePaidBy.getLoanCharge(); final Integer installmentNumber = loanChargePaidBy.getInstallmentNumber(); LoanInstallmentCharge chargePerInstallment; @@ -1009,7 +1009,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo final LoanChargePaidBy loanChargePaidBy) { final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); LoanCharge loanCharge = loanChargePaidBy.getLoanCharge(); BigDecimal amountWaived = loanCharge.getAmountWaived(loan.getCurrency()).getAmount(); if (!loanCharge.isWaived() || amountWaived == null) { @@ -1489,7 +1489,7 @@ public class LoanChargeWritePlatformServiceImpl implements LoanChargeWritePlatfo loan.updateSummaryWithTotalFeeChargesDueAtDisbursement(loan.deriveSumTotalOfChargesDueAtDisbursement()); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final LoanTransaction waiveLoanChargeTransaction = LoanTransaction.waiveLoanCharge(loan, loan.getOffice(), amountWaived, transactionDate, feeChargesWaived, penaltyChargesWaived, unrecognizedIncome, externalId); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java index 79e241f8d..8ebb5a70e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java @@ -396,10 +396,10 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf if (isAccountTransfer) { disburseLoanToSavings(loan, command, amountToDisburse, paymentDetail); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); } else { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); disbursementTransaction = LoanTransaction.disbursement(loan, amountToDisburse, paymentDetail, actualDisbursementDate, txnExternalId, loan.getTotalOverpaidAsMoney()); disbursementTransaction.updateLoan(loan); @@ -770,11 +770,11 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf if (isAccountTransfer) { disburseLoanToSavings(loan, command, disburseAmount, paymentDetail); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); } else { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); LoanTransaction disbursementTransaction = LoanTransaction.disbursement(loan, disburseAmount, paymentDetail, actualDisbursementDate, txnExternalId, loan.getTotalOverpaidAsMoney()); disbursementTransaction.updateLoan(loan); @@ -1043,7 +1043,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf // save already existing transaction ids final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final String noteText = command.stringValueOfParameterNamed("note"); final Map changes = new LinkedHashMap<>(); @@ -1315,7 +1315,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf checkClientOrGroupActive(loan); final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); businessEventNotifierService.notifyPreBusinessEvent(new LoanChargebackTransactionBusinessEvent(loanTransaction)); @@ -1754,7 +1754,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf businessEventNotifierService.notifyPreBusinessEvent(new LoanInitiateTransferBusinessEvent(loan)); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); ExternalId externalId = externalIdFactory.create(); final LoanTransaction newTransferTransaction = LoanTransaction.initiateTransfer(loan.getOffice(), loan, transferDate, externalId); loan.addLoanTransaction(newTransferTransaction); @@ -1774,7 +1774,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final Staff loanOfficer) { businessEventNotifierService.notifyPreBusinessEvent(new LoanAcceptTransferBusinessEvent(loan)); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); ExternalId externalId = externalIdFactory.create(); final LoanTransaction newTransferAcceptanceTransaction = LoanTransaction.approveTransfer(acceptedInOffice, loan, transferDate, externalId); @@ -1803,7 +1803,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf businessEventNotifierService.notifyPreBusinessEvent(new LoanWithdrawTransferBusinessEvent(loan)); final List existingTransactionIds = new ArrayList<>(loanTransactionRepository.findTransactionIdsByLoan(loan)); - final List existingReversedTransactionIds = new ArrayList<>(loan.findExistingReversedTransactionIds()); + final List existingReversedTransactionIds = new ArrayList<>(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); ExternalId externalId = externalIdFactory.create(); @@ -2330,7 +2330,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf private CommandProcessingResult processLoanDisbursementDetail(Loan loan, Long loanId, JsonCommand command, LoanDisbursementDetails loanDisbursementDetails) { final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); final Map changes = new LinkedHashMap<>(); LocalDate recalculateFrom = null; ScheduleGeneratorDTO scheduleGeneratorDTO = this.loanUtilService.buildScheduleGeneratorDTO(loan, recalculateFrom); @@ -2805,7 +2805,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf } final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); final LoanTransaction chargeOffTransaction = LoanTransaction.chargeOff(loan, transactionDate, txnExternalId); @@ -2864,7 +2864,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final Long loanId = command.getLoanId(); final Loan loan = this.loanAssembler.assembleFrom(loanId); final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); checkClientOrGroupActive(loan); if (!loan.isOpen()) { throw new GeneralPlatformDomainRuleException("error.msg.loan.is.not.active", @@ -2948,7 +2948,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf createNote(loan, command, changes); // Initial transaction ids for journal entry generation final List existingTransactionIds = loanTransactionRepository.findTransactionIdsByLoan(loan); - final List existingReversedTransactionIds = loan.findExistingReversedTransactionIds(); + final List existingReversedTransactionIds = loanTransactionRepository.findReversedTransactionIdsByLoan(loan); // Create refund transaction(s) Pair refundTransactions = loanAccountDomainService.makeRefund(loan, scheduleGeneratorDTO, loanTransactionType, transactionDate, transactionAmount, paymentDetail, txnExternalId); @@ -3059,7 +3059,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final LoanStatus currentStatus = loan.getStatus(); final LoanStatus statusEnum = this.loanLifecycleStateMachine.dryTransition(LoanEvent.LOAN_DISBURSAL_UNDO, loan); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); if (!statusEnum.hasStateOf(currentStatus)) { this.loanLifecycleStateMachine.transition(LoanEvent.LOAN_DISBURSAL_UNDO, loan); actualChanges.put(PARAM_STATUS, LoanEnumerations.status(loan.getLoanStatus())); @@ -3171,7 +3171,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf changes.put(PARAM_STATUS, LoanEnumerations.status(loan.getLoanStatus())); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final String txnExternalId = command.stringValueOfParameterNamedAllowingNull(EXTERNAL_ID); @@ -3235,7 +3235,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final List existingTransactionIds, final List existingReversedTransactionIds, final ScheduleGeneratorDTO scheduleGeneratorDTO) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final LocalDate closureDate = command.localDateValueOfParameterNamed(TRANSACTION_DATE); final String txnExternalId = command.stringValueOfParameterNamedAllowingNull(EXTERNAL_ID); @@ -3350,7 +3350,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf final LocalDate lastTransactionDate = lastDisbursalTransaction.getTransactionDate(); existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loanTransactions = loan.retrieveListOfTransactionsExcludeAccruals(); Collections.reverse(loanTransactions); @@ -3385,7 +3385,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf private void waiveInterest(final Loan loan, final LoanTransaction waiveInterestTransaction, final List existingTransactionIds, final List existingReversedTransactionIds, final ScheduleGeneratorDTO scheduleGeneratorDTO) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loanDownPaymentHandlerService.handleRepaymentOrRecoveryOrWaiverTransaction(loan, waiveInterestTransaction, null, scheduleGeneratorDTO); @@ -3393,7 +3393,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl implements LoanWritePlatf private void undoWrittenOff(final Loan loan, final List existingTransactionIds, final List existingReversedTransactionIds) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); final LoanTransaction writeOffTransaction = loan.findWriteOffTransaction(); loanChargeValidator.validateRepaymentTypeTransactionNotBeforeAChargeRefund(writeOffTransaction.getLoan(), writeOffTransaction, "reversed"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/adjustment/LoanAdjustmentServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/adjustment/LoanAdjustmentServiceImpl.java index bd87d5637..9b00b712a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/adjustment/LoanAdjustmentServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/adjustment/LoanAdjustmentServiceImpl.java @@ -239,7 +239,7 @@ public class LoanAdjustmentServiceImpl implements LoanAdjustmentService { final List existingReversedTransactionIds, final ScheduleGeneratorDTO scheduleGeneratorDTO, final ExternalId reversalExternalId) { existingTransactionIds.addAll(loanTransactionRepository.findTransactionIdsByLoan(loan)); - existingReversedTransactionIds.addAll(loan.findExistingReversedTransactionIds()); + existingReversedTransactionIds.addAll(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)); loanTransactionValidator.validateActivityNotBeforeClientOrGroupTransferDate(loan, LoanEvent.LOAN_REPAYMENT_OR_WAIVER, transactionForAdjustment.getTransactionDate()); diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAdjustmentServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAdjustmentServiceImplTest.java index 3f940d6bb..e4ec718d4 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAdjustmentServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanAdjustmentServiceImplTest.java @@ -235,7 +235,7 @@ class LoanAdjustmentServiceImplTest { // Mock methods called inside adjustExistingTransaction when(loanTransactionRepository.findTransactionIdsByLoan(loan)).thenReturn(Collections.emptyList()); - when(loan.findExistingReversedTransactionIds()).thenReturn(Collections.emptyList()); + when(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)).thenReturn(Collections.emptyList()); doNothing().when(loanTransactionValidator).validateActivityNotBeforeClientOrGroupTransferDate(any(), any(), any()); when(loan.isClosedWrittenOff()).thenReturn(false); when(newTransactionDetail.isRepaymentLikeType()).thenReturn(true); @@ -280,7 +280,7 @@ class LoanAdjustmentServiceImplTest { // Mock methods called inside adjustExistingTransaction when(loanTransactionRepository.findTransactionIdsByLoan(loan)).thenReturn(Collections.emptyList()); - when(loan.findExistingReversedTransactionIds()).thenReturn(Collections.emptyList()); + when(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)).thenReturn(Collections.emptyList()); doNothing().when(loanTransactionValidator).validateActivityNotBeforeClientOrGroupTransferDate(any(), any(), any()); when(loan.isClosedWrittenOff()).thenReturn(false); when(newTransactionDetail.isRepaymentLikeType()).thenReturn(true); diff --git a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImplTest.java b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImplTest.java index 8624d5c99..46dce0a0e 100644 --- a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImplTest.java +++ b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImplTest.java @@ -193,7 +193,7 @@ class LoanChargeWritePlatformServiceImplTest { List existingTransactionIds = new ArrayList<>(); List existingReversedTransactionIds = new ArrayList<>(); when(loanTransactionRepository.findTransactionIdsByLoan(loan)).thenReturn(existingTransactionIds); - when(loan.findExistingReversedTransactionIds()).thenReturn(existingReversedTransactionIds); + when(loanTransactionRepository.findReversedTransactionIdsByLoan(loan)).thenReturn(existingReversedTransactionIds); when(loan.getLoanCharges()).thenReturn(new HashSet<>()); when(loan.getDisbursementDate()).thenReturn(LocalDate.now(ZoneId.systemDefault()));