Temenos Digital
R24 AMR | Min(s) read

Advanced Transaction Search

Use the feature to search for transactions that match specific criteria such as date, amount, keywords, type, and more, for any of your accounts. You can also download or print these search results.

Menu path: Online Banking

On the side menu, click Accounts > My Accounts. The app displays the list of your favorite accounts. You can click Show All Accounts to view all your accounts. Click any account. The app displays the account details and transactions screen.

Menu path: Mobile Banking

On the account dashboard, select the required account. The app displays the Account Summary screen. On the Account Summary screen, tap Search to search for transactions in the selected account based on search criteria.

Online Banking

You can do the following:

Search Transactions

Use the search option to search for specific transactions.

On the Account Details and Transactions screen, under Transactions click the Search  icon.

In case you are using mobile banking application, tap on the  advanced search icon to access advanced search options.

Online Banking

Mobile - Normal Search

Mobile - Advanced Search

     

In the advanced search criteria section, specify any of the following criteria.

Select Type. Select the type of the transactions you want to search. The available options are:

  • Transactions
  • Blocked Funds

Transactions

Select or Enter any of the following search criteria to search for the transactions.

  • By Keyword. Enter an appropriate keyword, such as Bill Pay to Western Electricals, in the By Keyword field.
  • By Check Number. Enter the specific check number range into view the transaction details for those checks.
  • By Transaction Type. Select the required transaction type from the list to search based on types of transactions, such as Deposits or Transfers.
  • By Amount Range. Enter the specific amount or amount range to view transactions based on the amount.
  • By Time Range. Select the required time range to search for transactions based on a certain time period, such as Last 7 Days. If you select the Custom Date Range option, the app displays the By Date fields. You can specify a date range and search for transactions.

Search for the records and the app displays all the transactions based on the specified search criteria. The app displays an appropriate message in case there are no transactions to retrieve.

Blocked Funds

Select or Enter any of the following search criteria to search for the blocked funds.

  • By Keyword. Enter an appropriate keyword in the By Keyword field.
  • By Date Range. Specify a date range to search for the funds that are blocked within the selected date range.
  • By Reference Number. Enter the reference number in the By Reference field.

Click Search to search for the records and the app displays all the blocked funds based on the specified search criteria.

In case you are using an online banking application, click Clear Search if you want to clear the current search. The app removes the current search criteria. If you want to modify the current search, click Modify Search. The app navigates you to the advanced search criteria section.

Print Transaction Search Results

You can take a printout of your current search results. Click the Print icon under the transactions section. This feature is applicable only for an online banking application.

The app displays a Print Preview screen. You can customize the printing process before you click Print. The app prints the transactions from all the pages of the search results along with the account details.

Download Transaction Search Results

You can download a group of transaction retrieve based on the search criteria like Date Range, Transaction Type, Amount Range, and so on.

Click the Download icon to download the transactions. A pop-up is displayed with the provided search criteria.

  • Select Format: Click the list and select the format to download the transactions in the selected format. The available download formats are:
    • CSV
    • Excel
    • PDF

  • Click Download to download the transactions within the selected criteria.

  • Cancel the process at any time. The changes are not saved.

Transact Integration with Transaction Search

Transaction Search is integrated with Transact APIs and Holdings micro service are to retrieve transactions based on the following fields:

  • Description - user can enter either partial or full description. (partial search is currently not supported by Holdings MS)
  • Amount Range
  • Date Range - Custom date range as well as fixed number of days in the past
  • Transaction Type (not applicable for Holdings MS)

Transaction search based on keyword is case sensitive as there is no support from Transact.

API

The following API is used to download transaction.

Operation Method IRIS API
getTransactions GET v1.0.0/holdings/transactions

Extending Download Transactions

The extension scenario for Download Report is about extending the functionality to a new money movement flow such as wire transfer.

Currently, the download report functionality is available for account transactions and is applicable only for responsive web.

To perform the extension for wire transfer, follow these steps.

  1. Create a new JS extension file in Modules and rename the JS file as frmWireTransferRecentControllerExtn.js.
  2. From the Project Explorer, go to Reference Architecture Extensions > WireTransferNew > Config and update the path in module config.
  3. Redefine the segment data showRecentTransations by copying and pasting the code in frmWireTransferRecentControllerExtn.js.
    showRecentTransactions: function (context) {
          //this.view.segWireTransfers.addAll(btnReport);
          if (context.transactions.length === 0) {
            this.showNoTransactionsScreen();
            return;
          }
          var OLBConstants =  applicationManager.getConfigurationManager().OLBConstants;
          this.showRecentTabUI();
          var sortMap = [{
            name: 'transactionDate',
            imageFlx: this.view.imgSortDate,
            clickContainer: this.view.flxSortDate
          },
                         {
                           name: 'nickName',
                           imageFlx: this.view.imgSortSentTo,
                           clickContainer: this.view.flxSortSentTo
                         },
                         {
                           name: 'amount',
                           imageFlx: this.view.imgSortType,
                           clickContainer: this.view.flxSortAmount
                         }
                        ];
          var scopeObj = this;
          var break_point = kony.application.getCurrentBreakpoint();
          var widgetDataMap = {
            "CopylblSeparator0dc0066e561ec4f": "CopylblSeparator0dc0066e561ec4f",
            "btnAction": "btnAction",
            "btnCancel1": "btnCancel1",
            "btnCancel2": "btnCancel2",
            "btnDownloadReport": "btnDownloadReport",
            "btnRepeat": "btnRepeat",
            "flxActions": "flxActions",
            "flxAmount": "flxAmount",
            "flxCurrency": "flxCurrency",
            "flxDate": "flxDate",
            "flxDetail": "flxDetail",
            "flxDropdown": "flxDropdown",
            "flxFromAccountTitle": "flxFromAccountTitle",
            "flxFromAccountValue": "flxFromAccountValue",
            "flxIdentifier": "flxIdentifier",
            "flxNoteTitle": "flxNoteTitle",
            "flxNoteValue": "flxNoteValue",
            "flxRecentTransfers": "flxRecentTransfers",
            "flxRecentTransfersNewSelected": "flxRecentTransfersNewSelected",
            "flxRecentsWireTransfersMobileSelectedNew":"flxRecentsWireTransfersMobileSelectedNew",
            "flxRecurrenceTitle": "flxRecurrenceTitle",
            "flxRecurrenceValue": "flxRecurrenceValue",
            "flxReferenceNumberTitle": "flxReferenceNumberTitle",
            "flxReferenceNumberValue": "flxReferenceNumberValue",
            "flxRow": "flxRow",
            "flxRowFour": "flxRowFour",
            "flxRowOne": "flxRowOne",
            "flxRowThree": "flxRowThree",
            "flxRowTwo": "flxRowTwo",
            "flxSelectedRowWrapper": "flxSelectedRowWrapper",
            "flxSendTo": "flxSendTo",
            "flxStatusTitle": "flxStatusTitle",
            "flxStatusValue": "flxStatusValue",
            "flxTransactionFee": "flxTransactionFee",
            "imgDropdown": "imgDropdown",
            "lblAmount": "lblAmount",
            "lblCurrencyTitle": "lblCurrencyTitle",
            "lblCurrencyValue": "lblCurrencyValue",
            "lblDate": "lblDate",
            "lblDropdown": "lblDropdown",
            "lblFromAccountTitle": "lblFromAccountTitle",
            "lblFromAccountValue": "lblFromAccountValue",
            "lblFromAccountValuemod": "lblFromAccountValuemod",
            "lblIdentifier": "lblIdentifier",
            "lblNoteTitle": "lblNoteTitle",
            "lblNoteValue": "lblNoteValue",
            "lblNoteValuemod": "lblNoteValuemod",
            "lblRecurrenceTitle": "lblRecurrenceTitle",
            "lblRecurrenceValue": "lblRecurrenceValue",
            "lblRecurrenceValuemod": "lblRecurrenceValuemod",
            "lblReferenceNumberTitle": "lblReferenceNumberTitle",
            "lblReferenceNumberValue": "lblReferenceNumberValue",
            "lblReferenceNumberValuemod": "lblReferenceNumberValuemod",
            "lblTransferCurrencyValue": "lblTransferCurrencyValue",
            "lblRowSeperator": "lblRowSeperator",
            "lblSendTo": "lblSendTo",
            "lblSeparator": "lblSeparator",
            "lblStatusTitle": "lblStatusTitle",
            "lblStatusValue": "lblStatusValue",
            "lblStatusValuemod": "lblStatusValuemod",
            "lblTransactionFeeTitle": "lblTransactionFeeTitle",
            "lblTransactionFeeValue": "lblTransactionFeeValue",
            "lblTransferCurrencyTitle" : "lblTransferCurrencyTitle",
            "lblAmountRecieved" : "lblAmountRecieved", 
            "lblReceivedValue": "lblReceivedValue"
          };
          var data = context.transactions.map(function (dataItem) {
            return {
              "btnDownloadReport": {
              "isVisible": true,
              "text":  kony.i18n.getLocalizedString("i18n.transfers.downloadReport"),
              "toolTip":  kony.i18n.getLocalizedString("i18n.transfers.downloadReport"),
               "onClick" : scopeObj.onButtonClick.bind(this)
            },
              "btnAction": {
                "isVisible": true,
                "text": kony.i18n.getLocalizedString("i18n.accounts.repeat"),
                "toolTip": kony.i18n.getLocalizedString("i18n.common.repeatThisTransaction"),
                "onClick": scopeObj.onMakeTransferActionClick.bind(this, null, dataItem),
                "type": dataItem.wireAccountType
              },
              "flxRecentTransfersNewSelected": {
                "height": "50dp",
                "skin":"sknflxffffffnoborder"
              },
              "flxRecentsWireTransfersMobileSelectedNew": {
                "height": "60dp",
                "skin":"sknflxffffffnoborder"
              },
              "flxIdentifier": {
                "skin": "sknFlxIdentifier",
                "isVisible": false
              },
              "lblIdentifier": {
                "skin": "sknffffff15pxolbfonticons"
              },
              "lblDropdown": ViewConstants.FONT_ICONS.CHEVRON_DOWN,
              "lblDate": CommonUtilities.getFrontendDateString(dataItem.transactionDate),
              "lblSendTo": dataItem.payeeNickName ? dataItem.payeeNickName : dataItem.payeeName,
              "lblAmount": CommonUtilities.formatCurrencyWithCommas(dataItem.amount,false,dataItem.currencyCode),
              "lblFromAccountTitle": kony.i18n.getLocalizedString("i18n.transfers.lblFrom"),
              "lblReferenceNumberValue": dataItem.transactionId,
              "lblReferenceNumberTitle": kony.i18n.getLocalizedString('i18n.transfers.RefrenceNumber'),
              "lblFromAccountValue": CommonUtilities.getAccountDisplayName({
                name: dataItem.fromAccountName,
                accountID: dataItem.fromAccountNumber,
                nickName: dataItem.fromNickName,
                Account_id : dataItem.fromAccountNumber
              }), 
              "lblStatusTitle": (dataItem.wireAccountType === OLBConstants.WireTransferConstants.ACCOUNT_DOMESTIC) ? kony.i18n.getLocalizedString('i18n.accounts.routingNumber') : (IBANUtils.isCountrySupportsIBAN(dataItem.country)) ? kony.i18n.getLocalizedString("i18n.WireTransfer.IBAN") : kony.i18n.getLocalizedString("i18n.wireTransfer.IRC"),
              "lblStatusValue": (dataItem.wireAccountType === OLBConstants.WireTransferConstants.ACCOUNT_DOMESTIC) ? dataItem.routingNumber : (IBANUtils.isCountrySupportsIBAN(dataItem.country)) ? dataItem.IBAN : dataItem.internationalRoutingCode,
              "lblRecurrenceTitle": kony.i18n.getLocalizedString("i18n.common.accountNumber"),
              "lblRecurrenceValue": dataItem.fromAccountNumber,
              "lblCurrencyTitle": kony.i18n.getLocalizedString('i18n.transfers.accountType'),
              "lblCurrencyValue": dataItem.wireAccountType,
              "lblTransactionFeeTitle": kony.i18n.getLocalizedString("i18n.transfers.bankDetails"),
              "lblTransactionFeeValue": scopeObj.returnBankAddress(dataItem),
              "lblSeparator": ".",
              "lblNoteTitle": kony.i18n.getLocalizedString("i18n.WireTransfer.TransactionFee"),
              "lblTransferCurrencyTitle":{
                "isVisible" : true,
                "text" :  kony.i18n.getLocalizedString("i18n.WireTransfer.TransferCurrency")
              },
              "lblAmountRecieved":{
                "isVisible" : true,
                "text" :  kony.i18n.getLocalizedString("i18n.WireTransfer.AmountReceived")
              },
              "lblNoteValue": CommonUtilities.formatCurrencyWithCommas(dataItem.fee,true),
              "lblTransferCurrencyValue":{
                "isVisible" : true,
                "text" :  dataItem.payeeCurrency
              },
              "lblCurrencySymbol":{
                "isVisible" : true,
                "text" : scopeObj.returnCurrencySymbolFromValue(scopeObj.getCurrency(),dataItem.payeeCurrency)
              },
              "lblReceivedValue":{
                "isVisible" : true,
                "text" :  CommonUtilities.formatCurrencyWithCommas(dataItem.amountRecieved,true)
              },
               "template": (kony.application.getCurrentBreakpoint() === 640) ? "flxRecentsWireTransfersMobileSelectedNew" : "flxRecentTransfersNewSelected"
            }
            
          });
          this.view.segWireTransfers.widgetDataMap = widgetDataMap;
          this.view.segWireTransfers.setData(data);
          FormControllerUtility.setSortingHandlers(sortMap, this.recentTransactionSortingHandler.bind(this), this);
          FormControllerUtility.updateSortFlex(sortMap, context.config);
          var presentationController = this.getWireTransferModule().presentationController;
          this.updatePaginationValue(
            context.config,
            "i18n.common.transactions",
            presentationController.getNextWireTransactions.bind(presentationController),
            presentationController.getPreviousWireTransactions.bind(presentationController)
          )
          //this.view.flxSearch.setVisibility(false);
          this.view.forceLayout();
        },
    
  4. Create the Download Report link btnDownloadReport in the Wire transfer template and add viewRecentTransactions segment code to frmWireTransferRecentControllerExtn.js make the link functional.

  5. Create new extension files for wire transfer formController and presentationController and call a new method to call the transaction ID.
  6. Define the tool tip and onclick actions to call the service that downloads the report.

When the download report link is clicked we pass the transaction ID from the formController to the presentationController of the fetchTransaction method with the Transaction object containing the transaction ID which in turn calls the businessController method. In the presentation method, we are calling the downloadReport URL and the downloadFile.

Scenario 2 - Change the format of the downloaded report. PDF is the default format to download report.

A new pop-up must be defined which displays different formats for the user. In the extension of frmController, write an onClick method of download report to display the different formats of reports that are supported and that calls the defined extensions. The change will be in presentationController or businessController layer where we need to send the format the user selected to the service.

Backend must support the user selected format.

We pass the transaction ID and fileFormat parameter to the backend service.

  • A unique Transaction ID is autogenerated in the formController for every transaction.
  • fileFormat parameter is the format the user requested to download the report.

Based on the request received, the backend sends the data for the selected transaction ID in the required format.

To change the default format there is no change on the client side, but the backend service must be coded to give the required format.

Copyright © 2020- Temenos Headquarters SA

Published on :
Thursday, May 30, 2024 11:39:32 AM IST