class Camt::File

Attributes

code[RW]
country_code[RW]
doc[RW]
name[RW]
ns[RW]

Public Class Methods

new(doc, options = {}) click to toggle source
# File lib/camt/file.rb, line 12
def initialize(doc, options = {})
  self.code = options[:code] || 'CAMT'
  self.country_code = options[:country_code] || Camt.config.default_country_code || raise(ArgumentError.new("No country_code given and no default_country_code configured."))
  self.name = options[:name] || 'Generic CAMT Format'

  self.doc = doc
  self.ns = doc.namespaces['xmlns']

  check_version if valid?
end
parse(file) click to toggle source
# File lib/camt/file.rb, line 8
def self.parse file
  Camt::File.new(Nokogiri::XML(::File.read(file)))
end

Public Instance Methods

check_version() click to toggle source
# File lib/camt/file.rb, line 27
def check_version
  # Sanity check the document's namespace
  raise 'This does not seem to be a CAMT format bank statement' unless ns.start_with?('urn:iso:std:iso:20022:tech:xsd:camt.')
  raise 'Only CAMT.053 is supported at the moment.' unless ns.start_with?('urn:iso:std:iso:20022:tech:xsd:camt.053.')
  return true
end
messages() click to toggle source
# File lib/camt/file.rb, line 34
def messages
  @messages ||= Parser.new.parse self
end
statements() click to toggle source
# File lib/camt/file.rb, line 38
def statements
  @statements ||= messages.map(&:statements).flatten
end
to_s() click to toggle source
# File lib/camt/file.rb, line 47
def to_s
  "#{name}: #{messages.map{|message| message.group_header.message_id }.join(', ')}"
end
transactions() click to toggle source
# File lib/camt/file.rb, line 42
def transactions
  @transactions ||= statements.map(&:transactions).flatten
end
valid?() click to toggle source
# File lib/camt/file.rb, line 23
def valid?
  doc.errors.empty?
end