class BankAccountStatement::Inputs::HTML::CPBKGB22::Personal::Base

Public Instance Methods

account() click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 12
def account
  {
    :id   => _bank_account_ids[:account_id],
    :type => self.class::ACCOUNT_TYPE,
  }
end
currency() click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 19
def currency
  :GBP
end
transactions() click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 23
def transactions
  _transaction_rows.map { |r|
    begin
      posted_at = Date.parse(r[self.class::TH[:date]])
    rescue ArgumentError
      next # annotation line
    end
    
    a = if self.class::TH.has_key?(:amount)
      _clean_amount(r[self.class::TH[:amount]])
    else
      _transaction_amount(
        r[self.class::TH[:deposit]],
        r[self.class::TH[:withdrawal]]
      )
    end
    
    {
      :posted_at => posted_at,
      :type      => _transaction_type(r[self.class::TH[:desc]], a),
      :name      => r[self.class::TH[:desc]].strip,
      :amount    => a,
    }
  }.compact
end

Private Instance Methods

_clean_str(str) click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 51
def _clean_str(str)
  str.encode('UTF-8', invalid: :replace, replace: '').strip
end
_transaction_amount(deposit, withdrawal) click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 55
def _transaction_amount(deposit, withdrawal)
  d = _clean_amount(deposit)
  w = _clean_amount(withdrawal)
  
  w != 0 ? (w * -1) : d
end
_transaction_type(name, amount) click to toggle source
# File lib/bank-account-statement/inputs/HTML/CPBKGB22/Personal/base.rb, line 62
def _transaction_type(name, amount)
  case name
  when /^BROUGHT FORWARD$/
    :OTHER
  when /^COOP ATM/
    :ATM
  when /^LINK /
    :ATM
  when /^TFR /
    :XFER
  else
    amount >= 0 ? :CREDIT : :DEBIT
  end
end