Compile Orders & Fulfillment report only on search

This commit is contained in:
Maikel Linke
2018-05-03 16:23:15 +10:00
parent feb33c3ca5
commit 53436024e2
4 changed files with 13 additions and 11 deletions

View File

@@ -198,7 +198,7 @@ Spree::Admin::ReportsController.class_eval do
@include_blank = I18n.t(:all)
# -- Build Report with Order Grouper
@report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new spree_current_user, params
@report = OpenFoodNetwork::OrdersAndFulfillmentsReport.new spree_current_user, params, render_content?
order_grouper = OpenFoodNetwork::OrderGrouper.new @report.rules, @report.columns
@table = order_grouper.table(@report.table_items)
csv_file_name = "#{params[:report_type]}_#{timestamp}.csv"

View File

@@ -3,9 +3,10 @@ include Spree::ReportsHelper
module OpenFoodNetwork
class OrdersAndFulfillmentsReport
attr_reader :params
def initialize(user, params = {})
def initialize(user, params = {}, render_table = false)
@params = params
@user = user
@render_table = render_table
end
def header
@@ -49,6 +50,7 @@ module OpenFoodNetwork
end
def table_items
return [] unless @render_table
orders = search.result
line_items = permissions.visible_line_items.merge(Spree::LineItem.where(order_id: orders))

View File

@@ -71,7 +71,7 @@ describe Spree::Admin::ReportsController, type: :controller do
# create test objects
[orderA1, orderA2, orderB1, orderB2]
spree_get :orders_and_fulfillment
spree_post :orders_and_fulfillment
expect(resulting_orders).to include orderA1, orderA2
expect(resulting_orders).not_to include orderB1, orderB2
@@ -119,7 +119,7 @@ describe Spree::Admin::ReportsController, type: :controller do
describe 'Orders & Fulfillment' do
it "only shows orders that I distribute" do
[orderA1, orderA2, orderB1, orderB2]
spree_get :orders_and_fulfillment
spree_post :orders_and_fulfillment
expect(resulting_orders).to include orderA1, orderB1
expect(resulting_orders).not_to include orderA2, orderB2
@@ -127,7 +127,7 @@ describe Spree::Admin::ReportsController, type: :controller do
it "only shows the selected order cycle" do
[orderA1, orderB1]
spree_get :orders_and_fulfillment, q: {order_cycle_id_in: [ocA.id.to_s]}
spree_post :orders_and_fulfillment, q: {order_cycle_id_in: [ocA.id.to_s]}
expect(resulting_orders).to include(orderA1)
expect(resulting_orders).not_to include(orderB1)
@@ -181,7 +181,7 @@ describe Spree::Admin::ReportsController, type: :controller do
it "only shows product line items that I am supplying" do
[orderA1, orderA2]
spree_get :orders_and_fulfillment
spree_post :orders_and_fulfillment
expect(resulting_products).to include p1
expect(resulting_products).not_to include p2, p3
@@ -189,7 +189,7 @@ describe Spree::Admin::ReportsController, type: :controller do
it "only shows the selected order cycle" do
[orderA1, orderB1]
spree_get :orders_and_fulfillment, q: {order_cycle_id_eq: ocA.id}
spree_post :orders_and_fulfillment, q: {order_cycle_id_eq: ocA.id}
expect(resulting_orders_prelim).to include(orderA1)
expect(resulting_orders_prelim).not_to include(orderB1)
@@ -199,7 +199,7 @@ describe Spree::Admin::ReportsController, type: :controller do
context "where I have not granted P-OC to the distributor" do
it "does not show me line_items I supply" do
[orderA1, orderA2]
spree_get :orders_and_fulfillment
spree_post :orders_and_fulfillment
expect(resulting_products).not_to include p1, p2, p3
end

View File

@@ -14,7 +14,7 @@ module OpenFoodNetwork
context "as a site admin" do
let(:user) { create(:admin_user) }
subject { PackingReport.new user }
subject { PackingReport.new user, {}, true }
it "fetches completed orders" do
o2 = create(:order)
@@ -31,7 +31,7 @@ module OpenFoodNetwork
context "as a manager of a supplier" do
let!(:user) { create(:user) }
subject { OrdersAndFulfillmentsReport.new user }
subject { OrdersAndFulfillmentsReport.new user, {}, true }
let(:s1) { create(:supplier_enterprise) }
@@ -70,7 +70,7 @@ module OpenFoodNetwork
context "as a manager of a distributor" do
let!(:user) { create(:user) }
subject { OrdersAndFulfillmentsReport.new user }
subject { OrdersAndFulfillmentsReport.new user, {}, true }
before do
d1.enterprise_roles.create!(user: user)