bankserv 0.7.4 → 0.7.5

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.
@@ -61,9 +61,14 @@ module Bankserv
61
61
  false
62
62
  end
63
63
 
64
+ def next_transmission_number
65
+ last_successful_submission = Bankserv::Document.where(type: 'input', client_code: self.client_code, reply_status: "ACCEPTED").last
66
+ (last_successful_submission.transmission_number.to_i + 1).to_s
67
+ end
68
+
64
69
  def update_transmission_number!
65
70
  last_successful_submission = Bankserv::Document.where(type: 'input', client_code: self.client_code, reply_status: "ACCEPTED").last
66
- config[:transmission_number] = (last_successful_submission.transmission_number.to_i + 1).to_s #(config[:transmission_number].to_i + 1).to_s
71
+ config[:transmission_number] = (last_successful_submission.transmission_number.to_i + 2).to_s #(config[:transmission_number].to_i + 1).to_s
67
72
  save!
68
73
  end
69
74
 
@@ -22,8 +22,12 @@ module Bankserv
22
22
  input_document.save!
23
23
 
24
24
  if input_document.accepted?
25
- Bankserv::Service.for_client_code(input_document.client_code).active.each do |service|
26
- service.update_transmission_number!
25
+ service.config[:transmission_number] = (transaction.data[:transmission_number].to_i + 1).to_s
26
+ service.save!
27
+ # service.reload
28
+ Bankserv::Service.for_client_code(input_document.client_code).active.each do |c_service|
29
+ c_service.config[:transmission_number] = (transaction.data[:transmission_number].to_i + 1).to_s
30
+ c_service.save!
27
31
  end
28
32
  end
29
33
 
@@ -59,7 +63,7 @@ module Bankserv
59
63
  if service.is_a? Bankserv::CreditService
60
64
  set = input_document.set_with_generation_number(transaction.data[:user_code_generation_number])
61
65
  next if set.contra_records.empty?
62
- user_ref = set.contra_records.first.reference.match(/CONTRA([0-9]*)/)[1]
66
+ user_ref = set.contra_records.first.data[:user_ref].match(/CONTRA([0-9]*)/)[1]
63
67
  request_id = Bankserv::Credit.where(user_ref: user_ref)[0].bankserv_request_id
64
68
 
65
69
  Bankserv::Credit.where(bankserv_request_id: request_id).each do |credit|
@@ -81,7 +85,7 @@ module Bankserv
81
85
  end
82
86
  end
83
87
  when "rejected_message"
84
- if transaction.data[:error_code] == "80"
88
+ if transaction.data[:error_message].starts_with?("*** WARNING ONLY")
85
89
  # Warning only
86
90
  set = input_document.set_with_generation_number(transaction.data[:user_code_generation_number])
87
91
  record = set.record_with_sequence_number(transaction.data[:user_sequence_number])
@@ -124,7 +128,7 @@ module Bankserv
124
128
  next if set.contra_records.empty?
125
129
 
126
130
  set = input_document.set_with_generation_number(transaction.data[:user_code_generation_number])
127
- user_ref = set.contra_records.first.reference.match(/CONTRA([0-9]*)/)[1]
131
+ user_ref = set.contra_records.first.data[:user_ref].match(/CONTRA([0-9]*)/)[1]
128
132
  request_id = Bankserv::Credit.where(user_ref: user_ref)[0].bankserv_request_id
129
133
 
130
134
  Bankserv::Credit.where(bankserv_request_id: request_id).each do |credit|
@@ -138,7 +142,7 @@ module Bankserv
138
142
 
139
143
  if service.is_a? Bankserv::CreditService
140
144
  set = input_document.set_with_generation_number(transaction.data[:user_code_generation_number])
141
- user_ref = set.contra_records.first.reference.match(/CONTRA([0-9]*)/)[1]
145
+ user_ref = set.contra_records.first.data[:user_ref].match(/CONTRA([0-9]*)/)[1]
142
146
  request_id = Bankserv::Credit.where(user_ref: user_ref)[0].bankserv_request_id
