mt940_parser 1.4.1 → 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 6583d3241b3e23eb88a51f25872943ae27dd1a3a
4
- data.tar.gz: ce62a74b3a9c0795ae92dc9c6739791acc10c341
2
+ SHA256:
3
+ metadata.gz: '092f1e507213d85a4c94c5685e55a49c7dc9246ee6188c4c5d2cc7609355fa31'
4
+ data.tar.gz: 021d003331e57253a8e05e20847ebcdb0bbfbc173062960014cb99cf4cae081b
5
5
  SHA512:
6
- metadata.gz: ed5cbc27df2583262ae2a321040b6076406cfc11a39a29e0feb4ef6f0d00eae144c56cabaa879fe912a158eb6899bf32fb5c176ac1adeb1aea1a80970bcef4e8
7
- data.tar.gz: a0025cb263cddb8305c174a6d05247fb05a4215ad8970dfeadccfb35aa93a261672877d72e5be11beea8984c0de0cf05a47214236cb633b0c251f40772263957
6
+ metadata.gz: 54df6bec1b0ed2b7e6e8b63b3ef710ab886b78df5da253e977ad68f893d5118c8f189faaeca400305f01cf34fdd8368a12ccdf6934aca454a1a702e71ae63533
7
+ data.tar.gz: ac777c871fd6c0fd1e51461cf5ee2509085197e7036cda2aa297ebe05dfa90d473e61c45da9633f63c8670e3d30cd6e94001ce39a833dbc70b2157658c9a0190
data/.document CHANGED
@@ -1,4 +1,4 @@
1
- README.rdoc
1
+ README.md
2
2
  lib/**/*.rb
3
3
  bin/*
4
4
  features/**/*.feature
data/.specification CHANGED
@@ -1,8 +1,8 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mt940
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
4
  hash: 23
5
- segments:
5
+ segments:
6
6
  - 1
7
7
  - 0
8
8
  - 0
@@ -10,58 +10,57 @@ version: !ruby/object:Gem::Version
10
10
  platform: ruby
11
11
  authors: []
12
12
 
13
- autorequire:
13
+ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
17
  date: 2010-03-24 00:00:00 +01:00
18
- default_executable:
18
+ default_executable:
19
19
  dependencies: []
20
20
 
21
- description:
22
- email:
21
+ description:
22
+ email:
23
23
  executables: []
24
24
 
25
25
  extensions: []
26
26
 
27
27
  extra_rdoc_files: []
28
28
 
29
- files:
29
+ files:
30
30
  - lib
31
31
  - lib/mt940.rb
32
- has_rdoc: true
33
- homepage:
32
+ has_rdoc: false
33
+ homepage:
34
34
  licenses: []
35
35
 
36
- post_install_message:
36
+ post_install_message:
37
37
  rdoc_options: []
38
38
 
39
- require_paths:
39
+ require_paths:
40
40
  - lib
41
- required_ruby_version: !ruby/object:Gem::Requirement
42
- requirements:
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
43
  - - ">="
44
- - !ruby/object:Gem::Version
44
+ - !ruby/object:Gem::Version
45
45
  hash: 3
46
- segments:
46
+ segments:
47
47
  - 0
48
48
  version: "0"
49
- version:
50
- required_rubygems_version: !ruby/object:Gem::Requirement
51
- requirements:
49
+ version:
50
+ required_rubygems_version: !ruby/object:Gem::Requirement
51
+ requirements:
52
52
  - - ">="
53
- - !ruby/object:Gem::Version
53
+ - !ruby/object:Gem::Version
54
54
  hash: 3
55
- segments:
55
+ segments:
56
56
  - 0
57
57
  version: "0"
58
- version:
58
+ version:
59
59
  requirements: []
60
60
 
61
- rubyforge_project:
61
+ rubyforge_project:
62
62
  rubygems_version: 1.3.7
63
- signing_key:
63
+ signing_key:
64
64
  specification_version: 3
65
- summary:
65
+ summary:
66
66
  test_files: []
67
-
data/.travis.yml CHANGED
@@ -1,10 +1,18 @@
1
+ before_install:
2
+ - gem update --system
3
+ - gem update bundler
4
+
1
5
  rvm:
2
- - 2.0
3
6
  - 2.1
4
7
  - 2.2
8
+ - 2.3
9
+ - 2.4
10
+ - 2.5
5
11
  - ruby-head
6
12
  - jruby-head
7
13
  matrix:
8
14
  allow_failures:
9
15
  - rvm: ruby-head
10
16
  - rvm: jruby-head
