module Jemquarie::Parser::CashTransactions

Public Instance Methods

parse_cash_transactions_response(response) click to toggle source
# File lib/jemquarie/parser/cash_transactions.rb, line 5
def parse_cash_transactions_response(response)
  result = generic_request_response(response)
  return result if result[:error]
  transactions = []
  return transactions unless result["XMLExtract"] && result["XMLExtract"]["yourclientsTransactions"] && result["XMLExtract"]["yourclientsTransactions"]["yourclientsTransaction"]
  xml_transactions = if result["XMLExtract"]["yourclientsTransactions"]["yourclientsTransaction"].is_a?(Hash)
    [result["XMLExtract"]["yourclientsTransactions"]["yourclientsTransaction"]]
  else
    result["XMLExtract"]["yourclientsTransactions"]["yourclientsTransaction"]
  end
  xml_transactions.each do |transaction|
    transactions << parse_single_transaction(transaction)
  end
  transactions
end

Private Instance Methods

parse_single_transaction(transaction) click to toggle source
# File lib/jemquarie/parser/cash_transactions.rb, line 23
def parse_single_transaction(transaction)
  {
    :foreign_identifier => transaction["TransactionId"],
    :account_number     => transaction["AccountNumber"],
    :date_time          => Time.parse(transaction["TransactionDate"] + " UTC"),
    :amount             => transaction["DebitCredit"] == 'C' ? transaction["Amount"] : ('-' + transaction["Amount"]),
    :type_name          => translate_transaction_type(transaction["TransactionType"]),
    :description        => transaction["Narrative"],
    :reverse            => transaction["ReversalFlag"] == 'Y',
    :meta_data => {
      :updated_at       => Time.parse(transaction["DateModified"] + " UTC")
    }
  }
