Class: Appydave::Tools::BankReconciliation::Clean::ReadTransactions

Inherits:
Object
  • Object
show all
Defined in:
lib/appydave/tools/bank_reconciliation/clean/read_transactions.rb

Overview

Read transactions from a CSV file

Constant Summary collapse

WISE_HEADER_PREFIX =
'ID,Status,Direction,"Created on","Finished on","Source fee amount",' \
'"Source fee currency","Target fee amount","Target fee currency","Source name",' \
'"Source amount (after fees)","Source currency","Target name",' \
'"Target amount (after fees)","Target currency","Exchange rate",Reference,Batch'
PAYPAL_HEADER_PREFIX =
'"Date","Time","Time zone","Name","Type","Status","Currency",' \
'"Amount","Fees","Total","Exchange Rate","Receipt ID","Balance",' \
'"Transaction ID","Item Title"'
COMMONWEALTH_SIMPLE_HEADER =

Exact match — short header risks start_with? collision with future formats

'Date,Amount,Description,Balance'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file) ⇒ ReadTransactions

Returns a new instance of ReadTransactions.



23
24
25
# File 'lib/appydave/tools/bank_reconciliation/clean/read_transactions.rb', line 23

def initialize(file)
  @file = file
end

Instance Attribute Details

#platformObject (readonly)

Returns the value of attribute platform.



20
21
22
# File 'lib/appydave/tools/bank_reconciliation/clean/read_transactions.rb', line 20

def platform
  @platform
end

#transactionsObject (readonly)

Returns the value of attribute transactions.



21
22
23
# File 'lib/appydave/tools/bank_reconciliation/clean/read_transactions.rb', line 21

def transactions
  @transactions
end

Instance Method Details

#readObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/appydave/tools/bank_reconciliation/clean/read_transactions.rb', line 27

def read
  csv_lines = File.read(@file).lines
  csv_lines[0] = csv_lines[0].sub("\xEF\xBB\xBF", '') if csv_lines[0]&.start_with?("\xEF\xBB\xBF")

  @platform = detect_platform(csv_lines)

  case platform
  when :bankwest
    read_bankwest(csv_lines)
  when :bankwest2
    read_bankwest2(csv_lines)
  when :commonwealth1
    read_commonwealth1(csv_lines)
  when :wise
    read_wise(csv_lines)
  when :paypal
    read_paypal(csv_lines)
  when :commonwealth_simple
    read_commonwealth_simple(csv_lines)
  else
    raise Appydave::Tools::Error, 'Unknown platform X'
  end
end