class Xeroizer::Record::LineItem

Constants

TAX_TYPE

Public Class Methods

new(parent) click to toggle source
Calls superclass method
# File lib/xeroizer/models/line_item.rb, line 27
def initialize(parent)
  super(parent)
  @line_amount_set = false
end

Public Instance Methods

line_amount(summary_only = false) click to toggle source

Calculate the line_total (if there is a quantity and unit_amount). Description-only lines have been allowed since Xero V2.09.

# File lib/xeroizer/models/line_item.rb, line 39
def line_amount(summary_only = false)
  return attributes[:line_amount] if summary_only || @line_amount_set

  if quantity && unit_amount
    total = coerce_numeric(quantity) * coerce_numeric(unit_amount)
    if discount_rate.nonzero?
      BigDecimal((total * ((100 - discount_rate) / 100)).to_s).round(2)
    elsif discount_amount
      BigDecimal((total - discount_amount).to_s).round(2)
    else
      BigDecimal(total.to_s).round(2)
    end
  end
end
line_amount=(line_amount) click to toggle source
# File lib/xeroizer/models/line_item.rb, line 32
def line_amount=(line_amount)
  @line_amount_set = true
  attributes[:line_amount] = line_amount
end

Private Instance Methods

coerce_numeric(number) click to toggle source
# File lib/xeroizer/models/line_item.rb, line 56
def coerce_numeric(number)
  return number if number.is_a? Numeric
  BigDecimal(number)
end