module BankApi::SignDeposits

Public Instance Methods

sign(deposits) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 4
def sign(deposits)
  entries = get_entry_occurrencies(deposits)
  sign_entries(entries)
end

Private Instance Methods

entry_key(entry) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 39
def entry_key(entry)
  rut_or_client = entry.rut || entry.client.to_s.downcase.delete(' ')
  "#{entry.amount}|#{entry.date}|#{rut_or_client}|#{entry.bank}"
end
entry_signature(entry, occurrencies) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 34
def entry_signature(entry, occurrencies)
  key = entry_key(entry)
  "#{key}|#{occurrencies}"
end
get_entry_occurrencies(deposits) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 11
def get_entry_occurrencies(deposits)
  entry_occurrencies_keys = {}

  deposits.map do |entry|
    key = entry_key(entry)
    occurrency = entry_occurrencies_keys[key] || 0
    entry_occurrencies_keys[key] = occurrency + 1

    { deposit_entry: entry, occurrencies: entry_occurrencies_keys[key] }
  end
end
sign_entries(entries) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 23
def sign_entries(entries)
  entries.each { |entry_occurrency| sign_entry(entry_occurrency) }
end
sign_entry(entry_occurrency) click to toggle source
# File lib/bank_api/sign_deposits.rb, line 27
def sign_entry(entry_occurrency)
  entry = entry_occurrency[:deposit_entry]
  occurrencies = entry_occurrency[:occurrencies]

  entry.signature = entry_signature(entry, occurrencies)
end