FINERACT-2278: Rework raiseBusinessEventForAccrualTransactions to not use loan.getLoanTransactions()
This commit is contained in:
committed by
Adam Saghy
parent
8b86229a3e
commit
07839951b9
+20
@@ -37,6 +37,26 @@ public interface LoanTransactionRepository extends JpaRepository<LoanTransaction
|
||||
|
||||
Optional<LoanTransaction> findByIdAndLoanId(Long transactionId, Long loanId);
|
||||
|
||||
@Query("""
|
||||
SELECT lt FROM LoanTransaction lt
|
||||
WHERE lt.loan.id = :loanId
|
||||
AND lt.typeOf IN :transactionTypes
|
||||
AND lt.id NOT IN :existingTransactionIds
|
||||
AND lt.reversed = false
|
||||
""")
|
||||
List<LoanTransaction> findNewTransactionsByLoanIdAndTypeAndNotInIds(@Param("loanId") Long loanId,
|
||||
@Param("transactionTypes") List<LoanTransactionType> transactionTypes,
|
||||
@Param("existingTransactionIds") List<Long> existingTransactionIds);
|
||||
|
||||
@Query("""
|
||||
SELECT lt FROM LoanTransaction lt
|
||||
WHERE lt.loan.id = :loanId
|
||||
AND lt.typeOf IN :transactionTypes
|
||||
AND lt.reversed = false
|
||||
""")
|
||||
List<LoanTransaction> findNewTransactionsByLoanIdAndType(@Param("loanId") Long loanId,
|
||||
@Param("transactionTypes") List<LoanTransactionType> transactionTypes);
|
||||
|
||||
@Query("""
|
||||
SELECT new org.apache.fineract.portfolio.loanaccount.data.LoanScheduleDelinquencyData(
|
||||
lt.loan.id,
|
||||
|
||||
+15
-9
@@ -26,22 +26,28 @@ import org.apache.fineract.infrastructure.event.business.domain.loan.transaction
|
||||
import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LoanAccrualTransactionBusinessEventServiceImpl implements LoanAccrualTransactionBusinessEventService {
|
||||
|
||||
private final BusinessEventNotifierService businessEventNotifierService;
|
||||
private final LoanTransactionRepository loanTransactionRepository;
|
||||
|
||||
@Override
|
||||
public void raiseBusinessEventForAccrualTransactions(Loan loan, List<Long> existingTransactionIds) {
|
||||
for (final LoanTransaction transaction : loan.getLoanTransactions()) {
|
||||
if (transaction.isNotReversed() && (transaction.isAccrual() || transaction.isAccrualAdjustment())
|
||||
&& !existingTransactionIds.contains(transaction.getId())) {
|
||||
LoanTransactionBusinessEvent businessEvent = transaction.isAccrual()
|
||||
? new LoanAccrualTransactionCreatedBusinessEvent(transaction)
|
||||
: new LoanAccrualAdjustmentTransactionBusinessEvent(transaction);
|
||||
businessEventNotifierService.notifyPostBusinessEvent(businessEvent);
|
||||
}
|
||||
public void raiseBusinessEventForAccrualTransactions(final Loan loan, final List<Long> existingTransactionIds) {
|
||||
final List<LoanTransactionType> transactionTypes = List.of(LoanTransactionType.ACCRUAL, LoanTransactionType.ACCRUAL_ADJUSTMENT);
|
||||
final List<LoanTransaction> transactions = existingTransactionIds.isEmpty()
|
||||
? loanTransactionRepository.findNewTransactionsByLoanIdAndType(loan.getId(), transactionTypes)
|
||||
: loanTransactionRepository.findNewTransactionsByLoanIdAndTypeAndNotInIds(loan.getId(), transactionTypes,
|
||||
existingTransactionIds);
|
||||
|
||||
for (final LoanTransaction transaction : transactions) {
|
||||
final LoanTransactionBusinessEvent businessEvent = transaction.isAccrual()
|
||||
? new LoanAccrualTransactionCreatedBusinessEvent(transaction)
|
||||
: new LoanAccrualAdjustmentTransactionBusinessEvent(transaction);
|
||||
businessEventNotifierService.notifyPostBusinessEvent(businessEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -196,9 +196,8 @@ public class LoanAccountConfiguration {
|
||||
@Bean
|
||||
@ConditionalOnMissingBean(LoanAccrualTransactionBusinessEventService.class)
|
||||
public LoanAccrualTransactionBusinessEventService loanAccrualTransactionBusinessEventService(
|
||||
|
||||
BusinessEventNotifierService businessEventNotifierService) {
|
||||
return new LoanAccrualTransactionBusinessEventServiceImpl(businessEventNotifierService);
|
||||
final BusinessEventNotifierService businessEventNotifierService, final LoanTransactionRepository loanTransactionRepository) {
|
||||
return new LoanAccrualTransactionBusinessEventServiceImpl(businessEventNotifierService, loanTransactionRepository);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
Reference in New Issue
Block a user