Sha256: 64b690ea8acbebee0009a861ca1a372564a6855dcf5d5984077f8167228bf15f

Contents?: true

Size: 870 Bytes

Versions: 14

Compression:

Stored size: 870 Bytes

Contents

module Spree
  module Stock
    class AvailabilityValidator < ActiveModel::Validator
      def validate(line_item)
        if shipment = line_item.target_shipment
          units = shipment.inventory_units_for(line_item.variant)
          return if units.count > line_item.quantity
          quantity = line_item.quantity - units.count
        else
          quantity = line_item.quantity
        end

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

        unless quantifier.can_supply? quantity
          variant = line_item.variant
          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, :scope => :order_populator, :item => display_name.inspect)
        end
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
spree_core-2.1.12 app/models/spree/stock/availability_validator.rb
spree_core-2.1.11 app/models/spree/stock/availability_validator.rb
spree_core-2.1.10 app/models/spree/stock/availability_validator.rb
spree_core-2.0.13 app/models/spree/stock/availability_validator.rb
spree_core-2.1.9 app/models/spree/stock/availability_validator.rb
spree_core-2.1.8 app/models/spree/stock/availability_validator.rb
spree_core-2.0.12 app/models/spree/stock/availability_validator.rb
spree_core-2.3.1 app/models/spree/stock/availability_validator.rb
spree_core-2.2.4 app/models/spree/stock/availability_validator.rb
spree_core-2.2.3 app/models/spree/stock/availability_validator.rb
spree_core-2.3.0 app/models/spree/stock/availability_validator.rb
spree_core-2.2.2 app/models/spree/stock/availability_validator.rb
spree_core-2.1.7 app/models/spree/stock/availability_validator.rb
spree_core-2.0.11 app/models/spree/stock/availability_validator.rb