Releases: kipcole9/money
Money version 2.8.0
Enhancements
- Separates the caching of etags from the caching of exchange rates. Previously the same cache behaviour (and therefore each implementation) was expected to support a key/value store but this is an unreasonable assumption. Etags are now cached in an
ets
table separate from the exchange rates cache. As a result, theget/1
andput/2
functions are removed from theMoney.ExchangeRates.Cache
behaviour. Thanks to @LostKobrakai. Closes #74.
Money version 2.7.3
Money version 2.7.2
Bug Fixes
- Converting from currency to a binary
to_currency
is a no-op as it already is for an atomto_currency
. Thanks to @LostKobrakai. Closes #76.
Money version 2.7.1
Money version 2.7.0
Enhancements
-
Added tests for
Gingotts.Protocol
-
Separates the Ecto migrations from the SQL contained therein so that non-Ecto users can leverage the DDL to create/drop the
money_with_currency
type and the creation/deletion of aggregate functions formoney_with_currency
. See the moduleMoney.DDL
.
Money version 2.6.1
Enhancements
- Moves the
Jason.Encoder
protocol implementation to the protocol implementation file. This prevents some circular compilation issues when using the:cldr
compiler.
Money version 2.6.0
Enhancements
-
Change the definition of the
money_with_currency
composite Postgres type fromnumeric(20,8)
tonumeric
. This provides for a much wider precision and scale. It also means that retrievingMoney.t
data from the database will be returned with the same scale as when it was stored. Closes #67. Thanks to @doughsay. -
Relaxes the requirements for ex_cldr and ex_cldr_numbers
Money version 2.5.0
Enhancements
-
Adds support for ISO4217 "X" currency codes. Currency codes that start with "X" followed by two alphabetic characters are considered valid currency codes. Some codes are defined, like "XAU" for "Gold". The undefined codes are available for application-specific usage. Note that from a
Cldr
perspective these codes are considered valid, but unknown. This means they can be used anywhere as a currency forMoney
. ButCldr.known_currency?/1
will returnfalse
for these codes since there is no definition for them inCLDR
. -
Adds basic support for Postgres aggregation functions using the
Money.Ecto.Composite.Type
type definition. This allows expression in Ecto such as:
iex> q = Ecto.Query.select Ledger, [l], type(sum(l.amount), l.amount)
#Ecto.Query<from l in Ledger, select: type(sum(l.amount), l.amount)>
iex> Repo.all q
[debug] QUERY OK source="ledgers" db=6.1ms
SELECT sum(l0."amount")::money_with_currency FROM "ledgers" AS l0 []
[#Money<:USD, 600.00000000>]
This release supports only the sum
aggregate function and only for Postgres. A migration generator is provided that when executed with mix ecto.migrate
will add the relevant functions to the Postgres database to support this functionality. See the README for more information.
Money version 2.4.0
Enhancements
-
Update ex_cldr dependency to version 1.5.0 which uses CLDR data version 33.
-
Update ex_cldr_numbers dependency to 1.4.0
-
Clarify the examples of
Money.to_string/2
to note that the default locale is "en-001". Thanks to @snewcomer. Closes #61.
Money version 2.3.0
Bug Fixes
- Fix the protocol implementation for
String.Chars
Enhancements
This version introduces a new module Money.Subscription
that supports applications that manage subscriptions. These appications often need to support upgrading and downgrading plans. This action involves the calculation of a credit amount from the current plan that is then applied to the new plan. See Money.Subscription
and Money.Subscription.change_plan/3
.
- Add
Money.Subscription.new/3
andMoney.Subscription.new!/3
to create a new subscription with its inital plan - Add
Money.Subscription.Plan.new/3
andMoney.Subscription.Plan.new!/3
to create a new plan - Add
Money.Subscription.change_plan/3
andMoney.Subscription.change_plan!/3
to change subscription plans and apply any credit for unused parts of the current period - Add
Money.Subscription.plan_days/3
to return the number of days in a plan interval - Add
Money.Subscription.days_remaining/4
to return the number of days remaining in the current interval for a plan - Add
Money.Subscription.next_interval_starts/3
to return the next interval start date for a subscription to a plan - Add
Money.zero/1
that returns aMoney.t
with a zero amount in the given currency