Class: SepaFileParser::Transaction

Inherits:
Object
  • Object
show all
Defined in:
lib/sepa_file_parser/general/transaction.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(xml_data, debit, amount = nil, currency = nil) ⇒ Transaction

Returns a new instance of Transaction.



8
9
10
11
12
13
# File 'lib/sepa_file_parser/general/transaction.rb', line 8

def initialize(xml_data, debit, amount = nil, currency = nil)
  @xml_data = xml_data
  @debit    = debit
  @amount   = parse_amount || amount
  @currency = parse_currency || currency
end

Instance Attribute Details

#xml_dataObject (readonly)

Returns the value of attribute xml_data.



6
7
8
# File 'lib/sepa_file_parser/general/transaction.rb', line 6

def xml_data
  @xml_data
end

Instance Method Details

#additional_informationObject

May be missing



145
146
147
# File 'lib/sepa_file_parser/general/transaction.rb', line 145

def additional_information # May be missing
  @addition_information ||= xml_data.xpath('AddtlTxInf/text()').text
end

#amountObject



15
16
17
# File 'lib/sepa_file_parser/general/transaction.rb', line 15

def amount
  SepaFileParser::Misc.to_amount(@amount)
end

#amount_in_centsObject



19
20
21
# File 'lib/sepa_file_parser/general/transaction.rb', line 19

def amount_in_cents
  SepaFileParser::Misc.to_amount_in_cents(@amount)
end

#bank_referenceObject

May be missing



105
106
107
# File 'lib/sepa_file_parser/general/transaction.rb', line 105

def bank_reference # May be missing
  @bank_reference ||= xml_data.xpath('Refs/AcctSvcrRef/text()').text
end

#bicObject



51
52
53
# File 'lib/sepa_file_parser/general/transaction.rb', line 51

def bic
  credit? ? debitor.bic : creditor.bic
end

#credit?Boolean

Returns:

  • (Boolean)


59
60
61
# File 'lib/sepa_file_parser/general/transaction.rb', line 59

def credit?
  !debit
end

#creditorObject



27
28
29
# File 'lib/sepa_file_parser/general/transaction.rb', line 27

def creditor
  @creditor ||= SepaFileParser::Creditor.new(xml_data)
end

#creditor_identifierObject

May be missing



129
130
131
132
133
134
# File 'lib/sepa_file_parser/general/transaction.rb', line 129

def creditor_identifier # May be missing
  @creditor_identifier ||= [
    xml_data.xpath('RltdPties/Cdtr/Id/PrvtId/Othr/Id/text()'),
    xml_data.xpath('RltdPties/Cdtr/Pty/Id/PrvtId/Othr/Id/text()'),
  ].reject(&:empty?).first&.text
end

#creditor_referenceObject

May be missing



117
118
119
# File 'lib/sepa_file_parser/general/transaction.rb', line 117

def creditor_reference # May be missing
  @creditor_reference ||= xml_data.xpath('RmtInf/Strd/CdtrRefInf/Ref/text()').text
end

#currencyObject



23
24
25
# File 'lib/sepa_file_parser/general/transaction.rb', line 23

def currency
  @currency
end

#debitObject



67
68
69
# File 'lib/sepa_file_parser/general/transaction.rb', line 67

def debit
  @debit
end

#debit?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'lib/sepa_file_parser/general/transaction.rb', line 63

def debit?
  debit
end

#debitorObject



31
32
33
# File 'lib/sepa_file_parser/general/transaction.rb', line 31

def debitor
  @debitor ||= SepaFileParser::Debitor.new(xml_data)
end

#end_to_end_referenceObject

May be missing



109
110
111
# File 'lib/sepa_file_parser/general/transaction.rb', line 109

def end_to_end_reference # May be missing
  @end_to_end_reference ||= xml_data.xpath('Refs/EndToEndId/text()').text
end

#exchange_rateObject

May be missing



101
102
103
# File 'lib/sepa_file_parser/general/transaction.rb', line 101

def exchange_rate # May be missing
  @exchange_rate ||= xml_data.xpath('AmtDtls/TxAmt/CcyXchg/XchgRate/text()').text
end

#ibanObject



47
48
49
# File 'lib/sepa_file_parser/general/transaction.rb', line 47

def iban
  credit? ? debitor.iban : creditor.iban
end

#mandate_referenceObject

May be missing



113
114
115
# File 'lib/sepa_file_parser/general/transaction.rb', line 113

def mandate_reference # May be missing
  @mandate_reference ||= xml_data.xpath('Refs/MndtId/text()').text
end

#message_idObject

May be missing



121
122
123
# File 'lib/sepa_file_parser/general/transaction.rb', line 121

def message_id # May be missing
  @message_id ||= xml_data.xpath('Refs/MsgId/text()').text
end

#nameObject



43
44
45
# File 'lib/sepa_file_parser/general/transaction.rb', line 43

def name
  credit? ? debitor.name : creditor.name
end

#original_currencyObject

May be missing



97
98
99
# File 'lib/sepa_file_parser/general/transaction.rb', line 97

def original_currency # May be missing
  @original_currency ||= xml_data.xpath('AmtDtls/InstdAmt/Amt/@Ccy').text
end

#original_currency_amountObject

May be missing



93
94
95
# File 'lib/sepa_file_parser/general/transaction.rb', line 93

def original_currency_amount # May be missing
  @original_currency_amount ||= SepaFileParser::Misc.to_amount(parse_original_currency_amount)
end

#payment_informationObject

May be missing



136
137
138
# File 'lib/sepa_file_parser/general/transaction.rb', line 136

def payment_information # May be missing
  @payment_information ||= xml_data.xpath('Refs/PmtInfId/text()').text
end

#postal_addressObject



55
56
57
# File 'lib/sepa_file_parser/general/transaction.rb', line 55

def postal_address
  credit? ? debitor.postal_address : creditor.postal_address
end

#reason_codeObject

May be missing



149
150
151
# File 'lib/sepa_file_parser/general/transaction.rb', line 149

def reason_code # May be missing
  @reason_code ||= xml_data.xpath('RtrInf/Rsn/Cd/text()').text
end

#referenceObject



89
90
91
# File 'lib/sepa_file_parser/general/transaction.rb', line 89

def reference
  @reference ||= xml_data.xpath('Refs/InstrId/text()').text
end

#remittance_informationObject



75
76
77
78
79
80
81
82
83
# File 'lib/sepa_file_parser/general/transaction.rb', line 75

def remittance_information
  @remittance_information ||= begin
    if (x = xml_data.xpath('RmtInf/Ustrd')).empty?
      nil
    else
      x.collect(&:content).join(' ')
    end
  end
end

#signObject



71
72
73
# File 'lib/sepa_file_parser/general/transaction.rb', line 71

def sign
  credit? ? 1 : -1
end

#swift_codeObject



85
86
87
# File 'lib/sepa_file_parser/general/transaction.rb', line 85

def swift_code
  @swift_code ||= xml_data.xpath('BkTxCd/Prtry/Cd/text()').text.split('+')[0]
end

#transaction_idObject

May be missing



125
126
127
# File 'lib/sepa_file_parser/general/transaction.rb', line 125

def transaction_id # May be missing
  @transaction_id ||= xml_data.xpath('Refs/TxId/text()').text
end

#uetrObject Also known as: unique_e2e_reference

May be missing



140
141
142
# File 'lib/sepa_file_parser/general/transaction.rb', line 140

def uetr # May be missing
  @uetr ||= xml_data.xpath('Refs/UETR/text()').text
end

#ultimate_debitorObject



35
36
37
38
39
40
41
# File 'lib/sepa_file_parser/general/transaction.rb', line 35

def ultimate_debitor
  if xml_data.xpath('RltdPties/UltmtDbtr').any?
    @ultimate_debitor ||= SepaFileParser::UltimateDebitor.new(xml_data)
  else
    nil
  end
end