Accrue.Billing.DiscountMappingActions (accrue v1.1.1)

Copy Markdown View Source

Local write/read/resolve helpers for Braintree discount mappings.

Summary

Types

resolve_error()

@type resolve_error() ::
  :not_found
  | :inactive
  | :expired
  | :max_redemptions_reached
  | Accrue.Error.DiscountMappingInvalid.t()
  | term()

Functions

get_discount_mapping(code, opts \\ [])

@spec get_discount_mapping(
  String.t(),
  keyword()
) :: {:ok, Accrue.Billing.DiscountMapping.t()} | {:error, :not_found}

record_discount_mapping_redemption(mapping_or_code, opts \\ [])

@spec record_discount_mapping_redemption(
  String.t() | Accrue.Billing.DiscountMapping.t(),
  keyword()
) ::
  {:ok, Accrue.Billing.DiscountMapping.t()}
  | {:error, :not_found | :max_redemptions_reached | term()}

release_discount_mapping_reservation(mapping_or_code, opts \\ [])

@spec release_discount_mapping_reservation(
  String.t() | Accrue.Billing.DiscountMapping.t(),
  keyword()
) :: {:ok, Accrue.Billing.DiscountMapping.t()} | {:error, :not_found | term()}

reserve_discount_mapping(code, checkout_amount_minor, opts \\ [])

@spec reserve_discount_mapping(String.t(), non_neg_integer(), keyword()) ::
  {:ok,
   %{
     mapping: Accrue.Billing.DiscountMapping.t(),
     amount_off_minor: non_neg_integer(),
     estimated_total_minor: non_neg_integer()
   }}
  | {:error, resolve_error()}

resolve_discount_mapping(code, checkout_amount_minor, opts \\ [])

@spec resolve_discount_mapping(String.t(), non_neg_integer(), keyword()) ::
  {:ok,
   %{
     mapping: Accrue.Billing.DiscountMapping.t(),
     amount_off_minor: non_neg_integer(),
     estimated_total_minor: non_neg_integer()
   }}
  | {:error, resolve_error()}

upsert_discount_mapping(code, attrs)

@spec upsert_discount_mapping(String.t(), map()) ::
  {:ok, Accrue.Billing.DiscountMapping.t()}
  | {:error, Ecto.Changeset.t() | term()}

upsert_discount_mapping!(code, attrs)

@spec upsert_discount_mapping!(String.t(), map()) ::
  Accrue.Billing.DiscountMapping.t()