spree_advanced_reporting 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Gemfile +5 -0
- data/README.md +23 -0
- data/Rakefile +20 -0
- data/TODO.txt +3 -0
- data/app/assets/images/admin/advanced_reporting/asc.gif +0 -0
- data/app/assets/images/admin/advanced_reporting/barchart.png +0 -0
- data/app/assets/images/admin/advanced_reporting/bg.gif +0 -0
- data/app/assets/images/admin/advanced_reporting/close.png +0 -0
- data/app/assets/images/admin/advanced_reporting/desc.gif +0 -0
- data/app/assets/images/admin/advanced_reporting/menu-current-opposite.png +0 -0
- data/app/assets/images/admin/advanced_reporting/open.png +0 -0
- data/app/assets/images/admin/advanced_reporting/save.png +0 -0
- data/app/assets/images/admin/advanced_reporting/search.png +0 -0
- data/app/assets/images/admin/advanced_reporting/usa.png +0 -0
- data/app/assets/images/admin/advanced_reporting/world.png +0 -0
- data/app/assets/javascripts/admin/advanced_reporting/advanced_reporting.js +46 -0
- data/app/assets/javascripts/admin/advanced_reporting/jquery.tablesorter.min.js +4 -0
- data/app/assets/stylesheets/admin/advanced_reporting/advanced_reporting.css.erb +18 -0
- data/app/assets/stylesheets/pdf.css +15 -0
- data/app/controllers/spree/admin/advanced_report_overview_controller.rb +21 -0
- data/app/controllers/spree/admin/reports_controller_decorator.rb +127 -0
- data/app/helpers/advanced_report_helper.rb +13 -0
- data/app/models/ruport/formatter/html_decorator.rb +29 -0
- data/app/models/ruport/formatter/wicked_pdf_decorator.rb +12 -0
- data/app/views/spree/admin/advanced_report_overview/index.html.erb +117 -0
- data/app/views/spree/admin/reports/_advanced_report_criteria.html.erb +64 -0
- data/app/views/spree/admin/reports/geo_base.html.erb +61 -0
- data/app/views/spree/admin/reports/increment_base.html.erb +63 -0
- data/app/views/spree/admin/reports/outstanding.html.erb +16 -0
- data/app/views/spree/admin/reports/top_base.html.erb +17 -0
- data/config/locales/en.yml +96 -0
- data/config/locales/pt-BR.yml +92 -0
- data/config/routes.rb +37 -0
- data/lib/spree/advanced_report.rb +225 -0
- data/lib/spree/advanced_report/geo_report.rb +2 -0
- data/lib/spree/advanced_report/geo_report/geo_profit.rb +44 -0
- data/lib/spree/advanced_report/geo_report/geo_revenue.rb +44 -0
- data/lib/spree/advanced_report/geo_report/geo_units.rb +42 -0
- data/lib/spree/advanced_report/increment_report.rb +78 -0
- data/lib/spree/advanced_report/increment_report/count.rb +33 -0
- data/lib/spree/advanced_report/increment_report/profit.rb +41 -0
- data/lib/spree/advanced_report/increment_report/revenue.rb +40 -0
- data/lib/spree/advanced_report/increment_report/units.rb +33 -0
- data/lib/spree/advanced_report/top_report.rb +2 -0
- data/lib/spree/advanced_report/top_report/top_customers.rb +32 -0
- data/lib/spree/advanced_report/top_report/top_products.rb +35 -0
- data/lib/spree/advanced_report/transaction_report.rb +79 -0
- data/lib/spree_advanced_reporting.rb +25 -0
- data/spree_advanced_reporting.gemspec +22 -0
- metadata +133 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
<% content_for :head do -%>
|
2
|
+
<%= stylesheet_link_tag 'admin/advanced_reporting/advanced_reporting' %>
|
3
|
+
<% end -%>
|
4
|
+
|
5
|
+
<div id="advanced_report_search">
|
6
|
+
<h3><%=t "adv_report.advanced_reports"%></h3>
|
7
|
+
<%= select(nil, nil, @reports.map { |k, v| [v[:name], send("#{k}_admin_reports_url".to_sym)] }, {selected: request.url }, {name: 'report', id: 'report' }) %>
|
8
|
+
|
9
|
+
<%= form_for :search do |s| %>
|
10
|
+
<% if @stores -%>
|
11
|
+
Store:<br /><%= collection_select(:search, :store_id, @stores, :id, :name, { :include_blank => 'All' } ) %><br /><br/>
|
12
|
+
<% end -%>
|
13
|
+
|
14
|
+
<div id="order_type">
|
15
|
+
Filter by When Order Was:<br/>
|
16
|
+
<%= select(:advanced_reporting, :order_type, [:completed, :shipped], include_blank: t(:report_default), selected: params[:advanced_reporting][:order_type]) %>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div>
|
20
|
+
Include only orders that are:<br/>
|
21
|
+
<%= select(:advanced_reporting, :shipment, [:fully_shipped, :partial_shipped], include_blank: t(:report_default), selected: params[:advanced_reporting][:shipment]) %>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div>
|
25
|
+
<%= check_box :advanced_reporting, :state_based_on_taxable_address, { :checked => params[:advanced_reporting][:state_based_on_taxable_address] == "1" }, '1', '0' %>
|
26
|
+
Match State Based on Taxable Address
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div id="state_restriction">
|
30
|
+
State:<br/>
|
31
|
+
<%= collection_select(:advanced_reporting, :state_id, Spree::State.all, :id, :name, { :include_blank => 'All', :selected => params[:advanced_reporting][:state_id] } ) %>
|
32
|
+
</div>
|
33
|
+
|
34
|
+
<div id="taxon_products">
|
35
|
+
<% if @taxons -%>
|
36
|
+
<%=t "taxons"%>: <br /><%= collection_select(:advanced_reporting, :taxon_id, @taxons, :id, :name, { :include_blank => 'All' } ) %><br />
|
37
|
+
<% end -%>
|
38
|
+
<%=t :products%>:<br /><%= collection_select(:advanced_reporting, :product_id, @products, :id, :name, { :include_blank => 'All' } ) %><br />
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<%= t("date_range") %><br />
|
42
|
+
<div class="yui-g date-range-filter">
|
43
|
+
<div class="yui-u sub-field first">
|
44
|
+
<%= s.text_field :created_at_gt, :class => 'datepicker', :value => @report.unfiltered_params[:created_at_gt] %><br />
|
45
|
+
<label class="sub"><%= t("start") %></label>
|
46
|
+
</div>
|
47
|
+
<div class="yui-u sub-field">
|
48
|
+
<%= s.text_field :created_at_lt, :class => 'datepicker', :value => @report.unfiltered_params[:created_at_lt] %><br />
|
49
|
+
<label><%= t("stop") %></label>
|
50
|
+
</div>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<p><%= button t("update") %></p>
|
54
|
+
<% end -%>
|
55
|
+
</div>
|
56
|
+
|
57
|
+
<% if params[:advanced_reporting] -%>
|
58
|
+
<% if params[:advanced_reporting][:product_id] && params[:advanced_reporting][:product_id] != '' -%>
|
59
|
+
<input type="hidden" id="product_id" value="<%= params[:advanced_reporting][:product_id] %>" />
|
60
|
+
<% end -%>
|
61
|
+
<% if params[:advanced_reporting][:taxon_id] && params[:advanced_reporting][:taxon_id] != '' -%>
|
62
|
+
<input type="hidden" id="taxon_id" value="<%= params[:advanced_reporting][:taxon_id] %>" />
|
63
|
+
<% end -%>
|
64
|
+
<% end -%>
|
@@ -0,0 +1,61 @@
|
|
1
|
+
<% [:state, :country].each do |type| -%>
|
2
|
+
<div id="<%= type.to_s %>_data" <%= 'style=display:none;' if type != :state %> class="advanced_reporting_data">
|
3
|
+
<div id="<%= type.to_s %>_canvas" class="canvas"></div>
|
4
|
+
<%= raw @report.ruportdata[type].to_html %>
|
5
|
+
</div>
|
6
|
+
<% end -%>
|
7
|
+
|
8
|
+
<% content_for :sidebar do -%>
|
9
|
+
<div class="report_details">
|
10
|
+
<h1><%=t "adv_report." + @report.name.downcase %></h1>
|
11
|
+
<p><%= @report.description %></p>
|
12
|
+
<%= @report.taxon_text %>
|
13
|
+
<%= @report.product_text %>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
<ul id="show_data">
|
17
|
+
<li id="state">
|
18
|
+
<label><%= t("adv_report.states") %></label><br />
|
19
|
+
<%= link_to "CSV", @report.download_url(request.fullpath, 'csv', "state") %>
|
20
|
+
<%= link_to "PDF", @report.download_url(request.fullpath, 'pdf', "state") %>
|
21
|
+
</li>
|
22
|
+
<li id="country">
|
23
|
+
<label><%= t("adv_report.countries") %></label><br />
|
24
|
+
<%= link_to "CSV", @report.download_url(request.fullpath, 'csv', "country") %>
|
25
|
+
<%= link_to "PDF", @report.download_url(request.fullpath, 'pdf', "country") %>
|
26
|
+
</li>
|
27
|
+
</ul>
|
28
|
+
<%= render :partial => 'spree/admin/reports/advanced_report_criteria', :locals => {} %>
|
29
|
+
<% end -%>
|
30
|
+
|
31
|
+
<% content_for :head do -%>
|
32
|
+
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
|
33
|
+
<script type="text/javascript">
|
34
|
+
google.load('visualization', '1', {'packages': ['geomap']});
|
35
|
+
</script>
|
36
|
+
<script type="text/javascript">
|
37
|
+
google.setOnLoadCallback(drawMaps);
|
38
|
+
|
39
|
+
function drawMaps() {
|
40
|
+
<% [:state, :country].each do |type| -%>
|
41
|
+
var data_<%= type.to_s %> = new google.visualization.DataTable();
|
42
|
+
data_<%= type.to_s %>.addRows(<%= @report.ruportdata[type].size %>);
|
43
|
+
data_<%= type.to_s %>.addColumn('string', '<%= type.to_s.capitalize %>');
|
44
|
+
data_<%= type.to_s %>.addColumn('number', '<%= @report.column %>');
|
45
|
+
<% @report.ruportdata[type].each_with_index do |p, i| %>
|
46
|
+
data_<%= type.to_s %>.setValue(<%= i.to_s %>, 0, "<%= p.data[type.to_s.capitalize] %>");
|
47
|
+
data_<%= type.to_s %>.setValue(<%= i.to_s %>, 1, <%= p.data[@report.column].to_s.gsub(/^\$/, '') %>);
|
48
|
+
<% end -%>
|
49
|
+
|
50
|
+
var options_<%= type.to_s %> = { 'width' : '800px', 'height' : '500px' };
|
51
|
+
<% if type == :state %>
|
52
|
+
options_<%= type.to_s %>['region'] = 'US';
|
53
|
+
<% end -%>
|
54
|
+
|
55
|
+
var <%= type.to_s %>_container = document.getElementById('<%= type.to_s %>_canvas');
|
56
|
+
var <%= type.to_s %>_geomap = new google.visualization.GeoMap(<%= type.to_s %>_container);
|
57
|
+
<%= type.to_s %>_geomap.draw(data_<%= type.to_s %>, options_<%= type.to_s %>);
|
58
|
+
<% end -%>
|
59
|
+
};
|
60
|
+
</script>
|
61
|
+
<% end -%>
|
@@ -0,0 +1,63 @@
|
|
1
|
+
<% @report.increments.each do |type| -%>
|
2
|
+
<div id="<%= type.to_s %>_data" <%= 'style=display:none;' if type.to_s != t("adv_report.daily").downcase %> class="advanced_reporting_data">
|
3
|
+
<div id="<%= type.to_s %>_chart"></div>
|
4
|
+
<%= raw @report.ruportdata[type].to_html %>
|
5
|
+
</div>
|
6
|
+
<% end -%>
|
7
|
+
|
8
|
+
<% content_for :sidebar do %>
|
9
|
+
<div class="report_details">
|
10
|
+
<h1><%=t "adv_report." + @report.name.downcase.gsub(/ /,"_") %></h1>
|
11
|
+
<p class="links">
|
12
|
+
<%= link_to "CSV (all)", @report.download_url(request.fullpath, 'csv', "all") %><br/>
|
13
|
+
<%= link_to "PDF (all)", @report.download_url(request.fullpath, 'pdf', "all") %>
|
14
|
+
</p>
|
15
|
+
<%= @report.description %><br />
|
16
|
+
<%== @report.product_text %>
|
17
|
+
<%== @report.taxon_text %>
|
18
|
+
<%= @report.date_text %><br />
|
19
|
+
Total: <%= @report.format_total %>
|
20
|
+
</div>
|
21
|
+
|
22
|
+
<ul id="show_data">
|
23
|
+
<% @report.increments.each do |inc| %>
|
24
|
+
<li id="<%= inc.to_s %>">
|
25
|
+
<label><%= inc.to_s.capitalize %></label><br />
|
26
|
+
<%= link_to "CSV", @report.download_url(request.fullpath, 'csv', inc) %>
|
27
|
+
<%= link_to "PDF", @report.download_url(request.fullpath, 'pdf', inc) %>
|
28
|
+
</li>
|
29
|
+
<% end -%>
|
30
|
+
</ul>
|
31
|
+
<%= render :partial => 'spree/admin/reports/advanced_report_criteria', :locals => {} %>
|
32
|
+
<% end %>
|
33
|
+
|
34
|
+
<% content_for :head do -%>
|
35
|
+
<script type="text/javascript" src="//www.google.com/jsapi"></script>
|
36
|
+
<script type="text/javascript">
|
37
|
+
google.load('visualization', '1', {'packages': ['corechart']});
|
38
|
+
</script>
|
39
|
+
<script type="text/javascript">
|
40
|
+
google.setOnLoadCallback(drawChart);
|
41
|
+
|
42
|
+
function drawChart() {
|
43
|
+
<% @report.increments.each do |type| -%>
|
44
|
+
var data_<%= type.to_s %> = new google.visualization.DataTable();
|
45
|
+
data_<%= type.to_s %>.addColumn('string', 'Display');
|
46
|
+
data_<%= type.to_s %>.addColumn('number', '<%= @report.name %>');
|
47
|
+
data_<%= type.to_s %>.addRows(<%= @report.ruportdata[type].size %>);
|
48
|
+
<% @report.ruportdata[type].each_with_index do |p, i| %>
|
49
|
+
data_<%= type.to_s %>.setValue(<%= i.to_s %>, 0, "<%= p.data[type.to_s.capitalize] %>");
|
50
|
+
data_<%= type.to_s %>.setValue(<%= i.to_s %>, 1, <%= p.data[@report.column].to_s.gsub(/^\$/, '') %>);
|
51
|
+
<% end -%>
|
52
|
+
var chart_<%= type.to_s %> = new google.visualization.ColumnChart(document.getElementById('<%= type.to_s %>_chart'));
|
53
|
+
chart_<%= type.to_s %>.draw(data_<%= type.to_s %>, {
|
54
|
+
width: 800,
|
55
|
+
height: 400,
|
56
|
+
legend : 'none',
|
57
|
+
hAxis: { slantedText: true, slantedTextAngle: 30 },
|
58
|
+
title: '<%= type.to_s.capitalize + ' ' + @report.name %>' });
|
59
|
+
<% end -%>
|
60
|
+
|
61
|
+
}
|
62
|
+
</script>
|
63
|
+
<% end -%>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<h1><%= t("adv_report.outstanding") %>: <%= number_to_currency @outstanding_balance %> </h1>
|
2
|
+
|
3
|
+
<table style="width:40%;">
|
4
|
+
<tr>
|
5
|
+
<th><%= t(:order) %>:</th>
|
6
|
+
<th><%= t(:order_date) %>:</th>
|
7
|
+
<th><%= t("adv_report.outstanding") %>:</th>
|
8
|
+
</tr>
|
9
|
+
<% @orders.each do |order| %>
|
10
|
+
<tr>
|
11
|
+
<td><%= link_to order.number, admin_order_path(order) %></td>
|
12
|
+
<td><%= l order.completed_at.to_date %></td>
|
13
|
+
<td><%= order.outstanding_balance %></td>
|
14
|
+
</tr>
|
15
|
+
<% end %>
|
16
|
+
</table>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%== @report.ruportdata.to_html %>
|
2
|
+
|
3
|
+
<% content_for :sidebar do %>
|
4
|
+
<div class="report_details">
|
5
|
+
<h1><%=t "adv_report." + @report.name.downcase.gsub(/ /,"_") %></h1>
|
6
|
+
<p><%= @report.description %></p>
|
7
|
+
<%= @report.taxon_text %>
|
8
|
+
<%= @report.product_text %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<p class="links">
|
12
|
+
<%= link_to "CSV (all)", @report.download_url(request.fullpath, 'csv') %>
|
13
|
+
<%= link_to "PDF (all)", @report.download_url(request.fullpath, 'pdf') %>
|
14
|
+
</p>
|
15
|
+
|
16
|
+
<%= render :partial => 'spree/admin/reports/advanced_report_criteria', :locals => {} %>
|
17
|
+
<% end %>
|
@@ -0,0 +1,96 @@
|
|
1
|
+
---
|
2
|
+
en:
|
3
|
+
report_default: Report Default
|
4
|
+
sales_total_description: "Sales Total"
|
5
|
+
sales_total: "Sales Total"
|
6
|
+
adv_report:
|
7
|
+
increments:
|
8
|
+
- daily
|
9
|
+
- weekly
|
10
|
+
- monthly
|
11
|
+
- quarterly
|
12
|
+
- yearly
|
13
|
+
dashboard: Dashboard
|
14
|
+
daily: Daily
|
15
|
+
weekly: Weekly
|
16
|
+
monthly: Monthly
|
17
|
+
quarterly: Quarterly
|
18
|
+
yearly: Yearly
|
19
|
+
revenue: "Revenue"
|
20
|
+
units: "Units"
|
21
|
+
profit: "Profit"
|
22
|
+
count: "Order Count"
|
23
|
+
top_products: "Top Products"
|
24
|
+
top_customers: "Top Customers"
|
25
|
+
submit: "Submit"
|
26
|
+
geo_revenue: "Geo Revenue"
|
27
|
+
geo_units: "Geo Units"
|
28
|
+
geo_profit: "Geo Profit"
|
29
|
+
transactions: Transactions
|
30
|
+
outstanding: Outstanding
|
31
|
+
states: States
|
32
|
+
countries: Countries
|
33
|
+
base:
|
34
|
+
range: Date Range
|
35
|
+
from: From
|
36
|
+
after: After
|
37
|
+
before: Before
|
38
|
+
all: All
|
39
|
+
name: "Base Advanced Report"
|
40
|
+
description: "Base Advanced Report"
|
41
|
+
top_report:
|
42
|
+
top_customers:
|
43
|
+
table:
|
44
|
+
- email
|
45
|
+
- Units
|
46
|
+
- Revenue
|
47
|
+
customer_email: Customer Email
|
48
|
+
name: "Top Customers"
|
49
|
+
description: "Top purchasing customers, calculated by revenue"
|
50
|
+
top_products:
|
51
|
+
table:
|
52
|
+
- name
|
53
|
+
- Units
|
54
|
+
- Revenue
|
55
|
+
product_name: Name of Product
|
56
|
+
name: "Top Selling Products by Revenue"
|
57
|
+
description: "Top selling products, calculated by revenue"
|
58
|
+
increment_report:
|
59
|
+
count:
|
60
|
+
name: "Order Count"
|
61
|
+
description: "Total number of completed orders"
|
62
|
+
column: "Count"
|
63
|
+
profit:
|
64
|
+
name: "Profit"
|
65
|
+
description: "Total profit in orders, where profit is the sum of item quantity times item price minus item cost price"
|
66
|
+
column: "Profit"
|
67
|
+
revenue:
|
68
|
+
name: "Revenue"
|
69
|
+
description: "Total order revenue, where revenue is the sum of order item prices, excluding shipping and tax"
|
70
|
+
column: "Revenue"
|
71
|
+
units:
|
72
|
+
name: "Units Sold"
|
73
|
+
description: "Total units sold in orders, a sum of the item quantities per order or per item"
|
74
|
+
column: "Units"
|
75
|
+
geo_report:
|
76
|
+
profit:
|
77
|
+
table:
|
78
|
+
- location
|
79
|
+
- Profit
|
80
|
+
name: "Profit by Geography"
|
81
|
+
description: "Profit divided geographically, into states and countries"
|
82
|
+
column: "Profit"
|
83
|
+
revenue:
|
84
|
+
table:
|
85
|
+
- location
|
86
|
+
- Revenue
|
87
|
+
name: "Revenue by Geography"
|
88
|
+
description: "Revenue divided geographically, into states and countries"
|
89
|
+
column: "Revenue"
|
90
|
+
units:
|
91
|
+
table:
|
92
|
+
- location
|
93
|
+
- Units
|
94
|
+
name: "Units Sold by Geography"
|
95
|
+
description: "Unit sales divided geographically, into states and countries"
|
96
|
+
column: "Units"
|
@@ -0,0 +1,92 @@
|
|
1
|
+
pt-BR:
|
2
|
+
adv_report:
|
3
|
+
increments:
|
4
|
+
- diario
|
5
|
+
- semanal
|
6
|
+
- mensal
|
7
|
+
- trimestral
|
8
|
+
- anual
|
9
|
+
dashboard: Dashboard
|
10
|
+
daily: Diario
|
11
|
+
weekly: Semanal
|
12
|
+
monthly: Mensal
|
13
|
+
quaterly: Trimestral
|
14
|
+
yearly: Anual
|
15
|
+
revenue: Receita
|
16
|
+
units: Unidades
|
17
|
+
profit: Lucro
|
18
|
+
count: Num Pedidos
|
19
|
+
top_products: "Melhores Produtos"
|
20
|
+
top_customers: "Melhores Clientes"
|
21
|
+
submit: "Enviar"
|
22
|
+
geo_revenue: "Receita por Estado"
|
23
|
+
geo_units: "Unidades por Estado"
|
24
|
+
geo_profit: "Lucro por Estado"
|
25
|
+
outstanding: "Recebiveis"
|
26
|
+
outstanding_description: "Valor a ser pago por clientes que parcelaram a compra"
|
27
|
+
states: Estados
|
28
|
+
countries: Paises
|
29
|
+
base:
|
30
|
+
range: Intervalo
|
31
|
+
from: De
|
32
|
+
after: Depois
|
33
|
+
before: Antes
|
34
|
+
all: Todos
|
35
|
+
name: "Relatório avançado base"
|
36
|
+
description: "Relatório avançado base"
|
37
|
+
top_report:
|
38
|
+
top_customers:
|
39
|
+
table:
|
40
|
+
- email
|
41
|
+
- Unidades
|
42
|
+
- Receita
|
43
|
+
customer_email: Email do cliente
|
44
|
+
name: "Melhores Clientes"
|
45
|
+
description: "Clientes que mais compraram, calculado pela receita"
|
46
|
+
top_products:
|
47
|
+
table:
|
48
|
+
- name
|
49
|
+
- Unidades
|
50
|
+
- Receita
|
51
|
+
product_name: "Nome do Produto"
|
52
|
+
name: "Produtos mais vendidos por receita"
|
53
|
+
description: "Produtos mais vendidos, calculado pela receita"
|
54
|
+
increment_report:
|
55
|
+
count:
|
56
|
+
name: "Pedidos"
|
57
|
+
description: "Numero total de pedidos completos"
|
58
|
+
column: "Pedidos"
|
59
|
+
profit:
|
60
|
+
name: "Lucro"
|
61
|
+
description: "Lucro total em pedidos, onde lucro é a soma das quantidades de produtos vezes seu preço, menos seu custo, sem ajustes"
|
62
|
+
column: "Lucro"
|
63
|
+
revenue:
|
64
|
+
name: "Receita"
|
65
|
+
description: "Receita total em pedidos, onde receita é a soma dos preços os itens do pedido sem ajustes, como impostos e frete"
|
66
|
+
column: "Receita"
|
67
|
+
units:
|
68
|
+
name: "Unidades"
|
69
|
+
description: "Quantidade de itens vendidos em pedidos, a soma das quantidades de itens por ordem ou por produto"
|
70
|
+
column: "Unidades"
|
71
|
+
geo_report:
|
72
|
+
profit:
|
73
|
+
table:
|
74
|
+
- location
|
75
|
+
- Lucro
|
76
|
+
name: "Lucro por Estado"
|
77
|
+
description: "Lucro dividido geograficamente em estados"
|
78
|
+
column: "Lucro"
|
79
|
+
revenue:
|
80
|
+
table:
|
81
|
+
- location
|
82
|
+
- Receita
|
83
|
+
name: "Receita por Estado"
|
84
|
+
description: "Receita dividida geograficamente em estados"
|
85
|
+
column: "Receita"
|
86
|
+
units:
|
87
|
+
table:
|
88
|
+
- location
|
89
|
+
- Unidades
|
90
|
+
name: "Unidades vendidas por Estado"
|
91
|
+
description: Unidades vendidas divididas geograficamente em estados
|
92
|
+
column: "Unidades"
|
data/config/routes.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
Spree::Core::Engine.routes.prepend do
|
2
|
+
match '/admin/reports/outstanding' => 'admin/reports#outstanding', :via => [:get, :post],
|
3
|
+
:as => 'outstanding_admin_reports'
|
4
|
+
|
5
|
+
match '/admin/reports/revenue' => 'admin/reports#revenue', :via => [:get, :post],
|
6
|
+
:as => 'revenue_admin_reports'
|
7
|
+
|
8
|
+
match '/admin/reports/count' => 'admin/reports#count', :via => [:get, :post],
|
9
|
+
:as => 'count_admin_reports'
|
10
|
+
|
11
|
+
match '/admin/reports/units' => 'admin/reports#units', :via => [:get, :post],
|
12
|
+
:as => 'units_admin_reports'
|
13
|
+
|
14
|
+
match '/admin/reports/profit' => 'admin/reports#profit', :via => [:get, :post],
|
15
|
+
:as => 'profit_admin_reports'
|
16
|
+
|
17
|
+
|
18
|
+
match '/admin/reports/top_customers' => 'admin/reports#top_customers', :via => [:get, :post],
|
19
|
+
:as => 'top_customers_admin_reports'
|
20
|
+
|
21
|
+
match '/admin/reports/top_products' => 'admin/reports#top_products', :via => [:get, :post],
|
22
|
+
:as => 'top_products_admin_reports'
|
23
|
+
|
24
|
+
match '/admin/reports/geo_revenue' => 'admin/reports#geo_revenue', :via => [:get, :post],
|
25
|
+
:as => 'geo_revenue_admin_reports'
|
26
|
+
|
27
|
+
match '/admin/reports/geo_units' => 'admin/reports#geo_units', :via => [:get, :post],
|
28
|
+
:as => 'geo_units_admin_reports'
|
29
|
+
|
30
|
+
match '/admin/reports/geo_profit' => 'admin/reports#geo_profit', :via => [:get, :post],
|
31
|
+
:as => 'geo_profit_admin_reports'
|
32
|
+
|
33
|
+
match '/admin/reports/transactions' => 'admin/reports#transactions', :via => [:get, :post],
|
34
|
+
:as => 'transactions_admin_reports'
|
35
|
+
|
36
|
+
# match "/admin" => "admin/advanced_report_overview#index", :as => :admin
|
37
|
+
end
|