From dec3f07d01e8d815c5daf2c8fae43ac01709a2d4 Mon Sep 17 00:00:00 2001 From: Abdeali Chharchhodawala <99460106+Abdeali099@users.noreply.github.com> Date: Tue, 23 Dec 2025 11:12:10 +0530 Subject: [PATCH] fix: prevent empty filter export in query report (#35357) --- frappe/desk/query_report.py | 5 +-- .../js/frappe/views/reports/query_report.js | 39 ++++++++++--------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/frappe/desk/query_report.py b/frappe/desk/query_report.py index 00a387c3f6..6107c9b512 100644 --- a/frappe/desk/query_report.py +++ b/frappe/desk/query_report.py @@ -497,10 +497,9 @@ def build_xlsx_data( include_hidden_columns = cint(include_hidden_columns) include_indentation = cint(include_indentation) - if cint(include_filters): + if cint(include_filters) and data.filters: filter_data = [] - filters = data.filters - for filter_name, filter_value in filters.items(): + for filter_name, filter_value in data.filters.items(): if not filter_value: continue filter_value = ( diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index a481067950..19344cc4ed 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1629,13 +1629,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { } export_report() { - if (this.export_dialog) { - this.export_dialog.clear(); - this.export_dialog.show(); - return; - } - - let extra_fields = []; + const extra_fields = []; + const applied_filters = this.get_applied_filters(this.get_filter_values()); if (this.tree_report) { extra_fields.push({ @@ -1645,7 +1640,7 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }); } - if (this.filters.length > 0) { + if (applied_filters && Object.keys(applied_filters).length > 0) { extra_fields.push({ label: __("Include filters"), fieldname: "include_filters", @@ -1691,17 +1686,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { }) => { this.make_access_log("Export", file_format); - let filters = this.get_filter_values(true); - let boolean_labels = { 1: __("Yes"), 0: __("No") }; - let applied_filters = {}; - - for (const [key, value] of Object.entries(filters)) { - const df = frappe.query_report.get_filter(key).df; - if (!df.hidden_due_to_dependency) { - applied_filters[df.label] = - df.fieldtype === "Check" ? boolean_labels[value] : value; - } - } + const filters = this.get_filter_values(true); + const applied_filters = this.get_applied_filters(filters); if (this.prepared_report_name) { filters.prepared_report_name = this.prepared_report_name; @@ -1742,6 +1728,21 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { this.export_dialog.show(); } + get_applied_filters(filters) { + const boolean_labels = { 1: __("Yes"), 0: __("No") }; + const applied_filters = {}; + + for (const [key, value] of Object.entries(filters)) { + const df = frappe.query_report.get_filter(key).df; + if (!df.hidden_due_to_dependency) { + applied_filters[df.label] = + df.fieldtype === "Check" ? boolean_labels[value] : value; + } + } + + return applied_filters; + } + get_data_for_csv(include_indentation) { const rows = this.datatable.bodyRenderer.visibleRows; if (this.raw_data.add_total_row) {