Sha256: cea083a5e0457e40ce5f12f095cabe8cc5b48e02325219a031bdb43ec54be19c

Contents?: true

Size: 919 Bytes

Versions: 2

Compression:

Stored size: 919 Bytes

Contents

module Spree
  OrderContents.class_eval do
    def add_to_line_item_with_parts(variant, quantity, options = {})
      add_to_line_item_without_parts(variant, quantity, options).
        tap do |line_item|
        populate_part_line_items(
          line_item,
          variant.product.assemblies_parts,
          options["selected_variants"]
        )
      end
    end
    alias_method_chain :add_to_line_item, :parts

    private

    def populate_part_line_items(line_item, parts, selected_variants)
      parts.each do |part|
        line_item.part_line_items.create!(
          line_item: line_item,
          variant_id: variant_id_for(part, selected_variants),
          quantity: part.count
        )
      end
    end

    def variant_id_for(part, selected_variants)
      if part.variant_selection_deferred?
        selected_variants[part.id.to_s]
      else
        part.part.id
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
solidus_product_bundle-1.0.1 app/models/spree/order_contents_decorator.rb
solidus_product_bundle-1.0.0 app/models/spree/order_contents_decorator.rb