class Reji::InvoiceLineItem
Attributes
Get the Stripe model instance.
Public Class Methods
# File lib/reji/invoice_line_item.rb, line 5 def initialize(invoice, item) @invoice = invoice @item = item end
Public Instance Methods
Get the underlying Stripe invoice line item.
# File lib/reji/invoice_line_item.rb, line 58 def as_stripe_invoice_line_item @item end
Determine if the line item has both inclusive and exclusive tax.
# File lib/reji/invoice_line_item.rb, line 16 def both_inclusive_and_exclusive_tax? inclusive_tax_percentage > 0 && exclusive_tax_percentage > 0 end
Get a human readable date for the end date.
# File lib/reji/invoice_line_item.rb, line 45 def end_date subscription? ? Time.zone.at(@item.period.end).strftime('%b %d, %Y') : nil end
Get the total percentage of the default exclusive tax for the invoice line item.
# File lib/reji/invoice_line_item.rb, line 28 def exclusive_tax_percentage return calculate_tax_percentage_by_tax_amount(false) if @invoice.not_tax_exempt? calculate_tax_percentage_by_tax_rate(false) end
Get the total percentage of the default inclusive tax for the invoice line item.
# File lib/reji/invoice_line_item.rb, line 21 def inclusive_tax_percentage return calculate_tax_percentage_by_tax_amount(true) if @invoice.not_tax_exempt? calculate_tax_percentage_by_tax_rate(true) end
Dynamically access the Stripe invoice line item instance.
# File lib/reji/invoice_line_item.rb, line 63 def method_missing(key) @item[key] end
# File lib/reji/invoice_line_item.rb, line 67 def respond_to_missing?(method_name, include_private = false) super end
Get a human readable date for the start date.
# File lib/reji/invoice_line_item.rb, line 40 def start_date subscription? ? Time.zone.at(@item.period.start).strftime('%b %d, %Y') : nil end
Determine if the invoice line item is for a subscription.
# File lib/reji/invoice_line_item.rb, line 50 def subscription? @item.type == 'subscription' end
Determine if the invoice line item has tax rates.
# File lib/reji/invoice_line_item.rb, line 35 def tax_rates? @invoice.not_tax_exempt? ? !@item.tax_amounts.empty? : !@item.tax_rates.empty? end
Get the total for the invoice line item.
# File lib/reji/invoice_line_item.rb, line 11 def total format_amount(@item.amount) end
Protected Instance Methods
Calculate the total tax percentage for either the inclusive or exclusive tax by tax amount.
# File lib/reji/invoice_line_item.rb, line 82 def calculate_tax_percentage_by_tax_amount(inclusive) return 0 if @item[:tax_amounts].blank? @item.tax_amounts .select { |tax_amount| tax_amount.inclusive == inclusive } .inject(0) { |sum, tax_amount| sum + tax_amount[:tax_rate][:percentage] } .to_i end
Calculate the total tax percentage for either the inclusive or exclusive tax by tax rate.
# File lib/reji/invoice_line_item.rb, line 72 def calculate_tax_percentage_by_tax_rate(inclusive) return 0 if @item[:tax_rates].empty? @item.tax_rates .select { |tax_rate| tax_rate[:inclusive] == inclusive } .inject(0) { |sum, tax_rate| sum + tax_rate[:percentage] } .to_i end
Format the given amount into a displayable currency.
# File lib/reji/invoice_line_item.rb, line 92 def format_amount(amount) Reji.format_amount(amount, @item.currency) end