Current section

Files

Jump to
chargebeex lib chargebeex subscription subscription.ex
Raw

lib/chargebeex/subscription/subscription.ex

defmodule Chargebeex.Subscription do
use TypedStruct
use Chargebeex.Resource, resource: "subscription", only: [:list, :retrieve, :update]
@typedoc """
"future" | "in_trial" | "active" | "non_renewing" | "paused" | "cancelled"
"""
@type status :: String.t()
@typedoc """
"site_default" | "plan_default" | "activate_subscription" | "cancel_subscription"
"""
@type trial_end_action :: String.t()
@typedoc """
"not_paid" | "no_card" | "fraud_review_failed" | "non_compliant_eu_customer" | "tax_calculation_failed" | "currency_incompatible_with_gateway" | "non_compliant_customer"
"""
@type cancel_reason :: String.t()
@typedoc """
"web" | "app_store" | "play_store"
"""
@type channel :: String.t()
@typedoc """
"day" | "week" | "month" | "year"
"""
@type period_unit :: String.t()
typedstruct do
field :id, String.t()
field :currency_code, String.t()
field :start_date, non_neg_integer()
field :trial_end, non_neg_integer()
field :billing_period, String.t()
field :billing_period_unit, period_unit()
field :object, String.t()
field :remaining_billing_cycles, non_neg_integer()
field :po_number, String.t()
field :plan_quantity_in_decimal, String.t()
field :plan_unit_price_in_decimal, String.t()
field :customer_id, String.t()
field :status, status()
field :trial_start, String.t()
field :trial_end_action, trial_end_action()
field :current_term_start, non_neg_integer()
field :current_term_end, non_neg_integer()
field :next_billing_at, non_neg_integer()
field :created_at, non_neg_integer()
field :started_at, non_neg_integer()
field :activated_at, non_neg_integer()
field :contract_term_billing_cycle_on_renewal, non_neg_integer()
field :override_relationship, boolean()
field :pause_date, non_neg_integer()
field :resume_date, non_neg_integer()
field :cancelled_at, non_neg_integer()
field :cancel_reason, cancel_reason()
field :created_from_ip, String.t()
field :resource_version, non_neg_integer()
field :updated_at, non_neg_integer()
field :has_scheduled_advance_invoices, boolean()
field :has_scheduled_changes, boolean()
field :payment_source_id, String.t()
field :plan_free_quantity_in_decimal, String.t()
field :plan_amount_in_decimal, String.t()
field :cancel_schedule_created_at, non_neg_integer()
field :channel, channel()
field :net_term_days, non_neg_integer()
field :due_invoices_count, integer()
field :due_since, non_neg_integer()
field :total_dues, non_neg_integer()
field :mrr, non_neg_integer()
field :exchange_rate, float()
field :base_currency_code, String.t()
field :invoice_notes, String.t()
field :deleted, boolean()
field :changes_scheduled_at, non_neg_integer()
field :cancel_reason_code, String.t()
field :free_period, integer()
field :free_period_unit, period_unit()
field :create_pending_invoices, boolean()
field :metadata, map(), default: %{}
field :custom_fields, map(), default: %{}
field :auto_close_invoices, boolean()
field :business_entity_id, String.t()
field :subscription_items, list()
field :item_tiers, list()
field :charged_items, list()
field :coupons, list()
field :shipping_address, map(), default: %{}
field :referral_info, map(), default: %{}
field :contract_term, map(), default: %{}
end
use ExConstructor, :build
def build(raw_data) do
raw_data
|> super()
|> Chargebeex.Resource.add_custom_fields(raw_data)
end
end