Sha256: b95b904d0058a483d1c29ba1b75c0fa4ba558c1d950cf0509fc503e97b72a2b9
Contents?: true
Size: 1.08 KB
Versions: 28
Compression:
Stored size: 1.08 KB
Contents
module Spree module Stock class AvailabilityValidator < ActiveModel::Validator def validate(line_item) units_by_shipment = line_item.inventory_units.group_by(&:shipment) if units_by_shipment.blank? ensure_in_stock(line_item, line_item.quantity) else units_by_shipment.each do |shipment, inventory_units| ensure_in_stock(line_item, inventory_units.size, shipment.stock_location) end end line_item.errors[:quantity].empty? end private def ensure_in_stock(line_item, quantity, stock_location = nil) quantifier = Stock::Quantifier.new(line_item.variant, stock_location) 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, item: display_name.inspect ) end end end end end
Version data entries
28 entries across 28 versions & 1 rubygems