Class: Transmission::UserSet::Eft
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
#base_set, #contained_sets, #decorate_records, from_hash, #get_document, #header, #number_of_records, #parent, partial_class_name, #process, #rec_status, #record_with_sequence_number, #to_hash, #trailer, #transactions
Instance Attribute Details
#accepted_report ⇒ Object
Returns the value of attribute accepted_report.
8
9
10
|
# File 'lib/bankserv/transmission/set/eft.rb', line 8
def accepted_report
@accepted_report
end
|
#account_type_correct ⇒ Object
Returns the value of attribute account_type_correct.
8
9
10
|
# File 'lib/bankserv/transmission/set/eft.rb', line 8
def account_type_correct
@account_type_correct
end
|
#type_of_service ⇒ Object
Returns the value of attribute type_of_service.
8
9
10
|
# File 'lib/bankserv/transmission/set/eft.rb', line 8
def type_of_service
@type_of_service
end
|
Class Method Details
.generate(options = {}) ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/bankserv/transmission/set/eft.rb', line 29
def self.generate(options = {})
efts = self.unprocessed_efts(options[:rec_status])
if efts.count > 0
set = self.new
set.type_of_service = efts.first.request.data[:type_of_service]
set.accepted_report = efts.first.request.data[:accepted_report] || "Y"
set.account_type_correct = efts.first.request.data[:account_type_correct] || "Y"
set.build_batches(efts)
set
end
end
|
.has_test_work? ⇒ Boolean
14
15
16
|
# File 'lib/bankserv/transmission/set/eft.rb', line 14
def self.has_test_work?
class_type.has_test_work?
end
|
.has_work? ⇒ Boolean
10
11
12
|
# File 'lib/bankserv/transmission/set/eft.rb', line 10
def self.has_work?
class_type.has_work?
end
|
.unprocessed_efts(rec_status) ⇒ Object
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/bankserv/transmission/set/eft.rb', line 18
def self.unprocessed_efts(rec_status)
if rec_status == "L"
self.class_type.includes(:request, :bank_account).unprocessed.select{|item| not item.request.test?}
else
self.class_type.unprocessed.select{|item| item.request.test?}
end
end
|
Instance Method Details
#build_contra(transaction) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/bankserv/transmission/set/eft.rb', line 115
def build_contra(transaction)
record_data = Absa::H2h::Transmission::Eft.record_type('contra_record').template_options
record_data.merge!(
rec_id: rec_id,
bankserv_record_identifier: contra_bankserv_record_identifier,
user_branch: transaction.bank_account.branch_code,
user_nominated_account: transaction.bank_account.account_number.to_i.to_s,
user_code: bankserv_service.config[:user_code],
homing_branch: transaction.bank_account.branch_code,
homing_account_number: transaction.bank_account.account_number,
type_of_account: "1",
amount: transaction.amount.to_s,
action_date: short_date(transaction.action_date),
entry_class: "10",
user_ref: transaction.formatted_user_ref
)
records.build(record_type: transaction.record_type + "_record", data: record_data, sourceable: transaction)
end
|
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# File 'lib/bankserv/transmission/set/eft.rb', line 66
def (options = {})
self.generation_number = options[:user_generation_number] || get_user_generation_number
record_data = Absa::H2h::Transmission::Eft.record_type('header').template_options
record_data.merge!(
rec_id: rec_id,
bankserv_creation_date: Time.now.strftime("%y%m%d"),
user_generation_number: generation_number,
type_of_service: @type_of_service,
accepted_report: @accepted_report.nil? ? "" : @accepted_report,
account_type_correct: @account_type_correct
)
record_data.merge!(first_sequence_number: options[:first_sequence_number]) if options[:first_sequence_number]
records.build(record_type: "header", data: record_data)
end
|
#build_standard(transaction) ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# File 'lib/bankserv/transmission/set/eft.rb', line 89
def build_standard(transaction)
record_data = Absa::H2h::Transmission::Eft.record_type('standard_record').template_options
homing_account_number = transaction.bank_account.account_number.to_i.to_s
homing_branch_code = transaction.bank_account.branch_code.to_i.to_s
record_data.merge!(
rec_id: rec_id,
user_nominated_account: transaction.contra_bank_details.account_number,
user_branch: transaction.contra_bank_details.branch_code,
user_code: bankserv_service.config[:user_code],
bankserv_record_identifier: standard_bankserv_record_identifier,
homing_branch: homing_branch_code,
homing_account_number: homing_account_number.length <= 11 ? homing_account_number : "0",
type_of_account: transaction.bank_account.account_type_id,
amount: transaction.amount.to_s,
action_date: short_date(transaction.action_date),
entry_class: standard_entry_class,
tax_code: "0",
user_ref: transaction.formatted_user_ref,
homing_account_name: transaction.bank_account.account_holder,
non_standard_homing_account_number: homing_account_number.length > 11 ? homing_account_number : "0"
)
records.build(record_type: transaction.record_type + "_record", data: record_data, sourceable: transaction)
end
|
#build_trailer(options = {}) ⇒ Object
84
85
86
87
|
# File 'lib/bankserv/transmission/set/eft.rb', line 84
def build_trailer(options = {})
record_data = Absa::H2h::Transmission::Eft.record_type('trailer').template_options
records.build(record_type: "trailer", data: record_data.merge(rec_id: rec_id))
end
|
#contra_records ⇒ Object
51
52
53
|
# File 'lib/bankserv/transmission/set/eft.rb', line 51
def contra_records
records.where(record_type: "contra_record")
end
|
#first_action_date ⇒ Object
136
137
138
|
# File 'lib/bankserv/transmission/set/eft.rb', line 136
def first_action_date
transactions.min_by{|t| t.data[:action_date]}.data[:action_date]
end
|
#get_user_generation_number ⇒ Object
59
60
61
62
63
64
|
# File 'lib/bankserv/transmission/set/eft.rb', line 59
def get_user_generation_number
bankserv_service.reserve_generation_number!.to_s end
|
#hash_total_of_homing_account_numbers ⇒ Object
148
149
150
151
152
153
154
155
156
157
|
# File 'lib/bankserv/transmission/set/eft.rb', line 148
def hash_total_of_homing_account_numbers
hash_total = 0
transactions.each do |transaction|
hash_total += transaction.data[:homing_account_number].to_i
hash_total += transaction.data[:non_standard_homing_account_number].reverse[0,11].reverse.to_i if transaction.record_type == "standard_record"
end
hash_total.to_s.reverse[0,12].reverse.to_i
end
|
#last_action_date ⇒ Object
140
141
142
|
# File 'lib/bankserv/transmission/set/eft.rb', line 140
def last_action_date
transactions.max_by{|t| t.data[:action_date]}.data[:action_date]
end
|
#no_credit_records ⇒ Object
171
172
173
|
# File 'lib/bankserv/transmission/set/eft.rb', line 171
def no_credit_records
credit_records.count.to_s
end
|
#no_debit_records ⇒ Object
167
168
169
|
# File 'lib/bankserv/transmission/set/eft.rb', line 167
def no_debit_records
debit_records.count.to_s
end
|
#purge_date ⇒ Object
144
145
146
|
# File 'lib/bankserv/transmission/set/eft.rb', line 144
def purge_date
last_action_date
end
|
#set_type ⇒ Object
42
43
44
|
# File 'lib/bankserv/transmission/set/eft.rb', line 42
def set_type
"eft"
end
|
#short_date(date) ⇒ Object
46
47
48
49
|
# File 'lib/bankserv/transmission/set/eft.rb', line 46
def short_date(date)
date = Date.strptime(date, "%Y-%m-%d")
date.strftime("%y%m%d")
end
|
#standard_records ⇒ Object
55
56
57
|
# File 'lib/bankserv/transmission/set/eft.rb', line 55
def standard_records
records.where(record_type: "standard_record")
end
|
#total_credit_value ⇒ Object
163
164
165
|
# File 'lib/bankserv/transmission/set/eft.rb', line 163
def total_credit_value
credit_records.inject(0) { |sum, record| sum + record.data[:amount].to_i }
end
|
#total_debit_value ⇒ Object
159
160
161
|
# File 'lib/bankserv/transmission/set/eft.rb', line 159
def total_debit_value
debit_records.inject(0) { |sum, record| sum + record.data[:amount].to_i }
end
|