From 6dc9e50bd6233377fad542488d7649606ec6b348 Mon Sep 17 00:00:00 2001 From: Kaushal Shriwas Date: Sat, 17 Jan 2026 17:30:01 +0530 Subject: [PATCH 1/3] fix: Show alert if report is empty --- frappe/public/js/frappe/views/reports/query_report.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index c4e76c9d83..ce07f9053f 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -1856,6 +1856,10 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { { label: __("Print"), action: () => { + if (!this.data?.length) { + frappe.msgprint(__("This report is empty.")); + return; + } let dialog = frappe.ui.get_print_settings( false, (print_settings) => this.print_report(print_settings), @@ -1871,6 +1875,10 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { { label: __("PDF"), action: () => { + if (!this.data?.length) { + frappe.msgprint(__("This report is empty.")); + return; + } let dialog = frappe.ui.get_print_settings( false, (print_settings) => this.pdf_report(print_settings), From c6ef0bc5975e6fd1b31178e4eab9b5d75d144374 Mon Sep 17 00:00:00 2001 From: Kaushal Shriwas Date: Tue, 20 Jan 2026 16:10:28 +0530 Subject: [PATCH 2/3] fix: Hide print and pdf button if report has no data --- .../js/frappe/views/reports/query_report.js | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index ce07f9053f..db7375342c 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -812,11 +812,13 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { this.render_datatable(); this.add_chart_buttons_to_toolbar(true); this.add_card_button_to_toolbar(); + this.toggle_print_buttons(true); this.$report.show(); } else { this.data = []; this.toggle_nothing_to_show(true); this.add_chart_buttons_to_toolbar(false); + this.toggle_print_buttons(false); } this.show_footer_message(); @@ -1856,10 +1858,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { { label: __("Print"), action: () => { - if (!this.data?.length) { - frappe.msgprint(__("This report is empty.")); - return; - } let dialog = frappe.ui.get_print_settings( false, (print_settings) => this.print_report(print_settings), @@ -1875,10 +1873,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { { label: __("PDF"), action: () => { - if (!this.data?.length) { - frappe.msgprint(__("This report is empty.")); - return; - } let dialog = frappe.ui.get_print_settings( false, (print_settings) => this.pdf_report(print_settings), @@ -1886,7 +1880,6 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { this.get_visible_columns(), true ); - this.add_portrait_warning(dialog); }, condition: () => frappe.model.can_print(this.report_doc.ref_doctype), @@ -2307,6 +2300,16 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { this.$summary.toggle(flag); } + toggle_print_buttons(show) { + const menu = this.page.menu; + menu.find(`a:contains("${__("Print")}")`) + .parent() + .toggle(show); + menu.find(`a:contains("${__("PDF")}")`) + .parent() + .toggle(show); + } + get_checked_items(only_docnames) { const indexes = this.datatable.rowmanager.getCheckedRows(); From 385ddbb68a0f211f565347324276bd58e0c6662a Mon Sep 17 00:00:00 2001 From: Kaushal Shriwas Date: Wed, 21 Jan 2026 17:00:04 +0530 Subject: [PATCH 3/3] fix: Use data-label attribute for selecting the element --- frappe/public/js/frappe/views/reports/query_report.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/frappe/public/js/frappe/views/reports/query_report.js b/frappe/public/js/frappe/views/reports/query_report.js index db7375342c..5611666493 100644 --- a/frappe/public/js/frappe/views/reports/query_report.js +++ b/frappe/public/js/frappe/views/reports/query_report.js @@ -2302,12 +2302,8 @@ frappe.views.QueryReport = class QueryReport extends frappe.views.BaseList { toggle_print_buttons(show) { const menu = this.page.menu; - menu.find(`a:contains("${__("Print")}")`) - .parent() - .toggle(show); - menu.find(`a:contains("${__("PDF")}")`) - .parent() - .toggle(show); + menu.find('[data-label="Print"]').parent().parent().toggle(show); + menu.find('[data-label="PDF"]').parent().parent().toggle(show); } get_checked_items(only_docnames) {