Class: Bankscrap::Openbank::Account

Inherits:
Account
  • Object
show all
Includes:
Utils
Defined in:
lib/bankscrap/openbank/account.rb

Constant Summary collapse

ACCOUNT_ENDPOINT =
'/my-money/cuentas/movimientos'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

#format_date, #money, #next_page_fields, #parse_date

Instance Attribute Details

#contract_idObject

Returns the value of attribute contract_id.



8
9
10
# File 'lib/bankscrap/openbank/account.rb', line 8

def contract_id
  @contract_id
end

Instance Method Details

#build_transaction(data) ⇒ Object

Build a transaction object from API data



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/bankscrap/openbank/account.rb', line 35

def build_transaction(data)
  Transaction.new(
    account: self,
    id: data['nummov'],
    amount: money(data['importe']),
    description: data['conceptoTabla'],
    effective_date: parse_date(data['fechaValor']),
    operation_date: parse_date(data['fechaOperacion']),
    balance: money(data['saldo'])
  )
end

#fetch_transactions_for(connection, start_date: Date.today - 1.month, end_date: Date.today) ⇒ Object

Fetch transactions for the given account. By default it fetches transactions for the last month,

Returns an array of BankScrap::Transaction objects



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/bankscrap/openbank/account.rb', line 16

def fetch_transactions_for(connection, start_date: Date.today - 1.month, end_date: Date.today)
  transactions = []

  fields = { producto: contract_id,
             numeroContrato: id,
             fechaDesde: format_date(start_date),
             fechaHasta: format_date(end_date),
             concepto: '000' }
  # Loop over pagination
  until fields.empty?
    data = connection.get(, fields: fields)
    transactions += data['movimientos'].map { |item| build_transaction(item) }
    fields = next_page_fields(data)
  end

  transactions
end