bankserv 0.4.7 → 0.4.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. data/lib/bankserv/account_holder_verification.rb +0 -15
  2. data/lib/bankserv/credit.rb +0 -13
  3. data/lib/bankserv/debit.rb +0 -11
  4. data/lib/bankserv/eft.rb +0 -4
  5. data/lib/bankserv/service.rb +16 -1
  6. data/lib/bankserv/transmission/document.rb +0 -2
  7. data/lib/bankserv/transmission/input_document.rb +17 -3
  8. data/lib/bankserv/transmission/reply_document.rb +1 -1
  9. data/lib/bankserv/transmission/set/account_holder_verification.rb +11 -5
  10. data/lib/bankserv/transmission/set/account_holder_verification_output.rb +1 -4
  11. data/lib/bankserv/transmission/set/eft_redirect.rb +1 -1
  12. data/lib/bankserv/transmission/set/eft_unpaid.rb +1 -4
  13. data/lib/bankserv/transmission/set/reply.rb +7 -3
  14. data/lib/bankserv/version.rb +1 -1
  15. data/lib/generators/active_record/templates/migration.rb +0 -3
  16. data/spec/examples/ahv_input_file.txt +2 -2
  17. data/spec/examples/ahv_output_file.txt +3 -3
  18. data/spec/examples/credit_eft_input.txt +1 -1
  19. data/spec/examples/debit_eft_input_file.txt +1 -1
  20. data/spec/examples/reply/rejected_transmission.txt +1 -1
  21. data/spec/examples/reply/reply_file.txt +1 -1
  22. data/spec/internal/db/schema.rb +0 -3
  23. data/spec/lib/bankserv/account_holder_verification_spec.rb +0 -5
  24. data/spec/lib/bankserv/credit_spec.rb +0 -9
  25. data/spec/lib/bankserv/debit_spec.rb +0 -9
  26. data/spec/lib/bankserv/transmission/input_document_spec.rb +14 -8
  27. data/spec/lib/bankserv/transmission/output_document_spec.rb +24 -36
  28. data/spec/lib/bankserv/transmission/reply_document_spec.rb +16 -4
  29. data/spec/lib/bankserv/transmission/set/account_holder_verification_spec.rb +18 -11
  30. 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]
