class Dolar::Bna::Convert

Public Class Methods

new(value=0, conversion="ars_to_usd", dolar_type="Divisa", date=Date.today, aliquot=0) click to toggle source
# File lib/dolar/bna/convert.rb, line 4
def initialize(value=0, conversion="ars_to_usd", dolar_type="Divisa", date=Date.today, aliquot=0)
  @value ||= value
  @conversion ||= conversion
  @dolar_type ||= dolar_type
  @date ||= date
  @aliquot ||= aliquot
end

Public Instance Methods

perform() click to toggle source
# File lib/dolar/bna/convert.rb, line 12
def perform
  #dolar_query =  Dolar::Bna::DolarCotization.where(date: Date.today, dolar_type: @dolar_type).first
  dolar_buy, dolar_sell = set_dolar(@date)
  if @conversion == "ars_to_usd"
    ars_to_dolar(dolar_sell)
  else
    dolar_to_ars(dolar_buy)
  end
end

Private Instance Methods

ars_to_dolar(dolar_sell) click to toggle source
# File lib/dolar/bna/convert.rb, line 57
def ars_to_dolar dolar_sell
  tax_pais = 1 + @aliquot
  valor = if !dolar_sell.nil?
    @value.to_f / (dolar_sell.to_f * tax_pais)
  else
    0
  end
  return valor.round(2)
end
dolar_to_ars(dolar_buy) click to toggle source
# File lib/dolar/bna/convert.rb, line 67
def dolar_to_ars dolar_buy
  valor = if !dolar_buy.nil?
    @value.to_f * dolar_buy.to_f
  else
    0
  end
  return valor.round(2)
end
set_dolar(date) click to toggle source
# File lib/dolar/bna/convert.rb, line 24
def set_dolar date
  dolar_buy = 0
  dolar_sell = 0
  intents = 0
  date = date.to_date
  while intents < 5
    dolar_query =  Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
    if dolar_query.blank?
      intents += 1
      if @dolar_type.downcase == "divisa"
        Dolar::Bna::Exchange.new(date).perform_bna_divisa
        dolar_query =  Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
        dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
        dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
      elsif @dolar_type.downcase == "billete"
        Dolar::Bna::Exchange.new(date).perform_bna_billete
        dolar_query =  Dolar::Bna::DolarCotization.where(date: date, dolar_type: @dolar_type).first
        dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
        dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
      else
        dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
        dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
        break
      end
    else
      dolar_buy = dolar_query.dolar_buy unless dolar_query.blank?
      dolar_sell = dolar_query.dolar_sell unless dolar_query.blank?
      break
    end
  end
  return dolar_buy, dolar_sell
end