bankserv 0.2.2 → 0.2.3

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.
@@ -91,7 +91,7 @@ module Bankserv
91
91
  transmission = Absa::H2h::Transmission::Document.build([document.to_hash])
92
92
  file_name = generate_input_file_name
93
93
  File.open("#{Bankserv::Engine.input_directory}/#{file_name}", 'w') { |f|
94
- f.puts transmission
94
+ f.write transmission
95
95
  }
96
96
  @logs[:input_files] << "Input Document File created. File name: #{file_name}"
97
97
  rescue Exception => e
@@ -139,27 +139,15 @@ module Bankserv
139
139
  end
140
140
 
141
141
  def first_action_date
142
- fad = Date.today
143
- transactions.map(&:data).each do |hash|
144
- first = Date.strptime(hash[:action_date], "%y%m%d")
145
- fad = first if first < fad
146
- end
147
- fad.strftime("%y%m%d")
142
+ transactions.min_by{|t| t.data[:action_date]}.data[:action_date]
148
143
  end
149
144
 
150
- def last_action_date
151
- lad = Date.today
152
- transactions.map(&:data).each do |hash|
153
- last = Date.strptime(hash[:action_date], "%y%m%d")
154
- lad = last if last < lad
155
- end
156
- lad = lad + 3.days
157
- lad.strftime("%y%m%d")
145
+ def last_action_date
146
+ transactions.max_by{|t| t.data[:action_date]}.data[:action_date]
158
147
  end
159
148
 
160
149
  def purge_date
161
- date = Date.strptime("#{self.last_action_date}", "%y%m%d") + 4.days
162
- date.strftime("%y%m%d")
150
+ last_action_date
163
151
  end
164
152
 
165
153
  def hash_total_of_homing_account_numbers
@@ -1,3 +1,3 @@
1
1
  module Bankserv
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -0,0 +1,8 @@
1
+ 000L2012041012345TESTTEST 000000100000
2
+ 001L0499991204101204111204111204110000010001TWO DAY
3
+ 001L5025025504530495834999900000125065562097363670100000301400120411440 TESTTEST 544 DOUGLAS ANDERSON 00000000000000000000 21
4
+ 001L5025025504530495834999900000263200509076546281200000315000120411440 TESTTEST 545 JEFFREY VAN ASWEGEN 00000000000000000000 21
5
+ 001L5025025504530495834999900000302000900070440213100000279300120411440 TESTTEST 546 PETER DE VILLIERS 00000000000000000000 21
6
+ 001L5225025504530495834999900000425025504530495834100000895700120411100000TESTTEST CONTRA19
7
+ 001L929999000001000004120411120411000003000001000001000000895700000000895700075774845998
8
+ 999L000000008
@@ -1,5 +1,5 @@
1
1
  000L2008080800986TESTTEST 000084600000
2
- 020L0499990808080808150808080808110000780846BATCH YY
2
+ 020L0499990808080808080808080808080000780846BATCH YY
3
3
  020L1063200504068123456999900007805002100081136250100001500000080808880 TESTTEST _2055185_PAY USER DEWEY ASSOCIATES 00000000000000000000 21
4
4
  020L1063200504068123456999900007963200504051717311100000542380080808880 TESTTEST _2055184_PAY USER SURE SLIM WELLNESS CLINIC SA 00000000000000000000 21
5
5
  020L1063200504068123456999900008063200509193079313100000224500080808880 TESTTEST _2055183_PAY USER RUGGA KIDS EAST RAND 00000000000000000000 21
@@ -162,5 +162,5 @@
162
162
  020L1063200504068123456999900023725204562032469836100000314250080808880 TESTTEST _2055026_PAY USER COMPACT ACCOUNTING 00000000000000000000 21
163
163
  020L1063200504068123456999900023816514501651343144100000086503080808880 TESTTEST _2055025_PAY USER BOSHOFF SMUTS ING 00000000000000000000 21
164
164
  020L1263200504068123456999900023963200504068123456100127221665080808100000TESTTEST CONTRA_0000846_PMT
165
- 020L929999000078000239080808080811000001000161000001000127221665000127221665028905810181
165
+ 020L929999000078000239080808080808000001000161000001000127221665000127221665028905810181
166
166
  999L000000166