143
147
 
144
148
  Bankserv::Credit.where(bankserv_request_id: request_id).each do |credit|
@@ -1,3 +1,3 @@
1
1
  module Bankserv
2
- VERSION = "0.7.4"
2
+ VERSION = "0.7.5"
3
3
  end
@@ -346,4 +346,52 @@ describe Bankserv::ReplyDocument do
346
346
  Bankserv::Credit.where(status: 'warning').first.response.first[:error_code].should == "80"
347
347
  end
348
348
  end
349
+
350
+ context "Fix bug where transmission number not being updated after accepted reply file received" do
351
+ before(:all) do
352
+ @cs = Bankserv::CreditService.register(client_code: '04136', client_name: "RENTAL CONNECT PTY LTD", client_abbreviated_name: 'RAWSONPROP', user_code: "A855", generation_number: 6365, transmission_status: "L", transmission_number: "376", sequence_number: 57, active: true)
353
+
354
+ Bankserv::Document.create!(type: "input", set_id: 18242, processed: true, transmission_status: "L", rec_status: "L", transmission_number: "367", reply_status: "ACCEPTED", error: nil, created_at: "2014-07-25 15:10:24", updated_at: "2014-07-25 16:30:22", client_code: "04136", user_ref: "2426")
355
+ @file_contents = File.open("./spec/examples/input_long.txt", "rb").read
356
+ @input_document = Bankserv::InputDocument.store(@file_contents)
357
+
358
+ options = Absa::H2h::Transmission::Document.hash_from_s(@file_contents, 'input')
359
+ options[:data].each do |entry|
360
+ if entry[:data].count == 4
361
+ c = entry[:data].map {|x| x[:data]}
362
+ request = Bankserv::Request.create!({
363
+ type: "credit",
364
+ data: {
365
+ :type_of_service=>"BATCH",
366
+ :batches=>[{
367
+ :debit=>{:account_number=>c[2][:homing_account_number], :id_number=>"", :initials=>"", :account_name=>c[2][:homing_account_name], :branch_code=>c[2][:homing_branch], :account_type=>"cheque", :amount=>c[2][:amount], :user_ref=>c[2][:user_ref].gsub("RAWSONPROPCONTRA", ""), :action_date=>"2014-07-15".to_date},
368
+ :credit=>{:account_number=>c[1][:homing_account_number], :id_number=>"", :initials=>"", :account_name=>c[1][:homing_account_name], :branch_code=>c[1][:homing_branch], :account_type=>"cheque", :amount=>c[1][:amount], :user_ref=>c[1][:user_ref].gsub("RAWSONPROP", ""), :action_date=>"2014-07-15".to_date}
369
+ }]
370
+ }
371
+ })
372
+
373
+ request.service_id = @cs.id
374
+ request.save!
375
+ end
376
+ end
377
+
378
+ Bankserv::InputDocument.last.update_attributes(client_code: '04136')
379
+
380
+ Bankserv::Credit.all.each {|x| x.status="pending";x.save!}
381
+
382
+ @file_contents = File.open("./spec/examples/reply/reply_long.txt", "rb").read
383
+
384
+ @document = Bankserv::ReplyDocument.store(@file_contents)
385
+ @document.process!
386
+ @cs.reload
387
+ end
388
+
389
+ it "should bump the credit service trans number to 377" do
390
+ Bankserv::CreditService.last.config[:transmission_number].should == "377"
391
+ end
392
+
393
+ it "should not have any rejected credits" do
394
+ Bankserv::Credit.where(status: 'rejected').count.should == 0
395
+ end
396
+ end
349
397
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 7
8
- - 4
9
- version: 0.7.4
8
+ - 5
9
+ version: 0.7.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jeffrey van Aswegen
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2014-08-01 00:00:00 +02:00
18
+ date: 2014-08-04 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency