absa-h2h 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/.gitignore +5 -0
  2. data/.rspec +3 -0
  3. data/Gemfile +7 -0
  4. data/README +0 -0
  5. data/Rakefile +7 -0
  6. data/absa-h2h.gemspec +23 -0
  7. data/lib/absa-h2h/account_holder_verification.rb +22 -0
  8. data/lib/absa-h2h/account_holder_verification_output.rb +22 -0
  9. data/lib/absa-h2h/eft/rejection_code.rb +30 -0
  10. data/lib/absa-h2h/eft.rb +200 -0
  11. data/lib/absa-h2h/eft_output.rb +12 -0
  12. data/lib/absa-h2h/eft_redirect.rb +13 -0
  13. data/lib/absa-h2h/eft_unpaid.rb +13 -0
  14. data/lib/absa-h2h/reply.rb +27 -0
  15. data/lib/absa-h2h/transmission/document.rb +26 -0
  16. data/lib/absa-h2h/transmission/record.rb +18 -0
  17. data/lib/absa-h2h/transmission/set.rb +168 -0
  18. data/lib/absa-h2h/version.rb +5 -0
  19. data/lib/absa-h2h.rb +22 -0
  20. data/lib/config/account_holder_verification.yml +196 -0
  21. data/lib/config/account_holder_verification_output.yml +182 -0
  22. data/lib/config/document.yml +54 -0
  23. data/lib/config/eft.yml +284 -0
  24. data/lib/config/eft_output.yml +65 -0
  25. data/lib/config/eft_redirect.yml +129 -0
  26. data/lib/config/eft_rejection_codes.yml +321 -0
  27. data/lib/config/eft_unpaid.yml +125 -0
  28. data/lib/config/reply.yml +222 -0
  29. data/lib/tmp/test.txt +0 -0
  30. data/spec/examples/ahv_input_file.txt +7 -0
  31. data/spec/examples/ahv_output_file.txt +7 -0
  32. data/spec/examples/eft_input_credit_file.txt +166 -0
  33. data/spec/examples/eft_input_credit_file2.txt +0 -0
  34. data/spec/examples/eft_input_file.txt +20 -0
  35. data/spec/examples/eft_output_file.txt +35 -0
  36. data/spec/examples/reply_file.txt +5 -0
  37. data/spec/examples/transmission_header_file.txt +1 -0
  38. data/spec/lib/account_holder_verification_spec.rb +157 -0
  39. data/spec/lib/eft/rejection_code_spec.rb +37 -0
  40. data/spec/lib/eft_output_spec.rb +9 -0
  41. data/spec/lib/eft_spec.rb +369 -0
  42. data/spec/lib/eft_transaction_standard_spec.rb +88 -0
  43. data/spec/lib/string_spec.rb +9 -0
  44. data/spec/lib/transmission/document_spec.rb +152 -0
  45. data/spec/lib/transmission/header_spec.rb +28 -0
  46. data/spec/lib/transmission/record_spec.rb +24 -0
  47. data/spec/lib/transmission/trailer_spec.rb +26 -0
  48. data/spec/spec_helper.rb +9 -0
  49. metadata +135 -0
