mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Bring availability validator from spree_core
This commit is contained in:
25
app/models/spree/stock/availability_validator.rb
Normal file
25
app/models/spree/stock/availability_validator.rb
Normal 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
|
||||
Reference in New Issue
Block a user