Sha256: 61f615b011c60cd500d97768609b204792d1eb3ab561d524483718b34dac95bd

Contents?: true

Size: 1.23 KB

Versions: 2

Compression:

Stored size: 1.23 KB

Contents

# frozen_string_literal: true

module SolidusConfigurableKits
  module Spree
    module ProductDecorator
      def self.prepended(base)
        base.has_many :kit_requirements,
          class_name: "SolidusConfigurableKits::Requirement",
          foreign_key: :product_id
        base.has_many :kits, through: :kit_requirements, source: :product
        base.has_many :required_kit_products, through: :kit_requirements, source: :required_product
        base.delegate :resilient_money_price, to: :master

        base.scope :with_kit_item_prices, -> {
          joins(variants_including_master: :prices).where(spree_prices: { kit_item: true }).distinct
        }
      end

      # @param pricing_options [Spree::Variant::PricingOptions] the pricing options to search
      #   for, default: the default pricing options
      # @return [Array<Spree::Variant>] all variants that can be part of a kit
      def kit_item_variants_for(pricing_options = Spree::Config.default_pricing_options)
        variants_including_master.includes(:option_values).with_prices(pricing_options).select do |variant|
          variant.option_values.any? || (variant.is_master? && variants.none? )
        end
      end

      ::Spree::Product.prepend self
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
solidus_configurable_kits-0.1.1 app/decorators/models/solidus_configurable_kits/spree/product_decorator.rb
solidus_configurable_kits-0.1.0 app/decorators/models/solidus_configurable_kits/spree/product_decorator.rb