Module: Spree::Core::StateMachines::Order

Defined in:
lib/spree/core/state_machines/order.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



7
8
9
# File 'lib/spree/core/state_machines/order.rb', line 7

def self.included(klass)
  klass.extend ClassMethods
end

Instance Method Details

#can_go_to_state?(state) ⇒ Boolean

Returns:

  • (Boolean)


245
246
247
248
249
# File 'lib/spree/core/state_machines/order.rb', line 245

def can_go_to_state?(state)
  return false unless has_checkout_step?(self.state) && has_checkout_step?(state)

  checkout_step_index(state) > checkout_step_index(self.state)
end

#checkout_step_index(step) ⇒ Object



241
242
243
# File 'lib/spree/core/state_machines/order.rb', line 241

def checkout_step_index(step)
  checkout_steps.index(step).to_i
end

#checkout_stepsObject



222
223
224
225
226
227
228
229
230
231
# File 'lib/spree/core/state_machines/order.rb', line 222

def checkout_steps
  steps = self.class.checkout_steps.each_with_object([]) { |(step, options), checkout_steps|
    next if options.include?(:if) && !options[:if].call(self)

    checkout_steps << step
  }.map(&:to_s)
  # Ensure there is always a complete step
  steps << "complete" unless steps.include?("complete")
  steps
end

#has_checkout_step?(step) ⇒ Boolean

Returns:

  • (Boolean)


233
234
235
# File 'lib/spree/core/state_machines/order.rb', line 233

def has_checkout_step?(step)
  step.present? && checkout_steps.include?(step)
end

#passed_checkout_step?(step) ⇒ Boolean

Returns:

  • (Boolean)


237
238
239
# File 'lib/spree/core/state_machines/order.rb', line 237

def passed_checkout_step?(step)
  has_checkout_step?(step) && checkout_step_index(step) < checkout_step_index(state)
end