bankserv 0.4.7 → 0.4.8
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.
- data/lib/bankserv/account_holder_verification.rb +0 -15
- data/lib/bankserv/credit.rb +0 -13
- data/lib/bankserv/debit.rb +0 -11
- data/lib/bankserv/eft.rb +0 -4
- data/lib/bankserv/service.rb +16 -1
- data/lib/bankserv/transmission/document.rb +0 -2
- data/lib/bankserv/transmission/input_document.rb +17 -3
- data/lib/bankserv/transmission/reply_document.rb +1 -1
- data/lib/bankserv/transmission/set/account_holder_verification.rb +11 -5
- data/lib/bankserv/transmission/set/account_holder_verification_output.rb +1 -4
- data/lib/bankserv/transmission/set/eft_redirect.rb +1 -1
- data/lib/bankserv/transmission/set/eft_unpaid.rb +1 -4
- data/lib/bankserv/transmission/set/reply.rb +7 -3
- data/lib/bankserv/version.rb +1 -1
- data/lib/generators/active_record/templates/migration.rb +0 -3
- data/spec/examples/ahv_input_file.txt +2 -2
- data/spec/examples/ahv_output_file.txt +3 -3
- data/spec/examples/credit_eft_input.txt +1 -1
- data/spec/examples/debit_eft_input_file.txt +1 -1
- data/spec/examples/reply/rejected_transmission.txt +1 -1
- data/spec/examples/reply/reply_file.txt +1 -1
- data/spec/internal/db/schema.rb +0 -3
- data/spec/lib/bankserv/account_holder_verification_spec.rb +0 -5
- data/spec/lib/bankserv/credit_spec.rb +0 -9
- data/spec/lib/bankserv/debit_spec.rb +0 -9
- data/spec/lib/bankserv/transmission/input_document_spec.rb +14 -8
- data/spec/lib/bankserv/transmission/output_document_spec.rb +24 -36
- data/spec/lib/bankserv/transmission/reply_document_spec.rb +16 -4
- data/spec/lib/bankserv/transmission/set/account_holder_verification_spec.rb +18 -11
- metadata +16 -16
@@ -11,17 +11,6 @@ module Bankserv
|
|
11
11
|
scope :internal, where(internal: true)
|
12
12
|
scope :external, where(internal: false)
|
13
13
|
|
14
|
-
after_create :generate_internal_user_ref
|
15
|
-
|
16
|
-
def generate_internal_user_ref
|
17
|
-
self.internal_user_ref = Bankserv::AccountHolderVerification.generate_reference_number(self)
|
18
|
-
save!
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.generate_reference_number(ahv)
|
22
|
-
"AHV#{ahv.id}"
|
23
|
-
end
|
24
|
-
|
25
14
|
def self.service
|
26
15
|
Bankserv::AHVService.where(active: true).last
|
27
16
|
end
|
@@ -30,10 +19,6 @@ module Bankserv
|
|
30
19
|
self.where(:user_ref => reference)
|
31
20
|
end
|
32
21
|
|
33
|
-
def self.for_internal_reference(reference)
|
34
|
-
self.where(:internal_user_ref => reference)
|
35
|
-
end
|
36
|
-
|
37
22
|
def self.build!(options)
|
38
23
|
bank_account = BankAccount.new(options.delete(:bank_account))
|
39
24
|
is_internal = bank_account.branch_code == self.service.config[:internal_branch_code]
|
data/lib/bankserv/credit.rb
CHANGED
@@ -9,8 +9,6 @@ module Bankserv
|
|
9
9
|
belongs_to :bank_account, :foreign_key => 'bankserv_bank_account_id'
|
10
10
|
belongs_to :request, :foreign_key => 'bankserv_request_id'
|
11
11
|
|
12
|
-
after_create :generate_internal_user_ref
|
13
|
-
|
14
12
|
def self.bankserv_service
|
15
13
|
Bankserv::CreditService.where(active: true).last
|
16
14
|
end
|
@@ -19,19 +17,10 @@ module Bankserv
|
|
19
17
|
Bankserv::Credit.bankserv_service
|
20
18
|
end
|
21
19
|
|
22
|
-
def generate_internal_user_ref
|
23
|
-
self.internal_user_ref = "CREDIT#{id}"
|
24
|
-
save!
|
25
|
-
end
|
26
|
-
|
27
20
|
def self.for_reference(reference)
|
28
21
|
self.where(:user_ref => reference)
|
29
22
|
end
|
30
23
|
|
31
|
-
def self.for_internal_reference(reference)
|
32
|
-
self.where(:internal_user_ref => reference)
|
33
|
-
end
|
34
|
-
|
35
24
|
def new?
|
36
25
|
status == "new"
|
37
26
|
end
|
@@ -74,7 +63,5 @@ module Bankserv
|
|
74
63
|
self.bank_account
|
75
64
|
end
|
76
65
|
end
|
77
|
-
|
78
66
|
end
|
79
|
-
|
80
67
|
end
|
data/lib/bankserv/debit.rb
CHANGED
@@ -9,8 +9,6 @@ module Bankserv
|
|
9
9
|
belongs_to :bank_account, :foreign_key => 'bankserv_bank_account_id'
|
10
10
|
belongs_to :request, :foreign_key => 'bankserv_request_id'
|
11
11
|
|
12
|
-
after_create :generate_internal_user_ref
|
13
|
-
|
14
12
|
def self.bankserv_service
|
15
13
|
Bankserv::DebitService.where(active: true).last
|
16
14
|
end
|
@@ -19,11 +17,6 @@ module Bankserv
|
|
19
17
|
Bankserv::Debit.bankserv_service
|
20
18
|
end
|
21
19
|
|
22
|
-
def generate_internal_user_ref
|
23
|
-
self.internal_user_ref = "DEBIT#{id}"
|
24
|
-
save!
|
25
|
-
end
|
26
|
-
|
27
20
|
def standard?
|
28
21
|
record_type == "standard"
|
29
22
|
end
|
@@ -54,10 +47,6 @@ module Bankserv
|
|
54
47
|
self.where(:user_ref => reference)
|
55
48
|
end
|
56
49
|
|
57
|
-
def self.for_internal_reference(reference)
|
58
|
-
self.where(:internal_user_ref => reference)
|
59
|
-
end
|
60
|
-
|
61
50
|
def process_response(data)
|
62
51
|
save_data = if data[:response_status] == 'unpaid'
|
63
52
|
{
|
data/lib/bankserv/eft.rb
CHANGED
data/lib/bankserv/service.rb
CHANGED
@@ -4,6 +4,8 @@ module Bankserv
|
|
4
4
|
|
5
5
|
has_many :requests
|
6
6
|
serialize :config
|
7
|
+
|
8
|
+
scope :for_client_code, lambda {|client_code| where(client_code: client_code)}
|
7
9
|
|
8
10
|
def self.register(params)
|
9
11
|
s = new
|
@@ -54,6 +56,11 @@ module Bankserv
|
|
54
56
|
def can_transmit?
|
55
57
|
false
|
56
58
|
end
|
59
|
+
|
60
|
+
def update_transmission_number!
|
61
|
+
config[:transmission_number] = (config[:transmission_number].to_i + 1).to_s
|
62
|
+
save!
|
63
|
+
end
|
57
64
|
|
58
65
|
end
|
59
66
|
|
@@ -90,7 +97,15 @@ module Bankserv
|
|
90
97
|
|
91
98
|
def can_transmit?
|
92
99
|
true
|
93
|
-
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def has_work?
|
103
|
+
if self.config[:internal]
|
104
|
+
Bankserv::AccountHolderVerification.internal.unprocessed.count > 0
|
105
|
+
else
|
106
|
+
Bankserv::AccountHolderVerification.external.unprocessed.count > 0
|
107
|
+
end
|
108
|
+
end
|
94
109
|
end
|
95
110
|
|
96
111
|
class StatementService < Service
|
@@ -37,6 +37,10 @@ class Bankserv::InputDocument < Bankserv::Document
|
|
37
37
|
def self.has_test_work?
|
38
38
|
sets_with_test_work.any?
|
39
39
|
end
|
40
|
+
|
41
|
+
def accepted?
|
42
|
+
reply_status == "ACCEPTED"
|
43
|
+
end
|
40
44
|
|
41
45
|
def self.generate!(bankserv_service)
|
42
46
|
if bankserv_service.is_test_env?
|
@@ -49,7 +53,14 @@ class Bankserv::InputDocument < Bankserv::Document
|
|
49
53
|
options.merge! rec_status: bankserv_service.config[:transmission_status]
|
50
54
|
options.merge! client_code: bankserv_service.client_code
|
51
55
|
options.merge! client_name: bankserv_service.config[:client_name]
|
52
|
-
options.merge! th_for_use_of_ld_user:
|
56
|
+
options.merge! th_for_use_of_ld_user: bankserv_service.config[:transmission_number]
|
57
|
+
|
58
|
+
if bankserv_service.config.has_key? :internal
|
59
|
+
# swap the internal status and check if the service has any work.
|
60
|
+
bankserv_service.config[:internal] = !bankserv_service.config[:internal]
|
61
|
+
bankserv_service.save
|
62
|
+
return unless bankserv_service.has_work?
|
63
|
+
end
|
53
64
|
|
54
65
|
transmission_status = bankserv_service.config[:transmission_status]
|
55
66
|
raise "Transmission status not specified" if transmission_status.nil?
|
@@ -75,8 +86,11 @@ class Bankserv::InputDocument < Bankserv::Document
|
|
75
86
|
input_sets.select!{|s| s.bankserv_service.client_code == bankserv_service.client_code}
|
76
87
|
return unless input_sets.count > 0
|
77
88
|
|
78
|
-
input_sets.each do |set|
|
79
|
-
|
89
|
+
input_sets.each do |set|
|
90
|
+
hash = {rec_status: document.rec_status}
|
91
|
+
hash.merge!(internal: bankserv_service.config[:internal]) if bankserv_service.config.has_key?(:internal)
|
92
|
+
|
93
|
+
document.set.sets << set.generate(hash)
|
80
94
|
document.set.sets[-1].set = document.set # whaaaaaa?
|
81
95
|
end
|
82
96
|
|
@@ -4,9 +4,12 @@ module Bankserv
|
|
4
4
|
class AccountHolderVerification < Set
|
5
5
|
|
6
6
|
before_create :set_header, :set_trailer, :decorate_records
|
7
|
+
|
8
|
+
attr_accessor :department_code
|
7
9
|
|
8
10
|
def self.generate(options = {})
|
9
|
-
[:internal
|
11
|
+
arr = options[:internal] ? [:internal] : [:external]
|
12
|
+
arr.collect do |type|
|
10
13
|
ahvs = Bankserv::AccountHolderVerification.unprocessed.send(type)
|
11
14
|
|
12
15
|
if options[:rec_status] == "L"
|
@@ -17,7 +20,7 @@ module Bankserv
|
|
17
20
|
|
18
21
|
if ahvs.count > 0
|
19
22
|
set = self.new
|
20
|
-
set.build_header
|
23
|
+
set.build_header(type: type)
|
21
24
|
ahvs.each{|ahv| set.build_transaction(ahv)}
|
22
25
|
set.build_trailer
|
23
26
|
set
|
@@ -46,7 +49,7 @@ module Bankserv
|
|
46
49
|
id_number: ahv.bank_account.id_number,
|
47
50
|
initials: ahv.bank_account.initials,
|
48
51
|
surname: ahv.bank_account.account_name,
|
49
|
-
user_ref: ahv.
|
52
|
+
user_ref: ahv.user_ref
|
50
53
|
)
|
51
54
|
|
52
55
|
record_data.merge!(branch_code: ahv.bank_account.branch_code) if ahv.external?
|
@@ -70,9 +73,13 @@ module Bankserv
|
|
70
73
|
end
|
71
74
|
|
72
75
|
def set_header
|
76
|
+
type = header[:data].delete(:type)
|
77
|
+
department_code = "AHVEXT"
|
78
|
+
department_code = "AHVINT" if type == :internal
|
79
|
+
|
73
80
|
self.generation_number = bankserv_service.reserve_generation_number!.to_s
|
74
81
|
header.data[:gen_no] = generation_number
|
75
|
-
header.data[:dept_code] =
|
82
|
+
header.data[:dept_code] = department_code
|
76
83
|
end
|
77
84
|
|
78
85
|
def set_trailer
|
@@ -81,6 +88,5 @@ module Bankserv
|
|
81
88
|
end
|
82
89
|
|
83
90
|
end
|
84
|
-
|
85
91
|
end
|
86
92
|
end
|
@@ -6,12 +6,9 @@ module Bankserv
|
|
6
6
|
|
7
7
|
def process
|
8
8
|
transactions.each do |transaction|
|
9
|
-
Bankserv::AccountHolderVerification.
|
9
|
+
Bankserv::AccountHolderVerification.for_reference(transaction.reference).first.process_response(transaction.data)
|
10
10
|
end
|
11
11
|
end
|
12
|
-
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
|
-
|
17
14
|
end
|
@@ -6,7 +6,7 @@ module Bankserv
|
|
6
6
|
|
7
7
|
def process
|
8
8
|
transactions.each do |transaction|
|
9
|
-
eft = Bankserv::Eft.
|
9
|
+
eft = Bankserv::Eft.for_reference(transaction.reference).first
|
10
10
|
eft.process_response(transaction.data.merge(response_status: 'redirect')) if eft
|
11
11
|
end
|
12
12
|
end
|
@@ -6,13 +6,10 @@ module Bankserv
|
|
6
6
|
|
7
7
|
def process
|
8
8
|
transactions.each do |transaction|
|
9
|
-
eft = Bankserv::Eft.
|
9
|
+
eft = Bankserv::Eft.for_reference(transaction.reference).first
|
10
10
|
eft.process_response(transaction.data.merge(response_status: 'unpaid')) if eft
|
11
11
|
end
|
12
12
|
end
|
13
|
-
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
|
-
|
18
15
|
end
|
@@ -13,6 +13,13 @@ module Bankserv
|
|
13
13
|
document = Bankserv::InputDocument.for_transmission_number(transaction.data[:transmission_number])
|
14
14
|
document.reply_status = transaction.data[:transmission_status]
|
15
15
|
document.save!
|
16
|
+
|
17
|
+
if document.accepted?
|
18
|
+
Bankserv::Service.for_client_code(document.client_code).active.each do |service|
|
19
|
+
service.update_transmission_number!
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
16
23
|
when "transmission_rejected_reason"
|
17
24
|
document.error = {
|
18
25
|
code: transaction.data[:error_code],
|
@@ -43,9 +50,6 @@ module Bankserv
|
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
46
|
-
|
47
53
|
end
|
48
|
-
|
49
54
|
end
|
50
|
-
|
51
55
|
end
|
data/lib/bankserv/version.rb
CHANGED
@@ -67,7 +67,6 @@ class CreateBankservTables < ActiveRecord::Migration
|
|
67
67
|
t.string :status, :default => "new"
|
68
68
|
t.text :response
|
69
69
|
t.string :user_ref
|
70
|
-
t.string :internal_user_ref
|
71
70
|
t.timestamps
|
72
71
|
end
|
73
72
|
|
@@ -81,7 +80,6 @@ class CreateBankservTables < ActiveRecord::Migration
|
|
81
80
|
t.string :status, :default => "new"
|
82
81
|
t.text :response
|
83
82
|
t.string :user_ref
|
84
|
-
t.string :internal_user_ref
|
85
83
|
t.timestamps
|
86
84
|
end
|
87
85
|
|
@@ -95,7 +93,6 @@ class CreateBankservTables < ActiveRecord::Migration
|
|
95
93
|
t.string :status, :default => "new"
|
96
94
|
t.text :response
|
97
95
|
t.string :user_ref
|
98
|
-
t.string :internal_user_ref
|
99
96
|
t.timestamps
|
100
97
|
end
|
101
98
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
000L2009070302236TEST 000000000000
|
2
|
-
|
1
|
+
000L2009070302236TEST 000000000000 0
|
2
|
+
030L0000001AHVINT
|
3
3
|
031L00000010000000010944025246703085829086M CHAUKE 00000000AHV1
|
4
4
|
031L00000020000000029684746696103120039082A VAN MOLENDORF 00000000AHV2
|
5
5
|
031L00000030000000024920081778801261110087U NKWEBA 00000000AHV3
|
@@ -1,7 +1,7 @@
|
|
1
1
|
000L2009070302236TEST 00000001000000
|
2
2
|
030L0000001000001
|
3
|
-
031L00000010000000010944025246703085829086M CHAUKE
|
4
|
-
031L00000020000000029684746696103120039082A VAN MOLENDORF
|
5
|
-
031L00000030000000024920081778801261110087U NKWEBA
|
3
|
+
031L00000010000000010944025246703085829086M CHAUKE 00000000149505000000000223600000008000
|
4
|
+
031L00000020000000029684746696103120039082A VAN MOLENDORF 00020304198841000000000223600000000000
|
5
|
+
031L00000030000000024920081778801261110087U NKWEBA 00000000149205000000000223605000700000
|
6
6
|
039L0000003000000006554885370
|
7
7
|
999L000000007
|
@@ -1,4 +1,4 @@
|
|
1
|
-
000L2008080800986TESTTEST 000084600000
|
1
|
+
000L2008080800986TESTTEST 000084600000 846
|
2
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
|
@@ -1,4 +1,4 @@
|
|
1
|
-
000T2004052400010LDC USER 10 AFRICA (PTY) 000062100000
|
1
|
+
000T2004052400010LDC USER 10 AFRICA (PTY) 000062100000 621
|
2
2
|
001T0495340405240405250405240405250000010037CORPSSV
|
3
3
|
001T5063200504053538939953400000163200501019611899100000001000040524440000ALIMITTST SPP 1040524 01 HENNIE DU TOIT 00000000000000000000 21
|
4
4
|
001T5063200504053538939953400000263200501019801892100000002000040524440000ALIMITTST SPP 1040524 02 TYRONE DREYDEN 00000000000000000000 21
|
data/spec/internal/db/schema.rb
CHANGED
@@ -66,7 +66,6 @@ ActiveRecord::Schema.define do
|
|
66
66
|
t.string :status, :default => "new"
|
67
67
|
t.text :response
|
68
68
|
t.string :user_ref
|
69
|
-
t.string :internal_user_ref
|
70
69
|
t.timestamps
|
71
70
|
end
|
72
71
|
|
@@ -80,7 +79,6 @@ ActiveRecord::Schema.define do
|
|
80
79
|
t.string :status, :default => "new"
|
81
80
|
t.text :response
|
82
81
|
t.string :user_ref
|
83
|
-
t.string :internal_user_ref
|
84
82
|
t.timestamps
|
85
83
|
end
|
86
84
|
|
@@ -94,7 +92,6 @@ ActiveRecord::Schema.define do
|
|
94
92
|
t.string :status, :default => "new"
|
95
93
|
t.text :response
|
96
94
|
t.string :user_ref
|
97
|
-
t.string :internal_user_ref
|
98
95
|
t.timestamps
|
99
96
|
end
|
100
97
|
|
@@ -70,11 +70,6 @@ describe Bankserv::AccountHolderVerification do
|
|
70
70
|
ahv.should be_external
|
71
71
|
end
|
72
72
|
|
73
|
-
it "should generate a unique internal reference" do
|
74
|
-
@ahv_service.request(@hash)
|
75
|
-
Bankserv::AccountHolderVerification.last.internal_user_ref.should match /AHV[0-9]+/
|
76
|
-
end
|
77
|
-
|
78
73
|
end
|
79
74
|
|
80
75
|
context "when processing an account holder verification response" do
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Bankserv::Debit do
|
4
4
|
|
5
|
-
context "creating a new credit" do
|
6
|
-
|
7
|
-
it "should generate a unique internal reference" do
|
8
|
-
create(:credit)
|
9
|
-
Bankserv::Credit.last.internal_user_ref.should match /CREDIT[0-9]+/
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
5
|
context "queuing a batch of credit orders" do
|
15
6
|
|
16
7
|
before(:all) do
|
@@ -2,15 +2,6 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Bankserv::Debit do
|
4
4
|
|
5
|
-
context "creating a new debit" do
|
6
|
-
|
7
|
-
it "should generate a unique internal reference" do
|
8
|
-
create(:debit)
|
9
|
-
Bankserv::Debit.last.internal_user_ref.should match /DEBIT[0-9]+/
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
5
|
context "queuing a batch of debit orders" do
|
15
6
|
|
16
7
|
before(:all) do
|
@@ -7,7 +7,7 @@ describe Bankserv::InputDocument do
|
|
7
7
|
|
8
8
|
before(:each) do
|
9
9
|
tear_it_down
|
10
|
-
bankserv_service = Bankserv::AHVService.register(client_code: '2236', internal_branch_code: '632005', department_code: "000001", client_name: "TEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "L", transmission_number: "0")
|
10
|
+
bankserv_service = Bankserv::AHVService.register(client_code: '2236', internal_branch_code: '632005', department_code: "000001", client_name: "TEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "L", transmission_number: "0", internal: false)
|
11
11
|
|
12
12
|
ahv_attributes = {
|
13
13
|
bank_account: {
|
@@ -18,13 +18,12 @@ describe Bankserv::InputDocument do
|
|
18
18
|
initials: "M",
|
19
19
|
account_name: "CHAUKE"
|
20
20
|
},
|
21
|
-
user_ref: "
|
21
|
+
user_ref: "AHV1"
|
22
22
|
}
|
23
23
|
|
24
24
|
bankserv_service.request(type: 'ahv', data: ahv_attributes)
|
25
25
|
ahv = Bankserv::AccountHolderVerification.last
|
26
26
|
ahv.internal = true
|
27
|
-
ahv.internal_user_ref = "AHV1"
|
28
27
|
ahv.save!
|
29
28
|
|
30
29
|
ahv_attributes = {
|
@@ -36,13 +35,12 @@ describe Bankserv::InputDocument do
|
|
36
35
|
initials: "A",
|
37
36
|
account_name: "VAN MOLENDORF"
|
38
37
|
},
|
39
|
-
user_ref: "
|
38
|
+
user_ref: "AHV2"
|
40
39
|
}
|
41
40
|
|
42
41
|
bankserv_service.request(type: 'ahv', data: ahv_attributes)
|
43
42
|
ahv = Bankserv::AccountHolderVerification.last
|
44
43
|
ahv.internal = true
|
45
|
-
ahv.internal_user_ref = "AHV2"
|
46
44
|
ahv.save!
|
47
45
|
|
48
46
|
ahv_attributes = {
|
@@ -54,13 +52,12 @@ describe Bankserv::InputDocument do
|
|
54
52
|
initials: "U",
|
55
53
|
account_name: "NKWEBA"
|
56
54
|
},
|
57
|
-
user_ref: "
|
55
|
+
user_ref: "AHV3"
|
58
56
|
}
|
59
57
|
|
60
58
|
bankserv_service.request(type: 'ahv', data: ahv_attributes)
|
61
59
|
ahv = Bankserv::AccountHolderVerification.last
|
62
60
|
ahv.internal = true
|
63
|
-
ahv.internal_user_ref = "AHV3"
|
64
61
|
ahv.save!
|
65
62
|
|
66
63
|
t = Time.local(2009, 7, 3, 10, 5, 0)
|
@@ -80,7 +77,6 @@ describe Bankserv::InputDocument do
|
|
80
77
|
|
81
78
|
string = File.open("./spec/examples/ahv_input_file.txt", "rb").read
|
82
79
|
options = Absa::H2h::Transmission::Document.hash_from_s(string, 'input')
|
83
|
-
|
84
80
|
hash.should == options
|
85
81
|
end
|
86
82
|
|
@@ -88,6 +84,16 @@ describe Bankserv::InputDocument do
|
|
88
84
|
@document.mark_processed!
|
89
85
|
@document.processed.should be_true
|
90
86
|
end
|
87
|
+
|
88
|
+
it "should mark the ahv services internal status to true" do
|
89
|
+
Bankserv::AHVService.active.first.config[:internal].should be_true
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should not build a document if no sets could be generated" do
|
93
|
+
Bankserv::Transmission::UserSet::Document.all.count.should == 1
|
94
|
+
Bankserv::InputDocument.generate!(Bankserv::AHVService.active.first)
|
95
|
+
Bankserv::Transmission::UserSet::Document.all.count.should == 1
|
96
|
+
end
|
91
97
|
end
|
92
98
|
|
93
99
|
context "building a transmission document two batches of debit order requests" do
|
@@ -67,8 +67,6 @@ describe Bankserv::OutputDocument do
|
|
67
67
|
internal: true
|
68
68
|
)
|
69
69
|
|
70
|
-
ahv1.save!
|
71
|
-
ahv1.internal_user_ref = "AHV1"
|
72
70
|
ahv1.save!
|
73
71
|
|
74
72
|
ahv2 = Bankserv::AccountHolderVerification.new(
|
@@ -85,9 +83,7 @@ describe Bankserv::OutputDocument do
|
|
85
83
|
)
|
86
84
|
|
87
85
|
ahv2.save!
|
88
|
-
|
89
|
-
ahv2.save!
|
90
|
-
|
86
|
+
|
91
87
|
ahv3 = Bankserv::AccountHolderVerification.new(
|
92
88
|
bank_account: Bankserv::BankAccount.new(
|
93
89
|
account_number: "2492008177",
|
@@ -101,8 +97,6 @@ describe Bankserv::OutputDocument do
|
|
101
97
|
internal: true
|
102
98
|
)
|
103
99
|
|
104
|
-
ahv3.save!
|
105
|
-
ahv3.internal_user_ref = "AHV3"
|
106
100
|
ahv3.save!
|
107
101
|
|
108
102
|
Bankserv::AccountHolderVerification.for_reference("149505000000000223600000008000").first.completed?.should be_false
|
@@ -158,38 +152,32 @@ describe Bankserv::OutputDocument do
|
|
158
152
|
|
159
153
|
it "should be able to process the document, updating any related debit or credit requests" do
|
160
154
|
debits = []
|
161
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 7627, batch_id: 1, user_ref: "
|
162
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 9964, batch_id: 1, user_ref: "
|
163
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10851, batch_id: 2, user_ref: "
|
164
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 31700, batch_id: 3, user_ref: "
|
165
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 13755, batch_id: 3, user_ref: "
|
166
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 22935, batch_id: 4, user_ref: "
|
167
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15198, batch_id: 4, user_ref: "
|
168
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 12720, batch_id: 4, user_ref: "
|
169
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 9345, batch_id: 4, user_ref: "
|
170
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 13420, batch_id: 4, user_ref: "
|
171
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15300, batch_id: 4, user_ref: "
|
172
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 7790, batch_id: 4, user_ref: "
|
173
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 19698, batch_id: 4, user_ref: "
|
174
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 5000, batch_id: 4, user_ref: "
|
175
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10420, batch_id: 4, user_ref: "
|
176
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "
|
177
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15000, batch_id: 4, user_ref: "
|
178
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "
|
179
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 16150, batch_id: 4, user_ref: "
|
180
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 12300, batch_id: 4, user_ref: "
|
181
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 20000, batch_id: 4, user_ref: "
|
182
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 6287, batch_id: 4, user_ref: "
|
183
|
-
debits << Bankserv::Debit.create!(record_type: "standard", amount: 8954, batch_id: 4, user_ref: "
|
155
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 7627, batch_id: 1, user_ref: "DEBIT1")
|
156
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 9964, batch_id: 1, user_ref: "DEBIT2")
|
157
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10851, batch_id: 2, user_ref: "DEBIT3")
|
158
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 31700, batch_id: 3, user_ref: "DEBIT4")
|
159
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 13755, batch_id: 3, user_ref: "DEBIT5")
|
160
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 22935, batch_id: 4, user_ref: "DEBIT6")
|
161
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15198, batch_id: 4, user_ref: "DEBIT7")
|
162
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 12720, batch_id: 4, user_ref: "DEBIT8")
|
163
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 9345, batch_id: 4, user_ref: "DEBIT9")
|
164
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 13420, batch_id: 4, user_ref: "DEBIT10")
|
165
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15300, batch_id: 4, user_ref: "DEBIT11")
|
166
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 7790, batch_id: 4, user_ref: "DEBIT12")
|
167
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 19698, batch_id: 4, user_ref: "DEBIT13")
|
168
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 5000, batch_id: 4, user_ref: "DEBIT14")
|
169
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10420, batch_id: 4, user_ref: "DEBIT15")
|
170
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "DEBIT16")
|
171
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 15000, batch_id: 4, user_ref: "DEBIT17")
|
172
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "DEBIT18")
|
173
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 16150, batch_id: 4, user_ref: "DEBIT19")
|
174
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 12300, batch_id: 4, user_ref: "DEBIT20")
|
175
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 20000, batch_id: 4, user_ref: "DEBIT21")
|
176
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 6287, batch_id: 4, user_ref: "DEBIT22")
|
177
|
+
debits << Bankserv::Debit.create!(record_type: "standard", amount: 8954, batch_id: 4, user_ref: "DEBIT23")
|
184
178
|
|
185
179
|
counter = 1
|
186
180
|
|
187
|
-
debits.each do |debit|
|
188
|
-
debit.internal_user_ref = "DEBIT#{counter}"
|
189
|
-
debit.save!
|
190
|
-
counter += 1
|
191
|
-
end
|
192
|
-
|
193
181
|
Bankserv::Debit.all.each{|debit| debit.completed?.should be_false}
|
194
182
|
@document.process!
|
195
183
|
|
@@ -8,6 +8,7 @@ describe Bankserv::ReplyDocument do
|
|
8
8
|
before(:all) do
|
9
9
|
tear_it_down
|
10
10
|
Bankserv::DebitService.register(client_code: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
11
|
+
Bankserv::CreditService.register(client_code: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
11
12
|
|
12
13
|
@file_contents = File.open("./spec/examples/reply/reply_file.txt", "rb").read
|
13
14
|
@options = Absa::H2h::Transmission::Document.hash_from_s(@file_contents, 'output')
|
@@ -34,7 +35,8 @@ describe Bankserv::ReplyDocument do
|
|
34
35
|
|
35
36
|
before(:each) do
|
36
37
|
tear_it_down
|
37
|
-
Bankserv::DebitService.register(client_code: '
|
38
|
+
Bankserv::DebitService.register(client_code: '10', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
39
|
+
Bankserv::CreditService.register(client_code: '10', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
38
40
|
|
39
41
|
@file_contents = File.open("./spec/examples/eft_input_with_2_sets.txt", "rb").read
|
40
42
|
@input_document = Bankserv::InputDocument.store(@file_contents)
|
@@ -42,12 +44,11 @@ describe Bankserv::ReplyDocument do
|
|
42
44
|
@file_contents = File.open("./spec/examples/reply/reply_file.txt", "rb").read
|
43
45
|
@options = Absa::H2h::Transmission::Document.hash_from_s(@file_contents, 'output')
|
44
46
|
|
45
|
-
@reply_document = Bankserv::
|
47
|
+
@reply_document = Bankserv::ReplyDocument.store(@file_contents)
|
46
48
|
end
|
47
49
|
|
48
50
|
it "should mark the original input document as ACCEPTED if the transmission was accepted" do
|
49
51
|
@input_document.reply_status.should be_nil
|
50
|
-
|
51
52
|
@reply_document.process!
|
52
53
|
|
53
54
|
@input_document.reload
|
@@ -62,6 +63,11 @@ describe Bankserv::ReplyDocument do
|
|
62
63
|
set.reply_status.should == "ACCEPTED"
|
63
64
|
end
|
64
65
|
end
|
66
|
+
|
67
|
+
it "should update the tranmission number of the service" do
|
68
|
+
@reply_document.process!
|
69
|
+
Bankserv::DebitService.last.config[:transmission_number].should == "2"
|
70
|
+
end
|
65
71
|
|
66
72
|
end
|
67
73
|
|
@@ -69,7 +75,8 @@ describe Bankserv::ReplyDocument do
|
|
69
75
|
|
70
76
|
before(:all) do
|
71
77
|
tear_it_down
|
72
|
-
Bankserv::DebitService.register(client_code: '
|
78
|
+
Bankserv::DebitService.register(client_code: '10', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
79
|
+
Bankserv::CreditService.register(client_code: '10', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
|
73
80
|
|
74
81
|
@file_contents = File.open("./spec/examples/eft_input_with_2_sets.txt", "rb").read
|
75
82
|
@input_document = Bankserv::InputDocument.store(@file_contents)
|
@@ -82,6 +89,11 @@ describe Bankserv::ReplyDocument do
|
|
82
89
|
@reply_document.process!
|
83
90
|
@input_document.reload
|
84
91
|
end
|
92
|
+
|
93
|
+
it "should not update the tranmission number of the services" do
|
94
|
+
Bankserv::DebitService.last.config[:transmission_number].should == "1"
|
95
|
+
Bankserv::CreditService.last.config[:transmission_number].should == "1"
|
96
|
+
end
|
85
97
|
|
86
98
|
context "processing a transmission status record" do
|
87
99
|
it "should mark the document's reply status as REJECTED" do
|
@@ -5,7 +5,7 @@ describe Bankserv::Transmission::UserSet::AccountHolderVerification do
|
|
5
5
|
|
6
6
|
before(:all) do
|
7
7
|
tear_it_down
|
8
|
-
ahv_service = Bankserv::AHVService.register(client_code: '12345', internal_branch_code: '632005', department_code: "506", client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "T", transmission_number: "1")
|
8
|
+
ahv_service = Bankserv::AHVService.register(client_code: '12345', internal_branch_code: '632005', department_code: "506", client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "T", transmission_number: "1", internal: true)
|
9
9
|
|
10
10
|
@ahv_list = [
|
11
11
|
ahv_service.request(type: 'ahv', data: attributes_for(:internal_ahv).merge(bank_account: attributes_for(:internal_bank_account))),
|
@@ -21,20 +21,26 @@ describe Bankserv::Transmission::UserSet::AccountHolderVerification do
|
|
21
21
|
it "should report when there are account holder verification requests that need to be processed" do
|
22
22
|
Bankserv::Transmission::UserSet::AccountHolderVerification.has_test_work?.should be_true
|
23
23
|
end
|
24
|
-
|
25
|
-
it "should
|
26
|
-
sets = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T")
|
27
|
-
|
28
|
-
sets.count.should ==
|
24
|
+
|
25
|
+
it "should process the external account holder verifications" do
|
26
|
+
sets = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T", internal: false)
|
27
|
+
|
28
|
+
sets.count.should == 1
|
29
|
+
sets.first.transactions.count.should == 3
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should process the internal account holder verifications" do
|
33
|
+
sets = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T", internal: true)
|
34
|
+
|
35
|
+
sets.count.should == 1
|
29
36
|
sets.first.transactions.count.should == 2
|
30
|
-
sets.last.transactions.count.should == 3
|
31
37
|
end
|
32
38
|
|
33
39
|
context "Building an account holder verification set" do
|
34
40
|
|
35
41
|
before(:each) do
|
36
42
|
tear_it_down
|
37
|
-
ahv_service = Bankserv::AHVService.register(client_code: '12345', internal_branch_code: '632005', department_code: "506", client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "T", transmission_number: "1")
|
43
|
+
ahv_service = Bankserv::AHVService.register(client_code: '12345', internal_branch_code: '632005', department_code: "506", client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', generation_number: 1, transmission_status: "T", transmission_number: "1", internal: false)
|
38
44
|
|
39
45
|
@ahv_list = [
|
40
46
|
ahv_service.request(type: 'ahv', data: attributes_for(:internal_ahv).merge(bank_account: attributes_for(:internal_bank_account))),
|
@@ -49,7 +55,7 @@ describe Bankserv::Transmission::UserSet::AccountHolderVerification do
|
|
49
55
|
context "creating a header" do
|
50
56
|
|
51
57
|
before(:each) do
|
52
|
-
@set = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T").first
|
58
|
+
@set = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T", internal: true).first
|
53
59
|
@set.save
|
54
60
|
end
|
55
61
|
|
@@ -67,13 +73,14 @@ describe Bankserv::Transmission::UserSet::AccountHolderVerification do
|
|
67
73
|
|
68
74
|
it "should store the specified department code" do
|
69
75
|
@set.header.data.has_key?(:dept_code).should be_true
|
76
|
+
@set.header.data[:dept_code].should == "AHVINT"
|
70
77
|
end
|
71
78
|
end
|
72
79
|
|
73
80
|
context "creating a trailer" do
|
74
81
|
|
75
82
|
before(:each) do
|
76
|
-
@set = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T").first
|
83
|
+
@set = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T", internal: true).first
|
77
84
|
@set.save
|
78
85
|
end
|
79
86
|
|
@@ -98,7 +105,7 @@ describe Bankserv::Transmission::UserSet::AccountHolderVerification do
|
|
98
105
|
end
|
99
106
|
|
100
107
|
it "should create a batch of transactions when the job begins" do
|
101
|
-
batch = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T").first
|
108
|
+
batch = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T", internal: true).first
|
102
109
|
batch.save
|
103
110
|
batch.transactions.first.record_type.should == "internal_account_detail"
|
104
111
|
end
|
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.4.
|
4
|
+
version: 0.4.8
|
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-06-
|
13
|
+
date: 2012-06-29 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
requirement: &
|
17
|
+
requirement: &70159062700580 !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: *
|
25
|
+
version_requirements: *70159062700580
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activerecord
|
28
|
-
requirement: &
|
28
|
+
requirement: &70159062700000 !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: *
|
36
|
+
version_requirements: *70159062700000
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: i18n
|
39
|
-
requirement: &
|
39
|
+
requirement: &70159062699300 !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: *
|
47
|
+
version_requirements: *70159062699300
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: absa-h2h
|
50
|
-
requirement: &
|
50
|
+
requirement: &70159062698560 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ~>
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: 0.1.5
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70159062698560
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: absa-esd
|
61
|
-
requirement: &
|
61
|
+
requirement: &70159062697860 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
@@ -66,10 +66,10 @@ dependencies:
|
|
66
66
|
version: 0.0.3
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70159062697860
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: absa-notify-me
|
72
|
-
requirement: &
|
72
|
+
requirement: &70159062697200 !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
@@ -77,10 +77,10 @@ dependencies:
|
|
77
77
|
version: 0.0.5
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
|
-
version_requirements: *
|
80
|
+
version_requirements: *70159062697200
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: combustion
|
83
|
-
requirement: &
|
83
|
+
requirement: &70159062696640 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
85
85
|
requirements:
|
86
86
|
- - ~>
|
@@ -88,7 +88,7 @@ dependencies:
|
|
88
88
|
version: 0.3.1
|
89
89
|
type: :development
|
90
90
|
prerelease: false
|
91
|
-
version_requirements: *
|
91
|
+
version_requirements: *70159062696640
|
92
92
|
description: ! "This engine allows users to inject requests into a queue to be processed.
|
93
93
|
\n \n The queue handles bank account validations, credit payments,
|
94
94
|
debit orders\n and collecting bank statements/notify me statements. "
|