Class: Transmission::UserSet::Eft

Inherits:
Bankserv::Set
  • Object
show all
Defined in:
lib/bankserv/transmission/set/eft.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Bankserv::Set

#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_reportObject

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_correctObject

Returns the value of attribute account_type_correct.



8
9
10
# File 'lib/bankserv/transmission/set/eft.rb', line 8

def 
  @account_type_correct
end

#type_of_serviceObject

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



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/bankserv/transmission/set/eft.rb', line 26

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. = efts.first.request.data[:account_type_correct] || "Y"
    set.build_batches(efts)
    set
  end
end

.has_test_work?Boolean

Returns:

  • (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

Returns:

  • (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
# File 'lib/bankserv/transmission/set/eft.rb', line 18

def self.unprocessed_efts(rec_status)
  if rec_status == "L"
    self.class_type.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



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/bankserv/transmission/set/eft.rb', line 112

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..branch_code,
    user_nominated_account: transaction...to_i.to_s,
    user_code: bankserv_service.config[:user_code],
    homing_branch: transaction..branch_code,
    homing_account_number: transaction..,
    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

#build_header(options = {}) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/bankserv/transmission/set/eft.rb', line 63

def build_header(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



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/bankserv/transmission/set/eft.rb', line 86

def build_standard(transaction)
  record_data = Absa::H2h::Transmission::Eft.record_type('standard_record').template_options
   = transaction...to_i.to_s
  homing_branch_code = transaction..branch_code.to_i.to_s
  
  record_data.merge!(
    rec_id: rec_id,
    user_nominated_account: transaction.contra_bank_details., 
    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: .length <= 11 ?  : "0",
    type_of_account: transaction..,
    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..,
    non_standard_homing_account_number: .length > 11 ?  : "0"
  )
  
  records.build(record_type: transaction.record_type + "_record", data: record_data, sourceable: transaction)
end

#build_trailer(options = {}) ⇒ Object



81
82
83
84
# File 'lib/bankserv/transmission/set/eft.rb', line 81

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_recordsObject



48
49
50
# File 'lib/bankserv/transmission/set/eft.rb', line 48

def contra_records
  records.where(record_type: "contra_record")
end

#first_action_dateObject



133
134
135
# File 'lib/bankserv/transmission/set/eft.rb', line 133

def first_action_date
  transactions.min_by{|t| t.data[:action_date]}.data[:action_date]
end

#get_user_generation_numberObject



56
57
58
59
60
61
# File 'lib/bankserv/transmission/set/eft.rb', line 56

def get_user_generation_number
  # bankserv_service.reserve_generation_number!.to_s #Equal to the last accepted user gen number + 1
  gen = Bankserv::DebitService.active.last.reserve_generation_number!.to_s unless Bankserv::DebitService.active.blank?
  gen = Bankserv::CreditService.active.last.reserve_generation_number!.to_s unless Bankserv::CreditService.active.blank?
  gen
end

#hash_total_of_homing_account_numbersObject



145
146
147
148
149
150
151
152
153
154
# File 'lib/bankserv/transmission/set/eft.rb', line 145

def 
  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].to_i if transaction.record_type == "standard_record"
  end

  hash_total.to_s.reverse[0,12].reverse.to_i
end

#last_action_dateObject



137
138
139
# File 'lib/bankserv/transmission/set/eft.rb', line 137

def last_action_date        
  transactions.max_by{|t| t.data[:action_date]}.data[:action_date]
end

#no_credit_recordsObject



168
169
170
# File 'lib/bankserv/transmission/set/eft.rb', line 168

def no_credit_records
  credit_records.count.to_s
end

#no_debit_recordsObject



164
165
166
# File 'lib/bankserv/transmission/set/eft.rb', line 164

def no_debit_records
  debit_records.count.to_s
end

#purge_dateObject



141
142
143
# File 'lib/bankserv/transmission/set/eft.rb', line 141

def purge_date
  last_action_date
end

#set_typeObject



39
40
41
# File 'lib/bankserv/transmission/set/eft.rb', line 39

def set_type
  "eft"
end

#short_date(date) ⇒ Object



43
44
45
46
# File 'lib/bankserv/transmission/set/eft.rb', line 43

def short_date(date)        
  date = Date.strptime(date, "%Y-%m-%d")
  date.strftime("%y%m%d")
end

#standard_recordsObject



52
53
54
# File 'lib/bankserv/transmission/set/eft.rb', line 52

def standard_records
  records.where(record_type: "standard_record")
end

#total_credit_valueObject



160
161
162
# File 'lib/bankserv/transmission/set/eft.rb', line 160

def total_credit_value
  credit_records.inject(0) { |sum, record| sum + record.data[:amount].to_i }
end

#total_debit_valueObject



156
157
158
# File 'lib/bankserv/transmission/set/eft.rb', line 156

def total_debit_value
  debit_records.inject(0) { |sum, record| sum + record.data[:amount].to_i }
end