class Accounting::InvoiceDecorator < ApplicationDecorator
  def posted_date
    l(posted_on)
  end

  def due_on
    l(due_date)
  end

  def total(format=:with_precision)
    number_format(format, object.total)
  end

  def allocated(format=:with_precision)
    number_format(format, object.total - object.balance)
  end

  def balance(format=:with_precision)
    number_format(format, object.balance)
  end

  def paid
    return 0.00 unless (total_amount = object.total)

    h.number_with_precision(total_amount - object.balance, precision: 2)
  end

  def status
    return object.status if object.draft?

    if object.paid
      'paid'
    elsif Date.today <= object.due_date
      'unpaid'
    else
      'overdue'
    end
  end
end
