class Camt::Statement
Attributes
country_code[R]
node[R]
Public Class Methods
new(xml_node, country_code)
click to toggle source
# File lib/camt/statement.rb, line 6 def initialize(xml_node, country_code) @node = xml_node @country_code = country_code end
Public Instance Methods
created_at()
click to toggle source
# File lib/camt/statement.rb, line 19 def created_at @created_at ||= Time.parse(node.at('./CreDtTm').text) end
date()
click to toggle source
# File lib/camt/statement.rb, line 34 def date @date ||= Date.parse(node.at('./Ntry[1]/ValDt/Dt | ./Ntry[1]/ValDt/DtTm').text) end
electronic_sequence_number()
click to toggle source
# File lib/camt/statement.rb, line 15 def electronic_sequence_number @electronic_sequence_number ||= node.at('./ElctrncSeqNb').text end
end_balance()
click to toggle source
# File lib/camt/statement.rb, line 42 def end_balance @end_balance ||= get_end_balance end
id()
click to toggle source
# File lib/camt/statement.rb, line 11 def id @id ||= node.at('./Id').text end
local_account()
click to toggle source
# File lib/camt/statement.rb, line 23 def local_account @local_account ||= node.at('./Acct/Id').text.strip end
Also aliased as: iban
local_currency()
click to toggle source
# File lib/camt/statement.rb, line 29 def local_currency @local_currency ||= node.at('./Acct/Ccy').try(:text) || node.at('./Bal/Amt').attribute("Ccy").value end
start_balance()
click to toggle source
# File lib/camt/statement.rb, line 38 def start_balance @start_balance ||= get_start_balance end
transactions()
click to toggle source
# File lib/camt/statement.rb, line 46 def transactions @transactions ||= node.xpath('./Ntry').map { |node| parse_Ntry(node) } end
Private Instance Methods
get_balance_type_node(node, balance_type)
click to toggle source
# File lib/camt/statement.rb, line 52 def get_balance_type_node node, balance_type # :param node: BkToCstmrStmt/Stmt/Bal node # :param balance type: one of 'OPBD', 'PRCD', 'ITBD', 'CLBD' node.at("./Bal/Tp/CdOrPrtry/Cd[text()='#{balance_type}']/../../..") end
get_end_balance()
click to toggle source
# File lib/camt/statement.rb, line 70 def get_end_balance # Find the (only) balance node with code ClosingBalance (Closing Booked), or # the second (and last) balance node with code InterimBalance (Interim Booked) in # the case of continued pagination. Use ClosingAvailable otherwise. # # :param node: BkToCstmrStmt/Stmt/Bal node balance_type_node = nil ['CLBD', 'ITBD', 'CLAV'].detect{|code| balance_type_node = get_balance_type_node(node, code) } Amount.new(balance_type_node).value if balance_type_node end
get_start_balance()
click to toggle source
# File lib/camt/statement.rb, line 58 def get_start_balance # Find the (only) balance node with code OpeningBalance, or # the only one with code 'PreviousClosingBalance' # or the first balance node with code InterimBalance in # the case of preceeding pagination. # # :param node: BkToCstmrStmt/Stmt/Bal node balance_type_node = nil ['OPBD', 'PRCD', 'ITBD'].detect{|code| balance_type_node = get_balance_type_node(node, code) } Amount.new(balance_type_node).value end
parse_Ntry(node)
click to toggle source
# File lib/camt/statement.rb, line 81 def parse_Ntry(node) # :param node: Ntry node Transaction.new(node, country_code) end