17
+
18
+ sudo: false
@@ -1,12 +1,14 @@
1
- = mt940
1
+ [![Gem Version](https://badge.fury.io/rb/mt940_parser.svg)](http://badge.fury.io/rb/mt940_parser) [![Build Status](https://secure.travis-ci.org/betterplace/mt940_parser.svg?branch=master)](http://travis-ci.org/betterplace/mt940_parser)
2
2
 
3
- This is a library to parse account statements which are formatted as SWIFT mt940.
3
+ # mt940_parser
4
+
5
+ This is a library to parse account statements which are formatted as SWIFT mt940.
4
6
 
5
7
  See the following link for documentation of the format.
6
8
  http://www.google.de/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http%3A%2F%2Fmartin.hinner.info%2Fbankconvert%2Fswift_mt940_942.pdf&ei=alO_TObpPNGRswbD15WqDQ&usg=AFQjCNHkVGOfzofgKkk6dEkynAho02S2cg
7
9
 
8
- == Note on Patches/Pull Requests
9
-
10
+ ## Note on Patches/Pull Requests
11
+
10
12
  * Fork the project.
11
13
  * Make your feature addition or bug fix.
12
14
  * Add tests for it. This is important so I don't break it in a
@@ -15,6 +17,6 @@ http://www.google.de/url?sa=t&source=web&cd=1&ved=0CBwQFjAA&url=http%3A%2F%2Fmar
15
17
  (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
16
18
  * Send me a pull request. Bonus points for topic branches.
17
19
 
18
- == Copyright
20
+ ## Copyright
19
21
 
20
22
  Copyright (c) 2010 Thies C. Arntzen. See LICENSE for details.
data/Rakefile CHANGED
@@ -18,11 +18,10 @@ GemHadar do
18
18
  ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', 'coverage',
19
19
  '.DS_Store', '.ruby-gemset', '.ruby-version', '.bundle', '.AppleDouble'
20
20
 
21
- readme 'README.rdoc'
21
+ readme 'README.md'
22
22
  licenses 'MIT'
23
23
 
24
24
  development_dependency 'test-unit'
25
- development_dependency 'simplecov'
26
25
  end
27
26
 
28
27
  task :default => :test
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.1
1
+ 1.5.3
data/lib/mt940.rb CHANGED
@@ -2,6 +2,8 @@ require 'mt940/version'
2
2
  require 'mt940/errors'
3
3
  require 'mt940/customer_statement_message'
4
4
  require 'bigdecimal'
5
+ require 'bigdecimal/util'
6
+ require 'date'
5
7
 
6
8
  class MT940
7
9
  class Field
@@ -13,12 +15,12 @@ class MT940
13
15
  class << self
14
16
 
15
17
  def for(line)
16
- if line.match(/^:(\d{2,2})(\w)?:(.*)$/)
18
+ if line.match(/^:(\d{2})(\w)?:(.*)$/)
17
19
  number, modifier, content = $1, $2, $3
18
20
  klass = {
19
21
  '20' => Job,
20
22
  '21' => Reference,
21
- '25' => Account,
23
+ '25' => AccountIdentification,
22
24
  '28' => Statement,
23
25
  '60' => AccountBalance,
24
26
  '61' => StatementLine,
@@ -48,17 +50,17 @@ class MT940
48
50
  def parse_amount_in_cents(amount)
49
51
  amount =~ /\A(\d+)(,\d*)?\z/ or
50
52
  raise Errors::InvalidAmountFormatError, "invalid amount #{amount.inspect}"
51
- (100 * BigDecimal.new(amount.sub(?,, ?.))).floor
53
+ (100 * amount.sub(',', '.').sub(/\.\z/, '').to_d).floor
52
54
  end
53
55
 
54
56
  def parse_date(date)
55
57
  date.match(DATE)
56
- Date.new("20#{$1}".to_i, $2.to_i, $3.to_i)
58
+ ::Date.new("20#{$1}".to_i, $2.to_i, $3.to_i)
57
59
  end
58
60
 
59
61
  def parse_entry_date(raw_entry_date, value_date)
60
62
  raw_entry_date.match(SHORT_DATE)
61
- entry_date = Date.new(value_date.year, $1.to_i, $2.to_i)
63
+ entry_date = ::Date.new(value_date.year, $1.to_i, $2.to_i)
62
64
  unless entry_date.year == value_date.year
63
65
  raise "Unhandled case: value date and entry date are in different years"
64
66
  end
@@ -80,6 +82,30 @@ class MT940
80
82
  end
81
83
 
82
84
  # 25
85
+ class AccountIdentification < Field
86
+ attr_reader :account_identifier
87
+ CONTENT = /(.{1,35})/ #any 35 chars (35x from the docs)
88
+
89
+ def parse_content(content)
90
+ content.match(CONTENT)
91
+ @account_identifier = $1
92
+ end
93
+
94
+ # fail over to the old Account class
95
+ def method_missing(method, *args, &block)
96
+ @fail_over_implementation ||= Account.new(@modifier, @content)
97
+ value = @fail_over_implementation.send(method)
98
+ warn "[DEPRECATION]:"
99
+ warn "You used '#{method}' on the Account/AccountIdentification class"
100
+ warn "This field is not part of the MT940 specification but implementation specific"
101
+ warn "Please use the 'account_identifier' and parse yourself."
102
+
103
+ value
104
+ end
105
+ end
106
+
107
+ # 25 - Legacy
108
+ # This class is deprecated as it does not match the spec.
83
109
  class Account < Field
84
110
  attr_reader :bank_code, :account_number, :account_currency
85
111
 
@@ -141,7 +167,7 @@ class MT940
141
167
  when 'ALT', '0'
142
168
  nil
143
169
  when DATE
144
- Date.new("20#{$1}".to_i, $2.to_i, $3.to_i)
170
+ ::Date.new("20#{$1}".to_i, $2.to_i, $3.to_i)
145
171
  end
146
172
  end
147
173
  end
@@ -246,8 +272,10 @@ class MT940
246
272
  class << self
247
273
  def parse(text)
248
274
  new_text = text.encode('UTF-8').strip
249
- new_text << "\r\n" if new_text[-1,1] == '-'
250
- raw_sheets = new_text.split(/^-\s*\r\n/).map { |sheet| sheet.gsub(/\r\n(?!:)/, '') }
275
+ new_text << "\r\n" if new_text.end_with?('-')
276
+ raw_sheets = new_text.split(/^-\s*\r\n/).map do |sheet|
277
+ sheet.gsub(/\r\n(?!:\d{2}\w?:)/, '')
278
+ end
251
279
  sheets = raw_sheets.map { |raw_sheet| parse_sheet(raw_sheet) }
252
280
  end
253
281
 
@@ -4,7 +4,7 @@
4
4
  class MT940
5
5
  class CustomerStatementMessage
6
6
 
7
- attr_reader :statement_lines
7
+ attr_reader :account, :statement_lines
8
8
 
9
9
  def self.parse_file(file)
10
10
  self.parse(File.read(file))
@@ -16,7 +16,7 @@ class MT940
16
16
  end
17
17
 
18
18
  def initialize(lines)
19
- @account = lines.find { |line| line.class == MT940::Account }
19
+ @account = lines.find { |line| line.class == MT940::AccountIdentification }
20
20
  @statement_lines = []
21
21
  lines.each_with_index do |line, i|
22
22
  next unless line.class == MT940::StatementLine
data/lib/mt940/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  class MT940
2
2
  # MT940 version
3
- VERSION = '1.4.1'
3
+ VERSION = '1.5.3'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
data/mt940_parser.gemspec CHANGED
@@ -1,40 +1,34 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: mt940_parser 1.4.1 ruby lib
2
+ # stub: mt940_parser 1.5.3 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
- s.name = "mt940_parser"
6
- s.version = "1.4.1"
5
+ s.name = "mt940_parser".freeze
6
+ s.version = "1.5.3"
7
7
 
8
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
- s.require_paths = ["lib"]
10
- s.authors = ["Thies C. Arntzen", "Phillip Oertel"]
11
- s.date = "2015-07-09"
12
- s.description = "Ruby library that parses account statements in the SWIFT MT940 format."
13
- s.email = "developers@betterplace.org"
14
- s.extra_rdoc_files = ["README.rdoc", "lib/mt940.rb", "lib/mt940/customer_statement_message.rb", "lib/mt940/errors.rb", "lib/mt940/version.rb"]
15
- s.files = [".document", ".gitignore", ".specification", ".travis.yml", "Gemfile", "LICENSE", "README.rdoc", "Rakefile", "VERSION", "VERSION.yml", "docs/0E0Y00DNY.pdf", "docs/FinTS_4.0_Formals.pdf", "docs/FinTS_4.0_Messages_Finanzdatenformate.pdf", "docs/MT940_Deutschland_Structure2002.pdf", "docs/SEPA_20MT940__Schnittstellenbeschreibung.pdf", "docs/mt940.pdf", "docs/swift_mt940_942.pdf", "docs/uebersicht_der_geschaeftsvorfallcodes_und_buchungs_textschluessel.pdf", "lib/mt940.rb", "lib/mt940/customer_statement_message.rb", "lib/mt940/errors.rb", "lib/mt940/version.rb", "mt940_parser.gemspec", "test/fixtures/amount_formats.txt", "test/fixtures/amount_formats.yml", "test/fixtures/currency_in_25.txt", "test/fixtures/currency_in_25.yml", "test/fixtures/empty_86.txt", "test/fixtures/empty_86.yml", "test/fixtures/empty_entry_date.txt", "test/fixtures/empty_entry_date.yml", "test/fixtures/empty_line.txt", "test/fixtures/empty_line.yml", "test/fixtures/missing_crlf_at_end.txt", "test/fixtures/missing_crlf_at_end.yml", "test/fixtures/sepa_mt9401.txt", "test/fixtures/sepa_mt9401.yml", "test/fixtures/sepa_snippet.txt", "test/fixtures/sepa_snippet_broken.txt", "test/fixtures/with_binary_character.txt", "test/fixtures/with_binary_character.yml", "test/helper.rb", "test/test_customer_statement_message.rb", "test/test_mt940.rb"]
16
- s.homepage = "http://github.com/betterplace/mt940_parser"
17
- s.licenses = ["MIT"]
18
- s.rdoc_options = ["--title", "Mt940Parser - MT940 parses account statements in the SWIFT MT940 format.", "--main", "README.rdoc"]
19
- s.rubygems_version = "2.4.8"
20
- s.summary = "MT940 parses account statements in the SWIFT MT940 format."
21
- s.test_files = ["test/test_customer_statement_message.rb", "test/test_mt940.rb"]
8
+ s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
+ s.require_paths = ["lib".freeze]
10
+ s.authors = ["Thies C. Arntzen".freeze, "Phillip Oertel".freeze]
11
+ s.date = "2021-06-17"
12
+ s.description = "Ruby library that parses account statements in the SWIFT MT940 format.".freeze
13
+ s.email = "developers@betterplace.org".freeze
14
+ s.extra_rdoc_files = ["README.md".freeze, "lib/mt940.rb".freeze, "lib/mt940/customer_statement_message.rb".freeze, "lib/mt940/errors.rb".freeze, "lib/mt940/version.rb".freeze]
15
+ s.files = [".document".freeze, ".gitignore".freeze, ".specification".freeze, ".travis.yml".freeze, "Gemfile".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "VERSION".freeze, "docs/0E0Y00DNY.pdf".freeze, "docs/FinTS_4.0_Formals.pdf".freeze, "docs/FinTS_4.0_Messages_Finanzdatenformate.pdf".freeze, "docs/MT940_Deutschland_Structure2002.pdf".freeze, "docs/SEPA_20MT940__Schnittstellenbeschreibung.pdf".freeze, "docs/mt940.pdf".freeze, "docs/swift_mt940_942.pdf".freeze, "docs/uebersicht_der_geschaeftsvorfallcodes_und_buchungs_textschluessel.pdf".freeze, "lib/mt940.rb".freeze, "lib/mt940/customer_statement_message.rb".freeze, "lib/mt940/errors.rb".freeze, "lib/mt940/version.rb".freeze, "mt940_parser.gemspec".freeze, "test/fixtures/amount_formats.txt".freeze, "test/fixtures/amount_formats.yml".freeze, "test/fixtures/colon_in_descriptor.txt".freeze, "test/fixtures/colon_in_descriptor.yml".freeze, "test/fixtures/currency_in_25.txt".freeze, "test/fixtures/currency_in_25.yml".freeze, "test/fixtures/empty_86.txt".freeze, "test/fixtures/empty_86.yml".freeze, "test/fixtures/empty_entry_date.txt".freeze, "test/fixtures/empty_entry_date.yml".freeze, "test/fixtures/empty_line.txt".freeze, "test/fixtures/empty_line.yml".freeze, "test/fixtures/missing_crlf_at_end.txt".freeze, "test/fixtures/missing_crlf_at_end.yml".freeze, "test/fixtures/sepa_mt9401.txt".freeze, "test/fixtures/sepa_mt9401.yml".freeze, "test/fixtures/sepa_snippet.txt".freeze, "test/fixtures/sepa_snippet_broken.txt".freeze, "test/fixtures/with_binary_character.txt".freeze, "test/fixtures/with_binary_character.yml".freeze, "test/test_account_identifier.rb".freeze, "test/test_customer_statement_message.rb".freeze, "test/test_helper.rb".freeze, "test/test_mt940.rb".freeze]
16
+ s.homepage = "http://github.com/betterplace/mt940_parser".freeze
17
+ s.licenses = ["MIT".freeze]
18
+ s.rdoc_options = ["--title".freeze, "Mt940Parser - MT940 parses account statements in the SWIFT MT940 format.".freeze, "--main".freeze, "README.md".freeze]
19
+ s.rubygems_version = "3.2.3".freeze
20
+ s.summary = "MT940 parses account statements in the SWIFT MT940 format.".freeze
21
+ s.test_files = ["test/test_account_identifier.rb".freeze, "test/test_customer_statement_message.rb".freeze, "test/test_helper.rb".freeze, "test/test_mt940.rb".freeze]
22
22
 
23
23
  if s.respond_to? :specification_version then
24
24
  s.specification_version = 4
25
+ end
25
26
 
26
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
- s.add_development_dependency(%q<gem_hadar>, ["~> 1.0.0"])
28
- s.add_development_dependency(%q<test-unit>, [">= 0"])
29
- s.add_development_dependency(%q<simplecov>, [">= 0"])
30
- else
31
- s.add_dependency(%q<gem_hadar>, ["~> 1.0.0"])
32
- s.add_dependency(%q<test-unit>, [">= 0"])
33
- s.add_dependency(%q<simplecov>, [">= 0"])
34
- end
27
+ if s.respond_to? :add_runtime_dependency then
28
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
29
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0"])
35
30
  else
36
- s.add_dependency(%q<gem_hadar>, ["~> 1.0.0"])
37
- s.add_dependency(%q<test-unit>, [">= 0"])
38
- s.add_dependency(%q<simplecov>, [">= 0"])
31
+ s.add_dependency(%q<gem_hadar>.freeze, ["~> 1.11.0"])
32
+ s.add_dependency(%q<test-unit>.freeze, [">= 0"])
39
33
  end
40
34
  end
@@ -0,0 +1,3 @@
1
+ :86:166?20Spende abcdefghijklmnopqrstuvwxyzabcde Verwendungszweck
2
+ : ?701234567 Betterplace?30ABCDEFGH?31DE12345678912345789012?32Ab
3
+ cdefg Hijklmnop
@@ -0,0 +1,13 @@
1
+ ---
2
+ - - !ruby/object:MT940::StatementLineInformation
3
+ modifier:
4
+ content: '166?20Spende abcdefghijklmnopqrstuvwxyzabcde Verwendungszweck: ?701234567
5
+ Betterplace?30ABCDEFGH?31DE12345678912345789012?32Abcdefg Hijklmnop'
6
+ code: 166
7
+ bank_code: ABCDEFGH
8
+ account_number: DE12345678912345789012
9
+ not_implemented_fields:
10
+ - - '70'
11
+ - 1234567 Betterplace
12
+ details: 'Spende abcdefghijklmnopqrstuvwxyzabcde Verwendungszweck: '
13
+ account_holder: Abcdefg Hijklmnop
@@ -1,7 +1,5 @@
1
1
  ---
2
- - - !ruby/object:MT940::Account
2
+ - - !ruby/object:MT940::AccountIdentification
3
3
  modifier:
4
4
  content: 51210600/9223382012EUR
5
- bank_code: '51210600'
6
- account_number: '9223382012'
7
- account_currency: EUR
5
+ account_identifier: 51210600/9223382012EUR
@@ -3,12 +3,10 @@
3
3
  modifier:
4
4
  content: T089413946000001
5
5
  reference: T089413946000001
6
- - !ruby/object:MT940::Account
6
+ - !ruby/object:MT940::AccountIdentification
7
7
  modifier:
8
8
  content: 50880050/0194774600888
9
- bank_code: '50880050'
10
- account_number: 0194774600888
11
- account_currency:
9
+ account_identifier: 50880050/0194774600888
12
10
  - !ruby/object:MT940::Statement
13
11
  modifier: C
14
12
  content: 00004/00001
@@ -192,12 +190,10 @@
192
190
  modifier:
193
191
  content: T089413956000001
194
192
  reference: T089413956000001
195
- - !ruby/object:MT940::Account
193
+ - !ruby/object:MT940::AccountIdentification
196
194
  modifier:
197
195
  content: 50880050/0194777100888
198
- bank_code: '50880050'
199
- account_number: 0194777100888
200
- account_currency:
196
+ account_identifier: 50880050/0194777100888
201
197
  - !ruby/object:MT940::Statement
202
198
  modifier: C
203
199
  content: 00004/00001
@@ -297,12 +293,10 @@
297
293
  modifier:
298
294
  content: T089413966000001
299
295
  reference: T089413966000001
300
- - !ruby/object:MT940::Account
296
+ - !ruby/object:MT940::AccountIdentification
301
297
  modifier:
302
298
  content: 50880050/0194778300888
303
- bank_code: '50880050'
304
- account_number: 0194778300888
305
- account_currency:
299
+ account_identifier: 50880050/0194778300888
306
300
  - !ruby/object:MT940::Statement
307
301
  modifier: C
308
302
  content: 00004/00001
@@ -477,12 +471,10 @@
477
471
  modifier:
478
472
  content: T089413976000001
479
473
  reference: T089413976000001
480
- - !ruby/object:MT940::Account
474
+ - !ruby/object:MT940::AccountIdentification
481
475
  modifier:
482
476
  content: 50880050/0194779500888
483
- bank_code: '50880050'
484
- account_number: 0194779500888
485
- account_currency:
477
+ account_identifier: 50880050/0194779500888
486
478
  - !ruby/object:MT940::Statement
487
479
  modifier: C
488
480
  content: 00004/00001
@@ -605,12 +597,10 @@
605
597
  modifier:
606
598
  content: T089413986000001
607
599
  reference: T089413986000001
608
- - !ruby/object:MT940::Account
600
+ - !ruby/object:MT940::AccountIdentification
609
601
  modifier:
610
602
  content: 50880050/0194780100888
611
- bank_code: '50880050'
612
- account_number: 0194780100888
613
- account_currency:
603
+ account_identifier: 50880050/0194780100888
614
604
  - !ruby/object:MT940::Statement
615
605
  modifier: C
616
606
  content: 00004/00001
@@ -751,12 +741,10 @@
751
741
  modifier:
752
742
  content: T089413996000001
753
743
  reference: T089413996000001
754
- - !ruby/object:MT940::Account
744
+ - !ruby/object:MT940::AccountIdentification
755
745
  modifier:
756
746
  content: 50880050/0194780101888
757
- bank_code: '50880050'
758
- account_number: 0194780101888
759
- account_currency:
747
+ account_identifier: 50880050/0194780101888
760
748
  - !ruby/object:MT940::Statement
761
749
  modifier: C
762
750
  content: 00004/00001
@@ -818,12 +806,10 @@
818
806
  modifier:
819
807
  content: T089414006000001
820
808
  reference: T089414006000001
821
- - !ruby/object:MT940::Account
809
+ - !ruby/object:MT940::AccountIdentification
822
810
  modifier:
823
811
  content: 50880050/0194781300888
824
- bank_code: '50880050'
825
- account_number: 0194781300888
826
- account_currency:
812
+ account_identifier: 50880050/0194781300888
827
813
  - !ruby/object:MT940::Statement
828
814
  modifier: C
829
815
  content: 00004/00001
@@ -985,12 +971,10 @@
985
971
  modifier:
986
972
  content: T089414006000002
987
973
  reference: T089414006000002
988
- - !ruby/object:MT940::Account
974
+ - !ruby/object:MT940::AccountIdentification
989
975
  modifier:
990
976
  content: 50880050/0194781300888
991
- bank_code: '50880050'
992
- account_number: 0194781300888
993
- account_currency:
977
+ account_identifier: 50880050/0194781300888
994
978
  - !ruby/object:MT940::Statement
995
979
  modifier: C
996
980
  content: 00004/00002
@@ -1158,12 +1142,10 @@
1158
1142
  modifier:
1159
1143
  content: T089414016000001
1160
1144
  reference: T089414016000001
1161
- - !ruby/object:MT940::Account
1145
+ - !ruby/object:MT940::AccountIdentification
1162
1146
  modifier:
1163
1147
  content: 50880050/0194782500888
1164
- bank_code: '50880050'
1165
- account_number: 0194782500888
1166
- account_currency:
1148
+ account_identifier: 50880050/0194782500888
1167
1149
  - !ruby/object:MT940::Statement
1168
1150
  modifier: C
1169
1151
  content: 00004/00001
@@ -1383,12 +1365,10 @@
1383
1365
  modifier:
1384
1366
  content: T089414016000002
1385
1367
  reference: T089414016000002
1386
- - !ruby/object:MT940::Account
1368
+ - !ruby/object:MT940::AccountIdentification
1387
1369
  modifier:
1388
1370
  content: 50880050/0194782500888
1389
- bank_code: '50880050'
1390
- account_number: 0194782500888
1391
- account_currency:
1371
+ account_identifier: 50880050/0194782500888
1392
1372
  - !ruby/object:MT940::Statement
1393
1373
  modifier: C
1394
1374
  content: 00004/00002
@@ -1490,12 +1470,10 @@
1490
1470
  modifier:
1491
1471
  content: T089414026000001
1492
1472
  reference: T089414026000001
1493
- - !ruby/object:MT940::Account
1473
+ - !ruby/object:MT940::AccountIdentification
1494
1474
  modifier:
1495
1475
  content: 50880050/0194783700888
1496
- bank_code: '50880050'
1497
- account_number: 0194783700888
1498
- account_currency:
1476
+ account_identifier: 50880050/0194783700888
1499
1477
  - !ruby/object:MT940::Statement
1500
1478
  modifier: C
1501
1479
  content: 00004/00001
@@ -1685,12 +1663,10 @@
1685
1663
  modifier:
1686
1664
  content: T089414026000002
1687
1665
  reference: T089414026000002
1688
- - !ruby/object:MT940::Account
1666
+ - !ruby/object:MT940::AccountIdentification
1689
1667
  modifier:
1690
1668
  content: 50880050/0194783700888
1691
- bank_code: '50880050'
1692
- account_number: 0194783700888
1693
- account_currency:
1669
+ account_identifier: 50880050/0194783700888
1694
1670
  - !ruby/object:MT940::Statement
1695
1671
  modifier: C
1696
1672
  content: 00004/00002
@@ -1878,12 +1854,10 @@
1878
1854
  modifier:
1879
1855
  content: T089414036000001
1880
1856
  reference: T089414036000001
1881
- - !ruby/object:MT940::Account
1857
+ - !ruby/object:MT940::AccountIdentification
1882
1858
  modifier:
1883
1859
  content: 50880050/0194784900888
1884
- bank_code: '50880050'
1885
- account_number: 0194784900888
1886
- account_currency:
1860
+ account_identifier: 50880050/0194784900888
1887
1861
  - !ruby/object:MT940::Statement
1888
1862
  modifier: C
1889
1863
  content: 00004/00001
@@ -2068,12 +2042,10 @@
2068
2042
  modifier:
2069
2043
  content: T089414036000002
2070
2044
  reference: T089414036000002
2071
- - !ruby/object:MT940::Account
2045
+ - !ruby/object:MT940::AccountIdentification
2072
2046
  modifier:
2073
2047
  content: 50880050/0194784900888
2074
- bank_code: '50880050'
2075
- account_number: 0194784900888
2076
- account_currency:
2048
+ account_identifier: 50880050/0194784900888
2077
2049
  - !ruby/object:MT940::Statement
2078
2050
  modifier: C
2079
2051
  content: 00004/00002
@@ -2173,12 +2145,10 @@
2173
2145
  modifier:
2174
2146
  content: T089414046000001
2175
2147
  reference: T089414046000001
2176
- - !ruby/object:MT940::Account
2148
+ - !ruby/object:MT940::AccountIdentification
2177
2149
  modifier:
2178
2150
  content: 50880050/0194784901888
2179
- bank_code: '50880050'
2180
- account_number: 0194784901888
2181
- account_currency:
2151
+ account_identifier: 50880050/0194784901888
2182
2152
  - !ruby/object:MT940::Statement
2183
2153
  modifier: C
2184
2154
  content: 00003/00001
@@ -2245,12 +2215,10 @@
2245
2215
  modifier:
2246
2216
  content: T089414056000001
2247
2217
  reference: T089414056000001
2248
- - !ruby/object:MT940::Account
2218
+ - !ruby/object:MT940::AccountIdentification
2249
2219
  modifier:
2250
2220
  content: 50880050/0194785000888
2251
- bank_code: '50880050'
2252
- account_number: 0194785000888
2253
- account_currency:
2221
+ account_identifier: 50880050/0194785000888
2254
2222
  - !ruby/object:MT940::Statement
2255
2223
  modifier: C
2256
2224
  content: 00004/00001
@@ -2421,12 +2389,10 @@
2421
2389
  modifier:
2422
2390
  content: T089414056000002
2423
2391
  reference: T089414056000002
2424
- - !ruby/object:MT940::Account
2392
+ - !ruby/object:MT940::AccountIdentification
2425
2393
  modifier:
2426
2394
  content: 50880050/0194785000888
2427
- bank_code: '50880050'
2428
- account_number: 0194785000888
2429
- account_currency:
2395
+ account_identifier: 50880050/0194785000888
2430
2396
  - !ruby/object:MT940::Statement
2431
2397
  modifier: C
2432
2398
  content: 00004/00002
@@ -2594,12 +2560,10 @@
2594
2560
  modifier:
2595
2561
  content: T089414056000003
2596
2562
  reference: T089414056000003
2597
- - !ruby/object:MT940::Account
2563
+ - !ruby/object:MT940::AccountIdentification
2598
2564
  modifier:
2599
2565
  content: 50880050/0194785000888
2600
- bank_code: '50880050'
2601
- account_number: 0194785000888
2602
- account_currency:
2566
+ account_identifier: 50880050/0194785000888
2603
2567
  - !ruby/object:MT940::Statement
2604
2568
  modifier: C
2605
2569
  content: 00004/00003
@@ -2696,12 +2660,10 @@
2696
2660
  modifier:
2697
2661
  content: T089414066000001
2698
2662
  reference: T089414066000001
2699
- - !ruby/object:MT940::Account
2663
+ - !ruby/object:MT940::AccountIdentification
2700
2664
  modifier:
2701
2665
  content: 50880050/0194785001888
2702
- bank_code: '50880050'
2703
- account_number: 0194785001888
2704
- account_currency:
2666
+ account_identifier: 50880050/0194785001888
2705
2667
  - !ruby/object:MT940::Statement
2706
2668
  modifier: C
2707
2669
  content: 00004/00001
@@ -2763,12 +2725,10 @@
2763
2725
  modifier:
2764
2726
  content: T089414076000001
2765
2727
  reference: T089414076000001
2766
- - !ruby/object:MT940::Account
2728
+ - !ruby/object:MT940::AccountIdentification
2767
2729
  modifier:
2768
2730
  content: 50880050/0194786200888
2769
- bank_code: '50880050'
2770
- account_number: 0194786200888
2771
- account_currency:
2731
+ account_identifier: 50880050/0194786200888
2772
2732
  - !ruby/object:MT940::Statement
2773
2733
  modifier: C
2774
2734
  content: 00004/00001
@@ -2891,12 +2851,10 @@
2891
2851
  modifier:
2892
2852
  content: T089414086000001
2893
2853
  reference: T089414086000001
2894
- - !ruby/object:MT940::Account
2854
+ - !ruby/object:MT940::AccountIdentification
2895
2855
  modifier:
2896
2856
  content: 50880050/0194787400888
2897
- bank_code: '50880050'
2898
- account_number: 0194787400888
2899
- account_currency:
2857
+ account_identifier: 50880050/0194787400888
2900
2858
  - !ruby/object:MT940::Statement
2901
2859
  modifier: C
2902
2860
  content: 00004/00001
@@ -3043,12 +3001,10 @@
3043
3001
  modifier:
3044
3002
  content: T089414096000001
3045
3003
  reference: T089414096000001
3046
- - !ruby/object:MT940::Account
3004
+ - !ruby/object:MT940::AccountIdentification
3047
3005
  modifier:
3048
3006
  content: 50880050/0194791600888
3049
- bank_code: '50880050'
3050
- account_number: 0194791600888
3051
- account_currency:
3007
+ account_identifier: 50880050/0194791600888
3052
3008
  - !ruby/object:MT940::Statement
3053
3009
  modifier: C
3054
3010
  content: 00004/00001
@@ -3264,12 +3220,10 @@
3264
3220
  modifier:
3265
3221
  content: T089414106000001
3266
3222
  reference: T089414106000001
3267
- - !ruby/object:MT940::Account
3223
+ - !ruby/object:MT940::AccountIdentification
3268
3224
  modifier:
3269
3225
  content: 50880050/0194791601888
3270
- bank_code: '50880050'
3271
- account_number: 0194791601888
3272
- account_currency:
3226
+ account_identifier: 50880050/0194791601888
3273
3227
  - !ruby/object:MT940::Statement
3274
3228
  modifier: C
3275
3229
  content: 00004/00001
@@ -3385,12 +3339,10 @@
3385
3339
  modifier:
3386
3340
  content: T089414116000001
3387
3341
  reference: T089414116000001
3388
- - !ruby/object:MT940::Account
3342
+ - !ruby/object:MT940::AccountIdentification
3389
3343
  modifier:
3390
3344
  content: 50880050/0194798900888
3391
- bank_code: '50880050'
3392
- account_number: 0194798900888
3393
- account_currency:
3345
+ account_identifier: 50880050/0194798900888
3394
3346
  - !ruby/object:MT940::Statement
3395
3347
  modifier: C
3396
3348
  content: 00004/00001
@@ -3448,12 +3400,10 @@
3448
3400
  modifier:
3449
3401
  content: T089414126000001
3450
3402
  reference: T089414126000001
3451
- - !ruby/object:MT940::Account
3403
+ - !ruby/object:MT940::AccountIdentification
3452
3404
  modifier:
3453
3405
  content: 50880050/0194799000888
3454
- bank_code: '50880050'
3455
- account_number: 0194799000888
3456
- account_currency:
3406
+ account_identifier: 50880050/0194799000888
3457
3407
  - !ruby/object:MT940::Statement
3458
3408
  modifier: C
3459
3409
  content: 00004/00001
@@ -3511,12 +3461,10 @@
3511
3461
  modifier:
3512
3462
  content: T089414136000001
3513
3463
  reference: T089414136000001
3514
- - !ruby/object:MT940::Account
3464
+ - !ruby/object:MT940::AccountIdentification
3515
3465
  modifier:
3516
3466
  content: 50880050/0194804000888
3517
- bank_code: '50880050'
3518
- account_number: 0194804000888
3519
- account_currency:
3467
+ account_identifier: 50880050/0194804000888
3520
3468
  - !ruby/object:MT940::Statement
3521
3469
  modifier: C
3522
3470
  content: 00001/00001
@@ -0,0 +1,32 @@
1
+ require_relative 'test_helper'
2
+
3
+ class TestAccountIdentification < Test::Unit::TestCase
4
+ def test_account_identifier
5
+ acc_ident = MT940::AccountIdentification.new('','12345690')
6
+ assert_equal '12345690', acc_ident.account_identifier
7
+ end
8
+
9
+ def test_account_identifier_gets_the_first_35_characters
10
+ content = '1' * 40
11
+ acc_ident = MT940::AccountIdentification.new('', content)
12
+ assert_equal 35, acc_ident.account_identifier.length
13
+ end
14
+
15
+ def test_DEPRECATED_bank_code
16
+ content = '123456789/987EUR'
17
+ acc_ident = MT940::AccountIdentification.new('', content)
18
+ assert_equal '123456789', acc_ident.bank_code
19
+ end
20
+
21
+ def test_DEPRECATED_account_number
22
+ content = '123456789/987EUR'
23
+ acc_ident = MT940::AccountIdentification.new('', content)
24
+ assert_equal '987', acc_ident.account_number
25
+ end
26
+
27
+ def test_DEPRECATED_account_currency
28
+ content = '123456789/987EUR'
29
+ acc_ident = MT940::AccountIdentification.new('', content)
30
+ assert_equal 'EUR', acc_ident.account_currency
31
+ end
32
+ end
@@ -1,4 +1,4 @@
1
- require_relative 'helper'
1
+ require_relative 'test_helper'
2
2
 
3
3
 
4
4
  # $DEBUG = true
@@ -19,6 +19,10 @@ class TestCustomerStatementMessage < Test::Unit::TestCase
19
19
  assert_equal "0194787400888", @message.account_number
20
20
  end
21
21
 
22
+ def test_it_should_have_an_account_identification
23
+ assert @message.account.is_a?(MT940::AccountIdentification)
24
+ end
25
+
22
26
  def test_it_should_have_statement_lines
23
27
  assert @message.statement_lines.respond_to?(:each)
24
28
  assert_equal 4, @message.statement_lines.size
@@ -1,11 +1,3 @@
1
- if ENV['START_SIMPLECOV'].to_i == 1
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter "#{File.basename(File.dirname(__FILE__))}/"
5
- end
6
- end
7
- require 'rubygems'
8
- require 'yaml'
9
1
  require 'test/unit'
10
2
  begin
11
3
  require 'byebug'
data/test/test_mt940.rb CHANGED
@@ -1,4 +1,5 @@
1
- require_relative 'helper'
1
+ require_relative 'test_helper'
2
+ require 'yaml'
2
3
 
3
4
  # $DEBUG = true
4
5
  class TestMt940 < Test::Unit::TestCase
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mt940_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thies C. Arntzen
8
8
  - Phillip Oertel
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-09 00:00:00.000000000 Z
12
+ date: 2021-06-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: gem_hadar
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0
20
+ version: 1.11.0
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0
27
+ version: 1.11.0
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: test-unit
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,26 +39,12 @@ dependencies:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: simplecov
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
42
  description: Ruby library that parses account statements in the SWIFT MT940 format.
57
43
  email: developers@betterplace.org
58
44
  executables: []
59
45
  extensions: []
60
46
  extra_rdoc_files:
61
- - README.rdoc
47
+ - README.md
62
48
  - lib/mt940.rb
63
49
  - lib/mt940/customer_statement_message.rb
64
50
  - lib/mt940/errors.rb
@@ -70,10 +56,9 @@ files:
70
56
  - ".travis.yml"
71
57
  - Gemfile
72
58
  - LICENSE
73
- - README.rdoc
59
+ - README.md
74
60
  - Rakefile
75
61
  - VERSION
76
- - VERSION.yml
77
62
  - docs/0E0Y00DNY.pdf
78
63
  - docs/FinTS_4.0_Formals.pdf
79
64
  - docs/FinTS_4.0_Messages_Finanzdatenformate.pdf
@@ -89,6 +74,8 @@ files:
89
74
  - mt940_parser.gemspec
90
75
  - test/fixtures/amount_formats.txt
91
76
  - test/fixtures/amount_formats.yml
77
+ - test/fixtures/colon_in_descriptor.txt
78
+ - test/fixtures/colon_in_descriptor.yml
92
79
  - test/fixtures/currency_in_25.txt
93
80
  - test/fixtures/currency_in_25.yml
94
81
  - test/fixtures/empty_86.txt
@@ -105,19 +92,20 @@ files:
105
92
  - test/fixtures/sepa_snippet_broken.txt
106
93
  - test/fixtures/with_binary_character.txt
107
94
  - test/fixtures/with_binary_character.yml
108
- - test/helper.rb
95
+ - test/test_account_identifier.rb
109
96
  - test/test_customer_statement_message.rb
97
+ - test/test_helper.rb
110
98
  - test/test_mt940.rb
111
99
  homepage: http://github.com/betterplace/mt940_parser
112
100
  licenses:
113
101
  - MIT
114
102
  metadata: {}
115
- post_install_message:
103
+ post_install_message:
116
104
  rdoc_options:
117
105
  - "--title"
118
106
  - Mt940Parser - MT940 parses account statements in the SWIFT MT940 format.
119
107
  - "--main"
120
- - README.rdoc
108
+ - README.md
121
109
  require_paths:
122
110
  - lib
123
111
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -131,11 +119,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
119
  - !ruby/object:Gem::Version
132
120
  version: '0'
133
121
  requirements: []
134
- rubyforge_project:
135
- rubygems_version: 2.4.8
136
- signing_key:
122
+ rubygems_version: 3.2.3
123
+ signing_key:
137
124
  specification_version: 4
138
125
  summary: MT940 parses account statements in the SWIFT MT940 format.
139
126
  test_files:
127
+ - test/test_account_identifier.rb
140
128
  - test/test_customer_statement_message.rb
129
+ - test/test_helper.rb
141
130
  - test/test_mt940.rb
data/VERSION.yml DELETED
@@ -1,5 +0,0 @@
1
- ---
2
- :major: 1
3
- :minor: 3
4
- :patch: 0
5
- :build: