zilverline-mt940 1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +15 -0
  2. data/.document +5 -0
  3. data/.gitignore +52 -0
  4. data/.ruby-version +1 -0
  5. data/CHANGELOG +56 -0
  6. data/Gemfile +4 -0
  7. data/Gemfile.lock +26 -0
  8. data/LICENSE.txt +20 -0
  9. data/README.md +75 -0
  10. data/Rakefile +9 -0
  11. data/lib/mt940.rb +10 -0
  12. data/lib/mt940/bank_statement.rb +13 -0
  13. data/lib/mt940/banks/abnamro.rb +76 -0
  14. data/lib/mt940/banks/ing.rb +84 -0
  15. data/lib/mt940/banks/rabobank.rb +770 -0
  16. data/lib/mt940/banks/triodos.rb +20 -0
  17. data/lib/mt940/base.rb +165 -0
  18. data/lib/mt940/structured_format.rb +16 -0
  19. data/lib/mt940/transaction.rb +23 -0
  20. data/lib/mt940/version.rb +3 -0
  21. data/mt940.gemspec +32 -0
  22. data/spec/fixtures/abnamro.txt +41 -0
  23. data/spec/fixtures/abnamro_structured.txt +54 -0
  24. data/spec/fixtures/ing.txt +24 -0
  25. data/spec/fixtures/ing_structured.txt +31 -0
  26. data/spec/fixtures/rabobank.txt +140 -0
  27. data/spec/fixtures/rabobank_mt940_structured.txt +48 -0
  28. data/spec/fixtures/rabobank_mt940_structured_dutch_tax.txt +10 -0
  29. data/spec/fixtures/rabobank_mt940_structured_multi_line.txt +14 -0
  30. data/spec/fixtures/rabobank_mt940_structured_savings_account.txt +11 -0
  31. data/spec/fixtures/rabobank_mt940_structured_to_savings_account.txt +10 -0
  32. data/spec/fixtures/rabobank_with_debet_previous_balance.txt +6 -0
  33. data/spec/fixtures/triodos.txt +14 -0
  34. data/spec/fixtures/two_accounts.txt +29 -0
  35. data/spec/fixtures/unknown.txt +22 -0
  36. data/spec/mt940_abnamro_spec.rb +244 -0
  37. data/spec/mt940_base_spec.rb +48 -0
  38. data/spec/mt940_ing_spec.rb +227 -0
  39. data/spec/mt940_rabobank_spec.rb +376 -0
  40. data/spec/mt940_triodos_spec.rb +58 -0
  41. data/spec/mt940_two_accounts_spec.rb +49 -0
  42. data/spec/spec_helper.rb +4 -0
  43. metadata +137 -0
