diff --git a/erpnext/regional/italy/e-invoice.xml b/erpnext/regional/italy/e-invoice.xml index 9a588d1666b..9978dc0da2e 100644 --- a/erpnext/regional/italy/e-invoice.xml +++ b/erpnext/regional/italy/e-invoice.xml @@ -1,5 +1,5 @@ -{%- macro format_float(value) -%} -{{ "%.2f" % value|abs }} +{%- macro format_float(value, precision=2) -%} +{{ value|round(frappe.utils.cint(precision)) }} {%- endmacro -%} {%- macro render_address(address) %} @@ -182,10 +182,10 @@ {{ html2text(item.description or '') or item.item_name }} {{ format_float(item.qty) }} {{ item.stock_uom }} - {{ format_float(item.price_list_rate or item.rate) }} + {{ format_float(item.price_list_rate or item.rate, item_meta.get_field("rate").precision) }} {{ render_discount_or_margin(item) }} - {{ format_float(item.amount) }} - {{ format_float(item.tax_rate) }} + {{ format_float(item.amount, item_meta.get_field("amount").precision) }} + {{ format_float(item.tax_rate, item_meta.get_field("tax_rate").precision) }} {%- if item.tax_exemption_reason %} {{ item.tax_exemption_reason.split("-")[0] }} {%- endif %} @@ -197,8 +197,8 @@ {%- if data.tax_exemption_reason %} {{ data.tax_exemption_reason.split("-")[0] }} {%- endif %} - {{ format_float(data.taxable_amount) }} - {{ format_float(data.tax_amount) }} + {{ format_float(data.taxable_amount, item_meta.get_field("tax_amount").precision) }} + {{ format_float(data.tax_amount, item_meta.get_field("tax_amount").precision) }} {{ doc.vat_collectability.split("-")[0] }} {%- if data.tax_exemption_law %} {{ data.tax_exemption_law }} diff --git a/erpnext/regional/italy/utils.py b/erpnext/regional/italy/utils.py index caaf80129b9..9a14a35dbab 100644 --- a/erpnext/regional/italy/utils.py +++ b/erpnext/regional/italy/utils.py @@ -291,7 +291,11 @@ def prepare_and_attach_invoice(doc, replace=False): progressive_name, progressive_number = get_progressive_name_and_number(doc, replace) invoice = prepare_invoice(doc, progressive_number) - invoice_xml = frappe.render_template('erpnext/regional/italy/e-invoice.xml', context={"doc": invoice}, is_path=True) + item_meta = frappe.get_meta("Sales Invoice Item") + + invoice_xml = frappe.render_template('erpnext/regional/italy/e-invoice.xml', + context={"doc": invoice, "item_meta": item_meta}, is_path=True) + invoice_xml = invoice_xml.replace("&", "&") xml_filename = progressive_name + ".xml"