Module: Spree::Order::Checkout

Included in:
Spree::Order
Defined in:
app/models/spree/order/checkout.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



4
5
6
# File 'app/models/spree/order/checkout.rb', line 4

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

Instance Method Details

#can_go_to_state?(state) ⇒ Boolean

Returns:

  • (Boolean)


235
236
237
238
# File 'app/models/spree/order/checkout.rb', line 235

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



231
232
233
# File 'app/models/spree/order/checkout.rb', line 231

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

#checkout_stepsObject



213
214
215
216
217
218
219
220
221
# File 'app/models/spree/order/checkout.rb', line 213

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)


223
224
225
# File 'app/models/spree/order/checkout.rb', line 223

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

#passed_checkout_step?(step) ⇒ Boolean

Returns:

  • (Boolean)


227
228
229
# File 'app/models/spree/order/checkout.rb', line 227

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