mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-28 01:53:25 +00:00
Compile Bulk Co-Op report only on search
This commit is contained in:
@@ -147,7 +147,6 @@ Spree::Admin::ReportsController.class_eval do
|
||||
end
|
||||
|
||||
def bulk_coop
|
||||
# -- Prepare date parameters
|
||||
prepare_date_params params
|
||||
|
||||
# -- Prepare form options
|
||||
@@ -155,7 +154,7 @@ Spree::Admin::ReportsController.class_eval do
|
||||
@report_type = params[:report_type]
|
||||
|
||||
# -- Build Report with Order Grouper
|
||||
@report = OpenFoodNetwork::BulkCoopReport.new spree_current_user, params
|
||||
@report = OpenFoodNetwork::BulkCoopReport.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 = "bulk_coop_#{params[:report_type]}_#{timestamp}.csv"
|
||||
|
||||
@@ -4,9 +4,10 @@ require 'open_food_network/reports/bulk_coop_allocation_report'
|
||||
module OpenFoodNetwork
|
||||
class BulkCoopReport
|
||||
attr_reader :params
|
||||
def initialize(user, params = {})
|
||||
def initialize(user, params = {}, render_table = false)
|
||||
@params = params
|
||||
@user = user
|
||||
@render_table = render_table
|
||||
|
||||
@supplier_report = OpenFoodNetwork::Reports::BulkCoopSupplierReport.new
|
||||
@allocation_report = OpenFoodNetwork::Reports::BulkCoopAllocationReport.new
|
||||
@@ -48,6 +49,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))
|
||||
|
||||
@@ -97,7 +97,7 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
describe 'Bulk Coop' do
|
||||
it "only shows orders that I have access to" do
|
||||
[orderA1, orderA2, orderB1, orderB2]
|
||||
spree_get :bulk_coop
|
||||
spree_post :bulk_coop
|
||||
|
||||
expect(resulting_orders).to include(orderA1, orderB1)
|
||||
expect(resulting_orders).not_to include(orderA2)
|
||||
@@ -157,7 +157,7 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
end
|
||||
|
||||
it "only shows product line items that I am supplying" do
|
||||
spree_get :bulk_coop
|
||||
spree_post :bulk_coop
|
||||
|
||||
expect(resulting_products).to include p1
|
||||
expect(resulting_products).not_to include p2, p3
|
||||
@@ -166,7 +166,7 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
|
||||
context "where I have not granted P-OC to the distributor" do
|
||||
it "shows product line items that I am supplying" do
|
||||
spree_get :bulk_coop
|
||||
spree_post :bulk_coop
|
||||
|
||||
expect(resulting_products).not_to include p1, p2, p3
|
||||
end
|
||||
|
||||
@@ -14,7 +14,7 @@ module OpenFoodNetwork
|
||||
|
||||
context "as a site admin" do
|
||||
let(:user) { create(:admin_user) }
|
||||
subject { BulkCoopReport.new user }
|
||||
subject { BulkCoopReport.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 { BulkCoopReport.new user }
|
||||
subject { BulkCoopReport.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 { PackingReport.new user }
|
||||
subject { PackingReport.new user, {}, true }
|
||||
|
||||
before do
|
||||
d1.enterprise_roles.create!(user: user)
|
||||
|
||||
Reference in New Issue
Block a user