Money.to_currency
You're seeing just the function
to_currency
, go back to Money module for more information.
Link to this function
to_currency(money, to_currency, rates \\ Money.ExchangeRates.latest_rates())
View SourceSpecs
to_currency( t(), currency_code(), Money.ExchangeRates.t() | {:ok, Money.ExchangeRates.t()} | {:error, {module(), String.t()}} ) :: {:ok, t()} | {:error, {module(), String.t()}}
Convert money
from one currency to another.
Arguments
money
is anyMoney.t
struct returned byCldr.Currency.new/2
to_currency
is a valid currency code into which themoney
is convertedrates
is aMap
of currency rates where the map key is an upcased atom or string and the value is a Decimal conversion factor. The default is the latest available exchange rates returned fromMoney.ExchangeRates.latest_rates()
Converting to a currency defined in a locale
To convert a Money
to a currency defined by a locale,
Cldr.Currency.currency_from_locale/1
can be called with
a t:Cldr.LanguageTag.t()
parameter. It will return
the currency configured for that locale.
Examples
iex> Money.to_currency(Money.new(:USD, 100), :AUD,
...> %{USD: Decimal.new(1), AUD: Decimal.from_float(0.7345)})
{:ok, Money.new(:AUD, "73.4500")}
iex> Money.to_currency(Money.new("USD", 100), "AUD",
...> %{"USD" => Decimal.new(1), "AUD" => Decimal.from_float(0.7345)})
{:ok, Money.new(:AUD, "73.4500")}
iex> Money.to_currency(Money.new(:USD, 100), :AUDD,
...> %{USD: Decimal.new(1), AUD: Decimal.from_float(0.7345)})
{:error, {Cldr.UnknownCurrencyError, "The currency :AUDD is invalid"}}
iex> Money.to_currency(Money.new(:USD, 100), :CHF,
...> %{USD: Decimal.new(1), AUD: Decimal.from_float(0.7345)})
{:error, {Money.ExchangeRateError,
"No exchange rate is available for currency :CHF"}}