cmxl 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.mdown +3 -0
- data/lib/cmxl/field.rb +2 -2
- data/lib/cmxl/fields/statement_details.rb +7 -0
- data/lib/cmxl/fields/transaction.rb +25 -3
- data/lib/cmxl/fields/transaction_supplementary.rb +53 -0
- data/lib/cmxl/statement.rb +7 -25
- data/lib/cmxl/version.rb +1 -1
- data/spec/fields/transaction_spec.rb +26 -0
- data/spec/fields/transaction_supplementary_spec.rb +24 -0
- data/spec/fixtures/lines/statement_ocmt.txt +2 -0
- data/spec/fixtures/lines/statement_ocmt_chgs.txt +2 -0
- data/spec/fixtures/lines/statement_supplementary_plain.txt +2 -0
- data/spec/fixtures/mt940-deutsche_bank.txt +2 -1
- data/spec/fixtures/mt940.txt +22 -22
- data/spec/statement_spec.rb +2 -2
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 82b72d8655b552c6a10bae7df6882bf313ea472b
|
4
|
+
data.tar.gz: 630a7f8c31eee13bec9ca238ea492f0bad384515
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dcfab68cd74b8c40ccd21799693f20be692ae3a38c2edfc02c06972ebd0148e06a91c3031d715fb5f97b6d8d923d7802db2763ee01d91e5ba34f3b201f678438
|
7
|
+
data.tar.gz: f7936f2ba25cd820f81241a46588ff03dd66f8cf9b3dd4165e9eb5c372eec020a0f82b0053d5a39756e1c554471299fd6879501663ff2e4343de115191374a2c
|
data/CHANGELOG.mdown
CHANGED
data/lib/cmxl/field.rb
CHANGED
@@ -44,8 +44,8 @@ module Cmxl
|
|
44
44
|
# Cmxl::Field.parse(':60F:C031002PLN40000,00') #=> returns an AccountBalance instance
|
45
45
|
#
|
46
46
|
def self.parse(line)
|
47
|
-
if line.match(
|
48
|
-
tag, modifier, content = $1, $2, $3
|
47
|
+
if line.match(/\A:(\d{2,2})(\w)?:(.*)\z/m)
|
48
|
+
tag, modifier, content = $1, $2, $3.gsub(/\r?\n\z/, '') # remove trailing line break to prevent empty field parsing
|
49
49
|
Field.parsers[tag.to_s].new(content, modifier, tag)
|
50
50
|
else
|
51
51
|
raise LineFormatError, "Wrong line format: #{line.dump}" if Cmxl.config[:raise_line_format_errors]
|
@@ -4,6 +4,13 @@ module Cmxl
|
|
4
4
|
self.tag = 86
|
5
5
|
self.parser = /(?<transaction_code>\w{3})(?<details>(?<seperator>.).*)/
|
6
6
|
|
7
|
+
class << self
|
8
|
+
def parse(line)
|
9
|
+
# remove line breaks as they are allowed via documentation but not needed for data-parsing
|
10
|
+
super line.gsub(/\n/, '')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
7
14
|
def sub_fields
|
8
15
|
@sub_fields ||= if self.data['details'] =~ /#{Regexp.escape(self.data['seperator'])}(\d{2})/
|
9
16
|
Hash[self.data['details'].scan(/#{Regexp.escape(self.data['seperator'])}(\d{2})([^#{Regexp.escape(self.data['seperator'])}]*)/)]
|
@@ -2,7 +2,7 @@ module Cmxl
|
|
2
2
|
module Fields
|
3
3
|
class Transaction < Field
|
4
4
|
self.tag = 61
|
5
|
-
self.parser =
|
5
|
+
self.parser = %r{^(?<date>\d{6})(?<entry_date>\d{4})?(?<storno_flag>R?)(?<funds_code>[CD]{1})(?<currency_letter>[a-zA-Z])?(?<amount>\d{1,12},\d{0,2})(?<swift_code>(?:N|F).{3})(?<reference>NONREF|.{0,16})((?:\/\/)(?<bank_reference>[^\n]*))?((?:[\n])?(?<supplementary>.{,34}))$}
|
6
6
|
|
7
7
|
attr_accessor :details
|
8
8
|
|
@@ -68,6 +68,25 @@ module Cmxl
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
def supplementary
|
72
|
+
@supplementary ||= Cmxl::Fields::TransactionSupplementary.parse(data['supplementary'])
|
73
|
+
end
|
74
|
+
|
75
|
+
# Fields from supplementary
|
76
|
+
|
77
|
+
def initial_amount_in_cents
|
78
|
+
supplementary.initial_amount_in_cents
|
79
|
+
end
|
80
|
+
def initial_currency
|
81
|
+
supplementary.initial_currency
|
82
|
+
end
|
83
|
+
def charges_in_cents
|
84
|
+
supplementary.charges_in_cents
|
85
|
+
end
|
86
|
+
def charges_currency
|
87
|
+
supplementary.charges_currency
|
88
|
+
end
|
89
|
+
|
71
90
|
# Fields from details
|
72
91
|
|
73
92
|
def description
|
@@ -107,8 +126,11 @@ module Cmxl
|
|
107
126
|
'swift_code' => swift_code,
|
108
127
|
'reference' => reference,
|
109
128
|
'bank_reference' => bank_reference,
|
110
|
-
'currency_letter' => currency_letter
|
111
|
-
}.
|
129
|
+
'currency_letter' => currency_letter,
|
130
|
+
}.tap do |h|
|
131
|
+
h.merge!(details.to_h) if details
|
132
|
+
h.merge!(supplementary.to_h) unless supplementary.source.empty?
|
133
|
+
end
|
112
134
|
end
|
113
135
|
|
114
136
|
def to_hash
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module Cmxl
|
2
|
+
module Fields
|
3
|
+
class TransactionSupplementary < Field
|
4
|
+
|
5
|
+
attr_accessor :source, :initial, :charges
|
6
|
+
|
7
|
+
class << self
|
8
|
+
def parse(line)
|
9
|
+
initial = $1 if line.match(initial_parser)
|
10
|
+
charges = $1 if line.match(charges_parser)
|
11
|
+
new(line, initial, charges)
|
12
|
+
end
|
13
|
+
|
14
|
+
def initial_parser; %r{((?:\/OCMT\/)(?<initial>[a-zA-Z]{3}[\d,]{1,15}))} end
|
15
|
+
def charges_parser; %r{((?:\/CHGS\/)(?<charges>[a-zA-Z]{3}[\d,]{1,15}))} end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def initialize(line, initial, charges)
|
20
|
+
self.source = line
|
21
|
+
self.initial = initial
|
22
|
+
self.charges = charges
|
23
|
+
end
|
24
|
+
|
25
|
+
def initial_amount_in_cents
|
26
|
+
to_amount_in_cents(initial[3..-1]) if initial
|
27
|
+
end
|
28
|
+
|
29
|
+
def initial_currency
|
30
|
+
initial[0..2] if initial
|
31
|
+
end
|
32
|
+
|
33
|
+
def charges_in_cents
|
34
|
+
to_amount_in_cents(charges[3..-1]) if charges
|
35
|
+
end
|
36
|
+
|
37
|
+
def charges_currency
|
38
|
+
charges[0..2] if charges
|
39
|
+
end
|
40
|
+
|
41
|
+
def to_h
|
42
|
+
{
|
43
|
+
source: source,
|
44
|
+
initial_amount_in_cents: initial_amount_in_cents,
|
45
|
+
initial_currency: initial_currency,
|
46
|
+
charges_in_cents: charges_in_cents,
|
47
|
+
charges_currency: charges_currency,
|
48
|
+
}
|
49
|
+
end
|
50
|
+
alias_method :to_hash, :to_h
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/cmxl/statement.rb
CHANGED
@@ -23,17 +23,14 @@ module Cmxl
|
|
23
23
|
# Internal: Parse a single MT940 statement and extract the line data
|
24
24
|
#
|
25
25
|
def parse!
|
26
|
-
# first we clean uo the source and make concat wraped lines (lines not starting with a ":")
|
27
|
-
self.source.split("\n").each do |line|
|
28
|
-
if line.start_with?(':') || self.lines.last.nil?
|
29
|
-
self.lines << line.strip
|
30
|
-
else
|
31
|
-
self.lines.last << line.strip
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
26
|
self.fields = []
|
36
|
-
|
27
|
+
|
28
|
+
# split transactions, each transaction starts with a colon after a linebreak
|
29
|
+
# do not remove line breaks within transaction lines as they are used to determine field details
|
30
|
+
# e.g. :61:-supplementary
|
31
|
+
source.split("\n:").each(&:strip!).each do |line|
|
32
|
+
line = ":#{line}" unless line =~ %r{^:} # prepend lost : via split
|
33
|
+
|
37
34
|
if line.match(/\A:86:/)
|
38
35
|
if field = fields.last
|
39
36
|
field.add_meta_data(line)
|
@@ -43,21 +40,6 @@ module Cmxl
|
|
43
40
|
self.fields << field unless field.nil?
|
44
41
|
end
|
45
42
|
end
|
46
|
-
|
47
|
-
# puts "Fixed Fields"
|
48
|
-
# puts fields.inspect
|
49
|
-
#
|
50
|
-
# # Now we check each line for its content ans structure it for further use. If it is part of a transaction we initate or update a transaction else we parse the field and add it to the fields collection
|
51
|
-
# self.lines.each do |line|
|
52
|
-
# if line.match(/\A:61:/)
|
53
|
-
# self.transactions << Cmxl::Transaction.new(line)
|
54
|
-
# elsif line.match(/\A:86:/) && !self.transactions.last.nil?
|
55
|
-
# self.transactions.last.details = line
|
56
|
-
# else
|
57
|
-
# field = Field.parse(line)
|
58
|
-
# self.fields << field unless field.nil?
|
59
|
-
# end
|
60
|
-
# end
|
61
43
|
end
|
62
44
|
|
63
45
|
# Public: SHA2 of the provided source
|
data/lib/cmxl/version.rb
CHANGED
@@ -3,6 +3,9 @@ require 'spec_helper'
|
|
3
3
|
describe Cmxl::Fields::Transaction do
|
4
4
|
subject(:debit_transaction) { Cmxl::Fields::Transaction.parse(fixture.first) }
|
5
5
|
subject(:storno_credit_transaction) { Cmxl::Fields::Transaction.parse(fixture.last) }
|
6
|
+
subject(:ocmt_transaction) { Cmxl::Fields::Transaction.parse(fixture_line(:statement_ocmt)) }
|
7
|
+
subject(:ocmt_cghs_transaction) { Cmxl::Fields::Transaction.parse(fixture_line(:statement_ocmt_chgs)) }
|
8
|
+
subject(:supplementary_transaction) { Cmxl::Fields::Transaction.parse(fixture_line(:statement_supplementary_plain)) }
|
6
9
|
|
7
10
|
let(:fixture) { fixture_line(:statement_line).split(/\n/) }
|
8
11
|
|
@@ -38,4 +41,27 @@ describe Cmxl::Fields::Transaction do
|
|
38
41
|
it { expect(storno_credit_transaction).to be_storno }
|
39
42
|
it { expect(storno_credit_transaction.sign).to eql(1) }
|
40
43
|
end
|
44
|
+
|
45
|
+
context 'statement with initial amount and currency' do
|
46
|
+
it { expect(ocmt_transaction.initial_amount_in_cents).to eql(4711) }
|
47
|
+
it { expect(ocmt_transaction.initial_currency).to eql('CAD') }
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'statement with initial amount and currency and also charges' do
|
51
|
+
it { expect(ocmt_cghs_transaction.initial_amount_in_cents).to eql(4711) }
|
52
|
+
it { expect(ocmt_cghs_transaction.initial_currency).to eql('CAD') }
|
53
|
+
|
54
|
+
it { expect(ocmt_cghs_transaction.charges_in_cents).to eql(123) }
|
55
|
+
it { expect(ocmt_cghs_transaction.charges_currency).to eql('EUR') }
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'statement with plain supplementary' do
|
59
|
+
it { expect(supplementary_transaction.initial_amount_in_cents).to eql(nil) }
|
60
|
+
it { expect(supplementary_transaction.initial_currency).to eql(nil) }
|
61
|
+
|
62
|
+
it { expect(supplementary_transaction.charges_in_cents).to eql(nil) }
|
63
|
+
it { expect(supplementary_transaction.charges_currency).to eql(nil) }
|
64
|
+
|
65
|
+
it { expect(supplementary_transaction.supplementary.source).to eql('Card Transaction') }
|
66
|
+
end
|
41
67
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Cmxl::Fields::TransactionSupplementary do
|
4
|
+
let(:fixture) { 'Card Transaction/OCMT/CAD47,11/CHGS/EUR123,45' }
|
5
|
+
subject(:supplementary) { described_class.parse(fixture) }
|
6
|
+
|
7
|
+
it { expect(supplementary.initial_amount_in_cents).to eql(4711) }
|
8
|
+
it { expect(supplementary.initial_currency).to eql('CAD') }
|
9
|
+
|
10
|
+
it { expect(supplementary.charges_in_cents).to eql(12345) }
|
11
|
+
it { expect(supplementary.charges_currency).to eql('EUR') }
|
12
|
+
|
13
|
+
describe '.to_h' do
|
14
|
+
it 'returns expected hash' do
|
15
|
+
expect(supplementary.to_h).to eql({
|
16
|
+
source: 'Card Transaction/OCMT/CAD47,11/CHGS/EUR123,45',
|
17
|
+
initial_amount_in_cents: 4711,
|
18
|
+
initial_currency: 'CAD',
|
19
|
+
charges_in_cents: 12345,
|
20
|
+
charges_currency: 'EUR'
|
21
|
+
})
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -3,6 +3,7 @@
|
|
3
3
|
:28:27/01
|
4
4
|
:60F:C131016DEM84349,74
|
5
5
|
:61:131017D6800,NCHK16703074
|
6
|
+
/OCMT/CAD47,11
|
6
7
|
:86:999PN5477SCHECK-NR. 0000016703074
|
7
8
|
:61:131017D620,3NSTON
|
8
9
|
:86:999PN0911DAUERAUFTR.NR. 14
|
@@ -66,5 +67,5 @@ STORY-?26300 SZT GR544 I OPORNIKI-5?2700 SZT GTX847 FAKTURA 333/
|
|
66
67
|
:61:0310201020C40,00FTRFNONREF//8327000090031791
|
67
68
|
Interest credit
|
68
69
|
:86: 844?00Uznanie kwotą odsetek?20Odsetki od lokaty nr 101000?21022086
|
69
|
-
:62F:C020325PLN50040,00
|
70
|
+
:62F:C020325PLN50040,00
|
70
71
|
-
|
data/spec/fixtures/mt940.txt
CHANGED
@@ -46,30 +46,30 @@ GmbH?3050060400?31084756
|
|
46
46
|
|
47
47
|
-
|
48
48
|
|
49
|
-
:20:TELEWIZORY S.A.
|
50
|
-
:25:BPHKPLPK/320000546101
|
51
|
-
:28C:00084/001
|
52
|
-
:60F:C031002PLN40000,00
|
53
|
-
:61:0310201020C20000,00FMSCNONREF//8327000090031789
|
54
|
-
Card transaction
|
49
|
+
:20:TELEWIZORY S.A.
|
50
|
+
:25:BPHKPLPK/320000546101
|
51
|
+
:28C:00084/001
|
52
|
+
:60F:C031002PLN40000,00
|
53
|
+
:61:0310201020C20000,00FMSCNONREF//8327000090031789
|
54
|
+
Card transaction
|
55
55
|
:86: 020?00Wyplata-(dysp/przel)?2008106000760000777777777777?2115617?
|
56
|
-
22INFO INFO INFO INFO INFO INFO 1 END?23INFO INFO INFO INFO INFO
|
57
|
-
INFO 2 END?24ZAPLATA ZA FABRYKATY DO TUB?25 - 200 S ZTUK, TRANZY
|
58
|
-
STORY-?26300 SZT GR544 I OPORNIKI-5?2700 SZT GTX847 FAKTURA 333/
|
59
|
-
2?28003.?3010600076?310000777777777777?32HUTA SZKLA TOPIC UL
|
60
|
-
PRZEMY?33SLOWA 67 32-669 WROCLAW?38PL081060007600007777777
|
61
|
-
77777
|
62
|
-
:61:0310201020D10000,00FTRFREF 25611247//8327000090031790
|
63
|
-
Transfer
|
56
|
+
22INFO INFO INFO INFO INFO INFO 1 END?23INFO INFO INFO INFO INFO
|
57
|
+
INFO 2 END?24ZAPLATA ZA FABRYKATY DO TUB?25 - 200 S ZTUK, TRANZY
|
58
|
+
STORY-?26300 SZT GR544 I OPORNIKI-5?2700 SZT GTX847 FAKTURA 333/
|
59
|
+
2?28003.?3010600076?310000777777777777?32HUTA SZKLA TOPIC UL
|
60
|
+
PRZEMY?33SLOWA 67 32-669 WROCLAW?38PL081060007600007777777
|
61
|
+
77777
|
62
|
+
:61:0310201020D10000,00FTRFREF 25611247//8327000090031790
|
63
|
+
Transfer
|
64
64
|
:86: 020?00Wyplata-(dysp/przel)?2008106000760000777777777777?2115617?
|
65
|
-
22INFO INFO INFO INFO INFO INFO 1 END?23INFO INFO INFO INFO INFO
|
66
|
-
INFO 2 END?24ZAPLATA ZA FABRYKATY DO TUB?25 - 200 S ZTUK, TRANZY
|
67
|
-
STORY-?26300 SZT GR544 I OPORNIKI-5?2700 SZT GTX847 FAKTURA 333/
|
68
|
-
2?28003.?3010600076?310000777777777777?38PL081060007600007777777
|
69
|
-
77777
|
70
|
-
:61:0310201020C40,00FTRFNONREF//8327000090031791
|
65
|
+
22INFO INFO INFO INFO INFO INFO 1 END?23INFO INFO INFO INFO INFO
|
66
|
+
INFO 2 END?24ZAPLATA ZA FABRYKATY DO TUB?25 - 200 S ZTUK, TRANZY
|
67
|
+
STORY-?26300 SZT GR544 I OPORNIKI-5?2700 SZT GTX847 FAKTURA 333/
|
68
|
+
2?28003.?3010600076?310000777777777777?38PL081060007600007777777
|
69
|
+
77777
|
70
|
+
:61:0310201020C40,00FTRFNONREF//8327000090031791
|
71
71
|
Interest credit
|
72
|
-
:86: 844?00Uznanie kwotą odsetek?20Odsetki od lokaty nr 101000?21022086
|
73
|
-
:62F:C020325PLN50040,00
|
72
|
+
:86: 844?00Uznanie kwotą odsetek?20Odsetki od lokaty nr 101000?21022086
|
73
|
+
:62F:C020325PLN50040,00
|
74
74
|
|
75
75
|
-
|
data/spec/statement_spec.rb
CHANGED
@@ -57,7 +57,7 @@ describe Cmxl do
|
|
57
57
|
"34" => "171"
|
58
58
|
},
|
59
59
|
"transaction_code" => "171",
|
60
|
-
"details" => "?00SEPA LASTSCHRIFT KUNDE?10281?20KREF+EREF+TRX-0A4A47C3-F846-4729?21-8A1B-5DF620F?22MREF+CAC97D2144174318AC18D9?23BF815BD4FB?24CRED+DE98ZZZ09999999999?25SVWZ+FOO TRX-0A4A47C3-F84?266-4729-8A1B-5DF620F?30HYVEDEMMXXX?31HUkkbbbsssskcccccccccccccccx?32Peter Pan?99?34171"
|
60
|
+
"details" => "?00SEPA LASTSCHRIFT KUNDE?10281?20KREF+EREF+TRX-0A4A47C3-F846-4729?21-8A1B-5DF620F?22MREF+CAC97D2144174318AC18D9?23BF815BD4FB?24CRED+DE98ZZZ09999999999?25SVWZ+FOO TRX-0A4A47C3-F84?266-4729-8A1B-5DF620F?30HYVEDEMMXXX?31HUkkbbbsssskcccccccccccccccx?32Peter Pan?99?34171",
|
61
61
|
}
|
62
62
|
)
|
63
63
|
}
|
@@ -87,7 +87,7 @@ describe Cmxl do
|
|
87
87
|
"sign" => -1,
|
88
88
|
"debit" => true,
|
89
89
|
"credit" => false,
|
90
|
-
"storno" => false
|
90
|
+
"storno" => false,
|
91
91
|
})
|
92
92
|
end
|
93
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cmxl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Bumann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-04-
|
11
|
+
date: 2018-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,6 +122,7 @@ files:
|
|
122
122
|
- lib/cmxl/fields/statement_details.rb
|
123
123
|
- lib/cmxl/fields/statement_number.rb
|
124
124
|
- lib/cmxl/fields/transaction.rb
|
125
|
+
- lib/cmxl/fields/transaction_supplementary.rb
|
125
126
|
- lib/cmxl/statement.rb
|
126
127
|
- lib/cmxl/version.rb
|
127
128
|
- spec/field_spec.rb
|
@@ -134,6 +135,7 @@ files:
|
|
134
135
|
- spec/fields/statement_details_spec.rb
|
135
136
|
- spec/fields/statement_number_spec.rb
|
136
137
|
- spec/fields/transaction_spec.rb
|
138
|
+
- spec/fields/transaction_supplementary_spec.rb
|
137
139
|
- spec/fields/unknown_spec.rb
|
138
140
|
- spec/fixtures/lines/account_balance_credit.txt
|
139
141
|
- spec/fixtures/lines/account_balance_debit.txt
|
@@ -147,6 +149,9 @@ files:
|
|
147
149
|
- spec/fixtures/lines/statement_details_empty_fields.txt
|
148
150
|
- spec/fixtures/lines/statement_line.txt
|
149
151
|
- spec/fixtures/lines/statement_number.txt
|
152
|
+
- spec/fixtures/lines/statement_ocmt.txt
|
153
|
+
- spec/fixtures/lines/statement_ocmt_chgs.txt
|
154
|
+
- spec/fixtures/lines/statement_supplementary_plain.txt
|
150
155
|
- spec/fixtures/mt940-deutsche_bank.txt
|
151
156
|
- spec/fixtures/mt940-iso8859-1.txt
|
152
157
|
- spec/fixtures/mt940-with-detailed-end-balance.txt
|
@@ -194,6 +199,7 @@ test_files:
|
|
194
199
|
- spec/fields/statement_details_spec.rb
|
195
200
|
- spec/fields/statement_number_spec.rb
|
196
201
|
- spec/fields/transaction_spec.rb
|
202
|
+
- spec/fields/transaction_supplementary_spec.rb
|
197
203
|
- spec/fields/unknown_spec.rb
|
198
204
|
- spec/fixtures/lines/account_balance_credit.txt
|
199
205
|
- spec/fixtures/lines/account_balance_debit.txt
|
@@ -207,6 +213,9 @@ test_files:
|
|
207
213
|
- spec/fixtures/lines/statement_details_empty_fields.txt
|
208
214
|
- spec/fixtures/lines/statement_line.txt
|
209
215
|
- spec/fixtures/lines/statement_number.txt
|
216
|
+
- spec/fixtures/lines/statement_ocmt.txt
|
217
|
+
- spec/fixtures/lines/statement_ocmt_chgs.txt
|
218
|
+
- spec/fixtures/lines/statement_supplementary_plain.txt
|
210
219
|
- spec/fixtures/mt940-deutsche_bank.txt
|
211
220
|
- spec/fixtures/mt940-iso8859-1.txt
|
212
221
|
- spec/fixtures/mt940-with-detailed-end-balance.txt
|