lib/ach/batch/builder.rb in ach_builder-0.2.1 vs lib/ach/batch/builder.rb in ach_builder-0.2.2
- old
+ new
@@ -1,58 +1,77 @@
module ACH
# Supports building a string representation of a particular instance of an
# ACH batch. Supports building ACH lines. Included by ACH::File.
module Batch::Builder
- # Returns +true+ if any of internal ACH entries has 'credit' transaction code
+ # Returns +true+ if any of internal ACH entries has 'credit' transaction code.
+ #
+ # @return [Boolean]
def has_credit?
entries.any?(&:credit?)
end
- # Returns +true+ if any internal ACH entry has 'debit' transaction code
+ # Returns +true+ if any internal ACH entry has 'debit' transaction code.
+ #
+ # @return [Boolean]
def has_debit?
entries.any?(&:debit?)
end
- # Returns total amount of entry and addenda records within batch
+ # Returns total amount of entry and addenda records within batch.
+ #
+ # @return [Fixnum]
def entry_addenda_count
entries.size + addendas.values.flatten.size
end
# Returns 'hashed' representation of all entries within batch. See NACHA
- # documentation for more details on entry hash
+ # documentation for more details on entry hash.
+ #
+ # @return [Fixnum]
def entry_hash
entries.map{ |entry| entry.routing_number.to_i / 10 }.compact.inject(&:+)
end
- # Returns total amount of all 'debit' entries within a batch
+ # Returns total amount of all 'debit' entries within a batch.
+ #
+ # @return [Fixnum]
def total_debit_amount
amount_sum_for(:debit?)
end
- # Returns total amount of all 'credit' entries within a batch
+ # Returns total amount of all 'credit' entries within a batch.
+ #
+ # @return [Fixnum]
def total_credit_amount
amount_sum_for(:credit?)
end
- # Returns ACH record objects that represent the batch
+ # Returns ACH record objects that represent the batch.
+ #
+ # @return [Array<ACH::Record::Base>]
def to_ach
[header] + fetch_entries + [control]
end
- # Helper method executed just before building a header record for the batch
+ # Helper method executed just before building a header record for the batch.
def before_header
attributes[:service_class_code] ||= (has_debit? && has_credit? ? 200 : has_debit? ? 225 : 220)
end
private :before_header
# Helper method, returns total amount of all entries within a batch, filtered by +meth+
+ #
+ # @param [Symbol] meth
+ # @return [Fixnum]
def amount_sum_for(meth)
entries.select(&meth).map{ |entry| entry.amount.to_i }.compact.inject(&:+) || 0
end
private :amount_sum_for
# Fetches all internal records (entries and addendas) in right order, i.e. addenda records
# should be positioned right after corresponding entry records.
+ #
+ # @return [Array<ACH::Record::Base>]
def fetch_entries
entries.inject([]){ |all, entry| all << entry << addendas[entry] }.flatten.compact
end
private :fetch_entries
end
\ No newline at end of file