From ffc59ebc9c6e9da933a68641b5f94302c59d23a9 Mon Sep 17 00:00:00 2001 From: Shllokkk Date: Thu, 26 Mar 2026 22:24:56 +0530 Subject: [PATCH 1/4] fix: improve design and refactor ar print template --- .../accounts_receivable.html | 480 ++++++++---------- 1 file changed, 203 insertions(+), 277 deletions(-) diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html index 0109b957c1e..b7626ded0dc 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -1,291 +1,217 @@ - + + +
+ +
+ + +
+
+ {%= __(report.report_name) %} +
+
+ + +
+
+
+ {%= __("Customer") %}: + {%= + (filters.party.length && filters.party.join(", ")) || "All Parties" + %} +
+
+ +
+
+ {%= __("Report Date") %}: + {%= frappe.datetime.str_to_user(filters.report_date) %} +
+
+
+ + +
+ - - - - - - - - + + + + {% if(filters.show_remarks) { %} + + {% } %} + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + {% for(var i=0, l=data.length; i + + + + + + + {% } %} +
{%= __(" ") %}{%= __(range1) %}{%= __(range2) %}{%= __(range3) %}{%= __(range4) %}{%= __(range5) %}{%= __(range6) %}{%= __("Total") %}{%= __("Date") %}{%= __("Reference") %} + {% if(i != data.length - 1 && data[i]["remarks"] && data[i]["remarks"] != "No Remarks") { %} + {%= data[i]["remarks"] %} + {% } %} + {%= __("Age (Days)") %}{%= __("Invoiced Amount") %}{%= __("Outstanding Amount") %}
{%= __("Total Outstanding") %} - {%= format_number(balance_row["age"], null, 2) %} - - {%= format_currency(balance_row["range1"], data[data.length-1]["currency"]) %} - - {%= format_currency(balance_row["range2"], data[data.length-1]["currency"]) %} - - {%= format_currency(balance_row["range3"], data[data.length-1]["currency"]) %} - - {%= format_currency(balance_row["range4"], data[data.length-1]["currency"]) %} - - {%= format_currency(balance_row["range5"], data[data.length-1]["currency"]) %} - - {%= format_currency(flt(balance_row["outstanding"]), data[data.length-1]["currency"]) %} -
{%= __("Future Payments") %} - {%= format_currency(flt(balance_row[("future_amount")]), data[data.length-1]["currency"]) %} -
{%= frappe.datetime.str_to_user(data[i]["posting_date"]) %} + {% if(i == data.length - 1) { %} + {%= __("Total") %} + {% } else { %} + {%= data[i]["voucher_no"] %} + {% } %} + {%= data[i]["age"] %}{%= format_currency(data[i]["invoiced"], data[i]["currency"]) %}{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}
+
+ +   + + {% if(filters.show_future_payments) { %} + {% + var balance_row = data.slice(-1).pop(); + var start = report.columns.findIndex(e => e.fieldname == 'age'); + var currency = data[data.length - 1]["currency"]; + + var ranges = [ + report.columns[start].label, + report.columns[start+1].label, + report.columns[start+2].label, + report.columns[start+3].label, + report.columns[start+4].label, + report.columns[start+5].label + ]; + %} + + {% if(balance_row) { %} +
+ + + + + {% for(var i = 0; i < ranges.length; i++) { %} + + {% } %} + + + + + + + + + + + + + + + +
{%= __(ranges[i]) %}{%= __("Total") %}
{%= __("Total Outstanding") %}{%= format_number(balance_row["age"], null, 2) %}{%= format_currency(balance_row["range1"], currency) %}{%= format_currency(balance_row["range2"], currency) %}{%= format_currency(balance_row["range3"], currency) %}{%= format_currency(balance_row["range4"], currency) %}{%= format_currency(balance_row["range5"], currency) %}{%= format_currency(flt(balance_row["outstanding"]), currency) %}
+
{% } %} {% } %} - - - - {% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %} - - - {% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %} - - - {% } else { %} - - {% } %} - {% if(!filters.show_future_payments) { %} - - {% } %} - - {% if(!filters.show_future_payments) { %} - - - {% } %} - - {% if(filters.show_future_payments) { %} - {% if(report.report_name === "Accounts Receivable") { %} - - {% } %} - - - - {% } %} - {% } else { %} - - - - - - {% } %} - - -
- {% if subtitle %} - {{ subtitle }} -
- {% endif %} -
- - {% for(var i=0, l=data.length; i - {% if(report.report_name === "Accounts Receivable" || report.report_name === "Accounts Payable") { %} - {% if(data[i]["party"]) { %} - - - +

+ {%= __("Printed on {0}", [ + frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string()) + ]) %} +

- {% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %} - - {% } %} - - {% if(!filters.show_future_payments) { %} - - {% } %} - - - - {% if(!filters.show_future_payments) { %} - - - {% } %} - - - {% if(filters.show_future_payments) { %} - {% if(report.report_name === "Accounts Receivable") { %} - - {% } %} - - - - {% } %} - {% } else { %} - - {% if(!filters.show_future_payments) { %} - - {% } %} - {% if(report.report_name === "Accounts Receivable" && filters.show_sales_person) { %} - - {% } %} - - - - - {% if(!filters.show_future_payments) { %} - - - {% } %} - - - {% if(filters.show_future_payments) { %} - {% if(report.report_name === "Accounts Receivable") { %} - - {% } %} - - - - {% } %} - {% } %} - {% } else { %} - {% if(data[i]["party"]|| " ") { %} - {% if(!data[i]["is_total_row"]) { %} - - {% } else { %} - - {% } %} - - - - - {% } %} - {% } %} - - {% } %} - -
{%= __("Date") %}{%= __("Age (Days)") %}{%= __("Reference") %}{%= __("Sales Person") %}{%= __("Reference") %}{%= (filters.party) ? __("Remarks"): __("Party") %}{%= __("Invoiced Amount") %}{%= __("Paid Amount") %}{%= report.report_name === "Accounts Receivable" ? __('Credit Note') : __('Debit Note') %}{%= __("Outstanding Amount") %}{%= __("Customer LPO No.") %}{%= __("Future Payment Ref") %}{%= __("Future Payment Amount") %}{%= __("Remaining Balance") %}{%= (filters.party) ? __("Remarks"): __("Party") %}{%= __("Total Invoiced Amount") %}{%= __("Total Paid Amount") %}{%= report.report_name === "Accounts Receivable Summary" ? __('Credit Note Amount') : __('Debit Note Amount') %}{%= __("Total Outstanding Amount") %}
{%= frappe.datetime.str_to_user(data[i]["posting_date"]) %}{%= data[i]["age"] %} - {% if(!filters.show_future_payments) { %} - {%= data[i]["voucher_type"] %} -
- {% } %} - {%= data[i]["voucher_no"] %} -
{%= data[i]["sales_person"] %} - {% if(!filters.party?.length) { %} - {%= data[i]["party"] %} - {% if(data[i]["customer_name"] && data[i]["customer_name"] != data[i]["party"]) { %} -
{%= data[i]["customer_name"] %} - {% } else if(data[i]["supplier_name"] != data[i]["party"]) { %} -
{%= data[i]["supplier_name"] %} - {% } %} - {% } %} -
- {% if data[i]["remarks"] %} - {%= __("Remarks") %}: - {%= data[i]["remarks"] %} - {% } %} -
-
- {%= format_currency(data[i]["invoiced"], data[i]["currency"]) %} - {%= format_currency(data[i]["paid"], data[i]["currency"]) %} - {%= format_currency(data[i]["credit_note"], data[i]["currency"]) %} - {%= format_currency(data[i]["outstanding"], data[i]["currency"]) %} - {%= data[i]["po_no"] %}{%= data[i]["future_ref"] %}{%= format_currency(data[i]["future_amount"], data[i]["currency"]) %}{%= format_currency(data[i]["remaining_balance"], data[i]["currency"]) %}{%= __("Total") %} - {%= format_currency(data[i]["invoiced"], data[i]["currency"] ) %} - {%= format_currency(data[i]["paid"], data[i]["currency"]) %}{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %} - {%= format_currency(data[i]["outstanding"], data[i]["currency"]) %} - {%= data[i]["po_no"] %}{%= data[i]["future_ref"] %}{%= format_currency(data[i]["future_amount"], data[i]["currency"]) %}{%= format_currency(data[i]["remaining_balance"], data[i]["currency"]) %} - {% if(!filters.party?.length) { %} - {%= data[i]["party"] %} - {% if(data[i]["customer_name"] && data[i]["customer_name"] != data[i]["party"]) { %} -
{%= data[i]["customer_name"] %} - {% } else if(data[i]["supplier_name"] != data[i]["party"]) { %} -
{%= data[i]["supplier_name"] %} - {% } %} - {% } %} -
{%= __("Remarks") %}: - {%= data[i]["remarks"] %} -
{%= __("Total") %}{%= format_currency(data[i]["invoiced"], data[i]["currency"]) %}{%= format_currency(data[i]["paid"], data[i]["currency"]) %}{%= format_currency(data[i]["credit_note"], data[i]["currency"]) %}{%= format_currency(data[i]["outstanding"], data[i]["currency"]) %}
-

