Class: Aba::Batch

Inherits:
Object
  • Object
show all
Includes:
Validations
Defined in:
lib/aba/batch.rb

Constant Summary

Constants included from Validations

Validations::BECS_PATTERN, Validations::CREDIT_TRANSACTION_CODES, Validations::DEBIT_TRANSACTION_CODES, Validations::INDICATORS

Instance Attribute Summary collapse

Attributes included from Validations

#error_collection

Instance Method Summary collapse

Methods included from Validations

included, transaction_codes

Constructor Details

#initialize(attrs = {}, transactions = []) {|_self| ... } ⇒ Batch

Returns a new instance of Batch.

Yields:

  • (_self)

Yield Parameters:

  • _self (Aba::Batch)

    the object that the method was called on



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/aba/batch.rb', line 32

def initialize(attrs = {}, transactions = [])
  attrs.each do |key, value|
    send("#{key}=", value)
  end

  @entries = []

  unless transactions.nil? || transactions.empty?
    transactions.to_a.each do |t|
      self.add_transaction(t) unless t.nil? || t.empty?
    end
  end

  yield self if block_given?
end

Instance Attribute Details

#bsbObject

Returns the value of attribute bsb.



5
6
7
# File 'lib/aba/batch.rb', line 5

def bsb
  @bsb
end

#descriptionObject

Returns the value of attribute description.



5
6
7
# File 'lib/aba/batch.rb', line 5

def description
  @description
end

#entriesObject

Returns the value of attribute entries.



5
6
7
# File 'lib/aba/batch.rb', line 5

def entries
  @entries
end

#financial_institutionObject

Returns the value of attribute financial_institution.



5
6
7
# File 'lib/aba/batch.rb', line 5

def financial_institution
  @financial_institution
end

#process_atObject

Returns the value of attribute process_at.



5
6
7
# File 'lib/aba/batch.rb', line 5

def process_at
  @process_at
end

#user_idObject

Returns the value of attribute user_id.



5
6
7
# File 'lib/aba/batch.rb', line 5

def user_id
  @user_id
end

#user_nameObject

Returns the value of attribute user_name.



5
6
7
# File 'lib/aba/batch.rb', line 5

def user_name
  @user_name
end

Instance Method Details

#add_return(attrs = {}) ⇒ Object



66
67
68
# File 'lib/aba/batch.rb', line 66

def add_return(attrs = {})
  add_entry(Aba::Return, attrs)
end

#add_transaction(attrs = {}) ⇒ Object



62
63
64
# File 'lib/aba/batch.rb', line 62

def add_transaction(attrs = {})
  add_entry(Aba::Transaction, attrs)
end

#errorsObject



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/aba/batch.rb', line 82

def errors
  # Run validations
  has_errors?
  has_entry_errors?

  # Build errors
  all_errors = {}
  all_errors[:aba] = self.error_collection unless self.error_collection.empty?
  entry_error_collection = entries.each_with_index.map { |t, i| [i, t.error_collection] }.reject { |e| e[1].nil? || e[1].empty? }.to_h
  all_errors[:entries] = entry_error_collection unless entry_error_collection.empty?

  all_errors unless all_errors.empty?
end

#to_sObject

Raises:

  • (RuntimeError)


48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/aba/batch.rb', line 48

def to_s
  raise RuntimeError, 'No entries present - add one using `add_transaction` or `add_return`' if entries.empty?
  raise RuntimeError, 'ABA data is invalid - check the contents of `errors`' unless valid?

  # Descriptive record
  output = "#{descriptive_record}\r\n"

  # Transactions records
  output += entries.map { |t| t.to_s }.join("\r\n")

  # Batch control record
  output += "\r\n#{batch_control_record}"
end

#transactionsObject



70
71
72
# File 'lib/aba/batch.rb', line 70

def transactions
  entries.select { |entry| entry.instance_of?(Aba::Transaction) }
end

#transactions_valid?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/aba/batch.rb', line 74

def transactions_valid?
  !transactions.map { |t| t.valid? }.include?(false)
end

#valid?Boolean

Returns:

  • (Boolean)


78
79
80
# File 'lib/aba/batch.rb', line 78

def valid?
  !has_errors? && !has_entry_errors?
end