From 25b25b768106fc86bbc3cbec6609f066af47c58d Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 30 Aug 2013 17:07:17 +1000 Subject: [PATCH] New scope Order.not_state to filter out cancelled orders from reports --- .../spree/admin/reports_controller_decorator.rb | 10 +++++----- app/models/spree/order_decorator.rb | 4 ++++ spec/models/order_spec.rb | 9 +++------ 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/controllers/spree/admin/reports_controller_decorator.rb b/app/controllers/spree/admin/reports_controller_decorator.rb index b542204dfd..569e33b750 100644 --- a/app/controllers/spree/admin/reports_controller_decorator.rb +++ b/app/controllers/spree/admin/reports_controller_decorator.rb @@ -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 diff --git a/app/models/spree/order_decorator.rb b/app/models/spree/order_decorator.rb index 9b44553419..8c265a4606 100644 --- a/app/models/spree/order_decorator.rb +++ b/app/models/spree/order_decorator.rb @@ -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 diff --git a/spec/models/order_spec.rb b/spec/models/order_spec.rb index aeb0e59449..6d69a9a840 100644 --- a/spec/models/order_spec.rb +++ b/spec/models/order_spec.rb @@ -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