Module: SpreeCmCommissioner::VariantDecorator

Defined in:
app/models/spree_cm_commissioner/variant_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ 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
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 3

def self.prepended(base)
  base.include SpreeCmCommissioner::ProductDelegation
  base.include SpreeCmCommissioner::VariantOptionsConcern

  base.after_commit :update_vendor_price
  base.validate     :validate_option_types
  base.before_save -> { self.track_inventory = false }, if: :subscribable?

  base.belongs_to :vendor, class_name: 'Spree::Vendor'

  base.has_many :taxons, class_name: 'Spree::Taxon', through: :product
  base.has_many :visible_option_values, lambda {
                                          joins(:option_type).where(spree_option_types: { hidden: false })
                                        }, through: :option_value_variants, source: :option_value

  base.has_many :video_on_demands, class_name: 'SpreeCmCommissioner::VideoOnDemand', dependent: :destroy
  base.has_many :complete_line_items, -> { complete }, class_name: 'Spree::LineItem'

  base.has_many :variant_guest_card_class, class_name: 'SpreeCmCommissioner::VariantGuestCardClass'
  base.has_many :guest_card_classes, class_name: 'SpreeCmCommissioner::GuestCardClass', through: :variant_guest_card_class

  base.scope :subscribable, -> { active.joins(:product).where(product: { subscribable: true, status: :active }) }

  base.accepts_nested_attributes_for :option_values
end

Instance Method Details

#delivery_required?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 29

def delivery_required?
  delivery_option == 'delivery'
end

#discontinued?Boolean

override

Returns:

  • (Boolean)


38
39
40
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 38

def discontinued?
  super || product.discontinued?
end

#display_variantObject



59
60
61
62
63
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 59

def display_variant
  display_sku = sku.split('-').join(' ')
  display_price = Spree::Money.new(price.to_i, currency: currency).to_s
  "#{display_sku} - #{display_price}"
end

#eventObject



46
47
48
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 46

def event
  taxons.event.first
end

#in_stock?Boolean

override

Returns:

  • (Boolean)


70
71
72
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 70

def in_stock?
  available_quantity.positive?
end

#non_digital_ecommerce?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 33

def non_digital_ecommerce?
  !digital? && ecommerce?
end

#options_textObject

override



51
52
53
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 51

def options_text
  @options_text ||= Spree::Variants::VisableOptionsPresenter.new(self).to_sentence
end

#permanent_stock?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 42

def permanent_stock?
  accommodation?
end

#selected_option_value_idsObject



55
56
57
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 55

def selected_option_value_ids
  option_value_variants.pluck(:option_value_id)
end

#transit?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'app/models/spree_cm_commissioner/variant_decorator.rb', line 65

def transit?
  product.product_type == 'transit'
end