From 9e874af9bad4abf01ddad44d983813190cf83bf5 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 18 Jul 2018 09:28:44 +0530 Subject: [PATCH] Query report print (#14935) * QueryReport - Only print visible columns in report - Use get_columns_for_print method instead of directly accessing report.columns * Query Report - Replace frappe.query_report_filters_by_name with new API --- .../accounts_payable/accounts_payable.js | 4 +-- .../accounts_receivable.js | 6 ++--- .../accounts/report/financial_statements.html | 14 +++++----- .../report/general_ledger/general_ledger.js | 27 +++++++++---------- .../payment_period_based_on_invoice_date.js | 4 +-- .../profitability_analysis.js | 9 ++++--- .../report/trial_balance/trial_balance.js | 7 ++--- .../trial_balance_for_party.js | 11 ++++---- .../quoted_item_comparison.js | 2 +- .../course_wise_assessment_report.html | 15 ++++++----- .../final_assessment_grades.js | 2 +- .../student_monthly_attendance_sheet.js | 2 +- .../monthly_attendance_sheet.js | 2 +- .../salary_register/salary_register.html | 13 +++++---- .../vehicle_expenses/vehicle_expenses.js | 8 +++--- .../bom_variance_report.js | 2 +- erpnext/public/js/financial_statements.js | 2 +- erpnext/regional/report/gstr_1/gstr_1.js | 2 +- .../address_and_contacts.js | 2 +- 19 files changed, 72 insertions(+), 62 deletions(-) diff --git a/erpnext/accounts/report/accounts_payable/accounts_payable.js b/erpnext/accounts/report/accounts_payable/accounts_payable.js index 1066a3eb77..d859d595bb 100644 --- a/erpnext/accounts/report/accounts_payable/accounts_payable.js +++ b/erpnext/accounts/report/accounts_payable/accounts_payable.js @@ -22,9 +22,9 @@ frappe.query_reports["Accounts Payable"] = { "fieldtype": "Link", "options": "Supplier", on_change: () => { - var supplier = frappe.query_report_filters_by_name.supplier.get_value(); + var supplier = frappe.query_report.get_filter_value('supplier'); frappe.db.get_value('Supplier', supplier, "tax_id", function(value) { - frappe.query_report_filters_by_name.tax_id.set_value(value["tax_id"]); + frappe.query_report.set_filter_value('tax_id', value["tax_id"]); }); } }, diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js index d421b6ec96..fda496057f 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.js +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.js @@ -22,10 +22,10 @@ frappe.query_reports["Accounts Receivable"] = { "fieldtype": "Link", "options": "Customer", on_change: () => { - var customer = frappe.query_report_filters_by_name.customer.get_value(); + var customer = frappe.query_report.get_filter_value('customer'); frappe.db.get_value('Customer', customer, ["tax_id", "customer_name"], function(value) { - frappe.query_report_filters_by_name.tax_id.set_value(value["tax_id"]); - frappe.query_report_filters_by_name.customer_name.set_value(value["customer_name"]); + frappe.query_report.set_filter_value('tax_id', value["tax_id"]); + frappe.query_report.set_filter_value('customer_name', value["customer_name"]); }); } }, diff --git a/erpnext/accounts/report/financial_statements.html b/erpnext/accounts/report/financial_statements.html index 38fa3ce235..e475a1c791 100644 --- a/erpnext/accounts/report/financial_statements.html +++ b/erpnext/accounts/report/financial_statements.html @@ -1,5 +1,7 @@ {% - if (report.columns.length > 8) { + var report_columns = report.get_columns_for_print(); + + if (report_columns.length > 8) { frappe.throw(__("Too many columns. Export the report and print it using a spreadsheet application.")); } %} @@ -30,9 +32,9 @@ - - {% for(var i=2, l=report.columns.length; i{%= report.columns[i].label %} + + {% for(var i=2, l=report_columns.length; i{%= report_columns[i].label %} {% } %} @@ -47,9 +49,9 @@ - {% for(var i=2, l=report.columns.length; i - {% var fieldname = report.columns[i].field || report.columns[i].fieldname; %} + {% var fieldname = report_columns[i].field || report_columns[i].fieldname; %} {% if (!is_null(row[fieldname])) { %} {%= format_currency(row[fieldname], filters.presentation_currency) %} {% } %} diff --git a/erpnext/accounts/report/general_ledger/general_ledger.js b/erpnext/accounts/report/general_ledger/general_ledger.js index e3d615121e..0663228b56 100644 --- a/erpnext/accounts/report/general_ledger/general_ledger.js +++ b/erpnext/accounts/report/general_ledger/general_ledger.js @@ -39,7 +39,7 @@ frappe.query_reports["General Ledger"] = { "fieldtype": "Link", "options": "Account", "get_query": function() { - var company = frappe.query_report_filters_by_name.company.get_value(); + var company = frappe.query_report.get_filter_value('company'); return { "doctype": "Account", "filters": { @@ -53,7 +53,7 @@ frappe.query_reports["General Ledger"] = { "label": __("Voucher No"), "fieldtype": "Data", on_change: function() { - frappe.query_report_filters_by_name.group_by.set_value(""); + frappe.query_report.set_filter_value('group_by', ""); } }, { @@ -72,7 +72,7 @@ frappe.query_reports["General Ledger"] = { "options": "Party Type", "default": "", on_change: function() { - frappe.query_report_filters_by_name.party.set_value(""); + frappe.query_report.set_filter_value('party', ""); } }, { @@ -80,10 +80,8 @@ frappe.query_reports["General Ledger"] = { "label": __("Party"), "fieldtype": "MultiSelect", get_data: function() { - if(!frappe.query_report_filters_by_name) return; - - var party_type = frappe.query_report_filters_by_name.party_type.get_value(); - var parties = frappe.query_report_filters_by_name.party.get_value(); + var party_type = frappe.query_report.get_filter_value('party_type'); + var parties = frappe.query_report.get_filter_value('party'); if(!party_type) return; const values = parties.split(/\s*,\s*/).filter(d => d); @@ -96,7 +94,7 @@ frappe.query_reports["General Ledger"] = { async: false, no_spinner: true, args: { - doctype: frappe.query_report_filters_by_name.party_type.get_value(), + doctype: frappe.query_report.get_filter_value('party_type'), txt: txt, filters: { "name": ["not in", values] @@ -109,25 +107,24 @@ frappe.query_reports["General Ledger"] = { return data; }, on_change: function() { - var party_type = frappe.query_report_filters_by_name.party_type.get_value(); - var parties = frappe.query_report_filters_by_name.party.get_value(); + var party_type = frappe.query_report.get_filter_value('party_type'); + var parties = frappe.query_report.get_filter_value('party'); const values = parties.split(/\s*,\s*/).filter(d => d); if(!party_type || !parties || values.length>1) { - frappe.query_report_filters_by_name.party_name.set_value(""); - frappe.query_report_filters_by_name.tax_id.set_value(""); + frappe.query_report.set_filter_value('party_name', ""); + frappe.query_report.set_filter_value('tax_id', ""); return; } else { var party = values[0]; - frappe.query_report_filters_by_name.show_name = true; var fieldname = erpnext.utils.get_party_name(party_type) || "name"; frappe.db.get_value(party_type, party, fieldname, function(value) { - frappe.query_report_filters_by_name.party_name.set_value(value[fieldname]); + frappe.query_report.set_filter_value('party_name', value[fieldname]); }); if (party_type === "Customer" || party_type === "Supplier") { frappe.db.get_value(party_type, party, "tax_id", function(value) { - frappe.query_report_filters_by_name.tax_id.set_value(value["tax_id"]); + frappe.query_report.set_filter_value('tax_id', value["tax_id"]); }); } } diff --git a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js index 9d4a3527a9..ca243944e9 100644 --- a/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js +++ b/erpnext/accounts/report/payment_period_based_on_invoice_date/payment_period_based_on_invoice_date.js @@ -46,8 +46,8 @@ frappe.query_reports["Payment Period Based On Invoice Date"] = { "label": __("Party"), "fieldtype": "Dynamic Link", "get_options": function() { - var party_type = frappe.query_report_filters_by_name.party_type.get_value(); - var party = frappe.query_report_filters_by_name.party.get_value(); + var party_type = frappe.query_report.get_filter_value('party_type'); + var party = frappe.query_report.get_filter_value('party'); if(party && !party_type) { frappe.throw(__("Please select Party Type first")); } diff --git a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js index a25fa56325..33a2948429 100644 --- a/erpnext/accounts/report/profitability_analysis/profitability_analysis.js +++ b/erpnext/accounts/report/profitability_analysis/profitability_analysis.js @@ -34,9 +34,10 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { } frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) { var fy = frappe.model.get_doc("Fiscal Year", fiscal_year); - frappe.query_report_filters_by_name.from_date.set_input(fy.year_start_date); - frappe.query_report_filters_by_name.to_date.set_input(fy.year_end_date); - query_report.trigger_refresh(); + frappe.query_report.set_filter_value({ + from_date: fy.year_start_date, + to_date: fy.year_end_date + }); }); } }, @@ -84,7 +85,7 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { if (!data.account) return; frappe.route_options = { - "company": frappe.query_report_filters_by_name.company.get_value(), + "company": frappe.query_report.get_filter_value('company'), "from_fiscal_year": data.fiscal_year, "to_fiscal_year": data.fiscal_year }; diff --git a/erpnext/accounts/report/trial_balance/trial_balance.js b/erpnext/accounts/report/trial_balance/trial_balance.js index ff198e9d3e..8e95d8cc9c 100644 --- a/erpnext/accounts/report/trial_balance/trial_balance.js +++ b/erpnext/accounts/report/trial_balance/trial_balance.js @@ -26,9 +26,10 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { } frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) { var fy = frappe.model.get_doc("Fiscal Year", fiscal_year); - frappe.query_report_filters_by_name.from_date.set_input(fy.year_start_date); - frappe.query_report_filters_by_name.to_date.set_input(fy.year_end_date); - query_report.trigger_refresh(); + frappe.query_report.set_filter_value({ + from_date: fy.year_start_date, + to_date: fy.year_end_date + }); }); } }, diff --git a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js index 29f798ef5b..873c65ebf1 100644 --- a/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js +++ b/erpnext/accounts/report/trial_balance_for_party/trial_balance_for_party.js @@ -25,9 +25,10 @@ frappe.query_reports["Trial Balance for Party"] = { } frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) { var fy = frappe.model.get_doc("Fiscal Year", fiscal_year); - frappe.query_report_filters_by_name.from_date.set_input(fy.year_start_date); - frappe.query_report_filters_by_name.to_date.set_input(fy.year_end_date); - query_report.trigger_refresh(); + frappe.query_report.set_filter_value({ + from_date: fy.year_start_date, + to_date: fy.year_end_date + }); }); } }, @@ -56,8 +57,8 @@ frappe.query_reports["Trial Balance for Party"] = { "label": __("Party"), "fieldtype": "Dynamic Link", "get_options": function() { - var party_type = frappe.query_report_filters_by_name.party_type.get_value(); - var party = frappe.query_report_filters_by_name.party.get_value(); + var party_type = frappe.query_report.get_filter_value('party_type'); + var party = frappe.query_report.get_filter_value('party'); if(party && !party_type) { frappe.throw(__("Please select Party Type first")); } diff --git a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js index 41d9ef38b0..3d05612c9e 100644 --- a/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js +++ b/erpnext/buying/report/quoted_item_comparison/quoted_item_comparison.js @@ -21,7 +21,7 @@ frappe.query_reports["Quoted Item Comparison"] = { fieldname: "item", fieldtype: "Link", get_query: () => { - let quote = frappe.query_report_filters_by_name.supplier_quotation.get_value(); + let quote = frappe.query_report.get_filter_value('supplier_quotation'); if (quote != "") { return { query: "erpnext.stock.doctype.quality_inspection.quality_inspection.item_query", diff --git a/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.html b/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.html index e46a5e764a..e2df273c69 100644 --- a/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.html +++ b/erpnext/education/report/course_wise_assessment_report/course_wise_assessment_report.html @@ -1,5 +1,8 @@ -{% var letterhead= filters.letter_head || (frappe.get_doc(":Company", filters.company) && frappe.get_doc(":Company", filters.company).default_letter_head) || frappe.defaults.get_default("letter_head"); %} -{% if(letterhead) { %} +{% + var letterhead = filters.letter_head || (frappe.get_doc(":Company", filters.company) && frappe.get_doc(":Company", filters.company).default_letter_head) || frappe.defaults.get_default("letter_head"); + var report_columns = report.get_columns_for_print(); +%} +{% if(letterhead) { %}
{%= frappe.boot.letter_heads[letterhead].header %}
@@ -20,8 +23,8 @@
{%= row.account_name %}
- {% for(var i=1, l=report.columns.length; i{%= report.columns[i].label %} + {% for(var i=1, l=report_columns.length; i{%= report_columns[i].label %} {% } %} @@ -31,9 +34,9 @@ var row = data[j]; %} - {% for(var i=1, l=report.columns.length; i - {% var fieldname = report.columns[i].field; %} + {% var fieldname = report_columns[i].field; %} {% if (!is_null(row[fieldname])) { %} {%= row[fieldname] %} {% } %} diff --git a/erpnext/education/report/final_assessment_grades/final_assessment_grades.js b/erpnext/education/report/final_assessment_grades/final_assessment_grades.js index ba0a42ff90..ddff8a884e 100644 --- a/erpnext/education/report/final_assessment_grades/final_assessment_grades.js +++ b/erpnext/education/report/final_assessment_grades/final_assessment_grades.js @@ -21,7 +21,7 @@ frappe.query_reports["Final Assessment Grades"] = { return{ filters: { "group_based_on": "Batch", - "academic_year": frappe.query_report_filters_by_name.academic_year.value + "academic_year": frappe.query_report.get_filter_value('academic_year') } }; } diff --git a/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js b/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js index 402bb02e97..104d3ec06f 100644 --- a/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js +++ b/erpnext/education/report/student_monthly_attendance_sheet/student_monthly_attendance_sheet.js @@ -31,7 +31,7 @@ frappe.query_reports["Student Monthly Attendance Sheet"] = { return frappe.call({ method: "erpnext.education.report.student_monthly_attendance_sheet.student_monthly_attendance_sheet.get_attendance_years", callback: function(r) { - var year_filter = frappe.query_report_filters_by_name.year; + var year_filter = frappe.query_report.get_filter('year'); year_filter.df.options = r.message; year_filter.df.default = r.message.split("\n")[0]; year_filter.refresh(); diff --git a/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.js b/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.js index b1678db6ab..348c5e7cb7 100644 --- a/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.js +++ b/erpnext/hr/report/monthly_attendance_sheet/monthly_attendance_sheet.js @@ -38,7 +38,7 @@ frappe.query_reports["Monthly Attendance Sheet"] = { return frappe.call({ method: "erpnext.hr.report.monthly_attendance_sheet.monthly_attendance_sheet.get_attendance_years", callback: function(r) { - var year_filter = frappe.query_report_filters_by_name.year; + var year_filter = frappe.query_report.get_filter('year'); year_filter.df.options = r.message; year_filter.df.default = r.message.split("\n")[0]; year_filter.refresh(); diff --git a/erpnext/hr/report/salary_register/salary_register.html b/erpnext/hr/report/salary_register/salary_register.html index 74ecff9c4a..a322bd4042 100644 --- a/erpnext/hr/report/salary_register/salary_register.html +++ b/erpnext/hr/report/salary_register/salary_register.html @@ -1,3 +1,6 @@ +{% + var report_columns = report.get_columns_for_print(); +%}
{%= frappe.boot.letter_heads[filters.letter_head || frappe.defaults.get_default("letter_head")] %}
@@ -7,8 +10,8 @@
- {% for(var i=1, l=report.columns.length; i{%= report.columns[i].label %} + {% for(var i=1, l=report_columns.length; i{%= report_columns[i].label %} {% } %} @@ -18,10 +21,10 @@ var row = data[j]; %} - {% for(var i=1, l=report.columns.length; i - {% var fieldname = report.columns[i].field; %} - {% if (report.columns[i].fieldtype=='Currency' && !isNaN(row[fieldname])) { %} + {% var fieldname = report_columns[i].field; %} + {% if (report_columns[i].fieldtype=='Currency' && !isNaN(row[fieldname])) { %} {%= format_currency(row[fieldname]) %} {% } else { %} {% if (!is_null(row[fieldname])) { %} diff --git a/erpnext/hr/report/vehicle_expenses/vehicle_expenses.js b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.js index 486d259227..b66bebbec1 100644 --- a/erpnext/hr/report/vehicle_expenses/vehicle_expenses.js +++ b/erpnext/hr/report/vehicle_expenses/vehicle_expenses.js @@ -17,9 +17,11 @@ frappe.require("assets/erpnext/js/financial_statements.js", function() { } frappe.model.with_doc("Fiscal Year", fiscal_year, function(r) { var fy = frappe.model.get_doc("Fiscal Year", fiscal_year); - frappe.query_report_filters_by_name.from_date.set_input(fy.year_start_date); - frappe.query_report_filters_by_name.to_date.set_input(fy.year_end_date); - query_report.trigger_refresh(); + + frappe.query_report.set_filter({ + from_date: fy.year_start_date, + to_date: fy.year_end_date + }); }); } } diff --git a/erpnext/manufacturing/report/bom_variance_report/bom_variance_report.js b/erpnext/manufacturing/report/bom_variance_report/bom_variance_report.js index 97ba7b9131..c6ecaef2fa 100644 --- a/erpnext/manufacturing/report/bom_variance_report/bom_variance_report.js +++ b/erpnext/manufacturing/report/bom_variance_report/bom_variance_report.js @@ -16,7 +16,7 @@ frappe.query_reports["BOM Variance Report"] = { "fieldtype": "Link", "options": "Work Order", "get_query": function() { - var bom_no = frappe.query_report_filters_by_name.bom_no.get_value(); + var bom_no = frappe.query_report.get_filter_value('bom_no'); return{ query: "erpnext.manufacturing.report.bom_variance_report.bom_variance_report.get_work_orders", filters: { diff --git a/erpnext/public/js/financial_statements.js b/erpnext/public/js/financial_statements.js index 7e31c573c5..b7bb77e5ed 100644 --- a/erpnext/public/js/financial_statements.js +++ b/erpnext/public/js/financial_statements.js @@ -30,7 +30,7 @@ erpnext.financial_statements = { frappe.route_options = { "account": data.account, - "company": frappe.query_report_filters_by_name.company.get_value(), + "company": frappe.query_report.get_filter_value('company'), "from_date": data.from_date || data.year_start_date, "to_date": data.to_date || data.year_end_date, "project": (project && project.length > 0) ? project[0].$input.val() : "" diff --git a/erpnext/regional/report/gstr_1/gstr_1.js b/erpnext/regional/report/gstr_1/gstr_1.js index b2c8aed6e3..9246aa6724 100644 --- a/erpnext/regional/report/gstr_1/gstr_1.js +++ b/erpnext/regional/report/gstr_1/gstr_1.js @@ -17,7 +17,7 @@ frappe.query_reports["GSTR-1"] = { "fieldtype": "Link", "options": "Address", "get_query": function() { - var company = frappe.query_report_filters_by_name.company.get_value(); + var company = frappe.query_report.get_filter_value('company'); if (company) { return { "query": 'frappe.contacts.doctype.address.address.address_query', diff --git a/erpnext/selling/report/address_and_contacts/address_and_contacts.js b/erpnext/selling/report/address_and_contacts/address_and_contacts.js index 383f18b496..ef87586f66 100644 --- a/erpnext/selling/report/address_and_contacts/address_and_contacts.js +++ b/erpnext/selling/report/address_and_contacts/address_and_contacts.js @@ -23,7 +23,7 @@ frappe.query_reports["Address And Contacts"] = { "label": __("Party Name"), "fieldtype": "Dynamic Link", "get_options": function() { - let party_type = frappe.query_report_filters_by_name.party_type.get_value(); + let party_type = frappe.query_report.get_filter_value('party_type'); if(!party_type) { frappe.throw(__("Please select Party Type first")); }