solidus_admin_insights 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +54 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +26 -0
  5. data/README.md +71 -0
  6. data/Rakefile +21 -0
  7. data/app/assets/javascripts/spree/backend/jquery.tablesorter.min.js +4 -0
  8. data/app/assets/javascripts/spree/backend/solidus_admin_insights.js +2 -0
  9. data/app/assets/javascripts/spree/backend/solidus_admin_insights/paginator.js +128 -0
  10. data/app/assets/javascripts/spree/backend/solidus_admin_insights/report_loader.js +265 -0
  11. data/app/assets/javascripts/spree/backend/solidus_admin_insights/searcher.js +72 -0
  12. data/app/assets/javascripts/spree/backend/solidus_admin_insights/table_sorter.js +47 -0
  13. data/app/assets/javascripts/spree/backend/tmpl.js +87 -0
  14. data/app/assets/javascripts/spree/frontend/solidus_admin_insights.js +2 -0
  15. data/app/assets/stylesheets/spree/backend/override_pdf.css +71 -0
  16. data/app/assets/stylesheets/spree/backend/solidus_admin_insights.css +132 -0
  17. data/app/assets/stylesheets/spree/frontend/solidus_admin_insights.css +4 -0
  18. data/app/controllers/spree/admin/insights_controller.rb +103 -0
  19. data/app/helpers/spree/admin/base_helper_decorator.rb +17 -0
  20. data/app/models/spree/app_configuration_decorator.rb +3 -0
  21. data/app/models/spree/product_decorator.rb +3 -0
  22. data/app/models/spree/promotion_action_decorator.rb +3 -0
  23. data/app/models/spree/return_authorization_decorator.rb +4 -0
  24. data/app/permissions/spree/permission_sets/insight_display.rb +9 -0
  25. data/app/reports/spree/best_selling_products_report.rb +42 -0
  26. data/app/reports/spree/cart_additions_report.rb +36 -0
  27. data/app/reports/spree/cart_removals_report.rb +36 -0
  28. data/app/reports/spree/cart_updations_report.rb +40 -0
  29. data/app/reports/spree/payment_method_transactions_conversion_rate_report.rb +74 -0
  30. data/app/reports/spree/payment_method_transactions_conversion_rate_report/payment_method_state_distribution_chart.rb +39 -0
  31. data/app/reports/spree/payment_method_transactions_report.rb +60 -0
  32. data/app/reports/spree/payment_method_transactions_report/payment_method_revenue_distribution_chart.rb +36 -0
  33. data/app/reports/spree/product_views_report.rb +46 -0
  34. data/app/reports/spree/product_views_to_cart_additions_report.rb +53 -0
  35. data/app/reports/spree/product_views_to_purchases_report.rb +54 -0
  36. data/app/reports/spree/promotional_cost_report.rb +84 -0
  37. data/app/reports/spree/promotional_cost_report/promotional_cost_chart.rb +37 -0
  38. data/app/reports/spree/promotional_cost_report/usage_count_chart.rb +41 -0
  39. data/app/reports/spree/report.rb +131 -0
  40. data/app/reports/spree/report/chart.rb +11 -0
  41. data/app/reports/spree/report/configuration.rb +40 -0
  42. data/app/reports/spree/report/date_slicer.rb +61 -0
  43. data/app/reports/spree/report/observation.rb +49 -0
  44. data/app/reports/spree/report/query_fragments.rb +45 -0
  45. data/app/reports/spree/report/query_time_scale.rb +19 -0
  46. data/app/reports/spree/report/result.rb +100 -0
  47. data/app/reports/spree/report/timed_observation.rb +47 -0
  48. data/app/reports/spree/report/timed_result.rb +48 -0
  49. data/app/reports/spree/returned_products_report.rb +37 -0
  50. data/app/reports/spree/sales_performance_report.rb +107 -0
  51. data/app/reports/spree/sales_performance_report/profit_loss_chart.rb +37 -0
  52. data/app/reports/spree/sales_performance_report/profit_loss_percent_chart.rb +36 -0
  53. data/app/reports/spree/sales_performance_report/sale_cost_price_chart.rb +48 -0
  54. data/app/reports/spree/sales_tax_report.rb +64 -0
  55. data/app/reports/spree/sales_tax_report/monthly_sales_tax_comparison_chart.rb +39 -0
  56. data/app/reports/spree/shipping_cost_report.rb +89 -0
  57. data/app/reports/spree/shipping_cost_report/shipping_cost_distribution_chart.rb +38 -0
  58. data/app/reports/spree/trending_search_report.rb +50 -0
  59. data/app/reports/spree/trending_search_report/frequency_distribution_pie_chart.rb +41 -0
  60. data/app/reports/spree/unique_purchases_report.rb +39 -0
  61. data/app/reports/spree/user_pool_report.rb +66 -0
  62. data/app/reports/spree/user_pool_report/distribution_column_chart.rb +65 -0
  63. data/app/reports/spree/users_not_converted_report.rb +48 -0
  64. data/app/reports/spree/users_who_recently_purchased_report.rb +69 -0
  65. data/app/services/spree/report_generation_service.rb +27 -0
  66. data/app/views/spree/admin/insights/_chart.html.erb +4 -0
  67. data/app/views/spree/admin/insights/download.pdf.erb +27 -0
  68. data/app/views/spree/admin/insights/index.html.erb +82 -0
  69. data/app/views/spree/admin/insights/search/_product_views_search.html.erb +13 -0
  70. data/app/views/spree/admin/insights/search/_search_form.html.erb +39 -0
  71. data/app/views/spree/admin/insights/search/_trending_searches_search.html.erb +13 -0
  72. data/app/views/spree/admin/insights/search/_users_not_converted_search.html.erb +13 -0
  73. data/app/views/spree/admin/insights/search/_users_who_have_not_purchased_recently_search.html.erb +13 -0
  74. data/app/views/spree/admin/insights/search/_users_who_recently_purchased_search.html.erb +13 -0
  75. data/app/views/spree/admin/shared/_insights_side_menu.html.erb +5 -0
  76. data/app/views/spree/admin/shared/sub_menu/_insight.html.erb +7 -0
  77. data/app/views/spree/admin/templates/insights/_paginator.template +11 -0
  78. data/app/views/spree/admin/templates/insights/_search.template +76 -0
  79. data/app/views/spree/admin/templates/insights/_show.template +49 -0
  80. data/app/views/spree/layouts/pdf.html.erb +9 -0
  81. data/bin/rails +7 -0
  82. data/config/initializers/add_to_sidebar.rb +14 -0
  83. data/config/initializers/assets.rb +1 -0
  84. data/config/initializers/mime_types.rb +2 -0
  85. data/config/initializers/wicked_pdf.rb +21 -0
  86. data/config/locales/en.yml +167 -0
  87. data/config/routes.rb +6 -0
  88. data/lib/generators/solidus_admin_insights/install/install_generator.rb +36 -0
  89. data/lib/generators/solidus_admin_insights/install/solidus_admin_insights.rb +22 -0
  90. data/lib/solidus_admin_insights.rb +14 -0
  91. data/lib/solidus_admin_insights/engine.rb +27 -0
  92. data/lib/solidus_admin_insights/factories.rb +6 -0
  93. data/solidus_admin_insights.gemspec +42 -0
  94. data/spec/spec_helper.rb +93 -0
  95. metadata +419 -0
