mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-03-20 04:59:16 +00:00
Skip methods that distributor can't use in Package
This ensures that Spree's shipping methods take into account the ones the order's distributor uses. This reimplements what `#available_to_order_with_distributor_check?` used to do and it doesn't work with Spree 2.0.4.
This commit is contained in:
@@ -42,12 +42,6 @@ Spree::ShippingMethod.class_eval do
|
||||
]
|
||||
end
|
||||
|
||||
def available_to_order_with_distributor_check?(order)
|
||||
available_to_order_without_distributor_check?(order) &&
|
||||
self.distributors.include?(order.distributor)
|
||||
end
|
||||
alias_method_chain :available_to_order?, :distributor_check
|
||||
|
||||
def within_zone?(order)
|
||||
if order.ship_address
|
||||
zone && zone.include?(order.ship_address)
|
||||
|
||||
33
app/models/stock/package.rb
Normal file
33
app/models/stock/package.rb
Normal file
@@ -0,0 +1,33 @@
|
||||
# Extends Spree's Package implementation to skip shipping methods that are not
|
||||
# valid for OFN.
|
||||
#
|
||||
# It requires the following configuration in config/initializers/spree.rb:
|
||||
#
|
||||
# Spree.config do |config|
|
||||
# ...
|
||||
# config.package_factory = Stock::Package
|
||||
# end
|
||||
#
|
||||
module Stock
|
||||
class Package < Spree::Stock::Package
|
||||
# Skips the methods that are not used by the order's distributor
|
||||
#
|
||||
# @return [Array<Spree::ShippingMethod>]
|
||||
def shipping_methods
|
||||
super.delete_if do |shipping_method|
|
||||
!ships_with?(order.distributor, shipping_method)
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Checks whether the given distributor provides the specified shipping method
|
||||
#
|
||||
# @param distributor [Spree::Enterprise]
|
||||
# @param shipping_method [Spree::ShippingMethod]
|
||||
# @return [Boolean]
|
||||
def ships_with?(distributor, shipping_method)
|
||||
distributor.shipping_methods.include?(shipping_method)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user