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



157
158
159
# File 'lib/sepa_file_parser/general/transaction.rb', line 157

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

#additional_remittance_informationObject

May be missing



75
76
77
# File 'lib/sepa_file_parser/general/transaction.rb', line 75

def additional_remittance_information # May be missing
  @additional_remittance_information ||= xml_data.xpath('RmtInf/Strd/AddtlRmtInf/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



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

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

#bank_transaction_codeSepaFileParser::BankTransactionCode?



170
171
172
# File 'lib/sepa_file_parser/general/transaction.rb', line 170

def bank_transaction_code
  @bank_transaction_code ||= xml_data.xpath('BkTxCd').empty? ? nil : parse_bank_trx_code
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



141
142
143
144
145
146
# File 'lib/sepa_file_parser/general/transaction.rb', line 141

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



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

def creditor_reference # May be missing
  @creditor_reference ||= creditor_reference_information.creditor_reference
end

#creditor_reference_informationObject



125
126
127
128
129
130
131
# File 'lib/sepa_file_parser/general/transaction.rb', line 125

def creditor_reference_information
  if xml_data.xpath('RmtInf/Strd/CdtrRefInf').empty?
    return nil
  end

  @creditor_reference_information ||= parse_creditor_reference_information
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



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

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



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

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



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

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

#message_idObject

May be missing



133
134
135
# File 'lib/sepa_file_parser/general/transaction.rb', line 133

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



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

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

#original_currency_amountObject

May be missing



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

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

#payment_informationObject

May be missing



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

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



161
162
163
# File 'lib/sepa_file_parser/general/transaction.rb', line 161

def reason_code # May be missing
  @reason_code ||= parse_return_information.reason_code # For compatibility
end

#referenceObject



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

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

#remittance_informationObject



79
80
81
82
83
84
85
86
87
# File 'lib/sepa_file_parser/general/transaction.rb', line 79

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

#return_informationObject



165
166
167
# File 'lib/sepa_file_parser/general/transaction.rb', line 165

def return_information
  @return_information ||= parse_return_information
end

#signObject



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

def sign
  credit? ? 1 : -1
end

#swift_codeObject



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

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

#transaction_idObject

May be missing



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

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



152
153
154
# File 'lib/sepa_file_parser/general/transaction.rb', line 152

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