Module: Spree::CheckoutHelper

Included in:
CheckoutController
Defined in:
app/helpers/spree/checkout_helper.rb

Instance Method Summary collapse

Instance Method Details

#already_have_an_account?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'app/helpers/spree/checkout_helper.rb', line 41

def already_have_an_account?
  @already_have_an_account ||= @order.email.present? && Spree.user_class.exists?(email: @order.email.downcase)
end

#can_use_store_credit_on_checkout?(order) ⇒ Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/helpers/spree/checkout_helper.rb', line 55

def can_use_store_credit_on_checkout?(order)
  order.could_use_store_credit? && (!order.respond_to?(:gift_card) || !order.gift_card.present?)
end

#checkout_available_payment_methodsObject



33
34
35
# File 'app/helpers/spree/checkout_helper.rb', line 33

def checkout_available_payment_methods
  @checkout_available_payment_methods ||= @order.collect_frontend_payment_methods.reject(&:store_credit?)
end

#checkout_payment_sources(payment_method = nil) ⇒ Object



45
46
47
48
49
# File 'app/helpers/spree/checkout_helper.rb', line 45

def checkout_payment_sources(payment_method = nil)
  return [] unless try_spree_current_user.respond_to?(:payment_sources)

  payment_method.present? ? try_spree_current_user.payment_sources.where(payment_method: payment_method) : try_spree_current_user.payment_sources
end

#checkout_progress(numbers: false) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/helpers/spree/checkout_helper.rb', line 3

def checkout_progress(numbers: false)
  states = (@order.checkout_steps - ['complete']).unshift('cart')
  states -= ['delivery'] if !@order.requires_ship_address? || !@order.delivery_required?

  items = states.each_with_index.map do |state, i|
    text = Spree.t("order_state.#{state}").titleize
    text.prepend("#{i.succ}. ") if numbers

    css_classes = ['breadcrumb-item']

    # cart is not included in checkout_steps, so we need to handle it separately
    if @order.passed_checkout_step?(state) || state == 'cart'
      link_content = text
      link_url = if state == 'cart'
                   # using absolute URL if using headless storefronts
                   spree.cart_url(host: current_store.url_or_custom_domain, order_token: @order.token)
                 else
                   spree.checkout_state_path(@order.token, state)
                 end

      text = link_to(link_content, link_url)
      css_classes << 'text-primary'
      ('li', text, class: css_classes.join(' '))
    else
      ('li', text, class: "breadcrumb-item #{state == @order.state ? 'font-bold' : 'text-text'}")
    end
  end
  ('ol', raw(items.join("\n")), class: 'breadcrumb flex items-center py-6 gap-2', id: "checkout-step-#{@order.state}")
end

#checkout_started?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/helpers/spree/checkout_helper.rb', line 37

def checkout_started?
  (@order.state == 'address' && @order.state_was == 'cart') || (@order.state == 'cart' && correct_state == 'address')
end

#quick_checkout_enabled?(order) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
# File 'app/helpers/spree/checkout_helper.rb', line 51

def quick_checkout_enabled?(order)
  order.quick_checkout_available?
end