Module: Spree::Admin::ProductsHelper

Defined in:
app/helpers/spree/admin/products_helper.rb

Instance Method Summary collapse

Instance Method Details

#available_status(product) ⇒ Object

will return a human readable string



53
54
55
56
57
58
59
60
# File 'app/helpers/spree/admin/products_helper.rb', line 53

def available_status(product)
  return Spree.t('admin.products.draft') if product.draft?
  return Spree.t('admin.products.active') if product.available?
  return Spree.t('admin.products.archived') if product.archived?
  return Spree.t('admin.products.paused') if product.respond_to?(:paused?) && product.paused?
  return Spree.t('admin.products.deleted') if product.deleted?
  return ''
end

#available_status_options(product) ⇒ Object



62
63
64
65
66
# File 'app/helpers/spree/admin/products_helper.rb', line 62

def available_status_options(product)
  options = ['draft', 'active', 'archived']
  options.delete('active') if cannot?(:activate, product)
  options.map { |status| [Spree.t(status), status] }
end

#display_admin_price(product_or_variant) ⇒ Object



4
5
6
7
8
9
10
# File 'app/helpers/spree/admin/products_helper.rb', line 4

def display_admin_price(product_or_variant)
  price_in_current_currency = product_or_variant.price_in(current_currency)

  if price_in_current_currency.amount
    price_in_current_currency.display_price_including_vat_for(current_price_options).to_html
  end
end

#display_inventory(product_or_variant) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'app/helpers/spree/admin/products_helper.rb', line 12

def display_inventory(product_or_variant)
  unless product_or_variant.track_inventory?
     :span, class: 'text-gray-600' do
      Spree.t('admin.not_tracking_inventory')
    end
  else
    stock = if product_or_variant.total_on_hand.positive?
              "#{product_or_variant.total_on_hand} #{Spree.t(:in_stock).downcase}"
            else
              (:span, "0 #{Spree.t(:in_stock).downcase}", class: 'text-danger')
            end
    if product_or_variant.respond_to?(:variants) && product_or_variant.variant_count.positive?
      stock += " - #{product_or_variant.variant_count} #{Spree.t(:variants).downcase}"
    end
    stock
  end
end

#map_categories(product) ⇒ Object



68
69
70
71
72
73
74
75
76
77
# File 'app/helpers/spree/admin/products_helper.rb', line 68

def map_categories(product)
  category_tree = ['n/a', 'n/a']

  category = product.main_taxon&.pretty_name.to_s
  return category_tree if category.blank?

  category.split('->').map(&:strip).map.with_index { |c, index| category_tree[index] = c }

  category_tree
end

#product_currencies(product) ⇒ Object



44
45
46
47
48
49
50
# File 'app/helpers/spree/admin/products_helper.rb', line 44

def product_currencies(product)
  product_currencies = product.prices_including_master.map(&:currency).compact.uniq.map do |currency|
    ::Money::Currency.find(currency)
  end

  (supported_currencies_list + product_currencies).compact.uniq
end

#product_status(product) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/helpers/spree/admin/products_helper.rb', line 30

def product_status(product)
  if product.deleted?
    (:span, 'Deleted', class: 'badge  badge-danger')
  else
    (:span, class: "badge  badge-#{product.status}") do
      if product.active?
        icon('check')
      else
        ''
      end + available_status(product)
    end.html_safe
  end
end

#show_product_status_help_bubble?Boolean

Returns:

  • (Boolean)


80
81
82
# File 'app/helpers/spree/admin/products_helper.rb', line 80

def show_product_status_help_bubble?
  false
end

#variant_form_stock_location_optionsObject



84
85
86
# File 'app/helpers/spree/admin/products_helper.rb', line 84

def variant_form_stock_location_options
  options_for_select(available_stock_locations_list)
end