Compile Products & Inventory report only on search

This commit is contained in:
Maikel Linke
2018-05-03 15:53:58 +10:00
parent d464216027
commit 5f9d239f19
8 changed files with 12 additions and 7 deletions

View File

@@ -210,9 +210,9 @@ Spree::Admin::ReportsController.class_eval do
def products_and_inventory
@report_types = report_types[:products_and_inventory]
if params[:report_type] != 'lettuce_share'
@report = OpenFoodNetwork::ProductsAndInventoryReport.new spree_current_user, params
@report = OpenFoodNetwork::ProductsAndInventoryReport.new spree_current_user, params, render_content?
else
@report = OpenFoodNetwork::LettuceShareReport.new spree_current_user, params
@report = OpenFoodNetwork::LettuceShareReport.new spree_current_user, params, render_content?
end
render_report(@report.header, @report.table, params[:csv], "products_and_inventory_#{timestamp}.csv")
end

View File

@@ -19,6 +19,7 @@ module OpenFoodNetwork
end
def table
return [] unless @render_table
variants.select { |v| v.in_stock? }
.map do |variant|
[

View File

@@ -18,6 +18,7 @@ module OpenFoodNetwork
end
def table
return [] unless @render_table
variants.map do |variant|
[
variant.product.supplier.name,

View File

@@ -2,9 +2,10 @@ module OpenFoodNetwork
class ProductsAndInventoryReportBase
attr_reader :params
def initialize(user, params = {})
def initialize(user, params = {}, render_table = false)
@user = user
@params = params
@render_table = render_table
end
def permissions

View File

@@ -235,7 +235,7 @@ describe Spree::Admin::ReportsController, type: :controller do
it "creates a ProductAndInventoryReport" do
expect(OpenFoodNetwork::ProductsAndInventoryReport).to receive(:new)
.with(@admin_user, {"test" => "foo", "controller" => "spree/admin/reports", "action" => "products_and_inventory"})
.with(@admin_user, {"test" => "foo", "controller" => "spree/admin/reports", "action" => "products_and_inventory"}, false)
.and_return(report = double(:report))
allow(report).to receive(:header).and_return []
allow(report).to receive(:table).and_return []

View File

@@ -314,6 +314,7 @@ feature %q{
expect(page).to have_content "All products"
expect(page).to have_content "Inventory (on hand)"
click_link 'Products & Inventory'
click_button "Search"
expect(page).to have_content "Supplier"
expect(page).to have_table_row ["Supplier", "Producer Suburb", "Product", "Product Properties", "Taxons", "Variant Value", "Price", "Group Buy Unit Quantity", "Amount", "SKU"].map(&:upcase)
expect(page).to have_table_row [product1.supplier.name, product1.supplier.address.city, "Product Name", product1.properties.map(&:presentation).join(", "), product1.primary_taxon.name, "Test", "100.0", product1.group_buy_unit_size.to_s, "", "sku1"]
@@ -325,6 +326,7 @@ feature %q{
login_to_admin_section
click_link 'Reports'
click_link 'LettuceShare'
click_button "Search"
expect(page).to have_table_row ['PRODUCT', 'Description', 'Qty', 'Pack Size', 'Unit', 'Unit Price', 'Total', 'GST incl.', 'Grower and growing method', 'Taxon'].map(&:upcase)
expect(page).to have_table_row ['Product 2', '100g', '', '100', 'g', '99.0', '', '0', 'Supplier Name (Organic - NASAA 12345)', 'Taxon Name']

View File

@@ -3,7 +3,7 @@ require 'open_food_network/lettuce_share_report'
module OpenFoodNetwork
describe LettuceShareReport do
let(:user) { create(:user) }
let(:report) { LettuceShareReport.new user }
let(:report) { LettuceShareReport.new user, {}, true }
let(:v) { create(:variant) }
describe "grower and method" do

View File

@@ -9,7 +9,7 @@ module OpenFoodNetwork
user
end
subject do
ProductsAndInventoryReport.new user
ProductsAndInventoryReport.new user, {}, true
end
it "Should return headers" do
@@ -72,7 +72,7 @@ module OpenFoodNetwork
end
subject do
ProductsAndInventoryReport.new enterprise_user
ProductsAndInventoryReport.new enterprise_user, {}, true
end
describe "fetching child variants" do