module Spree::Core::ControllerHelpers::Currency

Public Instance Methods

currency_param() click to toggle source
# File lib/spree/core/controller_helpers/currency.rb, line 46
def currency_param
  return if current_currency == current_store.default_currency

  current_currency
end
current_currency() click to toggle source
# File lib/spree/core/controller_helpers/currency.rb, line 15
def current_currency
  @current_currency ||= if defined?(session) && session.key?(:currency) && supported_currency?(session[:currency])
                          session[:currency]
                        elsif params[:currency].present? && supported_currency?(params[:currency])
                          params[:currency]
                        elsif current_store.present?
                          current_store.default_currency
                        else
                          Spree::Config[:currency]
                        end&.upcase
end
supported_currencies() click to toggle source
# File lib/spree/core/controller_helpers/currency.rb, line 27
def supported_currencies
  @supported_currencies ||= current_store&.supported_currencies_list
end
supported_currencies_for_all_stores() click to toggle source
# File lib/spree/core/controller_helpers/currency.rb, line 31
def supported_currencies_for_all_stores
  @supported_currencies_for_all_stores ||= begin
    (
      Spree::Store.pluck(:supported_currencies).map { |c| c&.split(',') }.flatten + Spree::Store.pluck(:default_currency)
    ).
      compact.uniq.map { |code| ::Money::Currency.find(code.strip) }
  end
end
supported_currency?(currency_iso_code) click to toggle source
# File lib/spree/core/controller_helpers/currency.rb, line 40
def supported_currency?(currency_iso_code)
  return false if supported_currencies.nil?

  supported_currencies.map(&:iso_code).include?(currency_iso_code.upcase)
end