module Stall::Sellable

Public Instance Methods

currency() click to toggle source
# File lib/stall/sellable.rb, line 24
def currency
  Money.default_currency
end
to_line_item() click to toggle source
# File lib/stall/sellable.rb, line 11
def to_line_item
  line_items.build(
    name: (try(:name) || try(:title)),
    unit_price: try(:price),
    unit_eot_price: eot_price,
    vat_rate: vat_rate
  )
end
vat_ratio() click to toggle source
# File lib/stall/sellable.rb, line 20
def vat_ratio
  (vat_rate / 100.0) + 1
end

Private Instance Methods

default_eot_price() click to toggle source
# File lib/stall/sellable.rb, line 30
def default_eot_price
  if (price = try(:price))
    price / vat_ratio
  end
end
default_vat_rate() click to toggle source
# File lib/stall/sellable.rb, line 36
def default_vat_rate
  @default_vat_rate ||= Stall.config.vat_rate
end
method_missing(name, *args, &block) click to toggle source

Create default handlers for the `#eot_price` and `#vat_rate` methods that don't need to be explictly defined if the whole shop has a single VAT rate for all products

Calls superclass method
# File lib/stall/sellable.rb, line 44
def method_missing(name, *args, &block)
  if [:eot_price, :vat_rate].include?(name)
    send(:"default_#{ name }")
  else
    super
  end
end