class Seisan::ExpenseRenderer

Public Instance Methods

render() click to toggle source
# File lib/seisan/expense_renderer.rb, line 6
def render
  row ['立替払サマリー']
  row summary_headings
  summary.each do |person, amount|
    row [person, amount]
  end
  row

  row ['立替払明細']
  row headings
  lines.each do |line|
    row line
  end
  row

  Seisan.logger.info 'Processed %d expenses' % lines.size
end

Private Instance Methods

headings() click to toggle source
# File lib/seisan/expense_renderer.rb, line 37
def headings
  %w(日付 立替者 金額 摘要 備考)
end
lines() click to toggle source
# File lib/seisan/expense_renderer.rb, line 41
def lines
  lines = []
  requests.each do |entry|
    entry['expense'].each do |expense|
      lines << [expense['date'].to_s, entry['applicant'], expense['amount'], expense['remarks'], expense['notes']]
    end
  end
  lines.sort_by {|line| [Date.parse(line[0]), line[1]] }
end
summary() click to toggle source
# File lib/seisan/expense_renderer.rb, line 29
def summary
  summary = Hash.new(0)
  requests.each do |entry|
    summary[entry['applicant']] += entry['expense'].inject(0){|r, e| r += e['amount'].to_i }
  end
  summary
end
summary_headings() click to toggle source
# File lib/seisan/expense_renderer.rb, line 25
def summary_headings
  %w(氏名 金額)
end