Sha256: b07de8f84a492ed282f52641790144b4cf75283f0d70966e79dea660a8c3c639

Contents?: true

Size: 1.16 KB

Versions: 4

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

module SolidusProductAssembly
  module Spree
    module Stock
      # Overridden from spree core to make it also check for assembly parts stock
      module AvailabilityValidatorDecorator
        def validate(line_item)
          if line_item.product.assembly?
            line_item.quantity_by_variant.each do |variant, variant_quantity|
              inventory_units = line_item.inventory_units.where(variant: variant).count
              quantity = variant_quantity - inventory_units
              next if quantity <= 0
              next unless variant

              quantifier = ::Spree::Stock::Quantifier.new(variant)

              next if quantifier.can_supply? quantity

              display_name = variant.name.to_s
              display_name += %{ (#{variant.options_text})} if variant.options_text.present?

              line_item.errors[:quantity] << I18n.t(
                'spree.selected_quantity_not_available',
                item: display_name.inspect
              )
            end
          else
            super
          end
        end

        ::Spree::Stock::AvailabilityValidator.prepend self
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
solidus_product_assembly-1.4.0 app/decorators/models/solidus_product_assembly/spree/stock/availability_validator_decorator.rb
solidus_product_assembly-1.3.0 app/decorators/models/solidus_product_assembly/spree/stock/availability_validator_decorator.rb
solidus_product_assembly-1.2.0 app/decorators/models/solidus_product_assembly/spree/stock/availability_validator_decorator.rb
solidus_product_assembly-1.1.0 app/decorators/models/solidus_product_assembly/spree/stock/availability_validator_decorator.rb