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