class CamtParser::Format053::Statement

Attributes

xml_data[R]

Public Class Methods

new(xml_data) click to toggle source
# File lib/camt_parser/053/statement.rb, line 7
def initialize(xml_data)
  @xml_data = xml_data
end
parse(xml) click to toggle source
# File lib/camt_parser/053/statement.rb, line 68
def self.parse(xml)
  self.new Nokogiri::XML(xml).xpath('Stmt')
end

Public Instance Methods

account() click to toggle source
# File lib/camt_parser/053/statement.rb, line 27
def account
  @account ||= Account.new(xml_data.xpath('Acct').first)
end
closing_balance() click to toggle source
# File lib/camt_parser/053/statement.rb, line 53
def closing_balance
  @closing_balance ||= begin
    bal = xml_data.xpath('Bal/Tp//Cd[contains(text(), "CLBD")]').first.ancestors('Bal')
    date = bal.xpath('Dt/Dt/text()').text
    credit = bal.xpath('CdtDbtInd/text()').text == 'CRDT'
    currency = bal.xpath('Amt').attribute('Ccy').value
    AccountBalance.new bal.xpath('Amt/text()').text, currency, date, credit
  end
end
closing_or_intermediary_balance()
Alias for: closing_balance
electronic_sequence_number() click to toggle source
# File lib/camt_parser/053/statement.rb, line 39
def electronic_sequence_number
  @electronic_sequence_number ||= xml_data.xpath('ElctrncSeqNb/text()').text
end
entries() click to toggle source
# File lib/camt_parser/053/statement.rb, line 31
def entries
  @entries ||= xml_data.xpath('Ntry').map{ |x| Entry.new(x) }
end
from_date_time() click to toggle source
# File lib/camt_parser/053/statement.rb, line 19
def from_date_time
  @from_date_time ||= (x = xml_data.xpath('FrToDt/FrDtTm')).empty? ? nil : Time.parse(x.first.content)
end
generation_date() click to toggle source
# File lib/camt_parser/053/statement.rb, line 15
def generation_date
  @generation_date ||= Time.parse(xml_data.xpath('CreDtTm/text()').text)
end
identification() click to toggle source
# File lib/camt_parser/053/statement.rb, line 11
def identification
  @identification ||= xml_data.xpath('Id/text()').text
end
opening_balance() click to toggle source
# File lib/camt_parser/053/statement.rb, line 43
def opening_balance
  @opening_balance ||= begin
    bal = xml_data.xpath('Bal/Tp//Cd[contains(text(), "OPBD") or contains(text(), "PRCD")]').first.ancestors('Bal')
    date = bal.xpath('Dt/Dt/text()').text
    credit = bal.xpath('CdtDbtInd/text()').text == 'CRDT'
    currency = bal.xpath('Amt').attribute('Ccy').value
    AccountBalance.new bal.xpath('Amt/text()').text, currency, date, credit
  end
end
source() click to toggle source
# File lib/camt_parser/053/statement.rb, line 64
def source
  xml_data.to_s
end
to_date_time() click to toggle source
# File lib/camt_parser/053/statement.rb, line 23
def to_date_time
  @to_date_time ||= (x = xml_data.xpath('FrToDt/ToDtTm')).empty? ? nil : Time.parse(x.first.content)
end