mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-24 20:36:49 +00:00
Report Refactor 1: Customers
This commit is contained in:
committed by
Jean-Baptiste Bellet
parent
e55462d18b
commit
1fee45035c
@@ -46,11 +46,7 @@ module Spree
|
||||
end
|
||||
|
||||
def customers
|
||||
@report_types = report_types[:customers]
|
||||
@report_type = params[:report_type]
|
||||
@report = OpenFoodNetwork::CustomersReport.new spree_current_user, raw_params,
|
||||
render_content?
|
||||
render_report(@report.header, @report.table, params[:csv], "customers_#{timestamp}.csv")
|
||||
render_report2
|
||||
end
|
||||
|
||||
def order_cycle_management
|
||||
@@ -195,7 +191,6 @@ module Spree
|
||||
@report_subtype = params[:report_subtype]
|
||||
klass = "OpenFoodNetwork::#{action_name.camelize}Report".constantize
|
||||
@report = klass.new spree_current_user, raw_params, render_content?
|
||||
|
||||
if report_format.present?
|
||||
data = Reporting::ReportRenderer.new(@report).public_send("to_#{report_format}")
|
||||
send_data data, filename: report_filename
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
%ul{style: "margin-left: 12pt"}
|
||||
- report_types.each do |report_type|
|
||||
%li
|
||||
= link_to report_type[0], "#{customers_admin_reports_url}?report_type=#{report_type[1]}"
|
||||
%li
|
||||
= link_to report_type[0], "#{customers_admin_reports_url}?report_subtype=#{report_type[1]}"
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
= form_tag spree.customers_admin_reports_url do |f|
|
||||
%br
|
||||
.row
|
||||
.four.columns.alpha
|
||||
= label_tag nil, t(:report_customers_distributor)
|
||||
= select_tag(:distributor_id,
|
||||
options_from_collection_for_select(@distributors, :id, :name, params[:distributor_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth"})
|
||||
|
||||
.four.columns
|
||||
= label_tag nil, t(:report_customers_supplier)
|
||||
= select_tag(:supplier_id,
|
||||
options_from_collection_for_select(@suppliers, :id, :name, params[:supplier_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth"})
|
||||
|
||||
.six.columns
|
||||
= label_tag nil, t(:report_customers_cycle)
|
||||
= select_tag(:order_cycle_id,
|
||||
options_for_select(report_order_cycle_options(@order_cycles), params[:order_cycle_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth"})
|
||||
|
||||
= label_tag nil, t(:report_customers_type)
|
||||
= select_tag(:report_type, options_for_select(@report_types, @report_type))
|
||||
|
||||
%br
|
||||
%br
|
||||
= check_box_tag :csv
|
||||
= label_tag :csv, t(:report_customers_csv)
|
||||
%br
|
||||
= button t(:go)
|
||||
|
||||
= render "table", id: "listing_customers", msg_option: t(:go)
|
||||
18
app/views/spree/admin/reports/filters/_customers.html.haml
Normal file
18
app/views/spree/admin/reports/filters/_customers.html.haml
Normal file
@@ -0,0 +1,18 @@
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_customers_distributor)
|
||||
.omega.fourteen.columns
|
||||
= select_tag(:distributor_id,
|
||||
options_from_collection_for_select(@distributors, :id, :name, params[:distributor_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth light"})
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_customers_supplier)
|
||||
.omega.fourteen.columns
|
||||
= select_tag(:supplier_id,
|
||||
options_from_collection_for_select(@suppliers, :id, :name, params[:supplier_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth light"})
|
||||
.row
|
||||
.alpha.two.columns= label_tag nil, t(:report_customers_cycle)
|
||||
.omega.fourteen.columns
|
||||
= select_tag(:order_cycle_id,
|
||||
options_for_select(report_order_cycle_options(@order_cycles), params[:order_cycle_id]),
|
||||
{:include_blank => true, :class => "select2 fullwidth light"})
|
||||
@@ -1,4 +1,7 @@
|
||||
= form_for @report.search, :url => url_for(only_path: false) do |f|
|
||||
/ If the report object do not use ransack search, create a fake one just for the form_for
|
||||
- ransack_search = @report.respond_to?(:search) ? @report.search : Ransack::Search.new(Spree::Order)
|
||||
= form_for ransack_search, :url => url_for(only_path: false) do |f|
|
||||
|
||||
%fieldset.no-border-bottom.print-hidden
|
||||
%legend{ align: 'center'}= t(:report_filters)
|
||||
= render partial: "spree/admin/reports/filters/#{action_name}", locals: { f: f }
|
||||
|
||||
@@ -10,7 +10,7 @@ module OpenFoodNetwork
|
||||
@compile_table = compile_table
|
||||
end
|
||||
|
||||
def header
|
||||
def table_headers
|
||||
if is_mailing_list?
|
||||
[I18n.t(:report_header_email),
|
||||
I18n.t(:report_header_first_name),
|
||||
@@ -28,7 +28,7 @@ module OpenFoodNetwork
|
||||
end
|
||||
end
|
||||
|
||||
def table
|
||||
def table_rows
|
||||
return [] unless @compile_table
|
||||
|
||||
orders.map do |order|
|
||||
@@ -93,7 +93,7 @@ module OpenFoodNetwork
|
||||
private
|
||||
|
||||
def is_mailing_list?
|
||||
params[:report_type] == "mailing_list"
|
||||
params[:report_subtype] == "mailing_list"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -286,7 +286,7 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
|
||||
it "assigns report types" do
|
||||
spree_get :customers
|
||||
expect(assigns(:report_types)).to eq(subject.report_types[:customers])
|
||||
expect(assigns(:report_subtypes)).to eq(subject.report_types[:customers])
|
||||
end
|
||||
|
||||
it "creates a CustomersReport" do
|
||||
@@ -295,8 +295,8 @@ describe Spree::Admin::ReportsController, type: :controller do
|
||||
"action" => "customers", "use_route" => "main_app",
|
||||
"report" => {} }, false)
|
||||
.and_return(report = double(:report))
|
||||
allow(report).to receive(:header).and_return []
|
||||
allow(report).to receive(:table).and_return []
|
||||
allow(report).to receive(:table_headers).and_return []
|
||||
allow(report).to receive(:table_rows).and_return []
|
||||
spree_get :customers, test: "foo"
|
||||
expect(assigns(:report)).to eq(report)
|
||||
end
|
||||
|
||||
@@ -15,11 +15,11 @@ module OpenFoodNetwork
|
||||
|
||||
describe "mailing list report" do
|
||||
before do
|
||||
allow(subject).to receive(:params).and_return(report_type: "mailing_list")
|
||||
allow(subject).to receive(:params).and_return(report_subtype: "mailing_list")
|
||||
end
|
||||
|
||||
it "returns headers for mailing_list" do
|
||||
expect(subject.header).to eq(["Email", "First Name", "Last Name", "Suburb"])
|
||||
expect(subject.table_headers).to eq(["Email", "First Name", "Last Name", "Suburb"])
|
||||
end
|
||||
|
||||
it "builds a table from a list of variants" do
|
||||
@@ -29,7 +29,7 @@ module OpenFoodNetwork
|
||||
allow(order).to receive(:billing_address).and_return address
|
||||
allow(subject).to receive(:orders).and_return [order]
|
||||
|
||||
expect(subject.table).to eq([[
|
||||
expect(subject.table_rows).to eq([[
|
||||
"test@test.com", "Firsty", "Lasty", "Suburbia"
|
||||
]])
|
||||
end
|
||||
@@ -37,11 +37,11 @@ module OpenFoodNetwork
|
||||
|
||||
describe "addresses report" do
|
||||
before do
|
||||
allow(subject).to receive(:params).and_return(report_type: "addresses")
|
||||
allow(subject).to receive(:params).and_return(report_subtype: "addresses")
|
||||
end
|
||||
|
||||
it "returns headers for addresses" do
|
||||
expect(subject.header).to eq(["First Name", "Last Name", "Billing Address", "Email",
|
||||
expect(subject.table_headers).to eq(["First Name", "Last Name", "Billing Address", "Email",
|
||||
"Phone", "Hub", "Hub Address", "Shipping Method"])
|
||||
end
|
||||
|
||||
@@ -52,7 +52,7 @@ module OpenFoodNetwork
|
||||
o.shipments << create(:shipment)
|
||||
|
||||
allow(subject).to receive(:orders).and_return [o]
|
||||
expect(subject.table).to eq([[
|
||||
expect(subject.table_rows).to eq([[
|
||||
a.firstname, a.lastname,
|
||||
[a.address1, a.address2, a.city].join(" "),
|
||||
o.email, a.phone, d.name,
|
||||
|
||||
Reference in New Issue
Block a user