module XeroGateway::LineItemCalculations
Public Instance Methods
add_line_item(params = {})
click to toggle source
# File lib/xero_gateway/line_item_calculations.rb, line 4 def add_line_item(params = {}) line_item = nil case params when Hash then line_item = LineItem.new(params) when LineItem then line_item = params else raise InvalidLineItemError end @line_items << line_item line_item end
sub_total()
click to toggle source
Calculate the sub_total
as the SUM(line_item.line_amount).
# File lib/xero_gateway/line_item_calculations.rb, line 22 def sub_total total_cache(:sub_total) || sum_line_items(line_items, :line_amount) end
total()
click to toggle source
Calculate the toal as sub_total
+ total_tax.
# File lib/xero_gateway/line_item_calculations.rb, line 32 def total total_cache(:total) || (sub_total + total_tax) end
total_tax()
click to toggle source
Calculate the total_tax
as the SUM(line_item.tax_amount).
# File lib/xero_gateway/line_item_calculations.rb, line 27 def total_tax total_cache(:total_tax) || sum_line_items(line_items, :tax_amount) end
Private Instance Methods
sum_line_items(lines, sum_type = :line_amount)
click to toggle source
# File lib/xero_gateway/line_item_calculations.rb, line 42 def sum_line_items(lines, sum_type = :line_amount) lines.inject(BigDecimal('0')) do |sum, line| sum + BigDecimal(line.send(sum_type).to_s) end end
total_cache(name)
click to toggle source
# File lib/xero_gateway/line_item_calculations.rb, line 38 def total_cache(name) instance_variable_defined?("@#{name}") && instance_variable_get("@#{name}") end