Class TransactionService
java.lang.Object
com.bluebell.greenhouse.radicle.services.AbstractGenericEntityService<Transaction, TransactionRepository>
com.bluebell.greenhouse.radicle.services.transaction.TransactionService
@Service
@Transactional(readOnly=true)
public class TransactionService
extends AbstractGenericEntityService<Transaction, TransactionRepository>
Service-layer for
Transaction.- Version:
- 3.0.6
- Author:
- Stephen Prizio
-
Constructor Summary
ConstructorsConstructorDescriptionTransactionService(AccountRepository accountRepository, PositionRepository positionRepository, TransactionRepository transactionRepository, AccountLedgerService accountLedgerService, jakarta.persistence.EntityManager entityManager) Creates the service. -
Method Summary
Modifier and TypeMethodDescriptionassignTransactionsToPosition(AssignTransactionsToPositionDTO data, Account account) Assigns multiple transactions to a position in one atomic operation.createNewTransaction(CreateUpdateTransactionDTO data, Account account) Creates a newTransactionwith the given data.booleanDeletes the transaction a reference identifies.booleandeleteTransaction(Transaction transaction) Attempts to delete the givenTransaction.findAllTransactionsByStatusForAccount(TransactionStatus transactionStatus, Account account) findAllTransactionsByTypeForAccount(TransactionType transactionType, Account account) findAllTransactionsForAccount(Account account) findImportedTransaction(Account account, String sourceSystem, String externalTransactionId) Looks up aTransactionby imported external identity fields.Attempts to match the givenAccount's initial balance with aTransaction.findRecentTransactions(Account account) Returns aListofTransactions within the last 6 months.findTransactionByNaturalKey(TransactionType transactionType, LocalDateTime transactionDate, String name, double amount, Account account) Returns aTransactionfor the given parameters.findTransactionForNumber(long transactionNumber, Account account) Looks up aTransactionfor the givenAccountand transaction number.findTransactionsWithinTimespanForAccount(LocalDateTime start, LocalDateTime end, Account account) generateUniqueTransactionNumber(Account account) Generates a unique transaction number.Resolves the transaction a reference identifies.intsaveAll(List<Transaction> transactions, Account account) Saves allTransactions within the given list to the database.org.springframework.data.domain.Page<Transaction> searchTransactions(TransactionFilter filter, int page, int pageSize, org.springframework.data.domain.Sort sort) Returns a paginatedPageofTransactions matching the given filter.updateTransaction(OwnedTransactionRef ref, CreateUpdateTransactionDTO data, Account account) Updates the transaction a reference identifies.updateTransaction(Transaction transaction, CreateUpdateTransactionDTO data, Account account) Updates an existingTransaction.Methods inherited from class AbstractGenericEntityService
refreshEntity, resolveEntity, resolveEntity, resolveEntity
-
Constructor Details
-
TransactionService
public TransactionService(AccountRepository accountRepository, PositionRepository positionRepository, TransactionRepository transactionRepository, AccountLedgerService accountLedgerService, jakarta.persistence.EntityManager entityManager) Creates the service.- Parameters:
accountRepository-AccountRepositorypositionRepository-PositionRepositorytransactionRepository-TransactionRepositoryaccountLedgerService-AccountLedgerServiceentityManager-EntityManager
-
-
Method Details
-
generateUniqueTransactionNumber
-
findRecentTransactions
Returns aListofTransactions within the last 6 months.- Parameters:
account-Account- Returns:
ListofTransaction
-
findAllTransactionsForAccount
- Parameters:
account-Account- Returns:
ListofTransaction
-
findAllTransactionsByTypeForAccount
public List<Transaction> findAllTransactionsByTypeForAccount(TransactionType transactionType, Account account) - Parameters:
transactionType-TransactionTypeaccount-Account- Returns:
ListofTransaction
-
findAllTransactionsByStatusForAccount
public List<Transaction> findAllTransactionsByStatusForAccount(TransactionStatus transactionStatus, Account account) - Parameters:
transactionStatus-TransactionStatusaccount-Account- Returns:
ListofTransaction
-
findTransactionsWithinTimespanForAccount
public List<Transaction> findTransactionsWithinTimespanForAccount(LocalDateTime start, LocalDateTime end, Account account) - Parameters:
start-LocalDateTimestart of interval (inclusive)end-LocalDateTimeend of interval (exclusive)account-Account- Returns:
ListofTransaction
-
findTransactionForNumber
Looks up aTransactionfor the givenAccountand transaction number.- Parameters:
transactionNumber- transaction numberaccount-Account- Returns:
OptionalTransaction
-
findImportedTransaction
public Optional<Transaction> findImportedTransaction(Account account, String sourceSystem, String externalTransactionId) Looks up aTransactionby imported external identity fields.- Parameters:
account-AccountsourceSystem- import source namespaceexternalTransactionId- external transaction id- Returns:
OptionalTransaction
-
findTransactionByNaturalKey
public Optional<Transaction> findTransactionByNaturalKey(TransactionType transactionType, LocalDateTime transactionDate, String name, double amount, Account account) Returns aTransactionfor the given parameters.- Parameters:
transactionType-TransactionTypetransactionDate-LocalDateTimename- nameamount- amountaccount-Account- Returns:
Transaction
-
searchTransactions
public org.springframework.data.domain.Page<Transaction> searchTransactions(TransactionFilter filter, int page, int pageSize, org.springframework.data.domain.Sort sort) Returns a paginatedPageofTransactions matching the given filter.- Parameters:
filter-TransactionFilterpage- current pagepageSize- page sizesort-Sort- Returns:
PageofTransaction
-
assignTransactionsToPosition
@Transactional public List<Transaction> assignTransactionsToPosition(AssignTransactionsToPositionDTO data, Account account) Assigns multiple transactions to a position in one atomic operation.- Parameters:
data- assignment payloadaccount- owning account- Returns:
- assigned transactions
-
createNewTransaction
@Transactional public Transaction createNewTransaction(CreateUpdateTransactionDTO data, Account account) Creates a newTransactionwith the given data.- Parameters:
data-CreateUpdateTransactionDTOaccount-Account- Returns:
- new
Transaction
-
resolveOwned
Resolves the transaction a reference identifies.- Parameters:
ref-OwnedTransactionRef- Returns:
Transaction
-
updateTransaction
@Transactional public Transaction updateTransaction(OwnedTransactionRef ref, CreateUpdateTransactionDTO data, Account account) Updates the transaction a reference identifies.- Parameters:
ref-OwnedTransactionRefdata-CreateUpdateTransactionDTOaccount- owningAccount- Returns:
- updated
Transaction
-
deleteTransaction
Deletes the transaction a reference identifies.- Parameters:
ref-OwnedTransactionRef- Returns:
- true when the transaction was deleted
-
updateTransaction
@Transactional public Transaction updateTransaction(Transaction transaction, CreateUpdateTransactionDTO data, Account account) Updates an existingTransaction.- Parameters:
transaction-Transactionto updatedata-CreateUpdateTransactionDTOaccount-Account- Returns:
- updated
Transaction
-
deleteTransaction
Attempts to delete the givenTransaction.- Parameters:
transaction-Transaction- Returns:
- true if successfully deleted
-
saveAll
Saves allTransactions within the given list to the database.- Parameters:
transactions-ListofTransactionsaccount-Account- Returns:
- count of insertions/updates
-
findPossibleInitialBalanceTransaction
Attempts to match the givenAccount's initial balance with aTransaction.- Parameters:
account-Account- Returns:
OptionalTransaction
-