{%= __("Printed on {0}", [frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())]) %}

+
\ No newline at end of file From e6a32a9d0207bc83f2244c0c0ab926e7b14ccd12 Mon Sep 17 00:00:00 2001 From: Shllokkk Date: Thu, 26 Mar 2026 22:25:31 +0530 Subject: [PATCH 2/4] feat: introduce print format for Accounts Receivable report --- .../accounts_receivable_standard/__init__.py | 0 .../accounts_receivable_standard.json | 33 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 erpnext/accounts/print_format/accounts_receivable_standard/__init__.py create mode 100644 erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json diff --git a/erpnext/accounts/print_format/accounts_receivable_standard/__init__.py b/erpnext/accounts/print_format/accounts_receivable_standard/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json b/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json new file mode 100644 index 00000000000..f37be0fb4c7 --- /dev/null +++ b/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json @@ -0,0 +1,33 @@ +{ + "absolute_value": 0, + "align_labels_right": 0, + "creation": "2026-03-26 21:59:39.241833", + "custom_format": 1, + "default_print_language": "en", + "disabled": 0, + "docstatus": 0, + "doctype": "Print Format", + "font_size": 14, + "html": "\n\n
\n\n
\n\n \n
\n
\n {%= __(report.report_name) %}\n
\n
\n\n \n
\n
\n
\n {%= __(\"Customer\") %}:\n {%=\n (filters.party.length && filters.party.join(\", \")) || \"All Parties\"\n %}\n
\n
\n\n
\n
\n {%= __(\"Report Date\") %}:\n {%= frappe.datetime.str_to_user(filters.report_date) %}\n
\n
\n
\n\n \n
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t{% if(filters.show_remarks) { %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% } %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{% for(var i=0, l=data.length; i\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{% } %}\n\t\t\t\n\t\t
{%= __(\"Date\") %}{%= __(\"Reference\") %}\n\t\t\t\t\t\t\t{% if(i != data.length - 1 && data[i][\"remarks\"] && data[i][\"remarks\"] != \"No Remarks\") { %}\n\t\t\t\t\t\t\t\t{%= data[i][\"remarks\"] %}\n\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t{%= __(\"Age (Days)\") %}{%= __(\"Invoiced Amount\") %}{%= __(\"Outstanding Amount\") %}
{%= frappe.datetime.str_to_user(data[i][\"posting_date\"]) %}\n\t\t\t\t\t\t\t{% if(i == data.length - 1) { %}\n\t\t\t\t\t\t\t\t{%= __(\"Total\") %}\n\t\t\t\t\t\t\t{% } else { %}\n\t\t\t\t\t\t\t\t{%= data[i][\"voucher_no\"] %}\n\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t{%= data[i][\"age\"] %}{%= format_currency(data[i][\"invoiced\"], data[i][\"currency\"]) %}{%= format_currency(data[i][\"outstanding\"], data[i][\"currency\"]) %}
\n\t
\n\n\t \n\n\t{% if(filters.show_future_payments) { %}\n\t\t{% \n\t\t\tvar balance_row = data.slice(-1).pop();\n\t\t\tvar start = report.columns.findIndex(e => e.fieldname == 'age');\n\t\t\tvar currency = data[data.length - 1][\"currency\"];\n\n\t\t\tvar ranges = [\n\t\t\t\treport.columns[start].label,\n\t\t\t\treport.columns[start+1].label,\n\t\t\t\treport.columns[start+2].label,\n\t\t\t\treport.columns[start+3].label,\n\t\t\t\treport.columns[start+4].label,\n\t\t\t\treport.columns[start+5].label\n\t\t\t];\n\t\t%}\n\n\t\t{% if(balance_row) { %}\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{% for(var i = 0; i < ranges.length; i++) { %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
{%= __(ranges[i]) %}{%= __(\"Total\") %}
{%= __(\"Total Outstanding\") %}{%= format_number(balance_row[\"age\"], null, 2) %}{%= format_currency(balance_row[\"range1\"], currency) %}{%= format_currency(balance_row[\"range2\"], currency) %}{%= format_currency(balance_row[\"range3\"], currency) %}{%= format_currency(balance_row[\"range4\"], currency) %}{%= format_currency(balance_row[\"range5\"], currency) %}{%= format_currency(flt(balance_row[\"outstanding\"]), currency) %}
\n\t\t
\n\t\t{% } %}\n\t{% } %}\n\n

\n {%= __(\"Printed on {0}\", [\n frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())\n ]) %}\n

\n\n
", + "idx": 0, + "line_breaks": 0, + "margin_bottom": 15.0, + "margin_left": 15.0, + "margin_right": 15.0, + "margin_top": 15.0, + "modified": "2026-03-26 21:59:39.241833", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Accounts Receivable Standard", + "owner": "Administrator", + "page_number": "Hide", + "pdf_generator": "chrome", + "print_format_builder": 0, + "print_format_builder_beta": 0, + "print_format_for": "Report", + "print_format_type": "JS", + "raw_printing": 0, + "report": "Accounts Receivable", + "show_section_headings": 0, + "standard": "Yes" +} From 4228885f1ea1ad8346584c8f45c37b46c5a1392a Mon Sep 17 00:00:00 2001 From: Shllokkk Date: Fri, 27 Mar 2026 01:02:35 +0530 Subject: [PATCH 3/4] fix: minor bug fixes for ar print template --- .../accounts_receivable_standard.json | 4 ++-- .../accounts_receivable.html | 17 +++++++++-------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json b/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json index f37be0fb4c7..fc68bdad7d0 100644 --- a/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json +++ b/erpnext/accounts/print_format/accounts_receivable_standard/accounts_receivable_standard.json @@ -8,14 +8,14 @@ "docstatus": 0, "doctype": "Print Format", "font_size": 14, - "html": "\n\n
\n\n
\n\n \n
\n
\n {%= __(report.report_name) %}\n
\n
\n\n \n
\n
\n
\n {%= __(\"Customer\") %}:\n {%=\n (filters.party.length && filters.party.join(\", \")) || \"All Parties\"\n %}\n
\n
\n\n
\n
\n {%= __(\"Report Date\") %}:\n {%= frappe.datetime.str_to_user(filters.report_date) %}\n
\n
\n
\n\n \n
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t{% if(filters.show_remarks) { %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% } %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{% for(var i=0, l=data.length; i\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{% } %}\n\t\t\t\n\t\t
{%= __(\"Date\") %}{%= __(\"Reference\") %}\n\t\t\t\t\t\t\t{% if(i != data.length - 1 && data[i][\"remarks\"] && data[i][\"remarks\"] != \"No Remarks\") { %}\n\t\t\t\t\t\t\t\t{%= data[i][\"remarks\"] %}\n\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t{%= __(\"Age (Days)\") %}{%= __(\"Invoiced Amount\") %}{%= __(\"Outstanding Amount\") %}
{%= frappe.datetime.str_to_user(data[i][\"posting_date\"]) %}\n\t\t\t\t\t\t\t{% if(i == data.length - 1) { %}\n\t\t\t\t\t\t\t\t{%= __(\"Total\") %}\n\t\t\t\t\t\t\t{% } else { %}\n\t\t\t\t\t\t\t\t{%= data[i][\"voucher_no\"] %}\n\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t{%= data[i][\"age\"] %}{%= format_currency(data[i][\"invoiced\"], data[i][\"currency\"]) %}{%= format_currency(data[i][\"outstanding\"], data[i][\"currency\"]) %}
\n\t
\n\n\t \n\n\t{% if(filters.show_future_payments) { %}\n\t\t{% \n\t\t\tvar balance_row = data.slice(-1).pop();\n\t\t\tvar start = report.columns.findIndex(e => e.fieldname == 'age');\n\t\t\tvar currency = data[data.length - 1][\"currency\"];\n\n\t\t\tvar ranges = [\n\t\t\t\treport.columns[start].label,\n\t\t\t\treport.columns[start+1].label,\n\t\t\t\treport.columns[start+2].label,\n\t\t\t\treport.columns[start+3].label,\n\t\t\t\treport.columns[start+4].label,\n\t\t\t\treport.columns[start+5].label\n\t\t\t];\n\t\t%}\n\n\t\t{% if(balance_row) { %}\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{% for(var i = 0; i < ranges.length; i++) { %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
{%= __(ranges[i]) %}{%= __(\"Total\") %}
{%= __(\"Total Outstanding\") %}{%= format_number(balance_row[\"age\"], null, 2) %}{%= format_currency(balance_row[\"range1\"], currency) %}{%= format_currency(balance_row[\"range2\"], currency) %}{%= format_currency(balance_row[\"range3\"], currency) %}{%= format_currency(balance_row[\"range4\"], currency) %}{%= format_currency(balance_row[\"range5\"], currency) %}{%= format_currency(flt(balance_row[\"outstanding\"]), currency) %}
\n\t\t
\n\t\t{% } %}\n\t{% } %}\n\n

\n {%= __(\"Printed on {0}\", [\n frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())\n ]) %}\n

\n\n
", + "html": "\n\n
\n\n
\n\n \n
\n
\n {%= __(report.report_name) %}\n
\n
\n\n \n
\n
\n
\n {%= __(\"Customer\") %}:\n {%= (filters.party.length && filters.party.join(\", \")) || __(\"All Parties\") %}\n
\n
\n\n
\n
\n {%= __(\"Report Date\") %}:\n {%= frappe.datetime.str_to_user(filters.report_date) %}\n
\n
\n
\n\n \n
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\n\t\t\t\t\t{% if(filters.show_remarks) { %}\n\t\t\t\t\t\t\n\t\t\t\t\t{% } %}\n\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\t{% for(var i=0, l=data.length; i\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{% if(filters.show_remarks) { %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t{% } %}\n\t\t\t\n\t\t
{%= __(\"Date\") %}{%= __(\"Reference\") %}{%= __(\"Remarks\") %}{%= __(\"Age (Days)\") %}{%= __(\"Invoiced Amount\") %}{%= __(\"Outstanding Amount\") %}
{%= frappe.datetime.str_to_user(data[i][\"posting_date\"]) %}\n\t\t\t\t\t\t\t{% if(i == data.length - 1) { %}\n\t\t\t\t\t\t\t\t{%= __(\"Total\") %}\n\t\t\t\t\t\t\t{% } else { %}\n\t\t\t\t\t\t\t\t{%= data[i][\"voucher_no\"] %}\n\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{% if(data[i][\"remarks\"] && data[i][\"remarks\"] != \"No Remarks\") { %}\n\t\t\t\t\t\t\t\t\t{%= data[i][\"remarks\"] %}\n\t\t\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\t{%= data[i][\"age\"] %}{%= format_currency(data[i][\"invoiced\"], data[i][\"currency\"]) %}{%= format_currency(data[i][\"outstanding\"], data[i][\"currency\"]) %}
\n\t
\n\n\t \n\n\t{% if(filters.show_future_payments) { %}\n\t\t{%\n\t\t\tvar balance_row = data.slice(-1).pop();\n\t\t\tvar start = report.columns.findIndex(e => e.fieldname == 'age');\n\t\t\tvar currency = data[data.length - 1][\"currency\"];\n\n\t\t\tvar ranges = [\n\t\t\t\treport.columns[start].label,\n\t\t\t\treport.columns[start+1].label,\n\t\t\t\treport.columns[start+2].label,\n\t\t\t\treport.columns[start+3].label,\n\t\t\t\treport.columns[start+4].label,\n\t\t\t\treport.columns[start+5].label\n\t\t\t];\n\t\t%}\n\n\t\t{% if(balance_row) { %}\n\t\t
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{% for(var i = 0; i < ranges.length; i++) { %}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t{% } %}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
{%= __(ranges[i]) %}{%= __(\"Total\") %}
{%= __(\"Total Outstanding\") %}{%= format_number(balance_row[\"age\"], null, 2) %}{%= format_currency(balance_row[\"range1\"], currency) %}{%= format_currency(balance_row[\"range2\"], currency) %}{%= format_currency(balance_row[\"range3\"], currency) %}{%= format_currency(balance_row[\"range4\"], currency) %}{%= format_currency(balance_row[\"range5\"], currency) %}{%= format_currency(flt(balance_row[\"outstanding\"]), currency) %}
\n\t\t
\n\t\t{% } %}\n\t{% } %}\n\n

\n {%= __(\"Printed on {0}\", [\n frappe.datetime.str_to_user(frappe.datetime.get_datetime_as_string())\n ]) %}\n

\n\n
", "idx": 0, "line_breaks": 0, "margin_bottom": 15.0, "margin_left": 15.0, "margin_right": 15.0, "margin_top": 15.0, - "modified": "2026-03-26 21:59:39.241833", + "modified": "2026-03-27 01:06:20.758336", "modified_by": "Administrator", "module": "Accounts", "name": "Accounts Receivable Standard", diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html index b7626ded0dc..6000ce73120 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -105,9 +105,7 @@
{%= __("Customer") %}: - {%= - (filters.party.length && filters.party.join(", ")) || "All Parties" - %} + {%= (filters.party.length && filters.party.join(", ")) || __("All Parties") %}
@@ -128,11 +126,7 @@ {%= __("Reference") %} {% if(filters.show_remarks) { %} - - {% if(i != data.length - 1 && data[i]["remarks"] && data[i]["remarks"] != "No Remarks") { %} - {%= data[i]["remarks"] %} - {% } %} - + {%= __("Remarks") %} {% } %} {%= __("Age (Days)") %} @@ -152,6 +146,13 @@ {%= data[i]["voucher_no"] %} {% } %} + {% if(filters.show_remarks) { %} + + {% if(data[i]["remarks"] && data[i]["remarks"] != "No Remarks") { %} + {%= data[i]["remarks"] %} + {% } %} + + {% } %} {%= data[i]["age"] %} {%= format_currency(data[i]["invoiced"], data[i]["currency"]) %} {%= format_currency(data[i]["outstanding"], data[i]["currency"]) %} From e3019c827c96ba16b4e3ef96e617945d6546c171 Mon Sep 17 00:00:00 2001 From: Shllokkk Date: Sun, 12 Apr 2026 13:00:51 +0530 Subject: [PATCH 4/4] fix: minor changes in print template --- .../accounts_receivable.html | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html index 6000ce73120..33f09dbb3d1 100644 --- a/erpnext/accounts/report/accounts_receivable/accounts_receivable.html +++ b/erpnext/accounts/report/accounts_receivable/accounts_receivable.html @@ -79,6 +79,10 @@ font-weight: 500; } + .report-subtitle { + margin: 10px 0 14px; + } + @media print { @page { size: A4; @@ -93,31 +97,34 @@
-
{%= __(report.report_name) %}
- -
-
-
- {%= __("Customer") %}: - {%= (filters.party.length && filters.party.join(", ")) || __("All Parties") %} + {% if (subtitle && subtitle.trim()) { %} +
+ {{ subtitle }} +
+ {% } else { %} +
+
+
+ {%= __("Customer") %}: + {%= (filters.party.length && filters.party.join(", ")) || __("All Parties") %} +
+
+ +
+
+ {%= __("Report Date") %}: + {%= frappe.datetime.str_to_user(filters.report_date) %} +
+ {% } %} -
-
- {%= __("Report Date") %}: - {%= frappe.datetime.str_to_user(filters.report_date) %} -
-
-
- -