Bring availability validator from spree_core

This commit is contained in:
Luis Ramos
2020-07-01 17:04:00 +01:00
parent 720ad9de0e
commit d505fc2131

View File

@@ -0,0 +1,25 @@
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