Module: Spree::CheckoutHelper
- Included in:
- CheckoutController
- Defined in:
- app/helpers/spree/checkout_helper.rb
Instance Method Summary collapse
- #already_have_an_account? ⇒ Boolean
- #can_use_store_credit_on_checkout?(order) ⇒ Boolean
- #checkout_available_payment_methods ⇒ Object
- #checkout_payment_sources(payment_method = nil) ⇒ Object
- #checkout_progress(numbers: false) ⇒ Object
- #checkout_started? ⇒ Boolean
- #quick_checkout_enabled?(order) ⇒ Boolean
Instance Method Details
#already_have_an_account? ⇒ 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
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_methods ⇒ Object
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' content_tag('li', text, class: css_classes.join(' ')) else content_tag('li', text, class: "breadcrumb-item #{state == @order.state ? 'font-bold' : 'text-text'}") end end content_tag('ol', raw(items.join("\n")), class: 'breadcrumb flex items-center py-6 gap-2', id: "checkout-step-#{@order.state}") end |
#checkout_started? ⇒ 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
51 52 53 |
# File 'app/helpers/spree/checkout_helper.rb', line 51 def quick_checkout_enabled?(order) order.quick_checkout_available? end |