New scope Order.not_state to filter out cancelled orders from reports

This commit is contained in:
David Cook
2013-08-30 17:07:17 +10:00
parent bf3c5c6dd6
commit 25b25b7681
3 changed files with 12 additions and 11 deletions

View File

@@ -27,7 +27,7 @@ Spree::Admin::ReportsController.class_eval do
end
params[:q][:meta_sort] ||= "completed_at.desc"
@search = Spree::Order.complete.not_state('canceled').managed_by(spree_current_user).search(params[:q])
@search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q])
orders = @search.result
@report = OpenFoodWeb::OrderAndDistributorReport.new orders
@@ -56,7 +56,7 @@ Spree::Admin::ReportsController.class_eval do
end
params[:q][:meta_sort] ||= "completed_at.desc"
@search = Spree::Order.complete.not_state('canceled').managed_by(spree_current_user).search(params[:q])
@search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q])
orders = @search.result
@@ -88,7 +88,7 @@ Spree::Admin::ReportsController.class_eval do
end
params[:q][:meta_sort] ||= "completed_at.desc"
@search = Spree::Order.complete.not_state('canceled').managed_by(spree_current_user).search(params[:q])
@search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q])
orders = @search.result
@line_items = orders.map { |o| o.line_items.managed_by(spree_current_user) }.flatten
@@ -241,7 +241,7 @@ Spree::Admin::ReportsController.class_eval do
end
params[:q][:meta_sort] ||= "completed_at.desc"
@search = Spree::Order.complete.not_state('canceled').managed_by(spree_current_user).search(params[:q])
@search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q])
orders = @search.result
payments = orders.map { |o| o.payments.select { |payment| payment.completed? } }.flatten # Only select completed payments
@@ -346,7 +346,7 @@ Spree::Admin::ReportsController.class_eval do
end
params[:q][:meta_sort] ||= "completed_at.desc"
@search = Spree::Order.complete.not_state('canceled').managed_by(spree_current_user).search(params[:q])
@search = Spree::Order.complete.not_state(:canceled).managed_by(spree_current_user).search(params[:q])
orders = @search.result
@line_items = orders.map { |o| o.line_items.managed_by(spree_current_user) }.flatten

View File

@@ -34,6 +34,10 @@ Spree::Order.class_eval do
joins('LEFT OUTER JOIN spree_products ON (spree_products.id = spree_variants.product_id)')
}
scope :not_state, lambda { |state|
where("state != ?", state)
}
# -- Methods
def products_available_from_new_distribution

View File

@@ -216,13 +216,10 @@ describe Spree::Order do
describe "scopes" do
describe "not_state" do
it "finds only orders not in specified state" do
pending "write this test"
s0 = create(:supplier_enterprise)
s1 = create(:supplier_enterprise)
p0 = create(:product, :supplier => s0)
p1 = create(:product, :supplier => s1)
o = FactoryGirl.create(:completed_order_with_totals)
o.cancel!
Spree::Product.in_supplier_or_distributor(s1).should == [p1]
Spree::Order.not_state(:canceled).should_not include o
end
end