bankserv 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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