end
translate_transaction_type(type) click to toggle source
# File lib/jemquarie/parser/cash_transactions.rb, line 38
def translate_transaction_type(type)
  list = [
    {:key => '04', :value => 'WITHDRAWAL'},
    {:key => '06', :value => 'AUTHORITY TRANSFER'},
    {:key => '07', :value => 'INTERNATIONAL DEBIT'},
    {:key => '08', :value => 'DIRECT ENTRY DEBIT'},
    {:key => '09', :value => 'CHEQUE'},
    {:key => '11', :value => 'DEBIT BATCH VALUE DOCUMENT'},
    {:key => '12', :value => 'INTERBANK DEBIT'},
    {:key => '13', :value => 'WITHDRAWAL'},
    {:key => '14', :value => 'TELEGRAPHIC TRANSFER'},
    {:key => '15', :value => 'RETURNED CHEQUE'},
    {:key => '16', :value => 'RETURNED CHEQUE CHARGE'},
    {:key => '17', :value => 'ERROR IN DEPOSIT - ADJUSTMENT'},
    {:key => '18', :value => 'INTERNATIONAL DEBIT'},
    {:key => '19', :value => 'INTEREST ADJUSTMENT'},
    {:key => '20', :value => 'CASH ACCOUNT DEBIT'},
    {:key => '21', :value => 'FIN INST DUTY'},
    {:key => '22', :value => 'FX TRANSACTION'},
    {:key => '23', :value => 'SEARCH FEE'},
    {:key => '24', :value => 'STATE DEBITS TAX'},
    {:key => '25', :value => 'WITHHOLDING TAX'},
    {:key => '26', :value => 'ATM WITHDRAWAL'},
    {:key => '27', :value => 'VISA SALE'},
    {:key => '29', :value => 'MISCELLANEOUS DEBIT FRC'},
    {:key => '30', :value => 'SPECIAL CLEARING CHARGE'},
    {:key => '39', :value => 'INTEREST CHARGED'},
    {:key => '43', :value => 'BANK FEE'},
    {:key => '44', :value => 'MISCELLANEOUS DEBIT'},
    {:key => '45', :value => 'STAMP DUTY'},
    {:key => '46', :value => 'PERIODICAL PAYMENT DEBIT'},
    {:key => '47', :value => 'REVERSAL DEBIT'},
    {:key => '49', :value => 'CHEQUE BOOK'},
    {:key => '50', :value => 'DEPOSIT'},
    {:key => '51', :value => 'GOVT SECURITY INTEREST'},
    {:key => '52', :value => 'FAMILY ALLOWANCE'},
    {:key => '53', :value => 'SALARY'},
    {:key => '54', :value => 'PENSION'},
    {:key => '55', :value => 'SERVICE ALLOTMENT'},
    {:key => '56', :value => 'DIVIDEND'},
    {:key => '57', :value => 'DEBENTURE NOTE INTEREST'},
    {:key => '58', :value => 'GENERAL CREDIT'},
    {:key => '59', :value => 'CREDIT BATCH VALUE DOCUMENT'},
    {:key => '60', :value => 'DEPOSIT AGT'},
    {:key => '61', :value => 'TELEGRAPHIC TRANSFER'},
    {:key => '62', :value => 'ERROR IN DEPOSIT - ADJUSTMENT'},
    {:key => '63', :value => 'INTEREST ADJUSTMENT'},
    {:key => '64', :value => 'BILL ROLLOVER'},
    {:key => '66', :value => 'FX TRANSACTION'},
    {:key => '67', :value => 'INTERBANK CREDIT'},
    {:key => '68', :value => 'INTERNATIONAL CREDIT'},
    {:key => '69', :value => 'AUTHORITY TRANSFER'},
    {:key => '70', :value => 'DEPOSIT'},
    {:key => '71', :value => 'INTERBANK USE NOT AVAILABLE'},
    {:key => '72', :value => 'REV FINANCIAL INSTITUTION DUTY'},
    {:key => '73', :value => 'INTEREST PAID'},
    {:key => '74', :value => 'REV FEDERAL DEBITS TAX'},
    {:key => '76', :value => 'SWEEP ACCOUNT INTEREST'},
    {:key => '77', :value => 'NEGATIVE DISTRIBUTION'},
    {:key => '78', :value => 'DISHONOURED ITEM'},
    {:key => '82', :value => 'REV WITHHOLDING TAX'},
    {:key => '86', :value => 'BANK CHEQUE-REVERSAL'},
    {:key => '87', :value => 'REVERSAL CHEQUE'},
    {:key => '88', :value => 'REVERSAL CEMTEX'},
    {:key => '89', :value => 'REV INTEREST CHARGED'},
    {:key => '90', :value => 'REVERSAL CREDIT'},
    {:key => '91', :value => 'REVERSAL OF CHARGE'},
    {:key => '92', :value => 'PERIODICAL CREDIT'},
    {:key => '93', :value => 'DEPOSIT'},
    {:key => '94', :value => 'REVERSAL RTGS REDEMP'},
    {:key => '95', :value => 'DEPOSIT'},
    {:key => '96', :value => 'MISCELLANEOUS CREDIT FRC'},
    {:key => '99', :value => 'MISCELLANEOUS CREDIT'},
    {:key => 'AF', :value => 'APPLICATION FEE'},
    {:key => 'BB', :value => 'BPAY DEPOSIT'},
    {:key => 'BC', :value => 'BANK CHEQUE'},
    {:key => 'BD', :value => 'BANK CHEQUE FEE'},
    {:key => 'BP', :value => 'B-PAY WITHDRAWAL'},
    {:key => 'BT', :value => 'DEPOSIT BANK TRANSFER'},
    {:key => 'CA', :value => 'DEPOSIT - CASH'},
    {:key => 'CC', :value => 'CHEQUE ISSUE FEE'},
    {:key => 'CD', :value => 'DEPOSIT - CHEQUE'},
    {:key => 'CQ', :value => 'FEE FOR CHQ TRANSACTIONS'},
    {:key => 'CW', :value => '## EXCESS CHQ WITHDRAWALS'},
    {:key => 'DC', :value => 'WITHDRAWAL-CHEQUE'},
    {:key => 'DD', :value => 'WITHDRAWAL-BANK TRF'},
    {:key => 'DF', :value => 'TRANSFER FROM'},
    {:key => 'DI', :value => 'RETURNED DIRECT DEBIT FEE'},
    {:key => 'DM', :value => 'ADDITIONAL STATEMENT FEE'},
    {:key => 'DN', :value => 'EXCESS CHEQUE DEPOSITS'},
    {:key => 'DS', :value => 'DISHONOUR - SAVING PLAN DEPOSIT'},
    {:key => 'DT', :value => 'TRANSFER TO'},
    {:key => 'EF', :value => 'ESTABLISHMENT FEE'},
    {:key => 'FD', :value => 'FIXED PAYMENT-BANK TFR'},
    {:key => 'FM', :value => 'MINIMUM BALANCE CHARGE'},
    {:key => 'FT', :value => 'TRANSACTION CHARGES'},
    {:key => 'IC', :value => 'CR INCOME ADJUSTMENT'},
    {:key => 'ID', :value => 'DR INCOME ADJUSTMENT'},
    {:key => 'JA', :value => 'INTERNAL APPLICATION'},
    {:key => 'JR', :value => 'INTERNAL REDEMPTION'},
    {:key => 'MC', :value => 'WITHDRAWAL - MANUAL CHEQUE'},
    {:key => 'MF', :value => 'MISCELLANEOUS FEES'},
    {:key => 'MM', :value => 'MANAGEMENT FEE'},
    {:key => 'ND', :value => 'NET INCOME BANK TRANSFER'},
    {:key => 'NF', :value => 'NET TAXES AND FEES'},
    {:key => 'NR', :value => 'NET INCOME REINVEST'},
    {:key => 'OB', :value => 'OPENING BALANCE'},
    {:key => 'OC', :value => 'OVERSEAS BANK DRAFT FEE'},
    {:key => 'OS', :value => 'EXCESS CHEQUE DEPOSITS DEBIT'},
    {:key => 'OT', :value => 'OVERSEAS TELEGRAPH TRANSFER FE'},
    {:key => 'RD', :value => 'RTGS APPLICATIONS'},
    {:key => 'RT', :value => "RES INVEST W'HOLDING TAX"},
    {:key => 'RW', :value => 'RTGS REDEMPTION'},
    {:key => 'SC', :value => 'SWITCH CREDIT TRANS'},
    {:key => 'SD', :value => 'SWITCH DEBIT TRANS'},
    {:key => 'SF', :value => 'SAVINGS PLAN FEES'},
    {:key => 'SP', :value => 'SAVINGS PLAN DEPOSIT'},
    {:key => 'ST', :value => 'STOP PAYMENT FEE'},
    {:key => 'TC', :value => 'WITHDRAWAL - CHEQUE'},
    {:key => 'TD', :value => 'WITHDRAWAL - BANK TRF'},
    {:key => 'WF', :value => 'WITHDRAWAL FEE'},
    {:key => 'XC', :value => 'SWITCH OF INVESTMENT FUNDS'},
    {:key => 'XD', :value => 'SWITCH OF INVESTMENT FUNDS'}
  ]
  item = list.detect{|t| t[:key] == type}
  return unless item
  item[:value]
end