This commit is contained in:
David Cook
2013-08-30 16:28:02 +10:00
parent 6a303d7db9
commit b0abe566eb
2 changed files with 11 additions and 8 deletions

View File

@@ -6,9 +6,8 @@ Spree::LineItem.class_eval do
if user.has_spree_role?('admin')
scoped
else
# User has a distributor on the Order or supplier that supplies a LineItem
joins('LEFT OUTER JOIN spree_variants ON (spree_variants.id = spree_line_items.variant_id)').
joins('LEFT OUTER JOIN spree_products ON (spree_products.id = spree_variants.product_id)').
# Find line items that are from orders distributed by the user or supplied by the user
joins(:variant => :product).
joins(:order).
where('spree_orders.distributor_id IN (?) OR spree_products.supplier_id IN (?)', user.enterprises, user.enterprises).
select('spree_line_items.*')

View File

@@ -20,16 +20,20 @@ Spree::Order.class_eval do
if user.has_spree_role?('admin')
scoped
else
# User has a distributor on an Order or supplier that supplies a Product to an Order
# NOTE: supplier Orders should use LineItem.managed_by to ensure they only see their own LineItems!
joins('LEFT OUTER JOIN spree_line_items ON (spree_line_items.order_id = spree_orders.id)').
joins('LEFT OUTER JOIN spree_variants ON (spree_variants.id = spree_line_items.variant_id)').
joins('LEFT OUTER JOIN spree_products ON (spree_products.id = spree_variants.product_id)').
# Find orders that are distributed by the user or have products supplied by the user
# WARNING: This only filters orders, you'll need to filter line items separately using LineItem.managed_by
with_line_items_variants_and_products_outer.
where('spree_orders.distributor_id IN (?) OR spree_products.supplier_id IN (?)', user.enterprises, user.enterprises).
select('DISTINCT spree_orders.*')
end
}
scope :with_line_items_variants_and_products_outer, lambda {
joins('LEFT OUTER JOIN spree_line_items ON (spree_line_items.order_id = spree_orders.id)').
joins('LEFT OUTER JOIN spree_variants ON (spree_variants.id = spree_line_items.variant_id)').
joins('LEFT OUTER JOIN spree_products ON (spree_products.id = spree_variants.product_id)')
}
# -- Methods
def products_available_from_new_distribution