@@ -0,0 +1,196 @@
1
+ header:
2
+ rec_id:
3
+ data_type: N
4
+ offset: 1
5
+ length: 3
6
+ fixed_val: '030'
7
+ no_strip: true
8
+ rec_status:
9
+ data_type: A
10
+ offset: 4
11
+ length: 1
12
+ regex: ^T|L$
13
+ gen_no:
14
+ data_type: N
15
+ offset: 5
16
+ length: 7
17
+ dept_code:
18
+ data_type: A
19
+ offset: 12
20
+ length: 6
21
+ trailer:
22
+ rec_id:
23
+ data_type: N
24
+ offset: 1
25
+ length: 3
26
+ fixed_val: '039'
27
+ no_strip: true
28
+ rec_status:
29
+ data_type: A
30
+ offset: 4
31
+ length: 1
32
+ regex: ^T|L$
33
+ no_det_recs:
34
+ data_type: N
35
+ offset: 5
36
+ length: 7
37
+ acc_total:
38
+ data_type: N
39
+ offset: 12
40
+ length: 18
41
+ internal_account_detail:
42
+ rec_id:
43
+ data_type: N
44
+ offset: 1
45
+ length: 3
46
+ fixed_val: '031'
47
+ no_strip: true
48
+ rec_status:
49
+ data_type: A
50
+ offset: 4
51
+ length: 1
52
+ regex: ^T|L$
53
+ seq_no:
54
+ data_type: N
55
+ offset: 5
56
+ length: 7
57
+ account_number:
58
+ data_type: N
59
+ offset: 12
60
+ length: 18
61
+ id_number:
62
+ data_type: A
63
+ offset: 30
64
+ length: 13
65
+ initials:
66
+ data_type: A
67
+ offset: 43
68
+ length: 3
69
+ regex: ^[a-zA-Z]{0,3}$
70
+ surname:
71
+ data_type: A
72
+ offset: 46
73
+ length: 60
74
+ return_code_1:
75
+ data_type: N
76
+ offset: 106
77
+ length: 2
78
+ fixed_val: '00'
79
+ return_code_2:
80
+ data_type: N
81
+ offset: 108
82
+ length: 2
83
+ fixed_val: '00'
84
+ return_code_3:
85
+ data_type: N
86
+ offset: 110
87
+ length: 2
88
+ fixed_val: '00'
89
+ return_code_4:
90
+ data_type: N
91
+ offset: 112
92
+ length: 2
93
+ fixed_val: '00'
94
+ user_ref:
95
+ data_type: A
96
+ offset: 114
97
+ length: 30
98
+ external_account_detail:
99
+ rec_id:
100
+ data_type: N
101
+ offset: 1
102
+ length: 3
103
+ fixed_val: '031'
104
+ no_strip: true
105
+ rec_status:
106
+ data_type: A
107
+ offset: 4
108
+ length: 1
109
+ regex: ^T|L$
110
+ seq_no:
111
+ data_type: N
112
+ offset: 5
113
+ length: 7
114
+ account_number:
115
+ data_type: N
116
+ offset: 12
117
+ length: 18
118
+ id_number:
119
+ data_type: A
120
+ offset: 30
121
+ length: 13
122
+ initials:
123
+ data_type: A
124
+ offset: 43
125
+ length: 3
126
+ surname:
127
+ data_type: A
128
+ offset: 46
129
+ length: 60
130
+ return_code_1:
131
+ data_type: N
132
+ offset: 106
133
+ length: 2
134
+ fixed_val: '00'
135
+ return_code_2:
136
+ data_type: N
137
+ offset: 108
138
+ length: 2
139
+ fixed_val: '00'
140
+ return_code_3:
141
+ data_type: N
142
+ offset: 110
143
+ length: 2
144
+ fixed_val: '00'
145
+ return_code_4:
146
+ data_type: N
147
+ offset: 112
148
+ length: 2
149
+ fixed_val: '00'
150
+ user_ref:
151
+ data_type: A
152
+ offset: 114
153
+ length: 30
154
+ branch_code:
155
+ data_type: N
156
+ offset: 144
157
+ length: 6
158
+ originating_bank:
159
+ data_type: N
160
+ offset: 150
161
+ length: 6
162
+ fixed_val: '60'
163
+ ld_code:
164
+ data_type: A
165
+ offset: 156
166
+ length: 7
167
+ return_code_5:
168
+ data_type: N
169
+ offset: 163
170
+ length: 2
171
+ fixed_val: '00'
172
+ return_code_6:
173
+ data_type: N
174
+ offset: 165
175
+ length: 2
176
+ fixed_val: '00'
177
+ return_code_7:
178
+ data_type: N
179
+ offset: 167
180
+ length: 2
181
+ fixed_val: '00'
182
+ return_code_8:
183
+ data_type: N
184
+ offset: 169
185
+ length: 2
186
+ fixed_val: '00'
187
+ return_code_9:
188
+ data_type: N
189
+ offset: 171
190
+ length: 2
191
+ fixed_val: '00'
192
+ return_code_10:
193
+ data_type: N
194
+ offset: 173
195
+ length: 2
196
+ fixed_val: '00'
@@ -0,0 +1,182 @@
1
+ header:
2
+ rec_id:
3
+ data_type: N
4
+ offset: 1
5
+ length: 3
6
+ fixed_val: '030'
7
+ no_strip: true
8
+ rec_status:
9
+ data_type: A
10
+ offset: 4
11
+ length: 1
12
+ regex: ^T|L$
13
+ gen_no:
14
+ data_type: N
15
+ offset: 5
16
+ length: 7
17
+ dept_code:
18
+ data_type: A
19
+ offset: 12
20
+ length: 6
21
+ trailer:
22
+ rec_id:
23
+ data_type: N
24
+ offset: 1
25
+ length: 3
26
+ fixed_val: '039'
27
+ no_strip: true
28
+ rec_status:
29
+ data_type: A
30
+ offset: 4
31
+ length: 1
32
+ regex: ^T|L$
33
+ no_det_recs:
34
+ data_type: N
35
+ offset: 5
36
+ length: 7
37
+ acc_total:
38
+ data_type: N
39
+ offset: 12
40
+ length: 18
41
+ internal_account_detail:
42
+ rec_id:
43
+ data_type: N
44
+ offset: 1
45
+ length: 3
46
+ fixed_val: '031'
47
+ no_strip: true
48
+ rec_status:
49
+ data_type: A
50
+ offset: 4
51
+ length: 1
52
+ regex: ^T|L$
53
+ seq_no:
54
+ data_type: N
55
+ offset: 5
56
+ length: 7
57
+ account_number:
58
+ data_type: N
59
+ offset: 12
60
+ length: 18
61
+ id_number:
62
+ data_type: A
63
+ offset: 30
64
+ length: 13
65
+ initials:
66
+ data_type: A
67
+ offset: 43
68
+ length: 3
69
+ regex: ^[a-zA-Z]{0,3}$
70
+ surname:
71
+ data_type: A
72
+ offset: 46
73
+ length: 60
74
+ return_code_1:
75
+ data_type: N
76
+ offset: 106
77
+ length: 2
78
+ return_code_2:
79
+ data_type: N
80
+ offset: 108
81
+ length: 2
82
+ return_code_3:
83
+ data_type: N
84
+ offset: 110
85
+ length: 2
86
+ return_code_4:
87
+ data_type: N
88
+ offset: 112
89
+ length: 2
90
+ user_ref:
91
+ data_type: A
92
+ offset: 114
93
+ length: 30
94
+ external_account_detail:
95
+ rec_id:
96
+ data_type: N
97
+ offset: 1
98
+ length: 3
99
+ fixed_val: '031'
100
+ no_strip: true
101
+ rec_status:
102
+ data_type: A
103
+ offset: 4
104
+ length: 1
105
+ regex: ^T|L$
106
+ seq_no:
107
+ data_type: N
108
+ offset: 5
109
+ length: 7
110
+ account_number:
111
+ data_type: N
112
+ offset: 12
113
+ length: 18
114
+ id_number:
115
+ data_type: A
116
+ offset: 30
117
+ length: 13
118
+ initials:
119
+ data_type: A
120
+ offset: 43
121
+ length: 3
122
+ surname:
123
+ data_type: A
124
+ offset: 46
125
+ length: 60
126
+ return_code_1:
127
+ data_type: N
128
+ offset: 106
129
+ length: 2
130
+ return_code_2:
131
+ data_type: N
132
+ offset: 108
133
+ length: 2
134
+ return_code_3:
135
+ data_type: N
136
+ offset: 110
137
+ length: 2
138
+ return_code_4:
139
+ data_type: N
140
+ offset: 112
141
+ length: 2
142
+ user_ref:
143
+ data_type: A
144
+ offset: 114
145
+ length: 30
146
+ branch_code:
147
+ data_type: N
148
+ offset: 144
149
+ length: 6
150
+ originating_bank:
151
+ data_type: N
152
+ offset: 150
153
+ length: 6
154
+ fixed_val: '60'
155
+ ld_code:
156
+ data_type: A
157
+ offset: 156
158
+ length: 7
159
+ return_code_5:
160
+ data_type: N
161
+ offset: 163
162
+ length: 2
163
+ return_code_6:
164
+ data_type: N
165
+ offset: 165
166
+ length: 2
167
+ return_code_7:
168
+ data_type: N
169
+ offset: 167
170
+ length: 2
171
+ return_code_8:
172
+ data_type: N
173
+ offset: 169
174
+ length: 2
175
+ return_code_9:
176
+ data_type: N
177
+ offset: 171
178
+ length: 2
179
+ return_code_10:
180
+ data_type: N
181
+ offset: 173
182
+ length: 2
@@ -0,0 +1,54 @@
1
+ header:
2
+ rec_id:
3
+ data_type: N
4
+ offset: 1
5
+ length: 3
6
+ fixed_val: '000'
7
+ no_strip: true
8
+ rec_status:
9
+ data_type: A
10
+ offset: 4
11
+ length: 1
12
+ regex: ^T|L$
13
+ date:
14
+ data_type: N
15
+ offset: 5
16
+ length: 8
17
+ regex: ^[0-9]{8}$
18
+ client_code:
19
+ data_type: N
20
+ offset: 13
21
+ length: 5
22
+ client_name:
23
+ data_type: A
24
+ offset: 18
25
+ length: 30
26
+ transmission_no:
27
+ data_type: N
28
+ offset: 48
29
+ length: 7
30
+ destination:
31
+ data_type: N
32
+ offset: 55
33
+ length: 5
34
+ input_fixed_val: '0'
35
+ th_for_use_of_ld_user:
36
+ data_type: A
37
+ offset: 179
38
+ length: 20
39
+ trailer:
40
+ rec_id:
41
+ data_type: N
42
+ offset: 1
43
+ length: 3
44
+ fixed_val: '999'
45
+ no_strip: true
46
+ rec_status:
47
+ data_type: A
48
+ offset: 4
49
+ length: 1
50
+ regex: ^T|L$
51
+ no_of_recs:
52
+ data_type: N
53
+ offset: 5
54
+ length: 9
@@ -0,0 +1,284 @@
1
+ header:
2
+ rec_id:
3
+ data_type: N
4
+ offset: 1
5
+ length: 3
6
+ regex: ^001|020$
7
+ no_strip: true
8
+ rec_status:
9
+ data_type: A
10
+ offset: 4
11
+ length: 1
12
+ regex: ^T|L$
13
+ bankserv_record_identifier:
14
+ data_type: N
15
+ offset: 5
16
+ length: 2
17
+ fixed_val: '04'
18
+ bankserv_user_code:
19
+ data_type: A
20
+ offset: 7
21
+ length: 4
22
+ bankserv_creation_date:
23
+ data_type: N
24
+ offset: 11
25
+ length: 6
26
+ regex: ^[0-9]{6}$
27
+ no_strip: true
28
+ bankserv_purge_date:
29
+ data_type: N
30
+ offset: 17
31
+ length: 6
32
+ regex: ^[0-9]{6}$
33
+ no_strip: true
34
+ first_action_date:
35
+ data_type: N
36
+ offset: 23
37
+ length: 6
38
+ regex: ^[0-9]{6}$
39
+ no_strip: true
40
+ last_action_date:
41
+ data_type: N
42
+ offset: 29
43
+ length: 6
44
+ regex: ^[0-9]{6}$
45
+ no_strip: true
46
+ first_sequence_number:
47
+ data_type: N
48
+ offset: 35
49
+ length: 6
50
+ user_generation_number:
51
+ data_type: N
52
+ offset: 41
53
+ length: 4
54
+ type_of_service:
55
+ data_type: A
56
+ offset: 45
57
+ length: 10
58
+ regex: ^CORPSSV|SAMEDAY|ONE DAY|TWO DAY|INTERNAL|BATCH$
59
+ accepted_report:
60
+ data_type: A
61
+ offset: 55
62
+ length: 1
63
+ account_type_correct:
64
+ data_type: A
65
+ offset: 56
66
+ length: 1
67
+ standard_record:
68
+ rec_id:
69
+ data_type: N
70
+ offset: 1
71
+ length: 3
72
+ regex: ^001|020$
73
+ no_strip: true
74
+ rec_status:
75
+ data_type: A
76
+ offset: 4
77
+ length: 1
78
+ regex: ^T|L$
79
+ bankserv_record_identifier:
80
+ data_type: N
81
+ offset: 5
82
+ length: 2
83
+ regex: ^10|50$
84
+ user_branch:
85
+ data_type: N
86
+ offset: 7
87
+ length: 6
88
+ user_nominated_account:
89
+ data_type: N
90
+ offset: 13
91
+ length: 11
92
+ user_code:
93
+ data_type: A
94
+ offset: 24
95
+ length: 4
96
+ user_sequence_number:
97
+ data_type: N
98
+ offset: 28
99
+ length: 6
100
+ homing_branch:
101
+ data_type: N
102
+ offset: 34
103
+ length: 6
104
+ homing_account_number:
105
+ data_type: N
106
+ offset: 40
107
+ length: 11
108
+ type_of_account:
109
+ data_type: N
110
+ offset: 51
111
+ length: 1
112
+ regex: ^1|2|3|4|6$
113
+ amount:
114
+ data_type: N
115
+ offset: 52
116
+ length: 11
117
+ action_date:
118
+ data_type: N
119
+ offset: 63
120
+ length: 6
121
+ regex: ^[0-9]{6}$
122
+ no_strip: true
123
+ entry_class:
124
+ data_type: N
125
+ offset: 69
126
+ length: 2
127
+ tax_code:
128
+ data_type: N
129
+ offset: 71
130
+ length: 1
131
+ user_ref:
132
+ data_type: A
133
+ offset: 75
134
+ length: 30
135
+ homing_account_name:
136
+ data_type: A
137
+ offset: 105
138
+ length: 30
139
+ non_standard_homing_account_number:
140
+ data_type: N
141
+ offset: 135
142
+ length: 20
143
+ homing_institution:
144
+ data_type: N
145
+ offset: 171
146
+ length: 2
147
+ fixed_val: '21'
148
+ contra_record:
149
+ rec_id:
150
+ data_type: N
151
+ offset: 1
152
+ length: 3
153
+ regex: ^001|020$
154
+ no_strip: true
155
+ rec_status:
156
+ data_type: A
157
+ offset: 4
158
+ length: 1
159
+ regex: ^T|L$
160
+ bankserv_record_identifier:
161
+ data_type: N
162
+ offset: 5
163
+ length: 2
164
+ regex: ^12|52$
165
+ user_branch:
166
+ data_type: N
167
+ offset: 7
168
+ length: 6
169
+ user_nominated_account:
170
+ data_type: N
171
+ offset: 13
172
+ length: 11
173
+ user_code:
174
+ data_type: A
175
+ offset: 24
176
+ length: 4
177
+ user_sequence_number:
178
+ data_type: N
179
+ offset: 28
180
+ length: 6
181
+ homing_branch:
182
+ data_type: N
183
+ offset: 34
184
+ length: 6
185
+ homing_account_number:
186
+ data_type: N
187
+ offset: 40
188
+ length: 11
189
+ type_of_account:
190
+ data_type: N
191
+ offset: 51
192
+ length: 1
193
+ fixed_val: '1'
194
+ amount:
195
+ data_type: N
196
+ offset: 52
197
+ length: 11
198
+ action_date:
199
+ data_type: N
200
+ offset: 63
201
+ length: 6
202
+ regex: ^[0-9]{6}$
203
+ no_strip: true
204
+ entry_class:
205
+ data_type: N
206
+ offset: 69
207
+ length: 2
208
+ fixed_val: '10'
209
+ user_ref:
210
+ data_type: A
211
+ offset: 75
212
+ length: 30
213
+ filler:
214
+ data_type: A
215
+ offset: 71
216
+ length: 4
217
+ fixed_val: '0000'
218
+ expose: false
219
+ trailer:
220
+ rec_id:
221
+ data_type: N
222
+ offset: 1
223
+ length: 3
224
+ regex: ^001|020$
225
+ no_strip: true
226
+ rec_status:
227
+ data_type: A
228
+ offset: 4
229
+ length: 1
230
+ regex: ^T|L$
231
+ bankserv_record_identifier:
232
+ data_type: N
233
+ offset: 5
234
+ length: 2
235
+ fixed_val: '92'
236
+ bankserv_user_code:
237
+ data_type: A
238
+ offset: 7
239
+ length: 4
240
+ first_sequence_number:
241
+ data_type: N
242
+ offset: 11
243
+ length: 6
244
+ last_sequence_number:
245
+ data_type: N
246
+ offset: 17
247
+ length: 6
248
+ first_action_date:
249
+ data_type: N
250
+ offset: 23
251
+ length: 6
252
+ regex: ^[0-9]{6}$
253
+ no_strip: true
254
+ last_action_date:
255
+ data_type: N
256
+ offset: 29
257
+ length: 6
258
+ regex: ^[0-9]{6}$
259
+ no_strip: true
260
+ no_debit_records:
261
+ data_type: N
262
+ offset: 35
263
+ length: 6
264
+ no_credit_records:
265
+ data_type: N
266
+ offset: 41
267
+ length: 6
268
+ no_contra_records:
269
+ data_type: N
270
+ offset: 47
271
+ length: 6
272
+ total_debit_value:
273
+ data_type: N
274
+ offset: 53
275
+ length: 12
276
+ total_credit_value:
277
+ data_type: N
278
+ offset: 65
279
+ length: 12
280
+ hash_total_of_homing_account_numbers:
281
+ data_type: N
282
+ offset: 77
283
+ length: 12
284
+