Module: CoreMerchant::Concerns::SubscriptionStateMachine
- Extended by:
- ActiveSupport::Concern
- Included in:
- Subscription
- Defined in:
- lib/core_merchant/concerns/subscription_state_machine.rb
Overview
Adds state machine logic to a subscription. This module defines the possible states and transitions for a subscription. Possible transitions:
-
‘pending` -> `active`, `trial`, `processing_renewal`
-
‘trial` -> `processing_renewal`, `active`, `canceled`, `pending_cancellation`, `expired`
-
‘active` -> `pending_cancellation`, `canceled`, `expired`, `processing_renewal`
-
‘past_due` -> `processing_renewal`
-
‘pending_cancellation` -> `canceled`, `expired`
-
‘processing_renewal` -> `processing_payment`, `active`, `expired`, `past_due`
-
‘processing_payment` -> `active`, `expired`, `canceled`, `past_due`
-
‘canceled` -> `pending`, `processing_renewal`
-
‘expired` -> `pending`, `processing_renewal`
Constant Summary collapse
- POSSIBLE_TRANSITIONS =
List of possible transitions in the form of { to_state: [from_states] }
{ pending: %i[canceled expired], trial: [:pending], active: %i[pending trial processing_renewal processing_payment], past_due: %i[active processing_renewal processing_payment], pending_cancellation: %i[active trial], processing_renewal: %i[pending trial active past_due canceled expired], processing_payment: [:processing_renewal], canceled: %i[trial active pending_cancellation processing_payment], expired: %i[trial active pending_cancellation processing_renewal processing_payment] }.freeze