Class: Spree::CurrencyRate

Inherits:
Base
  • Object
show all
Defined in:
app/models/spree/currency_rate.rb

Class Method Summary collapse

Class Method Details

.create_defaultObject



7
8
9
# File 'app/models/spree/currency_rate.rb', line 7

def self.create_default
  create(base_currency: Spree::Config[:currency], currency: Spree::Config[:currency], default: true)
end

.defaultObject



11
12
13
14
15
16
17
# File 'app/models/spree/currency_rate.rb', line 11

def self.default
  if default = where(default: true).first
    default
  else
    create_default
  end
end

.update_from_open_exchangeObject



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'app/models/spree/currency_rate.rb', line 19

def self.update_from_open_exchange
  oxr = Money::Bank::OpenExchangeRatesBank.new
  oxr.app_id = Rails.application.config.openExchangeRate[:appId]
  oxr.update_rates
  oxr.cache = 'tmp/cache.json'
  oxr.ttl_in_seconds = 86400
  oxr.source = Spree::CurrencyRate.default.currency
  Money.default_bank = oxr

  Spree::Config[:supported_currencies].split(',').each do |currencyCode|
    logger.debug "Fetching currency #{currencyCode} from OpenExchange"
    currency = Money::Currency.new(currencyCode)
    rate = Money.default_bank.get_rate(Spree::CurrencyRate.default.currency, currency)
    currencyRate = Spree::CurrencyRate.find_or_create_by(
      base_currency: Spree::CurrencyRate.default.currency,
      currency: currency.iso_code,
      default: (Spree::Config[:currency] == currency.iso_code)
    )
    currencyRate.update_attribute(:exchange_rate, rate) if currencyRate
    logger.debug "Currency #{currencyCode} rate updated: #{rate}"
  end
end