mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-26 01:33:22 +00:00
Enhance order cycle closure handling with improved messaging and redirection logic
This commit is contained in:
@@ -24,23 +24,41 @@ module OrderStockCheck
|
||||
return unless current_order_cycle&.closed?
|
||||
|
||||
Alert.raise_with_record("Notice: order cycle closed during checkout completion", current_order)
|
||||
if should_empty_order
|
||||
current_order.empty!
|
||||
current_order.assign_order_cycle! nil
|
||||
end
|
||||
|
||||
flash[:info] = I18n.t('order_cycle_closed')
|
||||
respond_to do |format|
|
||||
format.cable_ready {
|
||||
render status: :see_other, cable_ready: cable_car.redirect_to(url: main_app.shop_path)
|
||||
}
|
||||
format.json { render json: { path: main_app.shop_path }, status: :see_other }
|
||||
format.html { redirect_to main_app.shop_path, status: :see_other }
|
||||
end
|
||||
handle_closed_order_cycle(should_empty_order)
|
||||
|
||||
flash[:info] = build_order_cycle_message(should_empty_order)
|
||||
redirect_to_shop_page(should_empty_order)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def handle_closed_order_cycle(should_empty_order)
|
||||
return unless should_empty_order
|
||||
|
||||
current_order.empty!
|
||||
current_order.assign_order_cycle!(nil)
|
||||
end
|
||||
|
||||
def build_order_cycle_message(should_empty_order)
|
||||
# If order is not emptied, we assume user will contact support for next steps
|
||||
key = should_empty_order ? 'order_cycle_closed' : 'order_cycle_closed_next_steps'
|
||||
I18n.t(key, order_number: current_order.number)
|
||||
end
|
||||
|
||||
def redirect_to_shop_page(should_empty_order)
|
||||
# If order is not emptied, redirect to shops page because shop page empties the order by default
|
||||
redirect_url = should_empty_order ? main_app.shop_path : main_app.shops_path
|
||||
|
||||
respond_to do |format|
|
||||
format.cable_ready {
|
||||
render status: :see_other, cable_ready: cable_car.redirect_to(url: redirect_url)
|
||||
}
|
||||
format.json { render json: { path: redirect_url }, status: :see_other }
|
||||
format.html { redirect_to redirect_url, status: :see_other }
|
||||
end
|
||||
end
|
||||
|
||||
def check_stock_service
|
||||
@check_stock_service ||= Orders::CheckStockService.new(order: @order)
|
||||
end
|
||||
|
||||
@@ -3500,6 +3500,7 @@ en:
|
||||
order_cycles_no_permission_to_coordinate_error: "None of your enterprises have permission to coordinate an order cycle"
|
||||
order_cycles_no_permission_to_create_error: "You don't have permission to create an order cycle coordinated by that enterprise"
|
||||
order_cycle_closed: "The order cycle you've selected has just closed. Please try again!"
|
||||
order_cycle_closed_next_steps: "The order cycle you've selected has just closed. Please contact us to complete your order #%{order_number}!"
|
||||
back_to_orders_list: "Back To Orders List"
|
||||
no_orders_found: "No Orders Found"
|
||||
order_information: "Order Information"
|
||||
|
||||
Reference in New Issue
Block a user