absa-esd 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +6 -0
- data/Gemfile.lock +40 -0
- data/README +0 -0
- data/Rakefile +7 -0
- data/absa-esd.gemspec +24 -0
- data/lib/absa-esd.rb +15 -0
- data/lib/absa-esd/statement4_unpacked.rb +20 -0
- data/lib/absa-esd/transmission/document.rb +20 -0
- data/lib/absa-esd/transmission/record.rb +28 -0
- data/lib/absa-esd/transmission/set.rb +155 -0
- data/lib/absa-esd/version.rb +5 -0
- data/lib/config/statement4_unpacked/recon_account.yml +309 -0
- data/lib/config/statement4_unpacked/recon_transmission.yml +84 -0
- data/spec/examples/statement4_unpacked.dat +51 -0
- data/spec/lib/statement4_unpacked_spec.rb +142 -0
- data/spec/spec_helper.rb +9 -0
- metadata +99 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/tehtorq/strata.git
|
3
|
+
revision: 32ab2e00de10c0d4760ec28be6de4d49fd7e7e40
|
4
|
+
specs:
|
5
|
+
strata (0.0.1)
|
6
|
+
activesupport
|
7
|
+
i18n
|
8
|
+
|
9
|
+
PATH
|
10
|
+
remote: .
|
11
|
+
specs:
|
12
|
+
absa-esd (0.0.1)
|
13
|
+
activesupport
|
14
|
+
i18n
|
15
|
+
|
16
|
+
GEM
|
17
|
+
remote: http://rubygems.org/
|
18
|
+
specs:
|
19
|
+
activesupport (3.2.2)
|
20
|
+
i18n (~> 0.6)
|
21
|
+
multi_json (~> 1.0)
|
22
|
+
diff-lcs (1.1.3)
|
23
|
+
i18n (0.6.0)
|
24
|
+
multi_json (1.1.0)
|
25
|
+
rspec (2.8.0)
|
26
|
+
rspec-core (~> 2.8.0)
|
27
|
+
rspec-expectations (~> 2.8.0)
|
28
|
+
rspec-mocks (~> 2.8.0)
|
29
|
+
rspec-core (2.8.0)
|
30
|
+
rspec-expectations (2.8.0)
|
31
|
+
diff-lcs (~> 1.1.2)
|
32
|
+
rspec-mocks (2.8.0)
|
33
|
+
|
34
|
+
PLATFORMS
|
35
|
+
ruby
|
36
|
+
|
37
|
+
DEPENDENCIES
|
38
|
+
absa-esd!
|
39
|
+
rspec
|
40
|
+
strata (= 0.0.1)!
|
data/README
ADDED
File without changes
|
data/Rakefile
ADDED
data/absa-esd.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "absa-esd/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "absa-esd"
|
7
|
+
s.version = Absa::Esd::VERSION
|
8
|
+
s.authors = ["Jeffrey van Aswegen, Douglas Anderson"]
|
9
|
+
s.email = ["jeffmess@gmail.com, i.am.douglas.anderson@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{A ruby interface to commumicate with the ABSA Electronic Statement Delivery platform.}
|
12
|
+
s.description = %q{A ruby interface to commumicate with the ABSA Electronic Statement Delivery platform.}
|
13
|
+
|
14
|
+
s.rubyforge_project = "absa-esd"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_dependency "activesupport"
|
22
|
+
s.add_dependency "i18n"
|
23
|
+
s.add_dependency "strata", "~> 0.0.1"
|
24
|
+
end
|
data/lib/absa-esd.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require "absa-esd/version"
|
2
|
+
require "active_support/core_ext/string"
|
3
|
+
require "yaml"
|
4
|
+
#require 'strata'
|
5
|
+
|
6
|
+
module Absa
|
7
|
+
module Esd
|
8
|
+
CONFIG_DIR = File.expand_path(File.dirname(__FILE__)) + "/config"
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
require 'absa-esd/transmission/set'
|
13
|
+
require 'absa-esd/transmission/record'
|
14
|
+
require 'absa-esd/transmission/document'
|
15
|
+
require 'absa-esd/statement4_unpacked'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Absa
|
2
|
+
module Esd
|
3
|
+
|
4
|
+
module Statement4Unpacked
|
5
|
+
|
6
|
+
class ReconTransmission < Transmission::Set
|
7
|
+
class Header < Transmission::Record; end
|
8
|
+
class Trailer < Transmission::Record; end
|
9
|
+
end
|
10
|
+
|
11
|
+
class ReconAccount < Transmission::Set
|
12
|
+
class Header < Transmission::Record; end
|
13
|
+
class Detail < Transmission::Record; end
|
14
|
+
class Trailer < Transmission::Record; end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Absa
|
2
|
+
module Esd
|
3
|
+
module Transmission
|
4
|
+
|
5
|
+
class Document < Set
|
6
|
+
|
7
|
+
def self.from_s(string)
|
8
|
+
options = self.hash_from_s(string)
|
9
|
+
self.build(options[:data])
|
10
|
+
end
|
11
|
+
|
12
|
+
def from_file!(filename)
|
13
|
+
self.from_s(File.open(filename, "rb").read)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Absa
|
2
|
+
module Esd
|
3
|
+
module Transmission
|
4
|
+
|
5
|
+
class Record
|
6
|
+
include Strata::RecordWriter
|
7
|
+
extend Strata::RecordWriter::ClassMethods
|
8
|
+
|
9
|
+
set_record_length 550
|
10
|
+
set_delimiter "\r\n"
|
11
|
+
|
12
|
+
def initialize(options = {})
|
13
|
+
set_layout_variables(options)
|
14
|
+
validate! options
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.class_layout_rules
|
18
|
+
file_name = "#{Absa::Esd::CONFIG_DIR}/#{self.name.split("::")[-3].underscore}/#{self.name.split("::")[-2].underscore}.yml"
|
19
|
+
record_type = self.name.split("::")[-1].underscore
|
20
|
+
|
21
|
+
YAML.load(File.open(file_name))[record_type]
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
module Absa
|
2
|
+
module Esd
|
3
|
+
module Transmission
|
4
|
+
|
5
|
+
class Set
|
6
|
+
|
7
|
+
attr_accessor :records
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
self.records = []
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.build(data)
|
14
|
+
set = self.new
|
15
|
+
|
16
|
+
data.each do |hash|
|
17
|
+
if hash[:data].is_a? Array
|
18
|
+
klass = "Absa::Esd::Statement4Unpacked::#{hash[:type].capitalize.camelize}".constantize
|
19
|
+
set.records << klass.build(hash[:data])
|
20
|
+
else
|
21
|
+
klass = "Absa::Esd::Statement4Unpacked::#{self.partial_class_name}::#{hash[:type].capitalize.camelize}".constantize
|
22
|
+
set.records << klass.new(hash[:data])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
set.validate!
|
27
|
+
set
|
28
|
+
end
|
29
|
+
|
30
|
+
def header
|
31
|
+
records[0]
|
32
|
+
end
|
33
|
+
|
34
|
+
def trailer
|
35
|
+
records[-1]
|
36
|
+
end
|
37
|
+
|
38
|
+
def transactions
|
39
|
+
records[1..-2]
|
40
|
+
end
|
41
|
+
|
42
|
+
def validate!
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
def to_s
|
47
|
+
string = ""
|
48
|
+
records.each {|record| string += record.to_s }
|
49
|
+
string
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.for_record(record) # move this logic to yml file
|
53
|
+
record_id = record[0]
|
54
|
+
|
55
|
+
case record_id
|
56
|
+
when '0','9'
|
57
|
+
return Absa::Esd::Statement4Unpacked::ReconTransmission
|
58
|
+
when '1','2','8'
|
59
|
+
return Absa::Esd::Statement4Unpacked::ReconAccount
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.trailer_id(klass)
|
64
|
+
case klass.name
|
65
|
+
when 'Absa::Esd::Statement4Unpacked::ReconTransmission'
|
66
|
+
return '9'
|
67
|
+
when 'Absa::Esd::Statement4Unpacked::ReconAccount'
|
68
|
+
return '8'
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.is_trailer_record?(set, record)
|
73
|
+
record_id = record[0]
|
74
|
+
self.trailer_id(set) == record_id
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.process_record(record)
|
78
|
+
record_info = {}
|
79
|
+
|
80
|
+
self.record_types.each do |record_type|
|
81
|
+
klass = "#{self.name}::#{record_type.camelize}".constantize
|
82
|
+
|
83
|
+
if klass.matches_definition?(record)
|
84
|
+
options = klass.string_to_hash(record)
|
85
|
+
record_info = {type: record_type, data: options}
|
86
|
+
break
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
record_info
|
91
|
+
end
|
92
|
+
|
93
|
+
def self.hash_from_s(string)
|
94
|
+
set_info = {type: self.partial_class_name.underscore, data: []}
|
95
|
+
lines = string.split(/^/)
|
96
|
+
|
97
|
+
# look for rec_ids, split into chunks, and pass each related class a piece of string
|
98
|
+
|
99
|
+
buffer = []
|
100
|
+
current_set = nil
|
101
|
+
subset = nil
|
102
|
+
|
103
|
+
lines.each do |line|
|
104
|
+
next if line.length < 10 # TODO: flaky - tighten it up
|
105
|
+
if Set.for_record(line) == self
|
106
|
+
if subset && (buffer.length > 0)
|
107
|
+
set_info[:data] << subset.hash_from_s(buffer.join)
|
108
|
+
buffer = []
|
109
|
+
subset = nil
|
110
|
+
end
|
111
|
+
|
112
|
+
record = line
|
113
|
+
set_info[:data] << self.process_record(record)
|
114
|
+
else
|
115
|
+
subset = Set.for_record(line) unless subset
|
116
|
+
buffer << line
|
117
|
+
|
118
|
+
if self.is_trailer_record?(subset, line)
|
119
|
+
set_info[:data] << subset.hash_from_s(buffer.join)
|
120
|
+
buffer = []
|
121
|
+
subset = nil
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
set_info
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.record_types
|
130
|
+
self.layout_rules.map {|k,v| k}
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.module_name
|
134
|
+
self.name.split("::")[0..-1].join("::")
|
135
|
+
end
|
136
|
+
|
137
|
+
def self.partial_class_name
|
138
|
+
self.name.split("::")[-1]
|
139
|
+
end
|
140
|
+
|
141
|
+
def self.layout_rules
|
142
|
+
file_name = "#{Absa::Esd::CONFIG_DIR}/#{self.name.split("::")[-2].underscore}/#{self.partial_class_name.underscore}.yml"
|
143
|
+
|
144
|
+
YAML.load(File.open(file_name))
|
145
|
+
end
|
146
|
+
|
147
|
+
def self.record_type(record_type)
|
148
|
+
"#{self.name}::#{record_type.camelize}".constantize
|
149
|
+
end
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,309 @@
|
|
1
|
+
header:
|
2
|
+
rec_type:
|
3
|
+
data_type: A
|
4
|
+
offset: 1
|
5
|
+
length: 1
|
6
|
+
fixed_val: '1'
|
7
|
+
account_number:
|
8
|
+
data_type: N
|
9
|
+
offset: 2
|
10
|
+
length: 19
|
11
|
+
statement_number:
|
12
|
+
data_type: N
|
13
|
+
offset: 21
|
14
|
+
length: 5
|
15
|
+
filler_1:
|
16
|
+
data_type: A
|
17
|
+
offset: 26
|
18
|
+
length: 5
|
19
|
+
processing_date:
|
20
|
+
data_type: N
|
21
|
+
offset: 31
|
22
|
+
length: 8
|
23
|
+
no_strip: true
|
24
|
+
account_branch_code:
|
25
|
+
data_type: N
|
26
|
+
offset: 39
|
27
|
+
length: 8
|
28
|
+
filler_2:
|
29
|
+
data_type: A
|
30
|
+
offset: 47
|
31
|
+
length: 18
|
32
|
+
filler_3:
|
33
|
+
data_type: A
|
34
|
+
offset: 65
|
35
|
+
length: 16
|
36
|
+
hd_op_bals:
|
37
|
+
data_type: A
|
38
|
+
offset: 81
|
39
|
+
length: 1
|
40
|
+
hd_op_bal:
|
41
|
+
data_type: N
|
42
|
+
offset: 82
|
43
|
+
length: 17
|
44
|
+
filler_4:
|
45
|
+
data_type: A
|
46
|
+
offset: 99
|
47
|
+
length: 84
|
48
|
+
function_code:
|
49
|
+
data_type: A
|
50
|
+
offset: 183
|
51
|
+
length: 4
|
52
|
+
fixed_val: 'AA0A'
|
53
|
+
filler_5:
|
54
|
+
data_type: A
|
55
|
+
offset: 187
|
56
|
+
length: 329
|
57
|
+
generation_number:
|
58
|
+
data_type: A
|
59
|
+
offset: 516
|
60
|
+
length: 9
|
61
|
+
filler_6:
|
62
|
+
data_type: A
|
63
|
+
offset: 525
|
64
|
+
length: 25
|
65
|
+
detail:
|
66
|
+
rec_type:
|
67
|
+
data_type: A
|
68
|
+
offset: 1
|
69
|
+
length: 1
|
70
|
+
fixed_val: '2'
|
71
|
+
account_number:
|
72
|
+
data_type: N
|
73
|
+
offset: 2
|
74
|
+
length: 19
|
75
|
+
statement_number:
|
76
|
+
data_type: N
|
77
|
+
offset: 21
|
78
|
+
length: 5
|
79
|
+
page_number:
|
80
|
+
data_type: N
|
81
|
+
offset: 26
|
82
|
+
length: 5
|
83
|
+
transaction_processing_date:
|
84
|
+
data_type: N
|
85
|
+
offset: 31
|
86
|
+
length: 8
|
87
|
+
transaction_effective_date:
|
88
|
+
data_type: N
|
89
|
+
offset: 39
|
90
|
+
length: 8
|
91
|
+
cheque_number:
|
92
|
+
data_type: N
|
93
|
+
offset: 47
|
94
|
+
length: 9
|
95
|
+
transaction_reference_number:
|
96
|
+
data_type: N
|
97
|
+
offset: 56
|
98
|
+
length: 9
|
99
|
+
transaction_amount_sign:
|
100
|
+
data_type: A
|
101
|
+
offset: 65
|
102
|
+
length: 1
|
103
|
+
transaction_amount:
|
104
|
+
data_type: N
|
105
|
+
offset: 66
|
106
|
+
length: 15
|
107
|
+
account_balance_sign:
|
108
|
+
data_type: A
|
109
|
+
offset: 81
|
110
|
+
length: 1
|
111
|
+
account_balance_after_transaction:
|
112
|
+
data_type: N
|
113
|
+
offset: 82
|
114
|
+
length: 17
|
115
|
+
transaction_description:
|
116
|
+
data_type: A
|
117
|
+
offset: 99
|
118
|
+
length: 50
|
119
|
+
dep_id:
|
120
|
+
data_type: A
|
121
|
+
offset: 149
|
122
|
+
length: 30
|
123
|
+
transaction_code:
|
124
|
+
data_type: A
|
125
|
+
offset: 179
|
126
|
+
length: 4
|
127
|
+
cheques_function_code:
|
128
|
+
data_type: A
|
129
|
+
offset: 183
|
130
|
+
length: 4
|
131
|
+
charge_levied_amount_sign:
|
132
|
+
data_type: A
|
133
|
+
offset: 187
|
134
|
+
length: 1
|
135
|
+
charge_levied_amount:
|
136
|
+
data_type: N
|
137
|
+
offset: 188
|
138
|
+
length: 9
|
139
|
+
charge_type:
|
140
|
+
data_type: A
|
141
|
+
offset: 197
|
142
|
+
length: 1
|
143
|
+
stamp_duty_amount_sign:
|
144
|
+
data_type: A
|
145
|
+
offset: 198
|
146
|
+
length: 1
|
147
|
+
stamp_duty_levied_amount:
|
148
|
+
data_type: N
|
149
|
+
offset: 199
|
150
|
+
length: 9
|
151
|
+
cash_deposit_fee_sign:
|
152
|
+
data_type: A
|
153
|
+
offset: 208
|
154
|
+
length: 1
|
155
|
+
cash_deposit_fee:
|
156
|
+
data_type: N
|
157
|
+
offset: 209
|
158
|
+
length: 9
|
159
|
+
charges_accrued:
|
160
|
+
data_type: A
|
161
|
+
offset: 218
|
162
|
+
length: 1
|
163
|
+
event_number:
|
164
|
+
data_type: N
|
165
|
+
offset: 219
|
166
|
+
length: 9
|
167
|
+
statement_line_sequence_number:
|
168
|
+
data_type: N
|
169
|
+
offset: 228
|
170
|
+
length: 9
|
171
|
+
vat_amount:
|
172
|
+
data_type: N
|
173
|
+
offset: 237
|
174
|
+
length: 9
|
175
|
+
cash_portion:
|
176
|
+
data_type: N
|
177
|
+
offset: 246
|
178
|
+
length: 15
|
179
|
+
deposit_number:
|
180
|
+
data_type: N
|
181
|
+
offset: 261
|
182
|
+
length: 9
|
183
|
+
transaction_time:
|
184
|
+
data_type: N
|
185
|
+
offset: 270
|
186
|
+
length: 6
|
187
|
+
filler_1:
|
188
|
+
data_type: A
|
189
|
+
offset: 276
|
190
|
+
length: 10
|
191
|
+
filler_2:
|
192
|
+
data_type: A
|
193
|
+
offset: 286
|
194
|
+
length: 4
|
195
|
+
sitename:
|
196
|
+
data_type: A
|
197
|
+
offset: 290
|
198
|
+
length: 15
|
199
|
+
category:
|
200
|
+
data_type: A
|
201
|
+
offset: 305
|
202
|
+
length: 4
|
203
|
+
transaction_type:
|
204
|
+
data_type: A
|
205
|
+
offset: 309
|
206
|
+
length: 2
|
207
|
+
deposit_id_description:
|
208
|
+
data_type: A
|
209
|
+
offset: 311
|
210
|
+
length: 10
|
211
|
+
pod_adjustment_amount:
|
212
|
+
data_type: A
|
213
|
+
offset: 321
|
214
|
+
length: 15
|
215
|
+
pod_adjustment_reason:
|
216
|
+
data_type: A
|
217
|
+
offset: 336
|
218
|
+
length: 35
|
219
|
+
pod_returned_cheque_reason_code:
|
220
|
+
data_type: N
|
221
|
+
offset: 371
|
222
|
+
length: 4
|
223
|
+
pod_returned_cheque_drawee:
|
224
|
+
data_type: A
|
225
|
+
offset: 375
|
226
|
+
length: 30
|
227
|
+
fedi_payor:
|
228
|
+
data_type: A
|
229
|
+
offset: 405
|
230
|
+
length: 30
|
231
|
+
fedi_number:
|
232
|
+
data_type: N
|
233
|
+
offset: 435
|
234
|
+
length: 16
|
235
|
+
redirect_description:
|
236
|
+
data_type: A
|
237
|
+
offset: 451
|
238
|
+
length: 16
|
239
|
+
account_number_redirect:
|
240
|
+
data_type: N
|
241
|
+
offset: 467
|
242
|
+
length: 19
|
243
|
+
unpaid_cheque_reason_description:
|
244
|
+
data_type: A
|
245
|
+
offset: 486
|
246
|
+
length: 20
|
247
|
+
filler_3:
|
248
|
+
data_type: A
|
249
|
+
offset: 506
|
250
|
+
length: 10
|
251
|
+
generation_number:
|
252
|
+
data_type: A
|
253
|
+
offset: 516
|
254
|
+
length: 9
|
255
|
+
old_reconfocus_category1:
|
256
|
+
data_type: N
|
257
|
+
offset: 525
|
258
|
+
length: 2
|
259
|
+
old_reconfocus_category2:
|
260
|
+
data_type: N
|
261
|
+
offset: 527
|
262
|
+
length: 2
|
263
|
+
filler_4:
|
264
|
+
data_type: A
|
265
|
+
offset: 529
|
266
|
+
length: 21
|
267
|
+
trailer:
|
268
|
+
rec_type:
|
269
|
+
data_type: A
|
270
|
+
offset: 1
|
271
|
+
length: 1
|
272
|
+
fixed_val: '8'
|
273
|
+
account_number:
|
274
|
+
data_type: N
|
275
|
+
offset: 2
|
276
|
+
length: 19
|
277
|
+
fixed_val: '9999999999999999999'
|
278
|
+
filler_1:
|
279
|
+
data_type: A
|
280
|
+
offset: 21
|
281
|
+
length: 44
|
282
|
+
hash_amount_sign:
|
283
|
+
data_type: A
|
284
|
+
offset: 65
|
285
|
+
length: 1
|
286
|
+
hash_amount:
|
287
|
+
data_type: N
|
288
|
+
offset: 66
|
289
|
+
length: 17
|
290
|
+
filler_2:
|
291
|
+
data_type: A
|
292
|
+
offset: 83
|
293
|
+
length: 107
|
294
|
+
rec_count:
|
295
|
+
data_type: N
|
296
|
+
offset: 190
|
297
|
+
length: 10
|
298
|
+
filler_3:
|
299
|
+
data_type: A
|
300
|
+
offset: 200
|
301
|
+
length: 316
|
302
|
+
generation_number:
|
303
|
+
data_type: A
|
304
|
+
offset: 516
|
305
|
+
length: 9
|
306
|
+
filler_4:
|
307
|
+
data_type: A
|
308
|
+
offset: 525
|
309
|
+
length: 25
|
@@ -0,0 +1,84 @@
|
|
1
|
+
header:
|
2
|
+
rec_type:
|
3
|
+
data_type: A
|
4
|
+
offset: 1
|
5
|
+
length: 1
|
6
|
+
fixed_val: '0'
|
7
|
+
filler_1:
|
8
|
+
data_type: A
|
9
|
+
offset: 2
|
10
|
+
length: 19
|
11
|
+
status:
|
12
|
+
data_type: A
|
13
|
+
offset: 21
|
14
|
+
length: 1
|
15
|
+
regex: ^T|P$
|
16
|
+
date:
|
17
|
+
data_type: N
|
18
|
+
offset: 22
|
19
|
+
length: 8
|
20
|
+
regex: ^[0-9]{8}$
|
21
|
+
no_strip: true
|
22
|
+
client_code:
|
23
|
+
data_type: N
|
24
|
+
offset: 30
|
25
|
+
length: 5
|
26
|
+
client_name:
|
27
|
+
data_type: A
|
28
|
+
offset: 35
|
29
|
+
length: 30
|
30
|
+
destination_code:
|
31
|
+
data_type: N
|
32
|
+
offset: 65
|
33
|
+
length: 5
|
34
|
+
filler_2:
|
35
|
+
data_type: A
|
36
|
+
offset: 70
|
37
|
+
length: 446
|
38
|
+
gen_no:
|
39
|
+
data_type: N
|
40
|
+
offset: 516
|
41
|
+
length: 9
|
42
|
+
filler_3:
|
43
|
+
data_type: A
|
44
|
+
offset: 525
|
45
|
+
length: 25
|
46
|
+
trailer:
|
47
|
+
rec_type:
|
48
|
+
data_type: A
|
49
|
+
offset: 1
|
50
|
+
length: 1
|
51
|
+
fixed_val: '9'
|
52
|
+
account_number:
|
53
|
+
data_type: N
|
54
|
+
offset: 2
|
55
|
+
length: 19
|
56
|
+
status:
|
57
|
+
data_type: A
|
58
|
+
offset: 21
|
59
|
+
length: 1
|
60
|
+
date:
|
61
|
+
data_type: N
|
62
|
+
offset: 22
|
63
|
+
length: 8
|
64
|
+
no_strip: true
|
65
|
+
filler_1:
|
66
|
+
data_type: A
|
67
|
+
offset: 30
|
68
|
+
length: 160
|
69
|
+
rec_count:
|
70
|
+
data_type: N
|
71
|
+
offset: 190
|
72
|
+
length: 10
|
73
|
+
filler_2:
|
74
|
+
data_type: A
|
75
|
+
offset: 200
|
76
|
+
length: 316
|
77
|
+
generation_number:
|
78
|
+
data_type: N
|
79
|
+
offset: 516
|
80
|
+
length: 9
|
81
|
+
filler_3:
|
82
|
+
data_type: A
|
83
|
+
offset: 525
|
84
|
+
length: 25
|
@@ -0,0 +1,51 @@
|
|
1
|
+
00000000000000000000P2002111903174TEST 03174 000000295
|
2
|
+
1000000000401111180900264000012002111800000000 +000000000000000+00000000000000000 AA0A 000000295
|
3
|
+
2000000000401111180900264000012002111820021118000000000000103899+000000002630670+00000000002630670ACB CREDIT SETTLEMENT BASGHW GP HEALTH000212608 FN71ACC +000000000 +000000000+000000000 000012533000000004000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
4
|
+
2000000000401111180900264000012002111820021118000000000000056571+000000000649363+00000000003280033CREDIT TRANSFER CASHFOCUS 440151586 CF71CFAC+000000000 +000000000+000000000 000012537000000006000000000000000000000000000000000000000 0510 000000000000000 0000000000000000 0000000000000000000 0000002955158
|
5
|
+
2000000000401111180900264000012002111820021118000000000000056572+000000000305575+00000000003585608CREDIT TRANSFER CASHFOCUS 440151579 CF71CFAC+000000000 +000000000+000000000 000012538000000008000000000000000000000000000000000000000 0510 000000000000000 0000000000000000 0000000000000000000 0000002955158
|
6
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000057866+00000000003643474DEPOSIT STRYDOMPAR 440144444 FN71QD +000000000 +000000000+000000000 000012539000000010000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
7
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000031699+00000000003675173DEPOSIT STRYDOMPAR 440144437 FN71QD +000000000 +000000000+000000000 000012540000000012000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
8
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000001141155+00000000004816328DEPOSIT KNYSNA 440102250 FN71QD +000000000 +000000000+000000000 000012542000000014000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
9
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000001524408+00000000006340736DEPOSIT FOURWAYS 440066010 FN71QD +000000000 +000000000+000000000 000012544000000016000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
10
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000139741+00000000006480477DEPOSIT EASTGATE 440015738 FN71QD +000000000 +000000000+000000000 000012545000000018000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
11
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000183475+00000000006663952DEPOSIT EASTGATE 440015720 FN71QD +000000000 +000000000+000000000 000012546000000020000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
12
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000003650595+00000000010314547DEPOSIT RSEBNK CEN 440072670 FN71QD +000000000 +000000000+000000000 000012548000000022000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
13
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000226313+00000000010540860DEPOSIT PROTEA PAR 440081667 FN71QD +000000000 +000000000+000000000 000012549000000024000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
14
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000172368+00000000010713228DEPOSIT PROTEA PAR 440086150 FN71QD +000000000 +000000000+000000000 000012550000000026000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
15
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000404852+00000000011118080DEPOSIT EST RAND M 440131727 FN71QD +000000000 +000000000+000000000 000012552000000028000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
16
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000246492+00000000011364572DEPOSIT EST RAND M 440131727 FN71QD +000000000 +000000000+000000000 000012553000000030000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
17
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000323331+00000000011687903DEPOSIT EASTGATE 440080127 FN71QD +000000000 +000000000+000000000 000012554000000032000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
18
|
+
2000000000401111180900264000012002111820021118000000000000000000+000000000128638+00000000011816541DEPOSIT HYDE PARK 440022703 FN71QD +000000000 +000000000+000000000 000012555000000034000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
19
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000190220+00000000012006761DEPOSIT HYDE PARK 440022728 FN71QD +000000000 +000000000+000000000 000012556000000002000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
20
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000054538+00000000012061299DEPOSIT HYDE PARK 440022710 FN71QD +000000000 +000000000+000000000 000012557000000004000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
21
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000016872+00000000012078171TRANSFER FROM PRIMROSE 440074532 FN71TXCR+000000000 +000000000+000000000 000012558000000006000000000000000000000000000000000000000 4240 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
22
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000300000+00000000012378171DEPOSIT LYTTELTON 440149650 FN71QD +000000000 +000000000+000000000 000012559000000008000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
23
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000340000+00000000012718171DEPOSIT LYTTELTON 440149643 FN71QD +000000000 +000000000+000000000 000012560000000010000000000000000000000000000000000000000 2740 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
24
|
+
2000000000401111180900264000022002111820021118000000000000056605+000000000150000+00000000012868171CREDIT TRANSFER CASHFOCUS 440012751 CF71CFAC+000000000 +000000000+000000000 000012561000000012000000000000000000000000000000000000000 0510 000000000000000 0000000000000000 0000000000000000000 0000002955158
|
25
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000123750+00000000012991921ACB CREDIT SETTLEMENT ABSA BANK 440077283 FN71ACC +000000000 +000000000+000000000 000012562000000014000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
26
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000033744+00000000013025665ACB CREDIT SETTLEMENT ABSA BANK 440077290 FN71ACC +000000000 +000000000+000000000 000012563000000016000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
27
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000107274+00000000013132939ACB CREDIT SETTLEMENT ABSA BANK 440077300 FN71ACC +000000000 +000000000+000000000 000012564000000018000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
28
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000025308+00000000013158247ACB CREDIT SETTLEMENT ABSA BANK 440077269 FN71ACC +000000000 +000000000+000000000 000012565000000020000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
29
|
+
2000000000401111180900264000022002111820021118000000000000000000+000000000130788+00000000013289035ACB CREDIT SETTLEMENT ABSA BANK 440077276 FN71ACC +000000000 +000000000+000000000 000012566000000022000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
30
|
+
2000000000401111180900264000022002111820021118000000000000016406+000000000017898+00000000013306933ACB CREDIT SETTLEMENT 440085319 * FN71ACC +000000000 +000000000+000000000 000012568000000024000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
31
|
+
2000000000401111180900264000022002111820021118000000000000019087+000000000118814+00000000013425747ACB CREDIT SETTLEMENT 440071299 STAND 146 KYA SAND FN71ACC +000000000 +000000000+000000000 000012569000000026000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
32
|
+
2000000000401111180900264000022002111820021118000000000000019088+000000000090493+00000000013516240ACB CREDIT SETTLEMENT 440071281 STAND 146 KYA SAND FN71ACC +000000000 +000000000+000000000 000012570000000028000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
33
|
+
2000000000401111180900264000022002111820021118000000000000016407+000000000064389+00000000013580629ACB CREDIT SETTLEMENT 440085326 * FN71ACC +000000000 +000000000+000000000 000012571000000030000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
34
|
+
2000000000401111180900264000022002111820021118000000000000019752+000000000391562+00000000013972191ACB CREDIT SETTLEMENT 440136637-FEDBOND FN71ACC +000000000 +000000000+000000000 000012572000000032000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
35
|
+
2000000000401111180900264000022002111820021118000000000000010211+000000001077862+00000000015050053ACB CREDIT SETTLEMENT 440141203 * FN71ACC +000000000 +000000000+000000000 000012573000000034000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
36
|
+
2000000000401111180900264000032002111820021118000000000000019158+000000002000000+00000000017050053ACB CREDIT SETTLEMENT 440062135 * FN71ACC +000000000 +000000000+000000000 000012574000000002000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
37
|
+
2000000000401111180900264000032002111820021118000000000000001492+000000001389660+00000000018439713ACB CREDIT SETTLEMENT FNBPAYMENT 440141556 FN71ACC +000000000 +000000000+000000000 000012575000000004000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
38
|
+
2000000000401111180900264000032002111820021118000000000000011274+000000000012426+00000000018452139ACB CREDIT SETTLEMENT 2073913575**440176534 PRIMEGROFN71ACC +000000000 +000000000+000000000 000012576000000006000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
39
|
+
2000000000401111180900264000032002111820021118000000000000006888+000000000149270+00000000018601409ACB CREDIT SETTLEMENT 2073888701COLLIERS RMS 000580FN71ACC +000000000 +000000000+000000000 000012577000000008000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
40
|
+
2000000000401111180900264000032002111820021118000000000000006889+000000000788054+00000000019389463ACB CREDIT SETTLEMENT 2073888702COLLIERS RMS 000581FN71ACC +000000000 +000000000+000000000 000012578000000010000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
41
|
+
2000000000401111180900264000032002111820021118000000000000011273+000000000498351+00000000019887814ACB CREDIT SETTLEMENT 2073913574**440131283 PRIMEGROFN71ACC +000000000 +000000000+000000000 000012579000000012000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
42
|
+
2000000000401111180900264000032002111820021118000000000000001108+000000000259414+00000000020147228ACB CREDIT SETTLEMENT 440064559 FN71ACC +000000000 +000000000+000000000 000012580000000014000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
43
|
+
2000000000401111180900264000032002111820021118000000000000004714+000000000017898+00000000020165126ACB CREDIT SETTLEMENT CRONJE 440107442 GS CRFN71ACC +000000000 +000000000+000000000 000012581000000016000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
44
|
+
2000000000401111180900264000032002111820021118000000000000004713+000000000303949+00000000020469075ACB CREDIT SETTLEMENT CRONJE 440107450 GS CRFN71ACC +000000000 +000000000+000000000 000012582000000018000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
45
|
+
2000000000401111180900264000032002111820021118000000000000002512+000000000085000+00000000020554075ACB CREDIT SETTLEMENT ROBINSON A/C440110004 FN71ACC +000000000 +000000000+000000000 000012583000000020000000000000000000000000000000000000000 0012 000000000000000 0000000000000000 0000000000000000000 0000002955151
|
46
|
+
2000000000401111180900264000032002111820021118081409096000000000-000000000001000+00000000020553075BANK DEBIT 81409096 HEADOFFICE FN71CHJ -000000175 -000000020+000000000 000012584000000022000000000000000000000000000000000000000 0790 000000000000000 0000000000000000 0000000000000000000 0000002950505
|
47
|
+
2000000000401111180900264000032002111820021118081409306000000000-000000000001000+00000000020552075BANK DEBIT 81409306 HEADOFFICE FN71CHJ -000000175 -000000020+000000000 000012585000000023000000000000000000000000000000000000000 0790 000000000000000 0000000000000000 0000000000000000000 0000002950505
|
48
|
+
2000000000401111180900264000032002111820021118000000000000000433-000000020552075+00000000000000000SWEEPING CASHFOCUS 4054394859 TR# 433 CF71FS4D+000000000 -000000020+000000000 000012586000000024000000000000000000000000000000000000000 1840 000000000000000 0000000000000000 0000000000000000000 0000002950521
|
49
|
+
89999999999999999999 +00000000000000000 0000000048 000000295
|
50
|
+
99999999999999999999P20021119 0000000050 000000295
|
51
|
+
|
@@ -0,0 +1,142 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Absa::Esd::Statement4Unpacked do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@input_string = File.open("./spec/examples/statement4_unpacked.dat", "rb").read
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should be able to read the recon transmission header record" do
|
10
|
+
hash = Absa::Esd::Statement4Unpacked::ReconTransmission::Header.string_to_hash(@input_string.split(/^/)[0])
|
11
|
+
|
12
|
+
hash.should == {
|
13
|
+
rec_type: "0",
|
14
|
+
filler_1: "0000000000000000000",
|
15
|
+
status: "P",
|
16
|
+
date: "20021119",
|
17
|
+
client_code: "3174",
|
18
|
+
client_name: "TEST",
|
19
|
+
destination_code: "3174",
|
20
|
+
filler_2: "",
|
21
|
+
gen_no: "295",
|
22
|
+
filler_3: ""
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should be able to read the recon transmission trailer record" do
|
27
|
+
hash = Absa::Esd::Statement4Unpacked::ReconTransmission::Trailer.string_to_hash(@input_string.split(/^/)[-2])
|
28
|
+
|
29
|
+
hash.should == {
|
30
|
+
rec_type: "9",
|
31
|
+
account_number: "9999999999999999999",
|
32
|
+
status: "P",
|
33
|
+
date: "20021119",
|
34
|
+
filler_1: "",
|
35
|
+
rec_count: "50",
|
36
|
+
filler_2: "",
|
37
|
+
generation_number: "295",
|
38
|
+
filler_3: ""
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should be able to read the recon account header record" do
|
43
|
+
hash = Absa::Esd::Statement4Unpacked::ReconAccount::Header.string_to_hash(@input_string.split(/^/)[1])
|
44
|
+
|
45
|
+
hash.should == {
|
46
|
+
rec_type: "1",
|
47
|
+
account_number: "4011111809",
|
48
|
+
statement_number: "264",
|
49
|
+
filler_1: "00001",
|
50
|
+
processing_date: "20021118",
|
51
|
+
account_branch_code: "0",
|
52
|
+
filler_2: "",
|
53
|
+
filler_3: "+000000000000000",
|
54
|
+
hd_op_bals: "+",
|
55
|
+
hd_op_bal: "0",
|
56
|
+
filler_4: "",
|
57
|
+
function_code: "AA0A",
|
58
|
+
filler_5: "",
|
59
|
+
generation_number: "000000295",
|
60
|
+
filler_6: ""
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should be able to read the recon account detail record" do
|
65
|
+
hash = Absa::Esd::Statement4Unpacked::ReconAccount::Detail.string_to_hash(@input_string.split(/^/)[3])
|
66
|
+
|
67
|
+
hash.should == {
|
68
|
+
rec_type: "2",
|
69
|
+
account_number: "4011111809",
|
70
|
+
statement_number: "264",
|
71
|
+
page_number: "1",
|
72
|
+
transaction_processing_date: "20021118",
|
73
|
+
transaction_effective_date: "20021118",
|
74
|
+
cheque_number: "0",
|
75
|
+
transaction_reference_number: "56571",
|
76
|
+
transaction_amount_sign: "+",
|
77
|
+
transaction_amount: "649363",
|
78
|
+
account_balance_sign: "+",
|
79
|
+
account_balance_after_transaction: "3280033",
|
80
|
+
transaction_description: "CREDIT TRANSFER CASHFOCUS",
|
81
|
+
dep_id: "440151586",
|
82
|
+
transaction_code: "CF71",
|
83
|
+
cheques_function_code: "CFAC",
|
84
|
+
charge_levied_amount_sign: "+",
|
85
|
+
charge_levied_amount: "0",
|
86
|
+
charge_type: "",
|
87
|
+
stamp_duty_amount_sign: "+",
|
88
|
+
stamp_duty_levied_amount: "0",
|
89
|
+
cash_deposit_fee_sign: "+",
|
90
|
+
cash_deposit_fee: "0",
|
91
|
+
charges_accrued: "",
|
92
|
+
event_number: "12537",
|
93
|
+
statement_line_sequence_number: "6",
|
94
|
+
vat_amount: "0",
|
95
|
+
cash_portion: "0",
|
96
|
+
deposit_number: "0",
|
97
|
+
transaction_time: "0",
|
98
|
+
filler_1: "",
|
99
|
+
filler_2: "",
|
100
|
+
sitename: "",
|
101
|
+
category: "0510",
|
102
|
+
transaction_type: "",
|
103
|
+
deposit_id_description: "",
|
104
|
+
pod_adjustment_amount: "000000000000000",
|
105
|
+
pod_adjustment_reason: "",
|
106
|
+
pod_returned_cheque_reason_code: "0",
|
107
|
+
pod_returned_cheque_drawee: "",
|
108
|
+
fedi_payor: "",
|
109
|
+
fedi_number: "0",
|
110
|
+
redirect_description: "",
|
111
|
+
account_number_redirect: "0",
|
112
|
+
unpaid_cheque_reason_description: "",
|
113
|
+
filler_3: "",
|
114
|
+
generation_number: "000000295",
|
115
|
+
old_reconfocus_category1: "51",
|
116
|
+
old_reconfocus_category2: "58",
|
117
|
+
filler_4: ""
|
118
|
+
}
|
119
|
+
end
|
120
|
+
|
121
|
+
it "should be able to read the recon account trailer record" do
|
122
|
+
hash = Absa::Esd::Statement4Unpacked::ReconAccount::Trailer.string_to_hash(@input_string.split(/^/)[-3])
|
123
|
+
|
124
|
+
hash.should == {
|
125
|
+
rec_type: "8",
|
126
|
+
account_number: "9999999999999999999",
|
127
|
+
filler_1: "",
|
128
|
+
hash_amount_sign: "+",
|
129
|
+
hash_amount: "0",
|
130
|
+
filler_2: "",
|
131
|
+
rec_count: "48",
|
132
|
+
filler_3: "",
|
133
|
+
generation_number: "000000295",
|
134
|
+
filler_4: ""
|
135
|
+
}
|
136
|
+
end
|
137
|
+
|
138
|
+
it "should be able to parse an entire 'statement 4 unpacked' file format" do
|
139
|
+
pending
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: absa-esd
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jeffrey van Aswegen, Douglas Anderson
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-04-04 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: activesupport
|
16
|
+
requirement: &70145554214580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70145554214580
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: i18n
|
27
|
+
requirement: &70145554214160 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70145554214160
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: strata
|
38
|
+
requirement: &70145554213660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 0.0.1
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70145554213660
|
47
|
+
description: A ruby interface to commumicate with the ABSA Electronic Statement Delivery
|
48
|
+
platform.
|
49
|
+
email:
|
50
|
+
- jeffmess@gmail.com, i.am.douglas.anderson@gmail.com
|
51
|
+
executables: []
|
52
|
+
extensions: []
|
53
|
+
extra_rdoc_files: []
|
54
|
+
files:
|
55
|
+
- Gemfile
|
56
|
+
- Gemfile.lock
|
57
|
+
- README
|
58
|
+
- Rakefile
|
59
|
+
- absa-esd.gemspec
|
60
|
+
- lib/absa-esd.rb
|
61
|
+
- lib/absa-esd/statement4_unpacked.rb
|
62
|
+
- lib/absa-esd/transmission/document.rb
|
63
|
+
- lib/absa-esd/transmission/record.rb
|
64
|
+
- lib/absa-esd/transmission/set.rb
|
65
|
+
- lib/absa-esd/version.rb
|
66
|
+
- lib/config/statement4_unpacked/recon_account.yml
|
67
|
+
- lib/config/statement4_unpacked/recon_transmission.yml
|
68
|
+
- spec/examples/statement4_unpacked.dat
|
69
|
+
- spec/lib/statement4_unpacked_spec.rb
|
70
|
+
- spec/spec_helper.rb
|
71
|
+
homepage: ''
|
72
|
+
licenses: []
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
none: false
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ! '>='
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
requirements: []
|
90
|
+
rubyforge_project: absa-esd
|
91
|
+
rubygems_version: 1.8.6
|
92
|
+
signing_key:
|
93
|
+
specification_version: 3
|
94
|
+
summary: A ruby interface to commumicate with the ABSA Electronic Statement Delivery
|
95
|
+
platform.
|
96
|
+
test_files:
|
97
|
+
- spec/examples/statement4_unpacked.dat
|
98
|
+
- spec/lib/statement4_unpacked_spec.rb
|
99
|
+
- spec/spec_helper.rb
|