Class: SepaFileParser::Transaction
- Inherits:
-
Object
- Object
- SepaFileParser::Transaction
- Defined in:
- lib/sepa_file_parser/general/transaction.rb
Instance Attribute Summary collapse
-
#xml_data ⇒ Object
readonly
Returns the value of attribute xml_data.
Instance Method Summary collapse
-
#additional_information ⇒ Object
May be missing.
- #amount ⇒ Object
- #amount_in_cents ⇒ Object
-
#bank_reference ⇒ Object
May be missing.
- #bic ⇒ Object
- #credit? ⇒ Boolean
- #creditor ⇒ Object
-
#creditor_identifier ⇒ Object
May be missing.
-
#creditor_reference ⇒ Object
May be missing.
- #currency ⇒ Object
- #debit ⇒ Object
- #debit? ⇒ Boolean
- #debitor ⇒ Object
-
#end_to_end_reference ⇒ Object
May be missing.
-
#exchange_rate ⇒ Object
May be missing.
- #iban ⇒ Object
-
#initialize(xml_data, debit, amount = nil, currency = nil) ⇒ Transaction
constructor
A new instance of Transaction.
-
#mandate_reference ⇒ Object
May be missing.
-
#message_id ⇒ Object
May be missing.
- #name ⇒ Object
-
#original_currency ⇒ Object
May be missing.
-
#original_currency_amount ⇒ Object
May be missing.
-
#payment_information ⇒ Object
May be missing.
- #postal_address ⇒ Object
-
#reason_code ⇒ Object
May be missing.
- #reference ⇒ Object
- #remittance_information ⇒ Object
- #sign ⇒ Object
- #swift_code ⇒ Object
-
#transaction_id ⇒ Object
May be missing.
-
#uetr ⇒ Object
(also: #unique_e2e_reference)
May be missing.
- #ultimate_debitor ⇒ Object
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_data ⇒ Object (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_information ⇒ Object
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 |
#amount ⇒ Object
15 16 17 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 15 def amount SepaFileParser::Misc.to_amount(@amount) end |
#amount_in_cents ⇒ Object
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_reference ⇒ Object
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 |
#bic ⇒ Object
51 52 53 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 51 def bic credit? ? debitor.bic : creditor.bic end |
#credit? ⇒ Boolean
59 60 61 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 59 def credit? !debit end |
#creditor ⇒ Object
27 28 29 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 27 def creditor @creditor ||= SepaFileParser::Creditor.new(xml_data) end |
#creditor_identifier ⇒ Object
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_reference ⇒ Object
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 |
#currency ⇒ Object
23 24 25 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 23 def currency @currency end |
#debit ⇒ Object
67 68 69 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 67 def debit @debit end |
#debit? ⇒ Boolean
63 64 65 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 63 def debit? debit end |
#debitor ⇒ Object
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_reference ⇒ Object
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_rate ⇒ Object
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 |
#iban ⇒ Object
47 48 49 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 47 def iban credit? ? debitor.iban : creditor.iban end |
#mandate_reference ⇒ Object
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_id ⇒ Object
May be missing
121 122 123 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 121 def # May be missing @message_id ||= xml_data.xpath('Refs/MsgId/text()').text end |
#name ⇒ Object
43 44 45 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 43 def name credit? ? debitor.name : creditor.name end |
#original_currency ⇒ Object
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_amount ⇒ Object
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_information ⇒ Object
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_address ⇒ Object
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_code ⇒ Object
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 |
#reference ⇒ Object
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_information ⇒ Object
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 |
#sign ⇒ Object
71 72 73 |
# File 'lib/sepa_file_parser/general/transaction.rb', line 71 def sign credit? ? 1 : -1 end |
#swift_code ⇒ Object
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_id ⇒ Object
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 |
#uetr ⇒ Object 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_debitor ⇒ Object
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 |