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
|