Money v3.2.2 Money.Subscription.Plan View Source
Defines a standard subscription plan data structure.
Link to this section Summary
Functions
Defines the structure of a subscription plan
Returns {:ok, Money.Subscription.Plan.t}
or an {:error, reason}
tuple
Returns {:ok, Money.Subscription.Plan.t}
or raises an
exception
Link to this section Types
interval()
View Source
interval() :: :day | :week | :month | :year
interval() :: :day | :week | :month | :year
A plan interval type.
interval_count()
View Source
interval_count() :: non_neg_integer()
interval_count() :: non_neg_integer()
A integer interval count for a plan.
t()
View Source
t() :: %Money.Subscription.Plan{
interval: interval(),
interval_count: interval_count(),
price: Decimal.t() | nil
}
t() :: %Money.Subscription.Plan{ interval: interval(), interval_count: interval_count(), price: Decimal.t() | nil }
A Subscription Plan
Link to this section Functions
%Money.Subscription.Plan{} View Source (struct)
Defines the structure of a subscription plan.
new(price, interval, interval_count \\ 1)
View Source
new(Money.t(), interval(), interval_count()) ::
{:ok, t()} | {:error, {Exception.t(), String.t()}}
new(Money.t(), interval(), interval_count()) :: {:ok, t()} | {:error, {Exception.t(), String.t()}}
Returns {:ok, Money.Subscription.Plan.t}
or an {:error, reason}
tuple.
Arguments
:price
is anyMoney.t
:interval
is the period of the plan. The valid intervals are:day
,
:week,
:monthor ':year
.:interval_count
is an integer count of the number of:interval
s of the plan. The default is1
Returns
A Money.Subscription.Plan.t
Examples
iex> Money.Subscription.Plan.new Money.new(:USD, 100), :month, 1
{:ok,
%Money.Subscription.Plan{
interval: :month,
interval_count: 1,
price: Money.new(:USD, 100)
}}
iex> Money.Subscription.Plan.new Money.new(:USD, 100), :month
{:ok,
%Money.Subscription.Plan{
interval: :month,
interval_count: 1,
price: Money.new(:USD, 100)
}}
iex> Money.Subscription.Plan.new Money.new(:USD, 100), :day, 30
{:ok,
%Money.Subscription.Plan{
interval: :day,
interval_count: 30,
price: Money.new(:USD, 100)
}}
iex> Money.Subscription.Plan.new 23, :day, 30
{:error, {Money.Invalid, "Invalid subscription plan definition"}}
new!(price, interval, interval_count \\ 1)
View Source
new!(Money.t(), interval(), interval_count()) :: t() | no_return()
new!(Money.t(), interval(), interval_count()) :: t() | no_return()
Returns {:ok, Money.Subscription.Plan.t}
or raises an
exception.
Takes the same arguments as Money.Subscription.Plan.new/3
.
Example
iex> Money.Subscription.Plan.new! Money.new(:USD, 100), :day, 30
%Money.Subscription.Plan{
interval: :day,
interval_count: 30,
price: Money.new(:USD, 100)
}