Class: Spree::Checkout::DefaultRequirements

Inherits:
Object
  • Object
show all
Defined in:
app/models/spree/checkout/default_requirements.rb

Overview

Built-in checkout requirements that map to the standard Spree checkout flow.

Checks line items, email, shipping address, shipping method, and payment. In Spree 6 these same checks will read from the Cart model instead of the state machine — the API contract stays identical.

See Also:

Instance Method Summary collapse

Constructor Details

#initialize(order) ⇒ DefaultRequirements

Returns a new instance of DefaultRequirements.

Parameters:



12
13
14
# File 'app/models/spree/checkout/default_requirements.rb', line 12

def initialize(order)
  @order = order
end

Instance Method Details

#callArray<Hash{Symbol => String}>

Returns unmet default requirements as { step:, field:, message: } hashes.

Returns:

  • (Array<Hash{Symbol => String}>)

    unmet default requirements as { step:, field:, message: } hashes



18
19
20
21
22
23
24
25
26
# File 'app/models/spree/checkout/default_requirements.rb', line 18

def call
  [].tap do |r|
    r << req('cart', 'line_items', Spree.t('checkout_requirements.line_items_required')) unless @order.line_items.any?
    r << req('address', 'email', Spree.t('checkout_requirements.email_required')) unless @order.email.present?
    r << req('address', 'ship_address', Spree.t('checkout_requirements.ship_address_required')) if @order.requires_ship_address? && @order.ship_address.blank?
    r << req('delivery', 'shipping_method', Spree.t('checkout_requirements.shipping_method_required')) if delivery_required? && !shipping_method_selected?
    r << req('payment', 'payment', Spree.t('checkout_requirements.payment_required')) if payment_required? && !payment_satisfied?
  end
end