Class: MT940Structured::Parsers::Rabobank::StructuredTransactionParser

Inherits:
Object
  • Object
show all
Includes:
DateParser, IbanSupport, Types, StructuredDescriptionParser
Defined in:
lib/mt940_structured/parsers/rabobank/structured_transaction_parser.rb

Constant Summary

Constants included from Types

Types::MAPPING

Constants included from IbanSupport

IbanSupport::IBAN_R

Instance Method Summary collapse

Methods included from DateParser

#parse_date

Methods included from Types

#human_readable_type

Methods included from StructuredDescriptionParser

#parse_description_after_tag

Methods included from IbanSupport

#iban?, #iban_to_account

Instance Method Details

#enrich_transaction(transaction, line_86) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/mt940_structured/parsers/rabobank/structured_transaction_parser.rb', line 26

def enrich_transaction(transaction, line_86)
  transaction.description = line_86[4..-1]
  description_parts = transaction.description.split('/')
  transaction.description = parse_description_after_tag description_parts, "REMI"
  if transaction.description == ''
    structured_betalingskenmerk = parse_description_after_tag(description_parts, "CDTRREF")
    transaction.description = "BETALINGSKENMERK #{structured_betalingskenmerk}" unless structured_betalingskenmerk == ''
  end
  transaction. = description_parts[description_parts.index { |part| part == "NAME" } + 1].gsub(/\r|\n/, '') if description_parts.index { |part| part == "NAME" }
  transaction.description.strip!
end

#parse_transaction(line_61) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/mt940_structured/parsers/rabobank/structured_transaction_parser.rb', line 9

def parse_transaction(line_61)
  valuta_date = parse_date(line_61[4, 6])
  sign = line_61[10, 1] == 'D' ? -1 : 1
  amount = sign * line_61[11, 15].gsub(',', '.').to_f
  transaction_type = human_readable_type(line_61[27, 3])
  parts = line_61.split(/\s/)
  potential_iban = parts.size > 1 ? parts.last.gsub(/^[P]{0,1}0*/, '').strip : nil
  number = potential_iban.nil? ? "NONREF" : (potential_iban)
   = iban?(potential_iban) ? potential_iban : nil
  MT940::Transaction.new(amount: amount,
                         type: transaction_type,
                         date: valuta_date,
                         contra_account_iban: ,
                         contra_account: number.strip)

end