class CremulPaymentTx
Represents an individual payment transaction (SEQ segment) i a CREMUL message
Constants
- REF_TYPE_INVOICE_NUMBER
- REF_TYPE_KID
Normal format: FII+<party-id>+<account identification>
Emtpy format (no bank account info given): FII+<party-id>
Party-id: OR - Payor's bank account I2 - Beneficiary's bank account
Attributes
beneficiary_nad[R]
free_text[R]
invoice_ref[R]
invoice_ref_type[R]
money[R]
payer_account_number[R]
payer_nad[R]
posting_date[R]
references[R]
tx_index[R]
Public Class Methods
new(tx_index, segments, tx_segment_pos)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 26 def initialize(tx_index, segments, tx_segment_pos) @tx_index = tx_index # the index number of this tx within it's parent line s = segments[next_date_segment_index(segments, tx_segment_pos)].split(':') @posting_date = Date.parse(s[1]) s = segments[next_fii_or_segment_index(segments, tx_segment_pos)].split('+') if s.size == 3 # bank account number is provided if s[2].include? ':' @payer_account_number = s[2].split(':')[0] # the part after the : is the payer account holder name else @payer_account_number = s[2] end end init_invoice_ref(segments, tx_segment_pos) init_free_text(segments, tx_segment_pos) @money = CremulMoney.new(segments[next_amount_segment_index(segments, tx_segment_pos)]) init_refs(segments, tx_segment_pos) init_name_and_addresses(segments, tx_segment_pos) end
Public Instance Methods
to_csv(decimal_separator)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 49 def to_csv(decimal_separator) if decimal_separator == ',' amount = @money.amount.to_s.gsub('.', ',') else amount = @money.amount.to_s end "#{@posting_date};#{amount};#{@money.currency};#{@payer_account_number};#{invoice_ref_type};#{invoice_ref};#{free_text};#{@payer_nad.to_csv}" end
Private Instance Methods
assign_nad(nad)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 97 def assign_nad(nad) if nad.type == :PL @payer_nad = nad elsif nad.type == :BE @beneficiary_nad = nad end end
init_free_text(segments, tx_segment_pos)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 60 def init_free_text(segments, tx_segment_pos) i = payment_details_segment_index(segments, tx_segment_pos) unless i.nil? s = segments[i].split('+') @free_text = s[s.size-1] end end
init_invoice_ref(segments, tx_segment_pos)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 68 def init_invoice_ref(segments, tx_segment_pos) i = doc_segment_index(segments, tx_segment_pos) unless i.nil? s = segments[doc_segment_index(segments, tx_segment_pos)].split('+') @invoice_ref_type = ref_type(s[1]) @invoice_ref = s[2] end end
init_name_and_addresses(segments, tx_segment_pos)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 77 def init_name_and_addresses(segments, tx_segment_pos) n = last_segment_index_in_tx(segments, tx_segment_pos) nad_index = next_nad_segment_index(segments, tx_segment_pos) while nad_index.nil? == false && nad_index <= n nad = CremulNameAndAddress.new(segments[nad_index]) assign_nad(nad) nad_index = next_nad_segment_index(segments, nad_index+1) end end
init_refs(segments, tx_segment_pos)
click to toggle source
# File lib/cremul/cremul_payment_tx.rb, line 87 def init_refs(segments, tx_segment_pos) @references = [] n = number_of_references_in_tx(segments, tx_segment_pos) ref_segment_index = next_ref_segment_index(segments, tx_segment_pos) n.times do @references << CremulReference.new(segments[ref_segment_index]) ref_segment_index = next_ref_segment_index(segments, ref_segment_index+1) end end