FINERACT-2234: Improve accrual activity posting business step performance
This commit is contained in:
committed by
Adam Saghy
parent
3ce44f836d
commit
4d7a3efc13
+44
-1
@@ -29,6 +29,7 @@ import org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncome
|
||||
import org.apache.fineract.portfolio.loanaccount.data.LoanScheduleDelinquencyData;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.TransactionPortionsForForeclosure;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.UnpaidChargeData;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
@@ -188,6 +189,18 @@ public interface LoanTransactionRepository extends JpaRepository<LoanTransaction
|
||||
List<LoanTransaction> findNonReversedByLoanAndTypesAndAfterDate(@Param("loan") Loan loan,
|
||||
@Param("types") Set<LoanTransactionType> types, @Param("transactionDate") LocalDate transactionDate);
|
||||
|
||||
@Query("""
|
||||
SELECT lt
|
||||
FROM LoanTransaction lt
|
||||
WHERE lt.loan = :loan
|
||||
AND lt.reversed = false
|
||||
AND lt.typeOf = :type
|
||||
AND lt.dateOf > :transactionDate
|
||||
ORDER BY lt.dateOf
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedByLoanAndTypeAndAfterDate(@Param("loan") Loan loan, @Param("type") LoanTransactionType type,
|
||||
@Param("transactionDate") LocalDate transactionDate);
|
||||
|
||||
@Query("""
|
||||
SELECT CASE WHEN COUNT(lt) > 0 THEN true ELSE false END
|
||||
FROM LoanTransaction lt
|
||||
@@ -219,6 +232,15 @@ public interface LoanTransactionRepository extends JpaRepository<LoanTransaction
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedByLoanAndTypes(@Param("loan") Loan loan, @Param("types") Set<LoanTransactionType> types);
|
||||
|
||||
@Query("""
|
||||
SELECT lt
|
||||
FROM LoanTransaction lt
|
||||
WHERE lt.loan = :loan
|
||||
AND lt.reversed = false
|
||||
AND lt.typeOf = :type
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedByLoanAndType(@Param("loan") Loan loan, @Param("type") LoanTransactionType type);
|
||||
|
||||
@Query("""
|
||||
SELECT lt
|
||||
FROM LoanTransaction lt
|
||||
@@ -303,6 +325,27 @@ public interface LoanTransactionRepository extends JpaRepository<LoanTransaction
|
||||
WHERE lt.loan = :loan
|
||||
AND lt.reversed = false
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedTransactionsByLoan(@Param("loan") Loan loan);
|
||||
List<LoanTransaction> findNonReversedByLoan(@Param("loan") Loan loan);
|
||||
|
||||
@Query("""
|
||||
SELECT lt FROM LoanTransaction lt
|
||||
WHERE lt.loan = :loan
|
||||
AND lt.reversed = false
|
||||
AND lt.typeOf = :type
|
||||
AND lt.dateOf IN :transactionDates
|
||||
ORDER BY lt.id
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedLoanAndTypeAndDates(@Param("loan") Loan loan, @Param("type") LoanTransactionType type,
|
||||
@Param("transactionDates") Set<LocalDate> transactionDates);
|
||||
|
||||
@Query("""
|
||||
SELECT lt FROM LoanTransaction lt
|
||||
WHERE lt.loan = :loan
|
||||
AND lt.reversed = false
|
||||
AND lt.typeOf = :type
|
||||
ORDER BY lt.dateOf DESC
|
||||
""")
|
||||
List<LoanTransaction> findNonReversedByLoanAndType(@Param("loan") Loan loan, @Param("type") LoanTransactionType type,
|
||||
Pageable pageable);
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ public class LoanAccountingBridgeMapper {
|
||||
final List<Long> existingReversedTransactionIds, final boolean isAccountTransfer, final Loan loan) {
|
||||
List<LoanTransaction> transactions;
|
||||
if (existingTransactionIds == null || existingTransactionIds.isEmpty()) {
|
||||
transactions = loanTransactionRepository.findNonReversedTransactionsByLoan(loan);
|
||||
transactions = loanTransactionRepository.findNonReversedByLoan(loan);
|
||||
} else if (existingReversedTransactionIds == null || existingReversedTransactionIds.isEmpty()) {
|
||||
transactions = loanTransactionRepository.findTransactionsForAccountingBridge(loan, existingTransactionIds);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user