@@ -0,0 +1,39 @@
1
+ <div data-hook="admin_insights_sidebar">
2
+ <%= form_tag form_action(@report_name, params[:type]), method: :get, id: "filter-search" do %>
3
+ <div class="quick_search_form">
4
+ </div>
5
+ <div class="row">
6
+ <div class="date-range-filter col-md-8">
7
+ <div class="form-group">
8
+ <div class="row no-padding-bottom">
9
+ <div class="col-md-6">
10
+ <%= label_tag :search_start_date, Spree.t(:start_date) %>
11
+ <div class="input-group">
12
+ <%= text_field_tag 'search[start_date]', params.fetch(:search, {})[:start_date], class: 'datepicker datepicker-from form-control js-filterable', placeholder: Spree.t(:start) %>
13
+ <span class="input-group-addon">
14
+ <i class="fa fa-calendar"></i>
15
+ </span>
16
+ </div>
17
+
18
+ </div>
19
+ <div class="col-md-6">
20
+ <%= label_tag :search_end_date, Spree.t(:end_date) %>
21
+ <div class="input-group">
22
+ <%= text_field_tag 'search[end_date]', params.fetch(:search, {})[:end_date], class: 'datepicker datepicker-to form-control js-filterable', placeholder: Spree.t(:stop) %>
23
+ <span class="input-group-addon">
24
+ <i class="fa fa-calendar"></i>
25
+ </span>
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+
32
+ </div>
33
+
34
+ <div class="form-actions" data-hook="admin_insights_index_search_buttons">
35
+ <%= button Spree.t(:search), 'search' %>
36
+ </div>
37
+
38
+ <% end %>
39
+ </div>
@@ -0,0 +1,13 @@
1
+ <% content_for :quick_search_form do %>
2
+ <div class="row">
3
+ <div class="col col-md-6">
4
+ <div data-hook="admin_property_index_search" class="form-group">
5
+ <%= label_tag :keywords_cont, Spree.t(:search_keywords) %>
6
+ <%= text_field_tag 'search[keywords_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="col-md-6">
11
+ </div>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% content_for :quick_search_form do %>
2
+ <div class="row">
3
+ <div class="col col-md-6">
4
+ <div data-hook="admin_insight_index_search" class="form-group">
5
+ <%= label_tag :email_cont, Spree.t(:email) %>
6
+ <%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="col-md-6">
11
+ </div>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% content_for :quick_search_form do %>
2
+ <div class="row">
3
+ <div class="col col-md-6">
4
+ <div data-hook="admin_insight_index_search" class="form-group">
5
+ <%= label_tag :email_cont, Spree.t(:email) %>
6
+ <%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="col-md-6">
11
+ </div>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <% content_for :quick_search_form do %>
2
+ <div class="row">
3
+ <div class="col col-md-6">
4
+ <div data-hook="admin_insight_index_search" class="form-group">
5
+ <%= label_tag :email_cont, Spree.t(:email) %>
6
+ <%= text_field_tag 'search[email_cont]', '', class: "form-control js-quick-search-target js-filterable" %>
7
+ </div>
8
+ </div>
9
+
10
+ <div class="col-md-6">
11
+ </div>
12
+ </div>
13
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <ul class="admin-subnav" data-hook="admin_insight_sub_tabs">
2
+ <% Spree::ReportGenerationService.reports.each do |report_key, report_value|%>
3
+ <%= tab report_key, url: admin_insight_path(report_category: report_key, id: report_value.first) %>
4
+ <% end %>
5
+ </ul>
@@ -0,0 +1,7 @@
1
+ <% content_for :sub_menu do %>
2
+ <ul id="sidebar-insights" class="inline-menu" data-hook="admin_insight_sub_tabs">
3
+ <% Spree::ReportGenerationService.reports.each do |_key, _value| %>
4
+ <%= tab _key, url: admin_insight_path(report_category: _key, id: _value.first) %>
5
+ <% end %>
6
+ <ul>
7
+ <% end %>
@@ -0,0 +1,11 @@
1
+ <script type="text/x-tmpl" id="paginator-tmpl">
2
+ {% if(o['total_pages'] > 0) { %}
3
+ <nav>
4
+ <ul class="pagination pagination-sm center-block">
5
+ {% for(var i = 0; i <= o['total_pages']; i++) { %}
6
+ <li class="{%= ((o['current_page'] == i) ? 'active' : '') %} page-item"><a href="{%= o['url'] %}&page={%= i %}" class="page-link">{%= i+1 %}</a></li>
7
+ {% } %}
8
+ </ul>
9
+ </nav>
10
+ {% } %}
11
+ </script>
@@ -0,0 +1,76 @@
1
+ <script type="text/x-tmpl" id="search-tmpl">
2
+
3
+ <fieldset>
4
+ <legend align="center">Search</legend>
5
+ <div data-hook="admin_insights_sidebar" class="container">
6
+ <form id="filter-search" action="{%= o['url'] %}" accept-charset="UTF-8" method="get">
7
+
8
+ <div class="quick_search_form">
9
+ </div>
10
+
11
+ <div class="row">
12
+ {% if(o['search_attributes']['name']) { %}
13
+ <div class="one-third column">
14
+ <div data-hook="admin_property_index_search">
15
+ <label for="search_name">{%= o['search_attributes']['name'] %}</label>
16
+ <input type="text" name="search[name]" id="search_name" class="form-control js-quick-search-target js-filterable full-width" placeholder="Name">
17
+ </div>
18
+ </div>
19
+ {% } %}
20
+
21
+ {% if(o['search_attributes']['email_cont']) { %}
22
+ <div class="one-third column">
23
+ <div data-hook="admin_property_index_search">
24
+ <label for="search_email_cont">{%= o['search_attributes']['email_cont'] %}</label>
25
+ <input type="text" name="search[email_cont]" id="search_email_cont" class="form-control js-quick-search-target js-filterable full-width" placeholder="Email">
26
+ </div>
27
+ </div>
28
+ {% } %}
29
+
30
+ {% if(o['search_attributes']['keywords_cont']) { %}
31
+ <div class="one-third column">
32
+ <div data-hook="admin_property_index_search">
33
+ <label for="search_keywords_cont">{%= o['search_attributes']['keywords_cont'] %}</label>
34
+ <input type="text" name="search[keywords_cont]" id="search_keywords_cont" class="form-control js-quick-search-target js-filterable full-width" placeholder="Keyword">
35
+ </div>
36
+ </div>
37
+ {% } %}
38
+
39
+ <div class="row">
40
+ <div class="date-range-filter">
41
+ <div class="form-group">
42
+ <div class="no-padding-bottom">
43
+ <div class="one-third column">
44
+ <label for="search_start_date">{%= o['search_attributes']['start_date'] %}</label>
45
+ <div class="input-group">
46
+ <input type="text" name="search[start_date]" id="search_start_date" class="datepicker datepicker-from form-control js-filterable full-width" placeholder="Start">
47
+ <span class="input-group-addon">
48
+ <i class="fa fa-calendar"></i>
49
+ </span>
50
+ </div>
51
+ </div>
52
+ <div class="one-third column">
53
+ <label for="search_end_date">{%= o['search_attributes']['end_date'] %}</label>
54
+ <div class="input-group">
55
+ <input type="text" name="search[end_date]" id="search_end_date" class="datepicker datepicker-to form-control js-filterable full-width" placeholder="Stop">
56
+ <span class="input-group-addon">
57
+ <i class="fa fa-calendar"></i>
58
+ </span>
59
+ </div>
60
+ </div>
61
+ </div>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+
67
+ <div class="row">
68
+ <div class="form-actions text-center" data-hook="admin_insights_index_search_buttons">
69
+ <button name="button" type="submit" class="fa fa-search button"><span class="icon icon-search"></span> Search</button>
70
+ </div>
71
+ </div>
72
+ </form>
73
+ </div>
74
+ </fieldset>
75
+
76
+ </script>
@@ -0,0 +1,49 @@
1
+ <script type="text/x-tmpl" id="tmpl">
2
+ <table class="table admin-insight table-hover" id="admin-insight">
3
+ <thead>
4
+ <tr>
5
+ {% for(var i = 0; i < o['headers'].length; i++) { %}
6
+ <th>
7
+ {% if(o['headers'][i].sortable) { %}
8
+ <a href="{%= o['request_path'] %}?report_category={%= o['report_category'] %}&sort%5Battribute%5D={%= o['headers'][i].value %}&sort%5Btype%5D={%= (o['headers'][i].sorted == 'asc') ? 'desc' : 'asc' %}" class="sortable-link {%= o['headers'][i].sorted %}" data-attribute="{%= o['headers'][i].value %}">{%= o['headers'][i].name %}
9
+ </a>
10
+ {% if(o['headers'][i].sorted != undefined) { %}
11
+ <span class="sortable-arrow {%= (o['headers'][i].sorted == 'asc') ? 'fa fa-chevron-down' : 'fa fa-chevron-up' %}"></span>
12
+ {% } %}
13
+ {% } else { %}
14
+ {%= o['headers'][i].name %}
15
+ {% } %}
16
+ </th>
17
+ {% } %}
18
+ </tr>
19
+ </thead>
20
+ <tbody class='table-data'>
21
+ {% for(var i = 0; i < o['stats'].length; i++) { %}
22
+ <tr>
23
+ {% for(var j = 0; j < o['headers'].length; j++) { %}
24
+ <td>
25
+ {% if (o['headers'][j].value == 'profit_loss' || o['headers'][j].value == 'profit_loss_percent') { %}
26
+ {%= Math.abs(o['stats'][i][o['headers'][j].value] || 0) %}
27
+ {% if (o['stats'][i][o['headers'][j].value] > 0) { %}
28
+ <span class="fa fa-chevron-up profit-indicator"></span>
29
+ {% } %}
30
+ {% if (o['stats'][i][o['headers'][j].value] < 0) { %}
31
+ <span class="fa fa-chevron-down loss-indicator"></span>
32
+ {% } %}
33
+ {% } else if (o['headers'][j].type == 'integer') { %}
34
+ {%= o['stats'][i][o['headers'][j].value] || 0 %}
35
+ {% } else { %}
36
+ {% if (o['deeplink']['deeplinked'] && o['deeplink'][o['headers'][j].value]) { %}
37
+ {%# tmpl(o['deeplink'][o['headers'][j].value]['template'], o['stats'][i]) %}
38
+ {% } else { %}
39
+ {%= o['stats'][i][o['headers'][j].value] || '-' %}
40
+ {% } %}
41
+ {% } %}
42
+ </td>
43
+ {% } %}
44
+ </tr>
45
+ {% } %}
46
+ </tbody>
47
+ </table>
48
+
49
+ </script>
@@ -0,0 +1,9 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= wicked_pdf_stylesheet_link_tag "spree/backend/override_pdf" -%>
5
+ </head>
6
+ <body>
7
+ <%= yield %>
8
+ </body>
9
+ </html>
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/solidus_admin_insights/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -0,0 +1,14 @@
1
+ REPORT_TABS = [:insights, *Spree::ReportGenerationService.reports.keys.collect(&:to_sym)]
2
+
3
+ Spree::Backend::Config.configure do |config|
4
+ config.menu_items << config.class::MenuItem.new(
5
+ REPORT_TABS,
6
+ 'bar-chart',
7
+ condition: ->{ can?(:display, :insights) },
8
+ partial: 'spree/admin/shared/insights_side_menu'
9
+ )
10
+ end
11
+
12
+ Spree::RoleConfiguration.configure do |config|
13
+ config.assign_permissions :admin, [Spree::PermissionSets::InsightDisplay]
14
+ end
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.precompile += %w( spree/backend/solidus_admin_insights.js )
@@ -0,0 +1,2 @@
1
+ Mime::Type.register "application/xls", :xls
2
+ # Mime::Type.register "application/pdf", :pdf
@@ -0,0 +1,21 @@
1
+ # WickedPDF Global Configuration
2
+ #
3
+ # Use this to set up shared configuration options for your entire application.
4
+ # Any of the configuration options shown here can also be applied to single
5
+ # models by passing arguments to the `render :pdf` call.
6
+ #
7
+ # To learn more, check out the README:
8
+ #
9
+ # https://github.com/mileszs/wicked_pdf/blob/master/README.md
10
+
11
+ WickedPdf.config = {
12
+ # Path to the wkhtmltopdf executable: This usually isn't needed if using
13
+ # one of the wkhtmltopdf-binary family of gems.
14
+ # exe_path: '/usr/local/bin/wkhtmltopdf',
15
+ # or
16
+ # exe_path: Gem.bin_path('wkhtmltopdf-binary', 'wkhtmltopdf')
17
+
18
+ # Layout file to be used for all PDFs
19
+ # (but can be overridden in `render :pdf` calls)
20
+ # layout: 'pdf.html',
21
+ }
@@ -0,0 +1,167 @@
1
+ en:
2
+ spree:
3
+ admin:
4
+ day_name: Day
5
+ hour_name: Hour
6
+ month_name: Month
7
+ year: Year
8
+ tab:
9
+ insights: Insights
10
+ finance_analysis: Finance Analysis
11
+ product_analysis: Product Analysis
12
+ promotion_analysis: Promotion Analysis
13
+ trending_search_analysis: Trending Search Analysis
14
+ user_analysis: User Analysis
15
+ insights: Insights
16
+ insight:
17
+ heading: 'Insights: %{type}'
18
+ tab_heading: Insights
19
+ not_found: Report not found.
20
+ product_views:
21
+ title: Product Show Page Views
22
+ description: To fetch the number of times Product Show page is viewed by the Customers.
23
+ product_name: Product
24
+ views: Total Views
25
+ users: Users(Unique)
26
+ guest_sessions: Guest Sessions
27
+ cart_additions:
28
+ title: Product Add to cart
29
+ additions: Additions
30
+ description: Will project the data about how many times product has been added to the cart.
31
+ product_name: Product
32
+ quantity_change: Cart Addition(Qty)
33
+ sku: Variant
34
+ cart_removals:
35
+ title: Product Removed from cart
36
+ description: Will project the data about how many time product has been removed from cart.
37
+ product_name: Product
38
+ quantity_change: Cart Removal(Qty)
39
+ removals: Removals
40
+ sku: Variant
41
+ cart_updations:
42
+ title: Product Updation
43
+ description: Will project the data about how many times product has been updated from the cart.
44
+ product_name: Product
45
+ quantity_decrease: Quantity Decreased(From Cart)
46
+ quantity_increase: Quantity Increased(From Cart)
47
+ removals: Quantity Removed(From Cart)
48
+ sku: Variant
49
+ updations: Total Updation Requests
50
+ product_views_to_cart_additions:
51
+ title: Product 'Views' To 'Cart Additions'
52
+ description: Ratio of number of views (on product show page) to number of times product has been added to the cart after view.
53
+ cart_additions: Conversion to cart (product qty.)
54
+ product_name: Product
55
+ views: Show page views
56
+ cart_to_view_ratio: Cart To View Ratio
57
+ trending_search:
58
+ title: Trending Searches
59
+ description: You can view/search list of keywords which have been searched by customers.
60
+ searched_term: Searched Term
61
+ occurrences: Occurrences
62
+ users_not_converted:
63
+ title: Users Not Converted
64
+ description: Information about number of registered users who haven’t purchased any product after registration.
65
+ signup_date: Signup At
66
+ user_email: Email
67
+ users_who_recently_purchased:
68
+ title: Users who purchased recently
69
+ description: Number of users who frequently purchased products
70
+ last_purchase_date: Last Purchase At
71
+ last_purchased_order_number: Last Purchased Order
72
+ purchase_count: Purchased Count
73
+ user_email: Email
74
+ users_who_have_not_recently_purchased:
75
+ title: Users who didn't purchase recently
76
+ description: Number of users who have not purchased anything since a particular time period
77
+ last_purchase_date: Last Purchase At
78
+ last_purchased_order_number: Last Purchased Order
79
+ user_email: Email
80
+ user_pool:
81
+ title: User Pool
82
+ description: To view monthly stats about type of users who visited site
83
+ months_name: Month
84
+ guest_users: Guests
85
+ active_users: Active Users(Registered)
86
+ new_sign_ups: New Users
87
+ payment_method_transactions:
88
+ title: Payment Method Transactions Count
89
+ description: Transactions from different payment methods
90
+ payment_method_name: Payment Method
91
+ payment_amount: Transaction Amount
92
+ months_name: Month
93
+ payment_method_transactions_conversion_rate:
94
+ payment_method_name: Payment Method
95
+ title: Payment Method Transaction Conversion Rate
96
+ description: Success/Failure rate of different payment methods
97
+ months_name: Month
98
+ payment_state: Payment State
99
+ count: Count
100
+ promotional_cost:
101
+ title: Promotional Cost
102
+ description: Total money invested on a particular promotion - Admin will view total money invested, total revenue and profit from a particular promotion.
103
+ promotion_code: Code
104
+ promotion_discount: Discount
105
+ promotion_name: Promotion
106
+ promotion_start_date: Start Date
107
+ promotion_end_date: End Date
108
+ usage_count: Usage Count
109
+ months_name: Month
110
+ annual_promotional_cost:
111
+ title: Annual Promotional Cost
112
+ description: Total money invested on a particular promotion - Admin will view total money invested, total revenue and profit from a particular promotion.
113
+ promotion_discount: Discount
114
+ promotion_name: Promotion
115
+ usage_count: Usage Count
116
+ sales_performance:
117
+ title: Sales Performance
118
+ description: Info about revenue, tax, shipment total and return amount.
119
+ adjustment_total: Adjustment Total
120
+ cost_price: Cost Price
121
+ months_name: Month
122
+ profit_loss: Profit/Loss
123
+ profit_loss_percent: Profit/Loss %
124
+ refund_amount: Refund Amount
125
+ revenue: Revenue
126
+ sale_price: Sale Price
127
+ shipping_charges: Shipping Charges
128
+ tax: Tax
129
+ promotion_discount: Promotional Discounts
130
+ unique_purchases:
131
+ title: Unique Purchases
132
+ description: Will project the data about how many unique users have purchased a particular product.
133
+ product_name: Product
134
+ sku: Variant
135
+ sold_count: Sold Count
136
+ users: Users
137
+ best_selling_products:
138
+ title: Best Selling Products
139
+ description: Best/least Selling Products as per maximum quantities purchased.
140
+ product_name: Product
141
+ sku: Variant
142
+ sold_count: Sold Quantity
143
+ product_views_to_purchases:
144
+ title: Product 'Views' To 'Purchases'
145
+ description: Ratio of number of views (on product show page) to number of times product has been purchased after view.
146
+ product_name: Product
147
+ purchases: Purchases
148
+ views: Views
149
+ purchase_to_view_ratio: Purchase To View Ratio
150
+ returned_products:
151
+ title: Product Returned
152
+ description: Number of products returned
153
+ product_name: Product
154
+ return_count: Returned Count
155
+ sku: Variant
156
+ shipping_cost:
157
+ title: Shipping Cost
158
+ name: Shipping Method Name
159
+ months_name: Month
160
+ shipping_charge: Shipping Charge
161
+ revenue: Revenue
162
+ shipping_cost_percentage: Shipping Cost %
163
+ sales_tax:
164
+ title: Sales Tax
165
+ months_name: Month
166
+ zone_name: Zone
167
+ sales_tax: Sales Tax