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



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. = 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
25
26
27
# File 'lib/bankserv/transmission/set/eft.rb', line 18

def self.unprocessed_efts(rec_status)
  if rec_status == "L"
    # include here?

    self.class_type.includes(:request, :bank_account).unprocessed.select{|item| not item.request.test?}
    #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



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..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



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



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
   = 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



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_recordsObject



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

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

#first_action_dateObject



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_numberObject



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



148
149
150
151
152
153
154
155
156
157
# File 'lib/bankserv/transmission/set/eft.rb', line 148

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].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_dateObject



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_recordsObject



171
172
173
# File 'lib/bankserv/transmission/set/eft.rb', line 171

def no_credit_records
  credit_records.count.to_s
end

#no_debit_recordsObject



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

def no_debit_records
  debit_records.count.to_s
end

#purge_dateObject



144
145
146
# File 'lib/bankserv/transmission/set/eft.rb', line 144

def purge_date
  last_action_date
end

#set_typeObject



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_recordsObject



55
56
57
# File 'lib/bankserv/transmission/set/eft.rb', line 55

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

#total_credit_valueObject



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_valueObject



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