diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb index 9c88a0bd09..a348907f2e 100644 --- a/app/controllers/admin/reports_controller.rb +++ b/app/controllers/admin/reports_controller.rb @@ -51,11 +51,7 @@ module Admin # Initialize data params[:display_summary_row] = true if request.get? - @params_fields_to_show = if request.get? - @report.columns.keys - @report.fields_to_hide - else - params[:fields_to_show] - end + @params_fields_to_show = render_options.options[:fields_to_show] @data = Reporting::FrontendData.new(spree_current_user) end diff --git a/app/controllers/concerns/reports_actions.rb b/app/controllers/concerns/reports_actions.rb index 6cd9e5157c..5a06159000 100644 --- a/app/controllers/concerns/reports_actions.rb +++ b/app/controllers/concerns/reports_actions.rb @@ -62,4 +62,23 @@ module ReportsActions def i18n_scope 'admin.reports' end + + def render_options + @render_options ||= ReportRenderingOptions.where( + user: spree_current_user, + report_type: report_type, + report_subtype: report_subtype + ).first_or_create do |new_instance| + new_instance.options[:fields_to_show] = if @report.present? + @report.columns.keys - @report.fields_to_hide + else + [] + end + end + if params[:fields_to_show].present? + @render_options.options[:fields_to_show] = params[:fields_to_show] + @render_options.save + end + @render_options + end end