bankserv 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/.rvmrc +1 -0
- data/Gemfile +16 -0
- data/Rakefile +8 -0
- data/bankserv.gemspec +31 -0
- data/config.ru +7 -0
- data/lib/bankserv.rb +48 -0
- data/lib/bankserv/account_holder_verification.rb +90 -0
- data/lib/bankserv/bank_account.rb +19 -0
- data/lib/bankserv/configuration.rb +67 -0
- data/lib/bankserv/credit.rb +70 -0
- data/lib/bankserv/debit.rb +94 -0
- data/lib/bankserv/eft.rb +83 -0
- data/lib/bankserv/engine.rb +183 -0
- data/lib/bankserv/engine/engine_configuration.rb +12 -0
- data/lib/bankserv/engine/engine_process.rb +3 -0
- data/lib/bankserv/request.rb +27 -0
- data/lib/bankserv/transaction.rb +22 -0
- data/lib/bankserv/transmission/document.rb +43 -0
- data/lib/bankserv/transmission/input_document.rb +84 -0
- data/lib/bankserv/transmission/output_document.rb +27 -0
- data/lib/bankserv/transmission/record.rb +13 -0
- data/lib/bankserv/transmission/reply_document.rb +27 -0
- data/lib/bankserv/transmission/set.rb +120 -0
- data/lib/bankserv/transmission/set/account_holder_verification.rb +81 -0
- data/lib/bankserv/transmission/set/account_holder_verification_output.rb +17 -0
- data/lib/bankserv/transmission/set/credit.rb +44 -0
- data/lib/bankserv/transmission/set/debit.rb +44 -0
- data/lib/bankserv/transmission/set/document.rb +45 -0
- data/lib/bankserv/transmission/set/eft.rb +228 -0
- data/lib/bankserv/transmission/set/eft_output.rb +12 -0
- data/lib/bankserv/transmission/set/eft_redirect.rb +18 -0
- data/lib/bankserv/transmission/set/eft_unpaid.rb +18 -0
- data/lib/bankserv/transmission/set/reply.rb +47 -0
- data/lib/bankserv/transmission/statement.rb +46 -0
- data/lib/bankserv/version.rb +3 -0
- data/lib/config/ahv.yml +9 -0
- data/lib/core_extensions.rb +37 -0
- data/lib/generators/active_record/bankserv_generator.rb +30 -0
- data/lib/generators/active_record/templates/migration.rb +141 -0
- data/spec/examples/ahv_input_file.txt +7 -0
- data/spec/examples/ahv_output_file.txt +7 -0
- data/spec/examples/credit_eft_input.txt +166 -0
- data/spec/examples/debit_eft_input_file.txt +20 -0
- data/spec/examples/eft_input_with_2_sets.txt +8 -0
- data/spec/examples/eft_output_file.txt +35 -0
- data/spec/examples/host2host/tmp.log +1 -0
- data/spec/examples/reply/rejected_transmission.txt +7 -0
- data/spec/examples/reply/reply_file.txt +5 -0
- data/spec/examples/statement4_unpacked.dat +51 -0
- data/spec/examples/tmp/OUTPUT0412153500.txt +35 -0
- data/spec/examples/tmp/REPLY0412153000.txt +5 -0
- data/spec/factories.rb +90 -0
- data/spec/internal/config/database.yml.sample +3 -0
- data/spec/internal/config/routes.rb +3 -0
- data/spec/internal/db/schema.rb +138 -0
- data/spec/internal/log/.gitignore +1 -0
- data/spec/internal/public/favicon.ico +0 -0
- data/spec/lib/bankserv/account_holder_verification_spec.rb +104 -0
- data/spec/lib/bankserv/configuration_spec.rb +34 -0
- data/spec/lib/bankserv/core_ext_spec.rb +43 -0
- data/spec/lib/bankserv/credit_spec.rb +92 -0
- data/spec/lib/bankserv/debit_spec.rb +187 -0
- data/spec/lib/bankserv/engine/engine_spec.rb +142 -0
- data/spec/lib/bankserv/transaction_spec.rb +32 -0
- data/spec/lib/bankserv/transmission/input_document_spec.rb +207 -0
- data/spec/lib/bankserv/transmission/output_document_spec.rb +210 -0
- data/spec/lib/bankserv/transmission/reply_document_spec.rb +117 -0
- data/spec/lib/bankserv/transmission/set/account_holder_verification_spec.rb +108 -0
- data/spec/lib/bankserv/transmission/set/credit_spec.rb +96 -0
- data/spec/lib/bankserv/transmission/set/debit_spec.rb +103 -0
- data/spec/lib/bankserv/transmission/statement_spec.rb +109 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/support/helpers.rb +207 -0
- metadata +223 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
module Bankserv
|
2
|
+
|
3
|
+
module Transmission::UserSet
|
4
|
+
|
5
|
+
class EftRedirect < Set
|
6
|
+
|
7
|
+
def process
|
8
|
+
transactions.each do |transaction|
|
9
|
+
eft = Bankserv::Eft.for_internal_reference(transaction.reference).first
|
10
|
+
eft.process_response(transaction.data.merge(response_status: 'redirect')) if eft
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Bankserv
|
2
|
+
|
3
|
+
module Transmission::UserSet
|
4
|
+
|
5
|
+
class EftUnpaid < Set
|
6
|
+
|
7
|
+
def process
|
8
|
+
transactions.each do |transaction|
|
9
|
+
eft = Bankserv::Eft.for_internal_reference(transaction.reference).first
|
10
|
+
eft.process_response(transaction.data.merge(response_status: 'unpaid')) if eft
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Bankserv
|
2
|
+
|
3
|
+
module Transmission::UserSet
|
4
|
+
|
5
|
+
class Reply < Set
|
6
|
+
|
7
|
+
def process
|
8
|
+
document = nil
|
9
|
+
|
10
|
+
transactions.each do |transaction|
|
11
|
+
case transaction.record_type
|
12
|
+
when "transmission_status"
|
13
|
+
document = Bankserv::InputDocument.for_transmission_number(transaction.data[:transmission_number])
|
14
|
+
document.reply_status = transaction.data[:transmission_status]
|
15
|
+
document.save!
|
16
|
+
when "transmission_rejected_reason"
|
17
|
+
document.error = {
|
18
|
+
code: transaction.data[:error_code],
|
19
|
+
message: transaction.data[:error_message]
|
20
|
+
}
|
21
|
+
|
22
|
+
document.save!
|
23
|
+
when "eft_status"
|
24
|
+
set = document.set_with_generation_number(transaction.data[:user_code_generation_number])
|
25
|
+
set.reply_status = transaction.data[:user_set_status]
|
26
|
+
set.save!
|
27
|
+
when "accepted_report_reply"
|
28
|
+
# what do we do here.. what is an accepted report reply?
|
29
|
+
when "rejected_message"
|
30
|
+
set = document.set_with_generation_number(transaction.data[:user_code_generation_number])
|
31
|
+
record = set.record_with_sequence_number(transaction.data[:user_sequence_number])
|
32
|
+
|
33
|
+
record.error = {
|
34
|
+
code: transaction.data[:error_code],
|
35
|
+
message: transaction.data[:error_message]
|
36
|
+
}
|
37
|
+
|
38
|
+
record.save!
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Bankserv
|
2
|
+
|
3
|
+
class Statement < ActiveRecord::Base
|
4
|
+
|
5
|
+
has_many :transactions, :foreign_key => 'bankserv_statement_id'
|
6
|
+
|
7
|
+
def self.store(string)
|
8
|
+
options = Absa::Esd::Transmission::Document.hash_from_s(string)
|
9
|
+
|
10
|
+
raise "Expected a document set" unless options[:type] == "document"
|
11
|
+
|
12
|
+
client_code = options[:data][0][:data][0][:data][:client_code]
|
13
|
+
|
14
|
+
statement = new
|
15
|
+
statement.client_code = client_code
|
16
|
+
statement.data = options
|
17
|
+
statement.save!
|
18
|
+
statement
|
19
|
+
end
|
20
|
+
|
21
|
+
def process!
|
22
|
+
raise "Document already processed" if processed?
|
23
|
+
|
24
|
+
recon_account_detail_records.each do |record|
|
25
|
+
Bankserv::Transaction.create! data: record[:data], client_code: client_code, bankserv_statement_id: id
|
26
|
+
end
|
27
|
+
|
28
|
+
self.processed = true
|
29
|
+
self.save
|
30
|
+
end
|
31
|
+
|
32
|
+
def recon_transmission_data
|
33
|
+
data[:data][0][:data]
|
34
|
+
end
|
35
|
+
|
36
|
+
def recon_account_data
|
37
|
+
recon_transmission_data[1][:data]
|
38
|
+
end
|
39
|
+
|
40
|
+
def recon_account_detail_records
|
41
|
+
recon_account_data.select{|item| item[:type] == 'detail'}
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/lib/config/ahv.yml
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
class Hash
|
2
|
+
|
3
|
+
def symbolize_keys
|
4
|
+
dup.symbolize_keys!
|
5
|
+
end
|
6
|
+
|
7
|
+
def symbolize_keys!
|
8
|
+
keys.each do |key|
|
9
|
+
self[(key.to_sym rescue key) || key] = delete(key)
|
10
|
+
end
|
11
|
+
self
|
12
|
+
end
|
13
|
+
|
14
|
+
def only(keypers)
|
15
|
+
dup.only!(keypers)
|
16
|
+
end
|
17
|
+
|
18
|
+
def only!(keypers)
|
19
|
+
self.select! {|k,v| keypers.include?(k)}
|
20
|
+
self
|
21
|
+
end
|
22
|
+
|
23
|
+
def filter_attributes(model)
|
24
|
+
self.only(model.send(:attribute_names).map(&:to_sym))
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
class Date
|
30
|
+
|
31
|
+
def business_day?
|
32
|
+
return false if self.holiday?(:za)
|
33
|
+
return false if self.saturday? || self.sunday?
|
34
|
+
return true
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Bankserv
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
include Rails::Generators::Migration
|
5
|
+
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
|
8
|
+
desc <<-CONTENT
|
9
|
+
Copies the bankserv migration file to the migrations
|
10
|
+
folder.
|
11
|
+
|
12
|
+
Please run rake db:migrate once the installer is
|
13
|
+
complete.
|
14
|
+
|
15
|
+
CONTENT
|
16
|
+
|
17
|
+
def self.next_migration_number(dirname) #:nodoc:
|
18
|
+
if ActiveRecord::Base.timestamped_migrations
|
19
|
+
Time.now.utc.strftime("%Y%m%d%H%M%S")
|
20
|
+
else
|
21
|
+
"%.3d" % (current_migration_number(dirname) + 1)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def create_migration_file
|
26
|
+
migration_template 'migration.rb', 'db/migrate/create_bankserv_tables.rb'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,141 @@
|
|
1
|
+
class CreateBankservTables < ActiveRecord::Migration
|
2
|
+
def self.change
|
3
|
+
|
4
|
+
create_table :bankserv_statements, :force => true do |t|
|
5
|
+
t.boolean :processed, :default => false
|
6
|
+
t.string :client_code
|
7
|
+
t.text :data
|
8
|
+
t.timestamps
|
9
|
+
end
|
10
|
+
|
11
|
+
create_table :bankserv_transactions, :force => true do |t|
|
12
|
+
t.boolean :processed, :default => false
|
13
|
+
t.string :client_code
|
14
|
+
t.text :data
|
15
|
+
t.references :bankserv_statement
|
16
|
+
t.timestamps
|
17
|
+
end
|
18
|
+
|
19
|
+
create_table :bankserv_configurations, :force => true do |t|
|
20
|
+
t.boolean :active, :default => false
|
21
|
+
t.string :client_code
|
22
|
+
t.string :client_name
|
23
|
+
t.string :client_abbreviated_name
|
24
|
+
t.string :user_code
|
25
|
+
t.string :department_code
|
26
|
+
t.integer :transmission_number
|
27
|
+
t.integer :user_generation_number
|
28
|
+
t.string :internal_branch_code
|
29
|
+
t.boolean :live_env, :default => false
|
30
|
+
t.timestamps
|
31
|
+
end
|
32
|
+
|
33
|
+
create_table :bankserv_requests do |t|
|
34
|
+
t.string :type
|
35
|
+
t.text :data
|
36
|
+
t.boolean :processed, :default => false
|
37
|
+
t.string :status
|
38
|
+
t.text :response
|
39
|
+
t.boolean :test, :default => false
|
40
|
+
t.timestamps
|
41
|
+
end
|
42
|
+
|
43
|
+
create_table :bankserv_bank_accounts do |t|
|
44
|
+
t.string :branch_code
|
45
|
+
t.string :account_number
|
46
|
+
t.string :account_type
|
47
|
+
t.string :initials
|
48
|
+
t.string :account_name
|
49
|
+
t.string :id_number
|
50
|
+
t.timestamps
|
51
|
+
end
|
52
|
+
|
53
|
+
create_table :bankserv_account_holder_verifications do |t|
|
54
|
+
t.boolean :internal, :default => false
|
55
|
+
t.references :bankserv_bank_account
|
56
|
+
t.references :bankserv_request
|
57
|
+
t.string :status, :default => "new"
|
58
|
+
t.text :response
|
59
|
+
t.string :user_ref
|
60
|
+
t.string :internal_user_ref
|
61
|
+
t.timestamps
|
62
|
+
end
|
63
|
+
|
64
|
+
create_table :bankserv_debits do |t|
|
65
|
+
t.string :record_type
|
66
|
+
t.decimal :amount, :precision => 10, :scale => 2
|
67
|
+
t.string :action_date
|
68
|
+
t.references :bankserv_bank_account
|
69
|
+
t.references :bankserv_request
|
70
|
+
t.integer :batch_id
|
71
|
+
t.string :status, :default => "new"
|
72
|
+
t.text :response
|
73
|
+
t.string :user_ref
|
74
|
+
t.string :internal_user_ref
|
75
|
+
t.timestamps
|
76
|
+
end
|
77
|
+
|
78
|
+
create_table :bankserv_credits do |t|
|
79
|
+
t.string :record_type
|
80
|
+
t.decimal :amount, :precision => 10, :scale => 2
|
81
|
+
t.string :action_date
|
82
|
+
t.references :bankserv_bank_account
|
83
|
+
t.references :bankserv_request
|
84
|
+
t.integer :batch_id
|
85
|
+
t.string :status, :default => "new"
|
86
|
+
t.text :response
|
87
|
+
t.string :user_ref
|
88
|
+
t.string :internal_user_ref
|
89
|
+
t.timestamps
|
90
|
+
end
|
91
|
+
|
92
|
+
create_table :bankserv_documents do |t|
|
93
|
+
t.string :type
|
94
|
+
t.references :set
|
95
|
+
t.boolean :processed, :default => false
|
96
|
+
t.string :transmission_status
|
97
|
+
t.string :rec_status
|
98
|
+
t.string :transmission_number
|
99
|
+
t.string :reply_status
|
100
|
+
t.text :error
|
101
|
+
t.timestamps
|
102
|
+
end
|
103
|
+
|
104
|
+
create_table :bankserv_sets do |t|
|
105
|
+
t.references :set
|
106
|
+
t.string :type
|
107
|
+
t.string :generation_number
|
108
|
+
t.string :reply_status
|
109
|
+
t.timestamps
|
110
|
+
end
|
111
|
+
|
112
|
+
create_table :bankserv_records do |t|
|
113
|
+
t.references :set
|
114
|
+
t.string :record_type
|
115
|
+
t.string :reference
|
116
|
+
t.text :data
|
117
|
+
t.timestamps
|
118
|
+
end
|
119
|
+
|
120
|
+
create_table :bankserv_engine_configurations do |t|
|
121
|
+
t.integer :interval_in_minutes
|
122
|
+
t.string :input_directory
|
123
|
+
t.string :output_directory
|
124
|
+
t.string :archive_directory
|
125
|
+
end
|
126
|
+
|
127
|
+
create_table :bankserv_engine_processes do |t|
|
128
|
+
t.boolean :running
|
129
|
+
t.boolean :success
|
130
|
+
t.text :response
|
131
|
+
t.timestamps
|
132
|
+
|
133
|
+
t.datetime :completed_at
|
134
|
+
end
|
135
|
+
|
136
|
+
# default values
|
137
|
+
Bankserv::EngineConfiguration.create!(interval_in_minutes: 60, input_directory: "/tmp", output_directory: "/tmp", archive_directory: "/tmp")
|
138
|
+
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
000L2009070302236TEST 000000000000
|
2
|
+
030L0000001000001
|
3
|
+
031L00000010000000010944025246703085829086M CHAUKE 00000000AHV1
|
4
|
+
031L00000020000000029684746696103120039082A VAN MOLENDORF 00000000AHV2
|
5
|
+
031L00000030000000024920081778801261110087U NKWEBA 00000000AHV3
|
6
|
+
039L0000003000000006554885370
|
7
|
+
999L000000007
|
@@ -0,0 +1,7 @@
|
|
1
|
+
000L2009070302236TEST 00000001000000
|
2
|
+
030L0000001000001
|
3
|
+
031L00000010000000010944025246703085829086M CHAUKE 00000000AHV1
|
4
|
+
031L00000020000000029684746696103120039082A VAN MOLENDORF 00020304AHV2
|
5
|
+
031L00000030000000024920081778801261110087U NKWEBA 00000000AHV3
|
6
|
+
039L0000003000000006554885370
|
7
|
+
999L000000007
|
@@ -0,0 +1,166 @@
|
|
1
|
+
000L2008080800986TESTTEST 000084600000
|
2
|
+
020L0499990808080808150808080808110000780846BATCH YY
|
3
|
+
020L1063200504068123456999900007805002100081136250100001500000080808880 TESTTEST _2055185_PAY USER DEWEY ASSOCIATES 00000000000000000000 21
|
4
|
+
020L1063200504068123456999900007963200504051717311100000542380080808880 TESTTEST _2055184_PAY USER SURE SLIM WELLNESS CLINIC SA 00000000000000000000 21
|
5
|
+
020L1063200504068123456999900008063200509193079313100000224500080808880 TESTTEST _2055183_PAY USER RUGGA KIDS EAST RAND 00000000000000000000 21
|
6
|
+
020L1063200504068123456999900008110280901028268041100000114000080808880 TESTTEST _2055182_PAY USER RUGGA KIDS 00000000000000000000 21
|
7
|
+
020L1063200504068123456999900008225065562162065752100000084000080808880 TESTTEST _2055181_PAY USER RUGGA KIDS WEST RAND 00000000000000000000 21
|
8
|
+
020L1063200504068123456999900008322202662181078166100000248588080808880 TESTTEST _2055180_PAY USER MENLYN PAYROLL ADMINISTRATION 00000000000000000000 21
|
9
|
+
020L1063200504068123456999900008405100100011986778100000046000080808880 TESTTEST _2055179_PAY USER SPUTNIC FINANSIELE ADVISEURS 00000000000000000000 21
|
10
|
+
020L1063200504068123456999900008505100100001970534100000424650080808880 TESTTEST _2055178_PAY USER AMG 00000000000000000000 21
|
11
|
+
020L1063200504068123456999900008663200504063350931100000175000080808880 TESTTEST _2055177_PAY USER CHEMC PUBLISHERS 00000000000000000000 21
|
12
|
+
020L1063200504068123456999900008725065562099422190100000288270080808880 TESTTEST _2055176_PAY USER AMUCUS MAKELAARS 00000000000000000000 21
|
13
|
+
020L1063200504068123456999900008805100100012784141100000015000080808880 TESTTEST _2055175_PAY USER DYNAMIC FINANCIAL SOLUTIONS 00000000000000000000 21
|
14
|
+
020L1063200504068123456999900008925065562070310843100000179000080808880 TESTTEST _2055174_PAY USER PAYROLL MASTERS 00000000000000000000 21
|
15
|
+
020L1063200504068123456999900009063200501220161923100000366300080808880 TESTTEST _2055173_PAY USER JCJ ROBBERTZE VENNOTE 00000000000000000000 21
|
16
|
+
020L1063200504068123456999900009105100100000160180100001150603080808880 TESTTEST _2055172_PAY USER D BETE FINANCIALS 00000000000000000000 21
|
17
|
+
020L1063200504068123456999900009225054562095194751100001269280080808880 TESTTEST _2055171_PAY USER THUKELA METERING CC 00000000000000000000 21
|
18
|
+
020L1063200504068123456999900009363200504071395890100000495000080808880 TESTTEST _2055170_PAY USER EAST LONDON SELF STORAGE 00000000000000000000 21
|
19
|
+
020L1063200504068123456999900009405100100071105301100001030000080808880 TESTTEST _2055169_PAY USER EMA CAPE TOWN 00000000000000000000 21
|
20
|
+
020L1063200504068123456999900009526044952100657520100000288000080808880 TESTTEST _2055168_PAY USER DUIWELSKLOOF LAERSKOOL 00000000000000000000 21
|
21
|
+
020L1063200504068123456999900009625134562054634128100000118269080808880 TESTTEST _2055167_PAY USER DANVILLE HULP PROJEK 00000000000000000000 21
|
22
|
+
020L1063200504068123456999900009763200509103104540100000200000080808880 TESTTEST _2055166_PAY USER ACADEMY OF ADVANCED TECHNOLOG 00000000000000000000 21
|
23
|
+
020L1063200504068123456999900009825400562028250570100000967207080808880 TESTTEST _2055165_PAY USER MOTION TELECOMMUNICATIONS 00000000000000000000 21
|
24
|
+
020L1063200504068123456999900009919304201930012810100005165727080808880 TESTTEST _2055164_PAY USER JS INVESTMENTS T/A RENTA SHA 00000000000000000000 21
|
25
|
+
020L1063200504068123456999900010063200504052569658100000104000080808880 TESTTEST _2055163_PAY USER SCUBAVERSITY 00000000000000000000 21
|
26
|
+
020L1063200504068123456999900010101154500011948787100001680900080808880 TESTTEST _2055162_PAY USER INFOFX 00000000000000000000 21
|
27
|
+
020L1063200504068123456999900010205001700080017436100000069500080808880 TESTTEST _2055161_PAY USER OLD GREYS UNION 00000000000000000000 21
|
28
|
+
020L1063200504068123456999900010305255100033268088100000188435080808880 TESTTEST _2055160_PAY USER VAN WYK 00000000000000000000 21
|
29
|
+
020L1063200504068123456999900010463200504062574748100000217068080808880 TESTTEST _2055159_PAY USER GARYP T/A PICTURE PERFECT 00000000000000000000 21
|
30
|
+
020L1063200504068123456999900010516024501602339775100002639022080808880 TESTTEST _2055158_PAY USER G ERASMUS REKENKUNDIGE DIENST 00000000000000000000 21
|
31
|
+
020L1063200504068123456999900010605100100411345060100000823365080808880 TESTTEST _2055157_PAY USER PICTURE PERFECT HATFIELD 00000000000000000000 21
|
32
|
+
020L1063200504068123456999900010700995300421498757100000352000080808880 TESTTEST _2055156_PAY USER RUGGA KIDS SA PTY LTD 00000000000000000000 21
|
33
|
+
020L1063200504068123456999900010805254600033165599100000792000080808880 TESTTEST _2055155_PAY USER RUGGA KIDS PRETORIA 00000000000000000000 21
|
34
|
+
020L1063200504068123456999900010905100100023355743100000234000080808880 TESTTEST _2055154_PAY USER RUGGA KIDS SA PTY LTD 00000000000000000000 21
|
35
|
+
020L1063200504068123456999900011051680509075905022100000921617080808880 TESTTEST _2055153_PAY USER EXCELL ACCOUNTING SERVICES 00000000000000000000 21
|
36
|
+
020L1063200504068123456999900011114194901419089617100000145900080808880 TESTTEST _2055152_PAY USER EXCELLENT HOMEWARE 00000000000000000000 21
|
37
|
+
020L1063200504068123456999900011205100100032985258100000775962080808880 TESTTEST _2055151_PAY USER LARIAT TECHNOLOGIES 00000000000000000000 21
|
38
|
+
020L1063200504068123456999900011363200501003360675100001657500080808880 TESTTEST _2055150_PAY USER IAASA 00000000000000000000 21
|
39
|
+
020L1063200504068123456999900011400630500200123475100003470160080808880 TESTTEST _2055149_PAY USER CCF ASSOCIATES 00000000000000000000 21
|
40
|
+
020L1063200504068123456999900011563200509097479936100000468000080808880 TESTTEST _2055148_PAY USER SEEDCAP PTY LTD 00000000000000000000 21
|
41
|
+
020L1063200504068123456999900011622052662092576027100002505200080808880 TESTTEST _2055147_PAY USER PICTURE PERFECT DUBAN 00000000000000000000 21
|
42
|
+
020L1063200504068123456999900011705100100628303343100000334500080808880 TESTTEST _2055146_PAY USER FAERIE GLEN SELF STORAGE 00000000000000000000 21
|
43
|
+
020L1063200504068123456999900011863200504053302079100001345000080808880 TESTTEST _2055145_PAY USER BULLIVANT ACCOUNTING TAX SER 00000000000000000000 21
|
44
|
+
020L1063200504068123456999900011963200501063871270100002160000080808880 TESTTEST _2055144_PAY USER TIENERS IN CHRISTUS 00000000000000000000 21
|
45
|
+
020L1063200504068123456999900012063200504049418620100000857521080808880 TESTTEST _2055143_PAY USER INTEGRITAS OUDITEURE 00000000000000000000 21
|
46
|
+
020L1063200504068123456999900012105100100425288536100000282300080808880 TESTTEST _2055142_PAY USER POOL REPAIR CENTRE 00000000000000000000 21
|
47
|
+
020L1063200504068123456999900012210264201026001439100001148000080808880 TESTTEST _2055141_PAY USER MANDRE EIENDOMS TRUST 00000000000000000000 21
|
48
|
+
020L1063200504068123456999900012363200504058643395100000184094080808880 TESTTEST _2055140_PAY USER WESSEL SMALBERGER 00000000000000000000 21
|
49
|
+
020L1063200504068123456999900012463200500010242886100000356340080808880 TESTTEST _2055139_PAY USER EAST RAND DOCUMENTS SOLUTIONS 00000000000000000000 21
|
50
|
+
020L1063200504068123456999900012563200504058021573100001467466080808880 TESTTEST _2055138_PAY USER PICTURE PERFECT 00000000000000000000 21
|
51
|
+
020L1063200504068123456999900012605100100071093664100000210000080808880 TESTTEST _2055137_PAY USER EMA KIDS FOUNDATION 00000000000000000000 21
|
52
|
+
020L1063200504068123456999900012763200504052805995100000907000080808880 TESTTEST _2055136_PAY USER BIZ AFRICA PTY LTD VON WIEL 00000000000000000000 21
|
53
|
+
020L1063200504068123456999900012853510504059290222100009918070080808880 TESTTEST _2055135_PAY USER SQUARE ONE CAPITAL PTY LTD 00000000000000000000 21
|
54
|
+
020L1063200504068123456999900012919104201910177911100002147500080808880 TESTTEST _2055134_PAY USER STRYDOM PROKUREURS 00000000000000000000 21
|
55
|
+
020L1063200504068123456999900013063200504063058446100000417000080808880 TESTTEST _2055133_PAY USER VIP BIN CLEANING MATLAND 00000000000000000000 21
|
56
|
+
020L1063200504068123456999900013163200501430580201100001900300080808880 TESTTEST _2055132_PAY USER NED HERV KERK OOSMOOT 00000000000000000000 21
|
57
|
+
020L1063200504068123456999900013212840501284101932100003028980080808880 TESTTEST _2055131_PAY USER PRESSED IN TIME 00000000000000000000 21
|
58
|
+
020L1063200504068123456999900013305100100033211736100000125000080808880 TESTTEST _2055130_PAY USER LVP PROKUREURS 00000000000000000000 21
|
59
|
+
020L1063200504068123456999900013411280501128016583100000050000080808880 TESTTEST _2055129_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
60
|
+
020L1063200504068123456999900013511280501128016583100000166481080808880 TESTTEST _2055128_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
61
|
+
020L1063200504068123456999900013611280501128016567100000152952080808880 TESTTEST _2055127_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
62
|
+
020L1063200504068123456999900013705100100402087259100000150000080808880 TESTTEST _2055126_PAY USER RUGGA KIDS SA PTY 00000000000000000000 21
|
63
|
+
020L1063200504068123456999900013863200504063531692100000350000080808880 TESTTEST _2055125_PAY USER GAUTENG SOCIETY OF ADVOCATES 00000000000000000000 21
|
64
|
+
020L1063200504068123456999900013905254600033190283100011022020080808880 TESTTEST _2055124_PAY USER JCM REKENMEESTERS BK 00000000000000000000 21
|
65
|
+
020L1063200504068123456999900014000125500420056084100001581224080808880 TESTTEST _2055123_PAY USER NOESIS INC 00000000000000000000 21
|
66
|
+
020L1063200504068123456999900014163200504066398308100001596360080808880 TESTTEST _2055122_PAY USER MSR SECURITY 00000000000000000000 21
|
67
|
+
020L1063200504068123456999900014225165562056207527100000426407080808880 TESTTEST _2055121_PAY USER JUSTIN HOLMES REGISTERED FINA 00000000000000000000 21
|
68
|
+
020L1063200504068123456999900014312840501284056899100000239500080808880 TESTTEST _2055120_PAY USER ATTI 00000000000000000000 21
|
69
|
+
020L1063200504068123456999900014417560501756006202100001038000080808880 TESTTEST _2055119_PAY USER LINKSFIELD PRIMARY 00000000000000000000 21
|
70
|
+
020L1063200504068123456999900014563200504052669723100000575058080808880 TESTTEST _2055118_PAY USER ODYSSEY SOFTWARE 00000000000000000000 21
|
71
|
+
020L1063200504068123456999900014623073262121300347100000031500080808880 TESTTEST _2055117_PAY USER GARDEN OBSESSIONS 00000000000000000000 21
|
72
|
+
020L1063200504068123456999900014705100100073192759100000138100080808880 TESTTEST _2055116_PAY USER LIFESTYLE BOOKS MANGANGXA 00000000000000000000 21
|
73
|
+
020L1063200504068123456999900014816024501602117411100002076000080808880 TESTTEST _2055115_PAY USER WORLD MISSION CENTRE 00000000000000000000 21
|
74
|
+
020L1063200504068123456999900014925675562064619962100000060000080808880 TESTTEST _2055114_PAY USER JABULANI KHAKIBOS KIDS 00000000000000000000 21
|
75
|
+
020L1063200504068123456999900015063200504055472171100000058250080808880 TESTTEST _2055113_PAY USER SURE SLIM BENONI/SPRINGS 00000000000000000000 21
|
76
|
+
020L1063200504068123456999900015112320901232026794100001825000080808880 TESTTEST _2055112_PAY USER TRISAVE HAMADA 00000000000000000000 21
|
77
|
+
020L1063200504068123456999900015263200504042937322100001107149080808880 TESTTEST _2055111_PAY USER THE GUARDIAN GROUP 00000000000000000000 21
|
78
|
+
020L1063200504068123456999900015311280501128016567100000086593080808880 TESTTEST _2055110_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
79
|
+
020L1063200504068123456999900015426014662071481205100000558000080808880 TESTTEST _2055109_PAY USER BUYS GENOTE MAKELAARS 00000000000000000000 21
|
80
|
+
020L1063200504068123456999900015505100100022750665100001111500080808880 TESTTEST _2055108_PAY USER ACCOUNT N TAX CC 00000000000000000000 21
|
81
|
+
020L1063200504068123456999900015621151762049896246100000054657080808880 TESTTEST _2055107_PAY USER FORTUIN FUNERAL HOME 00000000000000000000 21
|
82
|
+
020L1063200504068123456999900015725065562112480893100000051500080808880 TESTTEST _2055106_PAY USER BLUE WATER 00000000000000000000 21
|
83
|
+
020L1063200504068123456999900015863200504048782638100000149704080808880 TESTTEST _2055105_PAY USER DEO GLORIA 00000000000000000000 21
|
84
|
+
020L1063200504068123456999900015963200501150161831100000080000080808880 TESTTEST _2055104_PAY USER PETROHOF 00000000000000000000 21
|
85
|
+
020L1063200504068123456999900016025065562000440173100000115000080808880 TESTTEST _2055103_PAY USER BENDOR GARDENS 00000000000000000000 21
|
86
|
+
020L1063200504068123456999900016125770562005438470100000341500080808880 TESTTEST _2055102_PAY USER POOL CLINQUE 00000000000000000000 21
|
87
|
+
020L1063200504068123456999900016263200505260151306100003387600080808880 TESTTEST _2055101_PAY USER L/S MAGALIESKRUIN 00000000000000000000 21
|
88
|
+
020L1063200504068123456999900016314114801411257154100000046000080808880 TESTTEST _2055100_PAY USER VIDA COURT 00000000000000000000 21
|
89
|
+
020L1063200504068123456999900016425065562093414242100000056000080808880 TESTTEST _2055099_PAY USER VILLA MERZEE 00000000000000000000 21
|
90
|
+
020L1063200504068123456999900016525065562149866222100000069480080808880 TESTTEST _2055098_PAY USER VILLA TIMONICE 00000000000000000000 21
|
91
|
+
020L1063200504068123456999900016626034754200045473100000883920080808880 TESTTEST _2055097_PAY USER UNICORN SECURITY 00000000000000000000 21
|
92
|
+
020L1063200504068123456999900016725214562101679994100001012000080808880 TESTTEST _2055096_PAY USER GLOBAL MISSIONS 00000000000000000000 21
|
93
|
+
020L1063200504068123456999900016805100100221501223100000176000080808880 TESTTEST _2055095_PAY USER WIZARDWORX 00000000000000000000 21
|
94
|
+
020L1063200504068123456999900016963200504043978795100000172000080808880 TESTTEST _2055094_PAY USER WA PIETERS ASS 00000000000000000000 21
|
95
|
+
020L1063200504068123456999900017063200504048580705100000060000080808880 TESTTEST _2055093_PAY USER ZOE ACADEMY 00000000000000000000 21
|
96
|
+
020L1063200504068123456999900017105100100020803907100004332000080808880 TESTTEST _2055092_PAY USER ELTRA AFRICA CC 00000000000000000000 21
|
97
|
+
020L1063200504068123456999900017205100100235787396100000254522080808880 TESTTEST _2055091_PAY USER LIFESTYLE BOOKS BANDA 00000000000000000000 21
|
98
|
+
020L1063200504068123456999900017363200509083437516100000600000080808880 TESTTEST _2055090_PAY USER HUIS OEBOENTOE 00000000000000000000 21
|
99
|
+
020L1063200504068123456999900017463200504070648490100001009200080808880 TESTTEST _2055089_PAY USER BLOEM SELF STORAGE 00000000000000000000 21
|
100
|
+
020L1063200504068123456999900017563200501030660109100001117600080808880 TESTTEST _2055088_PAY USER HENSTOCK VAN DEN HEEVER 00000000000000000000 21
|
101
|
+
020L1063200504068123456999900017614114801411238753100000108500080808880 TESTTEST _2055087_PAY USER ADENHOF 00000000000000000000 21
|
102
|
+
020L1063200504068123456999900017705100100021199418100000814000080808880 TESTTEST _2055086_PAY USER KUMON SHEARER 00000000000000000000 21
|
103
|
+
020L1063200504068123456999900017821221760036499560100000360000080808880 TESTTEST _2055085_PAY USER MF ACCOUTING BOOKKEEPING SER 00000000000000000000 21
|
104
|
+
020L1063200504068123456999900017963200501028411045100000175700080808880 TESTTEST _2055084_PAY USER LIFESTYLE BOOKS BARNARD 00000000000000000000 21
|
105
|
+
020L1063200504068123456999900018016273401627024328100000479000080808880 TESTTEST _2055083_PAY USER STORAGE CITY 00000000000000000000 21
|
106
|
+
020L1063200504068123456999900018163200504057772276100000126985080808880 TESTTEST _2055082_PAY USER POOL MAGIC 00000000000000000000 21
|
107
|
+
020L1063200504068123456999900018216273401662054092100000060000080808880 TESTTEST _2055081_PAY USER CONCERNED EMPLOYERS ASSOCIATI 00000000000000000000 21
|
108
|
+
020L1063200504068123456999900018319044201904176003100000323000080808880 TESTTEST _2055080_PAY USER POOL MAGIC ADVISORY 00000000000000000000 21
|
109
|
+
020L1063200504068123456999900018425035562005080388100000014900080808880 TESTTEST _2055079_PAY USER RWFL GRAHAMSTOWN 00000000000000000000 21
|
110
|
+
020L1063200504068123456999900018525035562005080388100000082933080808880 TESTTEST _2055078_PAY USER RWFL SHARONLEE 00000000000000000000 21
|
111
|
+
020L1063200504068123456999900018625035562005080388100000012090080808880 TESTTEST _2055077_PAY USER RWFL TABLEVIEW 00000000000000000000 21
|
112
|
+
020L1063200504068123456999900018725035562005080388100000062913080808880 TESTTEST _2055076_PAY USER RWFL OUDTSHOORM 00000000000000000000 21
|
113
|
+
020L1063200504068123456999900018825035562005080388100000033283080808880 TESTTEST _2055075_PAY USER RWFL HILTON 00000000000000000000 21
|
114
|
+
020L1063200504068123456999900018925035562005080388100000101812080808880 TESTTEST _2055074_PAY USER RWFL DIE MOOT 00000000000000000000 21
|
115
|
+
020L1063200504068123456999900019025035562005080388100000042300080808880 TESTTEST _2055073_PAY USER RWFL MODDERFONTEIN 00000000000000000000 21
|
116
|
+
020L1063200504068123456999900019125035562005080388100000022102080808880 TESTTEST _2055072_PAY USER RWFL PRETORIA NORTH 00000000000000000000 21
|
117
|
+
020L1063200504068123456999900019225035562005080388100000012655080808880 TESTTEST _2055071_PAY USER RWFL BRAKPAN 00000000000000000000 21
|
118
|
+
020L1063200504068123456999900019325035562005080388100000278704080808880 TESTTEST _2055070_PAY USER RWFL RUSTENBURG 00000000000000000000 21
|
119
|
+
020L1063200504068123456999900019425035562005080388100000031487080808880 TESTTEST _2055069_PAY USER RWFL WELTEVREDENPARK AM PM 00000000000000000000 21
|
120
|
+
020L1063200504068123456999900019525035562005080388100000011900080808880 TESTTEST _2055068_PAY USER RWFL SANDTON AM PM 00000000000000000000 21
|
121
|
+
020L1063200504068123456999900019625035562005080388100000037882080808880 TESTTEST _2055067_PAY USER RWFL ROODEPOORT PM KRUGERS 00000000000000000000 21
|
122
|
+
020L1063200504068123456999900019725035562005080388100000093364080808880 TESTTEST _2055066_PAY USER RWFL RANDBURG PM 00000000000000000000 21
|
123
|
+
020L1063200504068123456999900019825035562005080388100000025205080808880 TESTTEST _2055065_PAY USER RWFL NORTHCLIFF PM 00000000000000000000 21
|
124
|
+
020L1063200504068123456999900019999035562005080388100000020000080808880 TESTTEST _2055064_PAY USER RWFL MILNERTON PM 00000000000000000000 21
|
125
|
+
020L1063200504068123456999900020025035562005080388100000060515080808880 TESTTEST _2055063_PAY USER RWFL MIDRAND PM 00000000000000000000 21
|
126
|
+
020L1063200504068123456999900020125035562005080388100000075614080808880 TESTTEST _2055062_PAY USER RWFL KEMPTON PARK PM 00000000000000000000 21
|
127
|
+
020L1063200504068123456999900020225035562005080388100000017112080808880 TESTTEST _2055061_PAY USER RWFL GARSFONTEIN PM 00000000000000000000 21
|
128
|
+
020L1063200504068123456999900020325035562005080388100000078084080808880 TESTTEST _2055060_PAY USER RWFL GERMISTON PM 00000000000000000000 21
|
129
|
+
020L1063200504068123456999900020425035562005080388100000019345080808880 TESTTEST _2055059_PAY USER RWFL FISH HOEK PM 00000000000000000000 21
|
130
|
+
020L1063200504068123456999900020525035562005080388100000012655080808880 TESTTEST _2055058_PAY USER RWFL FOURWAYS PM 00000000000000000000 21
|
131
|
+
020L1063200504068123456999900020625035562005080388100000121019080808880 TESTTEST _2055057_PAY USER RWFL EAST LONDON AM 00000000000000000000 21
|
132
|
+
020L1063200504068123456999900020725035562005080388100000009645080808880 TESTTEST _2055056_PAY USER RWFL ELARDUS PARK PM 00000000000000000000 21
|
133
|
+
020L1063200504068123456999900020825035562005080388100000030607080808880 TESTTEST _2055055_PAY USER RWFL EDENVALE PM 00000000000000000000 21
|
134
|
+
020L1063200504068123456999900020925035562005080388100000010182080808880 TESTTEST _2055054_PAY USER RWFL CENTURION PM THE WILL 00000000000000000000 21
|
135
|
+
020L1063200504068123456999900021025035562005080388100000007145080808880 TESTTEST _2055053_PAY USER RWFL BELLVILLE AM 00000000000000000000 21
|
136
|
+
020L1063200504068123456999900021125035562005080388100000025233080808880 TESTTEST _2055052_PAY USER RWFL BRYANSTON PM RANDBURG 00000000000000000000 21
|
137
|
+
020L1063200504068123456999900021225035562005080388100000017530080808880 TESTTEST _2055051_PAY USER RWFL BERGVLIET PM 00000000000000000000 21
|
138
|
+
020L1063200504068123456999900021325035562005080388100000032700080808880 TESTTEST _2055050_PAY USER RWFL BEDFORDVIEW PM EDENVA 00000000000000000000 21
|
139
|
+
020L1063200504068123456999900021425035562005080388100000012670080808880 TESTTEST _2055049_PAY USER RWFL BRYANSTON AM SUNNINGH 00000000000000000000 21
|
140
|
+
020L1063200504068123456999900021525035562005080388100000043977080808880 TESTTEST _2055048_PAY USER RWFL BROOKLYN PM 00000000000000000000 21
|
141
|
+
020L1063200504068123456999900021625035562005080388100000137411080808880 TESTTEST _2055047_PAY USER RWFL BOKSBURG PM/BEDFRODVIE 00000000000000000000 21
|
142
|
+
020L1063200504068123456999900021725035562005080388100000068108080808880 TESTTEST _2055046_PAY USER RWFL AMANZINTOTI/BEREA 00000000000000000000 21
|
143
|
+
020L1063200504068123456999900021825035562005080388100000086127080808880 TESTTEST _2055045_PAY USER RWFL ALBERTON/GLENVISTA 00000000000000000000 21
|
144
|
+
020L1063200504068123456999900021911280501128016575100000190000080808880 TESTTEST _2055044_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
145
|
+
020L1063200504068123456999900022011280501128016575100000086000080808880 TESTTEST _2055043_PAY USER THOMSON ACCOUNTANTS 00000000000000000000 21
|
146
|
+
020L1063200504068123456999900022119834101983141100100003276697080808880 TESTTEST _2055042_PAY USER DUNMAR REACTION SERVICES 00000000000000000000 21
|
147
|
+
020L1063200504068123456999900022263200504061717092100004944500080808880 TESTTEST _2055041_PAY USER TEXTILE SECURITY SERVICES 00000000000000000000 21
|
148
|
+
020L1063200504068123456999900022326044952104226149100000030000080808880 TESTTEST _2055040_PAY USER DR SPIES VENNOTE 00000000000000000000 21
|
149
|
+
020L1063200504068123456999900022426034962096195344100000075500080808880 TESTTEST _2055039_PAY USER TOP COUNCILS LEGAL CONSUNTANC 00000000000000000000 21
|
150
|
+
020L1063200504068123456999900022563200502140264523100000100000080808880 TESTTEST _2055038_PAY USER SIGMAFIN 00000000000000000000 21
|
151
|
+
020L1063200504068123456999900022663200502840000365100000083000080808880 TESTTEST _2055037_PAY USER UJ GYM 00000000000000000000 21
|
152
|
+
020L1063200504068123456999900022763200504055281954100000193077080808880 TESTTEST _2055036_PAY USER CENTRE SHELF DEVELOPERS T/A E 00000000000000000000 21
|
153
|
+
020L1063200504068123456999900022826125162062107711100000039900080808880 TESTTEST _2055035_PAY USER MOTO GUIDE CC 00000000000000000000 21
|
154
|
+
020L1063200504068123456999900022902650900078262496100000020000080808880 TESTTEST _2055034_PAY USER IMPACT THE NATION 00000000000000000000 21
|
155
|
+
020L1063200504068123456999900023063200504070619188100004872990080808880 TESTTEST _2055033_PAY USER HENTIQ 2227 PTY LTD 00000000000000000000 21
|
156
|
+
020L1063200504068123456999900023126125162115276603100004993500080808880 TESTTEST _2055032_PAY USER EVEREST STRATEGIC MANAGERS PT 00000000000000000000 21
|
157
|
+
020L1063200504068123456999900023263200504057512949100000056600080808880 TESTTEST _2055031_PAY USER DIGITAL IP SOLUTIONS PTY LTD 00000000000000000000 21
|
158
|
+
020L1063200504068123456999900023301564100021158932100001348800080808880 TESTTEST _2055030_PAY USER E MALAN ASS CC 00000000000000000000 21
|
159
|
+
020L1063200504068123456999900023405100100030235642100000256210080808880 TESTTEST _2055029_PAY USER METHODIST CHURCH 00000000000000000000 21
|
160
|
+
020L1063200504068123456999900023501800500221015566100004916193080808880 TESTTEST _2055028_PAY USER HEALING MINISTRIES TRUST 00000000000000000000 21
|
161
|
+
020L1063200504068123456999900023600630500200589458100000047300080808880 TESTTEST _2055027_PAY USER WILLEMS VD WESTHUIZEN 00000000000000000000 21
|
162
|
+
020L1063200504068123456999900023725204562032469836100000314250080808880 TESTTEST _2055026_PAY USER COMPACT ACCOUNTING 00000000000000000000 21
|
163
|
+
020L1063200504068123456999900023816514501651343144100000086503080808880 TESTTEST _2055025_PAY USER BOSHOFF SMUTS ING 00000000000000000000 21
|
164
|
+
020L1263200504068123456999900023963200504068123456100127221665080808100000TESTTEST CONTRA_0000846_PMT
|
165
|
+
020L929999000078000239080808080811000001000161000001000127221665000127221665028905810181
|
166
|
+
999L000000166
|