@@ -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
@@ -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
  {
@@ -85,9 +85,5 @@ module Bankserv
85
85
  Debit.for_reference(reference) + Credit.for_reference(reference)
86
86
  end
87
87
 
88
- def self.for_internal_reference(reference)
89
- Debit.for_internal_reference(reference) + Credit.for_internal_reference(reference)
90
- end
91
-
92
88
  end
93
89
  end
@@ -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
@@ -38,7 +38,5 @@ module Bankserv
38
38
  def set_with_generation_number(generation_number)
39
39
  sets.select{|set| set.generation_number == generation_number}.first
40
40
  end
41
-
42
41
  end
43
-
44
42
  end
@@ -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
- document.set.sets << set.generate(rec_status: document.rec_status)
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
 
@@ -19,7 +19,7 @@ class Bankserv::ReplyDocument < Bankserv::Document
19
19
 
20
20
  def process!
21
21
  raise "Document already processed" if processed?
22
-
22
+
23
23
  self.set.process
24
24
  self.processed = true
25
25
  self.save
@@ -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, :external].collect do |type|
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.internal_user_ref
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] = bankserv_service.config[:department_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.for_internal_reference(transaction.reference).first.process_response(transaction.data)
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.for_internal_reference(transaction.reference).first
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.for_internal_reference(transaction.reference).first
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
@@ -1,3 +1,3 @@
1
1
  module Bankserv
2
- VERSION = "0.4.7"
2
+ VERSION = "0.4.8"
3
3
  end
@@ -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
- 030L0000001000001
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 00000000AHV1
4
- 031L00000020000000029684746696103120039082A VAN MOLENDORF 00020304AHV2
5
- 031L00000030000000024920081778801261110087U NKWEBA 00000000AHV3
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
@@ -1,4 +1,4 @@
1
- 000T2004052400000LCD USER 10 AFRICA (PTY) 000012300010
1
+ 000T2004052400000LCD USER 10 AFRICA (PTY) 000012300010 123
2
2
  900T000 TRANSMISSION 00010-0000621 REJECTED
3
3
  901T000 12345-HI THIS IS ERROR
4
4
  900T001 ACB USER SET 9534-0000037-000016 REJECTED
@@ -1,4 +1,4 @@
1
- 000T2004052400000LCD USER 10 AFRICA (PTY) 000012300010
1
+ 000T2004052400000LCD USER 10 AFRICA (PTY) 000012300010 123
2
2
  900T000 TRANSMISSION 00010-0000621 ACCEPTED
3
3
  900T001 ACB USER SET 9534-0000037-000016 ACCEPTED
4
4
  900T001 ACB USER SET 9534-0000038-000032 ACCEPTED
@@ -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: "149505000060000223600000000000"
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: "198841000060000223600000000000"
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: "149205000060000223600000000000"
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
- ahv2.internal_user_ref = "AHV2"
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: "A LDC TESTY PREMIE AL0597626X5")
162
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 9964, batch_id: 1, user_ref: "A LDC TESTY PREMIE AL0394056X3")
163
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 10851, batch_id: 2, user_ref: "A LDC TESTY PREMIE AL0620127X9")
164
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 31700, batch_id: 3, user_ref: "A LDC TESTM PREMIE AL0876267X2")
165
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 13755, batch_id: 3, user_ref: "A LDC TESTY PREMIE AL0699555X1")
166
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 22935, batch_id: 4, user_ref: "A LDC TESTSALARIS BL ROODT")
167
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 15198, batch_id: 4, user_ref: "A LDC TESTKREDITEUR L0844622KL")
168
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 12720, batch_id: 4, user_ref: "A LDC TESTVERSEKERING 01BLOR3")
169
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 9345, batch_id: 4, user_ref: "A LDC TESTSALARIS SOEKIE 12345")
170
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 13420, batch_id: 4, user_ref: "A LDC TESTSALARIS BL ROODT")
171
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 15300, batch_id: 4, user_ref: "A LDC TESTSALARIS BL ROODT")
172
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 7790, batch_id: 4, user_ref: "A LDC TESTSANLAM AL0849 61X3")
173
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 19698, batch_id: 4, user_ref: "A LDC TESTSOUTHERN LIFE 4627K5")
174
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 5000, batch_id: 4, user_ref: "A LDC TESTHUISVERBAND 98173587")
175
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 10420, batch_id: 4, user_ref: "A LDC TESTPERSOONLIKE LENING")
176
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "A LDC TESTSPAARKLUB OKT 2001")
177
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 15000, batch_id: 4, user_ref: "A LDC TESTY PREMIE XAZAP1163V5")
178
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 10000, batch_id: 4, user_ref: "A LDC TESTQ PREMIE BLASNK158X4")
179
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 16150, batch_id: 4, user_ref: "A LDC TESTY PREMIE ALONE6728X1")
180
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 12300, batch_id: 4, user_ref: "A LDC TESTM PREMIUM LZANA602F3")
181
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 20000, batch_id: 4, user_ref: "A LDC TESTY PREMIE SP0001453X0")
182
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 6287, batch_id: 4, user_ref: "A LDC TESTW INSTALMENT ND263XZ")
183
- debits << Bankserv::Debit.create!(record_type: "standard", amount: 8954, batch_id: 4, user_ref: "A LDC TESTY PROTECTION 9697523")
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: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
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::OutputDocument.store(@file_contents)
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: '12346', client_name: "TESTTEST", client_abbreviated_name: 'TESTTEST', user_code: "9999", generation_number: 1, transmission_status: "L", transmission_number: "1")
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 place internal and external account holder verifications into separate user sets" do
26
- sets = Bankserv::Transmission::UserSet::AccountHolderVerification.generate(rec_status: "T")
27
-
28
- sets.count.should == 2
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.7
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-26 00:00:00.000000000Z
13
+ date: 2012-06-29 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
17
- requirement: &70272531742720 !ruby/object:Gem::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: *70272531742720
25
+ version_requirements: *70159062700580
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: activerecord
28
- requirement: &70272531742160 !ruby/object:Gem::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: *70272531742160
36
+ version_requirements: *70159062700000
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: i18n
39
- requirement: &70272531741740 !ruby/object:Gem::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: *70272531741740
47
+ version_requirements: *70159062699300
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: absa-h2h
50
- requirement: &70272531741060 !ruby/object:Gem::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: *70272531741060
58
+ version_requirements: *70159062698560
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: absa-esd
61
- requirement: &70272531740560 !ruby/object:Gem::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: *70272531740560
69
+ version_requirements: *70159062697860
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: absa-notify-me
72
- requirement: &70272531740100 !ruby/object:Gem::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: *70272531740100
80
+ version_requirements: *70159062697200
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: combustion
83
- requirement: &70272531739640 !ruby/object:Gem::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: *70272531739640
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. "