Sha256: cdc18e6501ffc0a0095289784138f4c8aadebc9b7ae0536bfe769ebaca9d45e6

Contents?: true

Size: 854 Bytes

Versions: 3

Compression:

Stored size: 854 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_id)

        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(:out_of_stock, :scope => :order_populator, :item => display_name.inspect)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
spree_core-2.1.1 app/models/spree/stock/availability_validator.rb
spree_core-2.0.5 app/models/spree/stock/availability_validator.rb
spree_core-2.1.0 app/models/spree/stock/availability_validator.rb