Sha256: 50b75bc4f6ef13f2a1c773b0cd5f1c7fb40391f6087f603a6f2d4ad8a5e1c24e

Contents?: true

Size: 898 Bytes

Versions: 2

Compression:

Stored size: 898 Bytes

Contents

module Spree
  module Stock
    # Overridden from spree core to make it also check for assembly parts stock
    class AvailabilityValidator < ActiveModel::Validator
      def validate(line_item)
        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

          quantifier = Stock::Quantifier.new(variant)

          unless quantifier.can_supply? quantity
            display_name = %Q{#{variant.name}}
            display_name += %Q{ (#{variant.options_text})} unless variant.options_text.blank?

            line_item.errors[:quantity] << Spree.t(
              :selected_quantity_not_available,
              item: display_name.inspect
            )
          end
        end
      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/stock/availability_validator.rb
solidus_product_bundle-1.0.0 app/models/spree/stock/availability_validator.rb