@@ -1,5 +1,5 @@
1
1
  000T2004052400010LDC USER 10 AFRICA (PTY) 000062100000
2
- 001T0495340405240405310405240405270000010037CORPSSV
2
+ 001T0495340405240405250405240405250000010037CORPSSV
3
3
  001T5063200504053538939953400000163200501019611899100000001000040524440000ALIMITTST SPP 1040524 01 HENNIE DU TOIT 00000000000000000000 21
4
4
  001T5063200504053538939953400000263200501019801892100000002000040524440000ALIMITTST SPP 1040524 02 TYRONE DREYDEN 00000000000000000000 21
5
5
  001T5063200504053538939953400000363200501021131896100000003000040524440000ALIMITTST SPP 1040524 03 KEITH MEIKLEJOHN 00000000000000000000 21
@@ -16,5 +16,5 @@
16
16
  001T5063200501004651894953400001463200501019591898100000060000040525440000ALIMITTST SPP 2040525 06 PETER HAUPT 00000000000000000000 21
17
17
  001T5063200501004651894953400001563200501020861726100000070000040525440000ALIMITTST SPP 2040525 07 HADLEY RAW 00000000000000000000 21
18
18
  001T5263200501004651894953400001663200501004651894100004280000040525100000ALIMITTST CONTRA2040525 08
19
- 001T929534000001000016040524040527000014000002000002000020308000000020308000036311034141
19
+ 001T929534000001000016040524040525000014000002000002000020308000000020308000036311034141
20
20
  999T000000020
@@ -17,6 +17,7 @@ describe Bankserv::Engine do
17
17
 
18
18
  FileUtils.rm_rf(Dir.pwd + "/spec/examples/host2host/archives", secure: true)
19
19
  File.delete(Dir.pwd + "/spec/tmp/harry.txt")
20
+ File.delete(Dir.pwd + "/spec/tmp/sally.txt")
20
21
  end
21
22
 
22
23
  context "Prepare engine" do
@@ -134,7 +135,7 @@ describe Bankserv::Engine do
134
135
 
135
136
  end
136
137
 
137
- context "processing ahv requests" do
138
+ context "integration testing" do
138
139
 
139
140
  before(:each) do
140
141
  Timecop.travel(Time.local(2012, 4, 10, 10, 5, 0))
@@ -143,20 +144,38 @@ describe Bankserv::Engine do
143
144
  create(:configuration, client_code: "12345", client_name: "TESTTEST", user_code: "9999", user_generation_number: 1, client_abbreviated_name: "TESTTEST", department_code: "506")
144
145
  Bankserv::EngineConfiguration.create!(interval_in_minutes: 15, input_directory: @tmpdir, output_directory: @tmpdir, archive_directory: @tmpdir)
145
146
  end
146
-
147
- it "should create a valid input document" do
147
+
148
+ it "should process ahv requests" do
148
149
  Bankserv::AccountHolderVerification.should_receive(:generate_reference_number).exactly(8).times.and_return("AHV67","AHV68","AHV69","AHV70","AHV71","AHV72","AHV73","AHV74")
149
150
  create_ahv_requests_scenario
150
151
  e = Bankserv::Engine.new
151
152
  e.should_receive(:generate_input_file_name).and_return("harry.txt")
152
153
  e.process!
153
-
154
+
154
155
  expected_string = File.open("./spec/examples/INPUT.120410144410.txt", "rb").read
155
156
  got_string = File.open(@tmpdir + '/harry.txt', "rb").read
156
-
157
+
157
158
  got_string.should == expected_string
158
159
  end
160
+
161
+ it "should process debit requests" do
162
+ create_debit_requests_scenario
163
+
164
+ e = Bankserv::Engine.new
165
+ e.should_receive(:generate_input_file_name).and_return("sally.txt")
166
+ e.process!
167
+ puts e.inspect
159
168
 
169
+ expected_string = File.open("./spec/examples/INPUT.120411110604.txt", "rb").read
170
+ got_string = File.open(@tmpdir + '/sally.txt', "rb").read
171
+
172
+ got_string.should == expected_string
173
+ end
174
+
175
+ it "should process credit requests" do
176
+ pending
177
+ end
178
+
160
179
  end
161
180
 
162
181
  end
@@ -43,17 +43,15 @@ describe Bankserv::Transmission::UserSet::Credit do
43
43
  end
44
44
 
45
45
  it "should create a batch with a header when the job begins" do
46
- purge = (Date.today + 7.days).strftime("%y%m%d")
47
-
48
46
  @batch.header.data.should == {
49
47
  rec_id: "020",
50
48
  rec_status: "T",
51
49
  bankserv_record_identifier: "04",
52
50
  bankserv_user_code: "9534",
53
51
  bankserv_creation_date: Time.now.strftime("%y%m%d"),
54
- bankserv_purge_date: purge,
52
+ bankserv_purge_date: Time.now.strftime("%y%m%d"),
55
53
  first_action_date: Time.now.strftime("%y%m%d"),
56
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
54
+ last_action_date: Time.now.strftime("%y%m%d"),
57
55
  first_sequence_number: "1",
58
56
  user_generation_number: "37",
59
57
  type_of_service: "SAMEDAY",
@@ -75,7 +73,7 @@ describe Bankserv::Transmission::UserSet::Credit do
75
73
  first_sequence_number: "1",
76
74
  last_sequence_number: "8",
77
75
  first_action_date: Time.now.strftime("%y%m%d"),
78
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
76
+ last_action_date: Time.now.strftime("%y%m%d"),
79
77
  no_debit_records: "2",
80
78
  no_credit_records: "6",
81
79
  no_contra_records: "2",
@@ -44,17 +44,15 @@ describe Bankserv::Transmission::UserSet::Debit do
44
44
  batch = Bankserv::Transmission::UserSet::Debit.generate(rec_status: "T")
45
45
  batch.save
46
46
 
47
- purge = (Date.today + 7.days).strftime("%y%m%d")
48
-
49
47
  batch.header.data.should == {
50
48
  rec_id: "001",
51
49
  rec_status: "T",
52
50
  bankserv_record_identifier: "04",
53
51
  bankserv_user_code: "9534",
54
52
  bankserv_creation_date: Time.now.strftime("%y%m%d"),
55
- bankserv_purge_date: purge,
53
+ bankserv_purge_date: Time.now.strftime("%y%m%d"),
56
54
  first_action_date: Time.now.strftime("%y%m%d"),
57
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
55
+ last_action_date: Time.now.strftime("%y%m%d"),
58
56
  first_sequence_number: "1",
59
57
  user_generation_number: "37",
60
58
  type_of_service: "SAMEDAY",
@@ -89,7 +87,7 @@ describe Bankserv::Transmission::UserSet::Debit do
89
87
  first_sequence_number: "1",
90
88
  last_sequence_number: "8",
91
89
  first_action_date: Time.now.strftime("%y%m%d"),
92
- last_action_date: (Date.today + 3.days).strftime("%y%m%d"),
90
+ last_action_date: Time.now.strftime("%y%m%d"),
93
91
  no_debit_records: "6",
94
92
  no_credit_records: "2",
95
93
  no_contra_records: "2",
@@ -202,5 +202,24 @@ module Helpers
202
202
  info = {:data=>{:user_ref=>625, :bank_account=>{:account_number=>"070440213", :id_number=>"1116501771108", :initials=>"PDV", :account_name=>"Peter De Villiers", :branch_code=>"20009", :account_type=>"current"}}}
203
203
  Bankserv::AccountHolderVerification.request(info)
204
204
  end
205
+
206
+ def create_debit_requests_scenario
207
+ info = {
208
+ :type=>"debit",
209
+ :data=>{
210
+ :type_of_service=>"TWO DAY",
211
+ :batches=>[{
212
+ :debit=>[
213
+ {:account_number=>"62097363670", :id_number=>"6967756569139", :initials=>"DA", :account_name=>"Douglas Anderson", :branch_code=>"250655", :account_type=>"current", :amount=>301400, :user_ref=>544, :action_date=>Date.parse('Wed, 11 Apr 2012')},
214
+ {:account_number=>"9076546281", :id_number=>"2711783115132", :initials=>"JvA", :account_name=>"Jeffrey van Aswegen", :branch_code=>"632005", :account_type=>"savings", :amount=>315000, :user_ref=>545, :action_date=>Date.parse('Wed, 11 Apr 2012')},
215
+ {:account_number=>"070440213", :id_number=>"6175553360681", :initials=>"PDV", :account_name=>"Peter De Villiers", :branch_code=>"20009", :account_type=>"current", :amount=>279300, :user_ref=>546, :action_date=>Date.parse('Wed, 11 Apr 2012')}
216
+ ],
217
+ :credit=>{:account_number=>"4530495834", :id_number=>"8008456465340", :initials=>"RC", :account_name=>"RC Transactional", :branch_code=>"250255", :account_type=>"savings", :amount=>895700, :user_ref=>19, :action_date=>Date.parse('Wed, 11 Apr 2012')}
218
+ }]
219
+ }
220
+ }
221
+
222
+ Bankserv::Debit.request(info)
223
+ end
205
224
  end
206
225
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bankserv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-04-10 00:00:00.000000000Z
13
+ date: 2012-04-11 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70116524139980 !ruby/object:Gem::Requirement
17
+ requirement: &70140537134240 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70116524139980
25
+ version_requirements: *70140537134240
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activerecord
28
- requirement: &70116524139400 !ruby/object:Gem::Requirement
28
+ requirement: &70140537133740 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '3.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70116524139400
36
+ version_requirements: *70140537133740
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: i18n
39
- requirement: &70116524138840 !ruby/object:Gem::Requirement
39
+ requirement: &70140537133320 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,10 +44,10 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *70116524138840
47
+ version_requirements: *70140537133320
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: absa-h2h
50
- requirement: &70116524138220 !ruby/object:Gem::Requirement
50
+ requirement: &70140537132780 !ruby/object:Gem::Requirement
51
51
  none: false
52
52
  requirements:
53
53
  - - ~>
@@ -55,10 +55,10 @@ dependencies:
55
55
  version: 0.1.1
56
56
  type: :runtime
57
57
  prerelease: false
58
- version_requirements: *70116524138220
58
+ version_requirements: *70140537132780
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: absa-esd
61
- requirement: &70116524137520 !ruby/object:Gem::Requirement
61
+ requirement: &70140537132280 !ruby/object:Gem::Requirement
62
62
  none: false
63
63
  requirements:
64
64
  - - ~>
@@ -66,10 +66,10 @@ dependencies:
66
66
  version: 0.0.2
67
67
  type: :runtime
68
68
  prerelease: false
69
- version_requirements: *70116524137520
69
+ version_requirements: *70140537132280
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: combustion
72
- requirement: &70116524136940 !ruby/object:Gem::Requirement
72
+ requirement: &70140537131820 !ruby/object:Gem::Requirement
73
73
  none: false
74
74
  requirements:
75
75
  - - ~>
@@ -77,7 +77,7 @@ dependencies:
77
77
  version: 0.3.1
78
78
  type: :development
79
79
  prerelease: false
80
- version_requirements: *70116524136940
80
+ version_requirements: *70140537131820
81
81
  description: ! "This engine allows users to inject requests into a queue to be processed.
82
82
  \n \n The queue handles bank account validations, credit payments,
83
83
  debit orders\n and collecting bank statements. "
@@ -129,6 +129,7 @@ files:
129
129
  - lib/generators/active_record/bankserv_generator.rb
130
130
  - lib/generators/active_record/templates/migration.rb
131
131
  - spec/examples/INPUT.120410144410.txt
132
+ - spec/examples/INPUT.120411110604.txt
132
133
  - spec/examples/ahv_input_file.txt
133
134
  - spec/examples/ahv_output_file.txt
134
135
  - spec/examples/credit_eft_input.txt
@@ -190,6 +191,7 @@ specification_version: 3
190
191
  summary: A rails 3 engine wrapped around the Absa Host 2 Host gem.
191
192
  test_files:
192
193
  - spec/examples/INPUT.120410144410.txt
194
+ - spec/examples/INPUT.120411110604.txt
193
195
  - spec/examples/ahv_input_file.txt
194
196
  - spec/examples/ahv_output_file.txt
195
197
  - spec/examples/credit_eft_input.txt