diff --git a/app/services/permissions/order.rb b/app/services/permissions/order.rb index 29d63b5a2f..c9e043a8bd 100644 --- a/app/services/permissions/order.rb +++ b/app/services/permissions/order.rb @@ -21,18 +21,20 @@ module Permissions filtered_orders(orders) end + def managed_or_coordinated_orders_where_clause + Spree::Order.where( + managed_orders_where_values.or(coordinated_orders_where_values) + ) + end + # Any orders that the user can edit def editable_orders - orders = if @user.can_manage_line_items_in_orders_only? - Spree::Order.joins(:distributor).where( - id: produced_orders.select(:id), - distributor: { enable_producers_to_edit_orders: true } - ) - else - Spree::Order.where( - managed_orders_where_values.or(coordinated_orders_where_values) - ) - end + orders = Spree::Order.joins(:distributor).where( + id: produced_orders.select(:id), + distributor: { enable_producers_to_edit_orders: true } + ).or( + managed_or_coordinated_orders_where_clause + ) filtered_orders(orders) end @@ -43,13 +45,13 @@ module Permissions # Any line items that I can edit def editable_line_items - if @user.can_manage_line_items_in_orders_only? - Spree::LineItem.editable_by_producers( - @permissions.managed_enterprises.select("enterprises.id") + Spree::LineItem.editable_by_producers( + @permissions.managed_enterprises.select("enterprises.id") + ).or( + Spree::LineItem.where( + order_id: filtered_orders(managed_or_coordinated_orders_where_clause).select(:id) ) - else - Spree::LineItem.where(order_id: editable_orders.select(:id)) - end + ) end private