Revert "Fix: Customers can checkout with non-matching shipping and product categories"

This commit is contained in:
David Cook
2023-03-17 10:40:53 +11:00
committed by GitHub
parent 9ea6fa5c44
commit ef607da2c1
3 changed files with 6 additions and 22 deletions

View File

@@ -15,9 +15,7 @@ module CheckoutCallbacks
prepend_before_action :require_distributor_chosen
before_action :load_order, :associate_user, :load_saved_addresses, :load_saved_credit_cards
before_action :allowed_shipping_methods, if: -> {
params[:step] == "details"
}
before_action :load_shipping_methods, if: -> { params[:step] == "details" }
before_action :ensure_order_not_completed
before_action :ensure_checkout_allowed
@@ -48,22 +46,8 @@ module CheckoutCallbacks
@selected_card = nil
end
def allowed_shipping_methods
@allowed_shipping_methods ||= sorted_available_shipping_methods.filter(
&method(:supports_all_products_shipping_categories?)
)
end
def sorted_available_shipping_methods
available_shipping_methods.sort { |a, b| a.name.casecmp(b.name) }
end
def supports_all_products_shipping_categories?(shipping_method)
(products_shipping_categories - shipping_method.shipping_categories.pluck(:id)).empty?
end
def products_shipping_categories
@products_shipping_categories ||= @order.products.pluck(:shipping_category_id).uniq
def load_shipping_methods
@shipping_methods = available_shipping_methods.sort { |a, b| a.name.casecmp(b.name) }
end
def redirect_to_shop?

View File

@@ -24,7 +24,7 @@ class SplitCheckoutController < ::BaseController
check_step if params[:step]
recalculate_tax if params[:step] == "summary"
flash_error_when_no_shipping_method_available if allowed_shipping_methods.none?
flash_error_when_no_shipping_method_available if available_shipping_methods.none?
end
def update

View File

@@ -76,8 +76,8 @@
- display_ship_address = false
- ship_method_description = nil
- selected_shipping_method ||= @allowed_shipping_methods[0].id if @allowed_shipping_methods.length == 1
- @allowed_shipping_methods.each do |shipping_method|
- selected_shipping_method ||= @shipping_methods[0].id if @shipping_methods.length == 1
- @shipping_methods.each do |shipping_method|
- ship_method_is_selected = shipping_method.id == selected_shipping_method.to_i
%div.checkout-input.checkout-input-radio
= fields_for shipping_method do |shipping_method_form|