@@ -0,0 +1,20 @@
1
+ class MT940::Triodos < MT940::Base
2
+
3
+ def self.determine_bank(*args)
4
+ self if args[0].match(/^:20:/) && args[1] && args[1].match(/^:25:TRIODOSBANK/)
5
+ end
6
+
7
+ def parse_tag_86
8
+ if !@tag86 && @line.match(/^:86:\s?(.*)\Z/m)
9
+ @tag86 = true
10
+ temp_description = $1.gsub(/\n/, ' ').gsub(/>\d{2}/, '').strip
11
+ if temp_description.match(/^\d+(\d{9})(.*)$/)
12
+ @transaction.contra_account = $1.rjust(9, '000000000')
13
+ @transaction.description = $2.strip
14
+ else
15
+ @transaction.description = temp_description
16
+ end
17
+ end
18
+ end
19
+
20
+ end
data/lib/mt940/base.rb ADDED
@@ -0,0 +1,165 @@
1
+ module MT940
2
+
3
+ class Base
4
+
5
+ MT_940_TAG_LINE = /^:(\d{2}(F|C)?):/
6
+
7
+ attr_accessor :bank, :opening_balance, :opening_date
8
+
9
+ def self.parse_mt940(file)
10
+ file = File.open(file) if file.is_a?(String)
11
+ if file.is_a?(File) || file.is_a?(Tempfile)
12
+ first_line = file.readline
13
+ second_line = file.readline unless file.eof?
14
+ klass = determine_bank(first_line, second_line)
15
+ file.rewind
16
+ instance = klass.new(file)
17
+ file.close
18
+ instance.parse
19
+ else
20
+ raise ArgumentError.new('No file is given!')
21
+ end
22
+ end
23
+
24
+ def parse
25
+ @tag86 = false
26
+ @lines.each do |line|
27
+ @line = line
28
+ @line.match(MT_940_TAG_LINE) ? send("parse_tag_#{$1}".to_sym) : parse_line
29
+ end
30
+ @bank_statements
31
+ end
32
+
33
+ protected
34
+ def parse_description_after_tag(description_parts, tag)
35
+ description_start_index = description_parts.index { |part| part == tag }
36
+ if description_start_index
37
+ description_parts[description_start_index + 1].gsub(/\r|\n/, '')
38
+ else
39
+ ''
40
+ end
41
+ end
42
+
43
+
44
+ private
45
+
46
+ def self.determine_bank(*args)
47
+ Dir.foreach(File.dirname(__FILE__) + '/banks/') do |file|
48
+ if file.match(/\.rb$/)
49
+ klass = eval(file.gsub(/\.rb$/, '').capitalize)
50
+ bank = klass.determine_bank(*args)
51
+ return bank if bank
52
+ end
53
+ end
54
+ self
55
+ end
56
+
57
+ def initialize(file)
58
+ @bank_statements = {}
59
+ @transactions = []
60
+ @bank = self.class.to_s.split('::').last
61
+ @bank = 'Unknown' if @bank == 'Base'
62
+ temp_lines = file.readlines
63
+ @lines = []
64
+ index_of_temp_lines = 0
65
+ index_in_lines = 0
66
+ while index_of_temp_lines < temp_lines.size do
67
+ line = temp_lines[index_of_temp_lines].encode('UTF-8', 'binary', :invalid => :replace, :undef => :replace) # remove invalid chars
68
+ if mt_940_start_line?(line)
69
+ @lines << line
70
+ index_in_lines+=1
71
+ else
72
+ @lines[index_in_lines-1] += line
73
+ end
74
+ index_of_temp_lines+=1
75
+ end
76
+ end
77
+
78
+ def mt_940_start_line?(line)
79
+ line.match /^:?\d{2}(\D?|\d?):?.*$/
80
+ end
81
+
82
+ def parse_tag_25
83
+ @line.gsub!('.', '')
84
+ case @line
85
+ when /^:\d{2}:NL/
86
+ @bank_account_iban = @line[4, 18]
87
+ @bank_account = @bank_account_iban.strip.split(//).last(10).join.sub(/^[0]*/,"")
88
+ @is_structured_format = true
89
+ when /^:\d{2}:\D*(\d*)/
90
+ @bank_account = $1.gsub(/\D/, '').gsub(/^0+/, '')
91
+ @is_structured_format = false
92
+ else
93
+ raise "Unknown format for tag 25: #{@line}"
94
+ end
95
+ @bank_statements[@bank_account] ||= []
96
+ @tag86 = false
97
+ end
98
+
99
+ def parse_tag_28
100
+ @bank_statement = BankStatement.new([], @bank_account, @bank_account_iban, 0, nil, nil)
101
+ @bank_statements[@bank_account] << @bank_statement
102
+ end
103
+
104
+ alias_method :parse_tag_28C, :parse_tag_28
105
+
106
+ def parse_tag_60F
107
+ @currency = @line[12..14]
108
+ balance_date = parse_date(@line[6..11])
109
+
110
+ type = @line[5] == 'D' ? -1 : 1
111
+ amount = @line[15..-1].gsub(",", ".").to_f * type
112
+ @bank_statement.previous_balance = Balance.new(amount, balance_date, @currency)
113
+ end
114
+
115
+ def parse_tag_62F
116
+ @currency = @line[12..14]
117
+ balance_date = parse_date(@line[6..11])
118
+
119
+ type = @line[5] == 'D' ? -1 : 1
120
+ amount = @line[15..-1].gsub(",", ".").to_f * type
121
+
122
+ @bank_statement.new_balance = Balance.new(amount, balance_date, @currency)
123
+ @tag86 = false
124
+ end
125
+
126
+ def parse_tag_61
127
+ if @line.match(/^:61:(\d{6})(C|D)(\d+),(\d{0,2})/)
128
+ type = $2 == 'D' ? -1 : 1
129
+ @transaction = MT940::Transaction.new(:bank_account => @bank_account, :amount => type * ($3 + '.' + $4).to_f, :bank => @bank, :currency => @currency)
130
+ @transaction.date = parse_date($1)
131
+ @bank_statement.transactions << @transaction
132
+ @tag86 = false
133
+ end
134
+ end
135
+
136
+ def parse_tag_86
137
+ if !@tag86 && @line.match(/^:86:\s?(.*)\Z/m)
138
+ @tag86 = true
139
+ @transaction.description = $1.gsub(/\n/, ' ').gsub(/>\d{2}/, '').strip
140
+ parse_contra_account
141
+ end
142
+ end
143
+
144
+ def parse_line
145
+ if @tag86 && @transaction.description
146
+ @transaction.description.lstrip!
147
+ @transaction.description += ' ' + @line.gsub(/\n/, ' ').gsub(/>\d{2}\s*/, '').gsub(/\-XXX/, '').gsub(/-$/, '').strip
148
+ @transaction.description.strip!
149
+ end
150
+ end
151
+
152
+ def parse_date(string)
153
+ Date.new(2000 + string[0..1].to_i, string[2..3].to_i, string[4..5].to_i) if string
154
+ end
155
+
156
+ def parse_contra_account
157
+ end
158
+
159
+ #Fail silently
160
+ def method_missing(*args)
161
+ end
162
+
163
+ end
164
+
165
+ end
@@ -0,0 +1,16 @@
1
+ module MT940::StructuredFormat
2
+ def parse_line
3
+ super unless @skip_parse_line
4
+ end
5
+
6
+ def read_all_description_lines!
7
+ @skip_parse_line = true
8
+ index = @lines.index(@line)
9
+ @lines[index+1..-1].each do |line|
10
+ break if line.match MT940::Base::MT_940_TAG_LINE
11
+ @transaction.description.lstrip!
12
+ @transaction.description += line.gsub(/\n/, '').gsub(/>\d{2}\s*/, '').gsub(/\-XXX/, '').gsub(/-$/, '').strip
13
+ @transaction.description.strip!
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module MT940
2
+
3
+ class Transaction
4
+
5
+ attr_accessor :bank_account, :bank_account_iban, :contra_account, :contra_account_iban, :amount, :type, :description, :contra_account_owner, :date, :bank, :currency
6
+
7
+ def initialize(attributes = {})
8
+ @bank_account = attributes[:bank_account]
9
+ @bank_account_iban = attributes[:bank_account_iban]
10
+ @bank = attributes[:bank]
11
+ @amount = attributes[:amount]
12
+ @type = attributes[:type]
13
+ @description = attributes[:description]
14
+ @date = attributes[:date]
15
+ @contra_account = attributes[:contra_account]
16
+ @contra_account_iban = attributes[:contra_account_iban]
17
+ @contra_account_owner = attributes[:contra_account_owner]
18
+ @currency = attributes[:currency]
19
+ end
20
+
21
+ end
22
+
23
+ end
@@ -0,0 +1,3 @@
1
+ module MT940
2
+ VERSION = '1.0'
3
+ end
data/mt940.gemspec ADDED
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ $:.push File.expand_path('../lib', __FILE__)
4
+ require 'mt940/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'zilverline-mt940'
8
+ s.version = MT940::VERSION
9
+ s.authors = ['Lars Vonk', 'Michael Franken']
10
+ s.description = %q{An extended MT940 parser with implementations for Dutch banks. Based on basic parser from http://github.com/dovadi/mt940}
11
+ s.summary = %q{MT940 parser}
12
+ s.email = %q{lvonk@zilverline.com mfranken@zilverline.com}
13
+
14
+ s.homepage = %q{https://github.com/zilverline/mt940}
15
+ s.licenses = ['MIT']
16
+
17
+ s.extra_rdoc_files = [
18
+ 'LICENSE.txt',
19
+ 'README.md'
20
+ ]
21
+
22
+ s.rubyforge_project = 'mt940'
23
+
24
+ s.add_development_dependency 'rspec'
25
+ s.add_development_dependency 'rake'
26
+
27
+ s.files = `git ls-files`.split(/\n/)
28
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split(/\n/)
29
+ s.executables = `git ls-files -- bin/*`.split(/\n/).map{ |f| File.basename(f) }
30
+ s.require_paths = ['lib']
31
+
32
+ end
@@ -0,0 +1,41 @@
1
+ ABNANL2A
2
+ 940
3
+ ABNANL2A
4
+ :20:ABN AMRO BANK NV
5
+ :25:517852257
6
+ :28:19321/1
7
+ :60F:C110522EUR3236,28
8
+ :61:1105240524D9,N192NONREF
9
+ :86:GIRO 428428 KPN - DIGITENNE BETALINGSKENM. 000000042188659
10
+ 5314606715 BETREFT FACTUUR D.D. 20-05-2011
11
+ INCL. 1,44 BTW
12
+ :61:1105210523D11,59N426NONREF
13
+ :86:BEA NR:XXX1234 21.05.11/12.54 DIRCKIII FIL2500 KATWIJK,PAS999
14
+ :61:1105230523D11,63N426NONREF
15
+ :86:BEA NR:XXX1234 23.05.11/09.08 DIGROS FIL1015 KATWIJK Z,PAS999
16
+ :61:1105220523D11,8N426NONREF
17
+ :86:BEA NR:XXX1234 22.05.11/14.25 MC DONALDS A44 LEIDEN,PAS999
18
+ :61:1105210523D13,45N426NONREF
19
+ :86:BEA NR:XXX1234 21.05.11/12.09 PRINCE FIL. 55 KATWIJK Z,PAS999
20
+ :61:1105210523D15,49N426NONREF
21
+ :86:BEA NR:XXX1234 21.05.11/12.55 DIRX FIL6017 KATWIJK ZH ,PAS999
22
+
23
+ :61:1105210523D107,N426NONREF
24
+ :86:BEA NR:XXX1234 21.05.11/12.04 HANS ANDERS OPT./056 KAT,PAS999
25
+ :61:1105220523D141,48N426NONREF
26
+ :86:BEA NR:XXX1234 22.05.11/13.45 MYCOM DEN HAAG S-GRAVEN,PAS999
27
+ :62F:C110523EUR876,84
28
+ -
29
+ ABNANL2A
30
+ 940
31
+ ABNANL2A
32
+ :20:ABN AMRO BANK NV
33
+ :25:517852257
34
+ :28:19322/1
35
+ :60F:C110523EUR2876,84
36
+ :61:1105240524D9,49N426NONREF
37
+ :86:BEA NR:XXX1234 24.05.11/09.18 PETS PLACE KATWIJK KATWI,PAS999
38
+ :61:1105240524D15,N426NONREF
39
+ :86:52.89.39.882 MYCOM DEN HAAG S-GRAVEN,PAS999
40
+ :62F:C110524EUR1849,75
41
+ -
@@ -0,0 +1,54 @@
1
+ ABNANL2A
2
+ 940
3
+ ABNANL2A
4
+ :20:ABN AMRO BANK NV
5
+ :25:123212321
6
+ :28:1301/1
7
+ :60F:C140112EUR10000,9
8
+ :61:1401110113D5,1N426NONREF
9
+ :86:BEA NR:MA1402 11.01.14/12.00 XXX XX XXXXXX AMSTERDAM ,PAS123
10
+ :61:1401130113D10,N426NONREF
11
+ :86:BEA NR:NND130 13.01.14/11.00 XXXXX 99 XXXXXX BV AMSTE,PAS123
12
+ :61:1401130113D10,N658NONREF
13
+ :86:/TRTP/SEPA OVERBOEKING/IBAN/NL25ABNA0987654321/BIC/ABNANL2A/NAME/
14
+ FOOBAR/REMI/SAVINGS/EREF/NOTPROVIDED/ORDP//ID/20
15
+ 3798473
16
+ :62F:C140113EUR9980,9
17
+ -
18
+ ABNANL2A
19
+ 940
20
+ ABNANL2A
21
+ :20:ABN AMRO BANK NV
22
+ :25:123212321
23
+ :28:2701/1
24
+ :60F:C140124EUR9980,9
25
+ :61:1401260127D4,N944NONREF
26
+ :86:SEPA IDEAL IBAN: NL70ABNA0888888888
27
+ BIC: ABNANL2A NAAM: NS GROEP INZAKE NSR IDEA
28
+ OMSCHRIJVING: 4851430136 0030000 735822580 NS E-TICKET(S)
29
+ KENMERK: 26-01-2014 18:14 003000 0735822580
30
+ :61:1401250127D1000,N422NONREF
31
+ :86:54.49.42.108 ABC BOOM KK
32
+
33
+ :61:1401260127D1000,N946NONREF
34
+ :86:SEPA ACCEPTGIROBETALING IBAN: NL86INGB0002445588
35
+ BIC: INGBNL2A NAAM: BELASTINGDIENST
36
+ BETALINGSKENM.: 1234567890098876 ID DEBITEUR: 777777777
37
+ :61:1401260127D1000,N946NONREF
38
+ :86:SEPA ACCEPTGIROBETALING IBAN: NL86INGB0002445588
39
+ BIC: INGBNL2A NAAM: BELASTINGDIENST
40
+ BETALINGSKENM.: 1234567890098876 ID DEBITEUR: 777777777
41
+ :61:1401260127D1000,N946NONREF
42
+ :86:SEPA ACCEPTGIROBETALING IBAN: NL86INGB0002445588
43
+ BIC: INGBNL2A NAAM: BELASTINGDIENST
44
+ BETALINGSKENM.: 1234567890098876 ID DEBITEUR: 777777777
45
+ :61:1401260127D1000,N946NONREF
46
+ :86:SEPA ACCEPTGIROBETALING IBAN: NL86INGB0002445588
47
+ BIC: INGBNL2A NAAM: BELASTINGDIENST
48
+ BETALINGSKENM.: 1234567890098876 ID DEBITEUR: 777777777
49
+ :61:1401260127D1000,N946NONREF
50
+ :86:SEPA ACCEPTGIROBETALING IBAN: NL86INGB0002445588
51
+ BIC: INGBNL2A NAAM: BELASTINGDIENST
52
+ BETALINGSKENM.: 1234567890098876 ID DEBITEUR: 777777777
53
+ :62F:C140127EUR3976,9
54
+ -
@@ -0,0 +1,24 @@
1
+ 0000 01INGBNL2AXXXX00001
2
+ 0000 01INGBNL2AXXXX00001
3
+ 940 00
4
+ :20:MPBZ
5
+ :25:0001234567
6
+ :28C:000
7
+ :60F:C100722EUR0,00
8
+ :61:100722D25,03NOV NONREF
9
+ :86: RC AFREKENING BETALINGSVERKEER
10
+ BETREFT REKENING 4715589 PERIODE: 01-10-2010 / 31-12-2010
11
+ ING Bank N.V. tarifering ING
12
+ :61:100722D3,03NOV NONREF
13
+ :86:0111111111 GPSEOUL SPOEDBETALING MPBZS1016000047 GPSEOUL
14
+ :61:100722D1,11NGT TMG TANGO
15
+ :86:0111111111 ING iDEAL KN: TMG TANGO TRANSACTIENR 0050000534527978 10­06­2010 15:32 TMG TANGO ING Bank inzake GPKyoto
16
+ :61:100722D20,00NGM NONREF
17
+ :86:0111111111 ABN AMRO BANK>AMSTERDAM 22­07­2010 09:57 002 5595781
18
+ :61:100722D1,10NGT NONREF
19
+ :86:0111111111 GPPeking 170000001AC
20
+ :61:100722C3,68NVZ NONREF
21
+ :86: EJ46GREENP100610T1456 CLIEOP TMG GPHONGKONG AMSTERDAM
22
+ :62F:C100723EUR3,47
23
+ :86:D000004C000002D25,24C28,71
24
+ -XXX
@@ -0,0 +1,31 @@
1
+ 0000 01INGBNL2AXXXX00001
2
+ 0000 01INGBNL2AXXXX00001
3
+ 940 00
4
+ :20:MPBZ
5
+ :25:0001234567
6
+ :28C:000
7
+ :60F:C130630EUR500,00
8
+ :61:130701D10,00NDV NONREF
9
+ :86: RC afrekening betalingsverkeer
10
+ Factuurnr. 123456 Betreft rekening 12.34.567
11
+ Periode: 01-04-2013 / 30-06-2013
12
+ :61:130701C300,00NOV NONREF
13
+ :86:0001234567 VAN Zkl Kwartaal Spaarrekening
14
+ :61:130701D400,00NGT EREF
15
+ :86:NL57ABNA0987654321 ABNANL2A J AAP NOTPROVIDED kilometervergoed
16
+ ing 2e kwartaal 2013
17
+ :61:130702D6,00NGT EREF
18
+ :86:NL57ABNA0987654321 ABNANL2A J AAP / FOO B.V. NOTPROVIDED parkeren
19
+ :61:130715D7000,00NGT 8850426741301240
20
+ :86:NL86INGB0002445588 INGBNL2A BELASTINGDIENST BTW 2e kwartaal 2013
21
+ SCOR/CUR/8850426741301240
22
+ :61:130715C400,00NOV NONREF
23
+ :86:0001234567 VAN Zkl Kwartaal Spaarrekening
24
+ :61:130930D100,00NGT EREF
25
+ :86:NL57ABNA0987654321 ABNANL2A J AAP kilometervergoeding 3e kwart
26
+ aal
27
+ :62F:C131001EUR400,00
28
+ :64:C131001EUR300,00
29
+ :65:C130630EUR200,00
30
+ :86:D000046C000017D10000,18C20000,00
31
+ -XXX
@@ -0,0 +1,140 @@
1
+ :940:
2
+ :20:940A121001
3
+ :25:2121.21.211EUR
4
+ :28:00000/00
5
+ :60F:C120928EUR000000017431,67
6
+ :61:121001D000000000050,00N0701313131319 J. DOE
7
+ :86:Incasso deposit Savings Account
8
+ :62F:C121001EUR000000017381,67
9
+ :20:940A121002
10
+ :25:2121.21.211EUR
11
+ :28:00000/00
12
+ :60F:C121001EUR000000017381,67
13
+ :62F:C121002EUR000000017381,67
14
+ :20:940A121003
15
+ :25:2121.21.211EUR
16
+ :28:00000/00
17
+ :60F:C121002EUR000000017381,67
18
+ :62F:C121003EUR000000017381,67
19
+ :20:940A121004
20
+ :25:2121.21.211EUR
21
+ :28:00000/00
22
+ :60F:C121003EUR000000017381,67
23
+ :61:121001D000000000030,25N093NONREF Kosten
24
+ :86:Periode 01-07-2012 t/m 30-09-2012
25
+ :62F:C121004EUR000000017351,42
26
+ :20:940A121005
27
+ :25:2121.21.211EUR
28
+ :28:00000/00
29
+ :60F:C121004EUR000000017351,42
30
+ :62F:C121005EUR000000017351,42
31
+ :20:940A121008
32
+ :25:2121.21.211EUR
33
+ :28:00000/00
34
+ :60F:C121005EUR000000017351,42
35
+ :61:121008D000000000190,14N0600101000731 INSURRANCE
36
+ :86:BETALINGSKENM. 490022201282
37
+ :86:ARBEIDS ONG. VERZ. 00333333333
38
+ :86:PERIODE 06.10.2012 - 06.11.2012
39
+ :62F:C121008EUR000000017161,28
40
+ :20:940A121009
41
+ :25:2121.21.211EUR
42
+ :28:00000/00
43
+ :60F:C121008EUR000000017161,28
44
+ :62F:C121009EUR000000017161,28
45
+ :20:940A121010
46
+ :25:2121.21.211EUR
47
+ :28:00000/00
48
+ :60F:C121009EUR000000017161,28
49
+ :62F:C121010EUR000000017161,28
50
+ :20:940A121011
51
+ :25:2121.21.211EUR
52
+ :28:00000/00
53
+ :60F:C121010EUR000000017161,28
54
+ :62F:C121011EUR000000017161,28
55
+ :20:940A121012
56
+ :25:2121.21.211EUR
57
+ :28:00000/00
58
+ :60F:C121011EUR000000017161,28
59
+ :62F:C121012EUR000000017161,28
60
+ :20:940A121015
61
+ :25:2121.21.211EUR
62
+ :28:00000/00
63
+ :60F:C121012EUR000000017161,28
64
+ :61:121014D000000000037,50N0710121212122 NEWPAPER
65
+ :86:L20129999 741
66
+ :61:121014D000000000037,50N0710121212122 NEWPAPER
67
+ :86:L20119999 741
68
+ :62F:C121015EUR000000017086,28
69
+ :20:940A121016
70
+ :25:2121.21.211EUR
71
+ :28:00000/00
72
+ :60F:C121015EUR000000017086,28
73
+ :62F:C121016EUR000000017086,28
74
+ :20:940A121017
75
+ :25:2121.21.211EUR
76
+ :28:00000/00
77
+ :60F:C121016EUR000000017086,28
78
+ :61:121017D000000000088,06N0710454545454 Accountant
79
+ :86:factuur 201232621
80
+ :61:121017C000000012100,00N1270987654321 COMPANY B.V.
81
+ :86:Invoice
82
+ :62F:C121017EUR000000029098,22
83
+ :20:940A121018
84
+ :25:2121.21.211EUR
85
+ :28:00000/00
86
+ :60F:C121017EUR000000029098,22
87
+ :62F:C121018EUR000000029098,22
88
+ :20:940A121019
89
+ :25:2121.21.211EUR
90
+ :28:00000/00
91
+ :60F:C121018EUR000000029098,22
92
+ :61:121019D000000004019,23N5090767676767 J. DOE EO
93
+ :86:salaris
94
+ :62F:C121019EUR000000025078,99
95
+ :20:940A121022
96
+ :25:2121.21.211EUR
97
+ :28:00000/00
98
+ :60F:C121019EUR000000025078,99
99
+ :62F:C121022EUR000000025078,99
100
+ :20:940A121023
101
+ :25:2121.21.211EUR
102
+ :28:00000/00
103
+ :60F:C121022EUR000000025078,99
104
+ :62F:C121023EUR000000025078,99
105
+ :20:940A121024
106
+ :25:2121.21.211EUR
107
+ :28:00000/00
108
+ :60F:C121023EUR000000025078,99
109
+ :62F:C121024EUR000000025078,99
110
+ :20:940A121025
111
+ :25:2121.21.211EUR
112
+ :28:00000/00
113
+ :60F:C121024EUR000000025078,99
114
+ :61:121025D000000003076,00N084P002445588 Belastingdienst
115
+ :86:BETALINGSKENM. 2828282828282828
116
+ :62F:C121025EUR000000022002,99
117
+ :20:940A121026
118
+ :25:2121.21.211EUR
119
+ :28:00000/00
120
+ :60F:C121025EUR000000022002,99
121
+ :61:121026D000000005327,00N084P002445588 Belastingdienst
122
+ :86:BETALINGSKENM. 3838383838383838
123
+ :61:121026D000000010000,00N0716666666666 J. DOE Holding B.V.
124
+ :62F:C121026EUR000000006675,99
125
+ :20:940A121029
126
+ :25:2121.21.211EUR
127
+ :28:00000/00
128
+ :60F:C121026EUR000000006675,99
129
+ :62F:C121029EUR000000006675,99
130
+ :20:940A121030
131
+ :25:2121.21.211EUR
132
+ :28:00000/00
133
+ :60F:C121029EUR000000006675,99
134
+ :62F:C121030EUR000000006675,99
135
+ :20:940A121031
136
+ :25:2121.21.211EUR
137
+ :28:00000/00
138
+ :60F:C121030EUR000000006675,99
139
+ :62F:C121031EUR000000006675,99
140
+