diff --git a/erpnext/accounts/print_format/sales_invoice_print_format/__init__.py b/erpnext/accounts/print_format/sales_invoice_print_format/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.html b/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.html new file mode 100644 index 00000000000..c5800c0645f --- /dev/null +++ b/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.html @@ -0,0 +1,148 @@ +{%- macro add_header(page_num, max_pages, doc, letter_head, no_letterhead, footer, print_settings=None, +print_heading_template=None) -%} {% if letter_head and not no_letterhead %} +
{{ letter_head }}
+{% endif %} {% if print_heading_template %} {{ frappe.render_template(print_heading_template, {"doc":doc}) }} +{% else %} {% endif %} {%- if doc.meta.is_submittable and doc.docstatus==2-%} +
+

{{ _("CANCELLED") }}

+
+{%- endif -%} {%- endmacro -%} {% for page in layout %} +
+
+ {{ add_header(loop.index, layout|len, doc, letter_head, no_letterhead, footer, print_settings) }} +
+ + + + + + + + + + + + {% set address = (doc.address_display) %} {% if address.rstrip().endswith("
") %} {% set + address = address[:-5] %} {% endif %} {% set company_address_display = + (doc.company_address_display) %} {% if company_address_display.rstrip().endswith("
") %} {% + set company_address_display = company_address_display[:-5] %} {% endif %} + + + +
+ {{ _("Customer Name") }}: {{doc.customer_name }} + + {{ _("Payment Due Date") }}: {{ + frappe.utils.format_date(doc.due_date) }} +
{{ _("Invoice Number") }}: {{ doc.name }} + {{ _("Invoice Date") }}: {{ + frappe.utils.format_date(doc.posting_date) }} +
{{ _("Bill From") }}:
{{ address }}
{{ _("Bill To") }}:
{{ company_address_display }}
+ + + + + + + + + + + + + + + + + + + + + {% for item in doc.items %} + + + + + + + + {% endfor %} + +
{{ _("No") }}{{ _("Item") }}{{ _("Quantity") }}{{ _("Rate") }}{{ _("Amount") }}
{{ loop.index }}{{ item.item_name }}{{ item.get_formatted("qty", 0) }} {{ item.uom }}{{ item.get_formatted("net_rate", doc) }}{{ item.get_formatted("net_amount", doc) }}
+ + +
+
+
+

{{ _("Total in words") }}

+
{{ doc.in_words }}
+
+
+
+ + + + + + + + + + {% set tax_rate = doc.taxes | selectattr("tax_amount") | sum(attribute="rate") %} {% if + tax_rate > 0 %} + + + + + {% endif %} + + + + +
{{ _("Sub Total:") }}{{ doc.get_formatted("total", doc) }}
+ {{ _("Discount") }} ({{ doc.additional_discount_percentage }}%): + {{ doc.get_formatted("discount_amount", doc) }}
{{ _("Tax") }} ({{ tax_rate }}%):{{ doc.get_formatted("total_taxes_and_charges", doc) }}
{{ _("Grand Total:") }}{{ doc.get_formatted("grand_total", doc) }}
+
+
+ + + {% if doc.taxes_and_charges %} +
{{ _("Tax Breakup") }}
+
+ + + + + + {% for row in doc.taxes %} + + {% endfor %} + + + + {% for item in doc.items %} + + + + {% for row in doc.taxes %} {% set tax_amount = item.base_net_amount * (row.rate / 100) %} + + {% endfor %} + + {% endfor %} + +
{{ _("HSN/SAC") }}{{ _("Taxable Amount") }}{{ row.description }}
{{ item.gst_hsn_code }}{{ item.get_formatted("base_net_amount", doc) }} + ({{ (row.rate) }}%) {{ frappe.format_value(tax_amount, {"fieldtype": "Currency"}, doc) + }} +
+
+ {% endif %} + + + {% if doc.terms %} +
+
{{ _("Terms and Conditions") }}
+ {{ doc.terms}} +
+ {% endif %} +
+{% endfor %} diff --git a/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.json b/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.json new file mode 100644 index 00000000000..34198f03e9c --- /dev/null +++ b/erpnext/accounts/print_format/sales_invoice_print_format/sales_invoice_print_format.json @@ -0,0 +1,32 @@ +{ + "absolute_value": 0, + "align_labels_right": 0, + "creation": "2025-08-28 04:03:36.284420", + "custom_format": 0, + "default_print_language": "en", + "disabled": 0, + "doc_type": "Sales Invoice", + "docstatus": 0, + "doctype": "Print Format", + "font_size": 14, + "idx": 0, + "line_breaks": 0, + "margin_bottom": 15.0, + "margin_left": 15.0, + "margin_right": 15.0, + "margin_top": 15.0, + "modified": "2025-09-01 17:47:14.710435", + "modified_by": "Administrator", + "module": "Accounts", + "name": "Sales Invoice Print Format", + "owner": "Administrator", + "page_number": "Hide", + "pdf_generator": "wkhtmltopdf", + "print_format_builder": 0, + "print_format_builder_beta": 0, + "print_format_for": "DocType", + "print_format_type": "Jinja", + "raw_printing": 0, + "show_section_headings": 0, + "standard": "Yes" +}