Module: SolidusConfigurableKits::Spree::LineItemDecorator

Defined in:
app/decorators/models/solidus_configurable_kits/spree/line_item_decorator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.prepended(base) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/decorators/models/solidus_configurable_kits/spree/line_item_decorator.rb', line 6

def self.prepended(base)
  base.has_many :kit_items,
    class_name: "Spree::LineItem",
    foreign_key: :kit_id,
    dependent: :destroy,
    inverse_of: :kit
  base.belongs_to :kit,
    class_name: "Spree::LineItem",
    foreign_key: :kit_id,
    optional: true,
    inverse_of: :kit_items
  base.belongs_to :kit_requirement,
    class_name: "::SolidusConfigurableKits::Requirement",
    foreign_key: :requirement_id,
    optional: true
  base.before_validation :update_prices_after_variant_change
  base.before_validation :update_kit_item_quantities
  base.before_validation :create_kit_items
  base.money_methods :kit_total
  base.validate :all_required_kit_items_present
  base.attribute :kit_variant_ids, default: []
end

Instance Method Details

#kit?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'app/decorators/models/solidus_configurable_kits/spree/line_item_decorator.rb', line 37

def kit?
  variant&.product&.kit_requirements&.any? || false
end

#kit_item?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'app/decorators/models/solidus_configurable_kits/spree/line_item_decorator.rb', line 29

def kit_item?
  kit.present?
end

#kit_totalObject



33
34
35
# File 'app/decorators/models/solidus_configurable_kits/spree/line_item_decorator.rb', line 33

def kit_total
  amount + kit_items.sum(&:amount)
end