From da89574c18c2b970d2b70bf68a001af30f77c892 Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:26:21 +0200 Subject: [PATCH 1/7] fix: multi-tax detection and net_amount calculation --- .../custom/sales_invoice.py | 79 +++++++++++++++---- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index e57ef6e3..da89fa6b 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -480,7 +480,7 @@ def _add_line_item(self, item: SalesInvoiceItem): # BR-AE-05, BR-E-05, BR-G-05, BR-IC-05, BR-Z-05 li.settlement.trade_tax.rate_applicable_percent = 0 else: - item_tax_rate = get_item_rate(item.item_tax_template, self.invoice.taxes) + item_tax_rate = get_item_rate(item.item_tax_template, self.invoice.taxes, item.income_account) self.item_tax_rates.add(item_tax_rate) li.settlement.trade_tax.rate_applicable_percent = item_tax_rate @@ -498,6 +498,21 @@ def _add_line_item(self, item: SalesInvoiceItem): li.settlement.monetary_summation.total_amount = flt(item.net_amount, item.precision("net_amount")) self.doc.trade.items.add(li) + def _sum_item_net_matching_on_net_total_rate(self, tax) -> float: + """Sum ``net_amount`` for items whose resolved VAT % matches this tax row (multi-rate invoices).""" + tax_row_vat_percent = flt( + tax.rate or frappe.db.get_value("Account", tax.account_head, "tax_rate") or 0.0 + ) + if not tax_row_vat_percent: + return 0.0 + sum_net_amount = sum( + line_item.net_amount + for line_item in self.invoice.items + if get_item_rate(line_item.item_tax_template, self.invoice.taxes, line_item.income_account) + == tax_row_vat_percent + ) + return flt(sum_net_amount, self.invoice.precision("net_total")) + def _add_taxes_and_charges(self): tax_added = False for i, tax in enumerate(self.invoice.taxes): @@ -544,15 +559,22 @@ def _add_taxes_and_charges(self): # We only have one tax rate on the line items, but it was not specified on the tax row # so we use the tax rate from the line items. trade_tax.rate_applicable_percent = self.item_tax_rates.pop() - elif hasattr(tax, "net_amount"): - trade_tax.basis_amount = tax.net_amount - elif hasattr(tax, "custom_net_amount"): - trade_tax.basis_amount = tax.custom_net_amount - elif tax.tax_amount and tax_rate: - # We don't know the basis amount for this tax, so we try to calculate it - trade_tax.basis_amount = round(tax.tax_amount / tax_rate * 100, 2) else: - trade_tax.basis_amount = 0 + basis = 0 + if tax.tax_amount and tax_rate: + # Prefer basis derived from tax_amount / rate when exact (no rounding loss). + # Use fixed rounding to 2 decimal places as e-invoice is based on 2 decimal places. + derived = tax.tax_amount / tax_rate * 100 + if derived == round(derived, 2): + basis = round(derived, 2) + if not basis: + basis = ( + self._sum_item_net_matching_on_net_total_rate(tax) + or (hasattr(tax, "net_amount") and flt(tax.net_amount)) + or (hasattr(tax, "custom_net_amount") and flt(tax.custom_net_amount)) + or 0 + ) + trade_tax.basis_amount = basis self.doc.trade.settlement.trade_tax.add(trade_tax) tax_added = True @@ -942,19 +964,42 @@ def _attach_xml_file(doc: SalesInvoice, xml_content: bytes, field_name: str | No doc.db_set(field_name, file_doc.file_url) -def get_item_rate(item_tax_template: str | None, taxes: list[dict]) -> float | None: - """Get the tax rate for an item from the item tax template and the taxes table.""" +def get_item_rate( + item_tax_template: str | None, taxes: list, income_account: str | None = None +) -> float | None: + """Resolve the VAT % for this line from the Item Tax Template and the invoice tax rows. + + 1) If ``income_account`` is set, return the rate from the template row whose ``tax_type`` equals + that account. + 2) Otherwise return the highest non-zero ``tax_rate`` from the template whose ``tax_type`` matches + one of the invoice's ``account_head`` values. + 3) If the template did not match: if there is exactly one *On Net Total* row, use its ``rate``. + """ if item_tax_template: - # match the accounts from the taxes table with the rate from the item tax template tax_template = frappe.get_doc("Item Tax Template", item_tax_template) applicable_accounts = [tax.account_head for tax in taxes if tax.account_head] - for item_tax in tax_template.taxes: - if item_tax.tax_type in applicable_accounts: - return item_tax.tax_rate + if income_account: + for item_tax in tax_template.taxes: + if item_tax.tax_type == income_account: + return item_tax.tax_rate - # if only one tax is on net total, return its rate - tax_rates = [invoice_tax.rate for invoice_tax in taxes if invoice_tax.charge_type == "On Net Total"] + matching_rates = sorted( + ( + item_tax.tax_rate + for item_tax in tax_template.taxes + if item_tax.tax_type in applicable_accounts and item_tax.tax_rate + ), + reverse=True, + ) + if matching_rates: + return matching_rates[0] + + tax_rates = [ + flt(invoice_tax.rate) + for invoice_tax in taxes + if invoice_tax.charge_type == "On Net Total" and invoice_tax.rate is not None + ] return tax_rates[0] if len(tax_rates) == 1 else None From 1323e56bd72a2836420b624cc580e02ffaff6c2c Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Thu, 30 Apr 2026 10:32:28 +0200 Subject: [PATCH 2/7] fix: reviewed greptile remarks --- .../custom/sales_invoice.py | 43 ++++++------------- 1 file changed, 13 insertions(+), 30 deletions(-) diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index da89fa6b..3418880f 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -480,7 +480,7 @@ def _add_line_item(self, item: SalesInvoiceItem): # BR-AE-05, BR-E-05, BR-G-05, BR-IC-05, BR-Z-05 li.settlement.trade_tax.rate_applicable_percent = 0 else: - item_tax_rate = get_item_rate(item.item_tax_template, self.invoice.taxes, item.income_account) + item_tax_rate = get_item_rate(item.item_tax_template, self.invoice.taxes) self.item_tax_rates.add(item_tax_rate) li.settlement.trade_tax.rate_applicable_percent = item_tax_rate @@ -508,8 +508,7 @@ def _sum_item_net_matching_on_net_total_rate(self, tax) -> float: sum_net_amount = sum( line_item.net_amount for line_item in self.invoice.items - if get_item_rate(line_item.item_tax_template, self.invoice.taxes, line_item.income_account) - == tax_row_vat_percent + if get_item_rate(line_item.item_tax_template, self.invoice.taxes) == tax_row_vat_percent ) return flt(sum_net_amount, self.invoice.precision("net_total")) @@ -560,20 +559,13 @@ def _add_taxes_and_charges(self): # so we use the tax rate from the line items. trade_tax.rate_applicable_percent = self.item_tax_rates.pop() else: - basis = 0 - if tax.tax_amount and tax_rate: - # Prefer basis derived from tax_amount / rate when exact (no rounding loss). - # Use fixed rounding to 2 decimal places as e-invoice is based on 2 decimal places. - derived = tax.tax_amount / tax_rate * 100 - if derived == round(derived, 2): - basis = round(derived, 2) - if not basis: - basis = ( - self._sum_item_net_matching_on_net_total_rate(tax) - or (hasattr(tax, "net_amount") and flt(tax.net_amount)) - or (hasattr(tax, "custom_net_amount") and flt(tax.custom_net_amount)) - or 0 - ) + basis = ( + self._sum_item_net_matching_on_net_total_rate(tax) + or (hasattr(tax, "net_amount") and flt(tax.net_amount)) + or (hasattr(tax, "custom_net_amount") and flt(tax.custom_net_amount)) + or (tax.tax_amount and tax_rate and round(tax.tax_amount / tax_rate * 100, 2)) + or 0 + ) trade_tax.basis_amount = basis self.doc.trade.settlement.trade_tax.add(trade_tax) @@ -964,26 +956,17 @@ def _attach_xml_file(doc: SalesInvoice, xml_content: bytes, field_name: str | No doc.db_set(field_name, file_doc.file_url) -def get_item_rate( - item_tax_template: str | None, taxes: list, income_account: str | None = None -) -> float | None: +def get_item_rate(item_tax_template: str | None, taxes: list) -> float | None: """Resolve the VAT % for this line from the Item Tax Template and the invoice tax rows. - 1) If ``income_account`` is set, return the rate from the template row whose ``tax_type`` equals - that account. - 2) Otherwise return the highest non-zero ``tax_rate`` from the template whose ``tax_type`` matches + 1) Return the highest non-zero ``tax_rate`` from the template whose ``tax_type`` matches one of the invoice's ``account_head`` values. - 3) If the template did not match: if there is exactly one *On Net Total* row, use its ``rate``. + 2) If the template did not match: if there is exactly one *On Net Total* row, use its ``rate``. """ if item_tax_template: - tax_template = frappe.get_doc("Item Tax Template", item_tax_template) + tax_template = frappe.get_cached_doc("Item Tax Template", item_tax_template) applicable_accounts = [tax.account_head for tax in taxes if tax.account_head] - if income_account: - for item_tax in tax_template.taxes: - if item_tax.tax_type == income_account: - return item_tax.tax_rate - matching_rates = sorted( ( item_tax.tax_rate From d156c9d83ff7d0ccafd43292856c88d391b45953 Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Thu, 30 Apr 2026 19:59:13 +0200 Subject: [PATCH 3/7] chore: return to standard In V16+ not_applicable is set, so it can be used as the "stronger" link, that this row should be skipped. In V15 and below, if a tax_rate is 0, it is skipped. --- .../custom/sales_invoice.py | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index 3418880f..10d5f357 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -17,7 +17,7 @@ from frappe import _ from frappe.core.doctype.file.utils import find_file_by_url from frappe.core.utils import html2text -from frappe.utils.data import date_diff, flt, getdate, to_markdown +from frappe.utils.data import cint, date_diff, flt, getdate, to_markdown from eu_einvoice.common_codes import CommonCodeRetriever from eu_einvoice.schematron import get_validation_errors @@ -959,27 +959,30 @@ def _attach_xml_file(doc: SalesInvoice, xml_content: bytes, field_name: str | No def get_item_rate(item_tax_template: str | None, taxes: list) -> float | None: """Resolve the VAT % for this line from the Item Tax Template and the invoice tax rows. - 1) Return the highest non-zero ``tax_rate`` from the template whose ``tax_type`` matches - one of the invoice's ``account_head`` values. + 1) Return the ``tax_rate`` of the first template row (in template order) whose ``tax_type`` + matches one of the invoice's ``account_head`` values. On ERPNext v15 and earlier, only + non-zero rates are considered. From v16 (``not_applicable`` on **Item Tax Template Detail**), + zero rates are included and rows with ``not_applicable`` set are excluded. 2) If the template did not match: if there is exactly one *On Net Total* row, use its ``rate``. """ if item_tax_template: tax_template = frappe.get_cached_doc("Item Tax Template", item_tax_template) applicable_accounts = [tax.account_head for tax in taxes if tax.account_head] + has_not_applicable = bool(frappe.get_meta("Item Tax Template Detail").get_field("not_applicable")) - matching_rates = sorted( - ( - item_tax.tax_rate - for item_tax in tax_template.taxes - if item_tax.tax_type in applicable_accounts and item_tax.tax_rate - ), - reverse=True, - ) - if matching_rates: - return matching_rates[0] + def _template_row_matches(item_tax) -> bool: + if item_tax.tax_type not in applicable_accounts: + return False + if has_not_applicable: + return not cint(getattr(item_tax, "not_applicable", 0)) + return bool(item_tax.tax_rate) + + for item_tax in tax_template.taxes: + if _template_row_matches(item_tax): + return item_tax.tax_rate tax_rates = [ - flt(invoice_tax.rate) + invoice_tax.rate for invoice_tax in taxes if invoice_tax.charge_type == "On Net Total" and invoice_tax.rate is not None ] From 3445b91560bb3c0828e90cda862c17f1d24b4682 Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Fri, 1 May 2026 10:39:26 +0200 Subject: [PATCH 4/7] fix: remove tax lines with 0 net but with a tax_rate --- eu_einvoice/european_e_invoice/custom/sales_invoice.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index 10d5f357..0cfaa735 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -538,6 +538,14 @@ def _add_taxes_and_charges(self): self.doc.trade.settlement.service_charge.add(service_charge) elif tax.charge_type == "On Net Total": + tax_rate = tax.rate or frappe.db.get_value("Account", tax.account_head, "tax_rate") or 0 + # Skip rows with 0% tax rate and non-zero tax amount: Assumption here is that if a tax_rate + # is not 0% and the tax amount is 0, then the tax is not applicable, as no item with + # this tax rate exists and hence it would throw validation errors. + # Possible 0% tax rates and their codes can be applied as 0% VAT, does not + # create a tax_amount. + if tax.tax_amount == 0 and tax_rate != 0: + continue trade_tax = ApplicableTradeTax() trade_tax.calculated_amount = tax.tax_amount trade_tax.type_code = "VAT" @@ -548,7 +556,7 @@ def _add_taxes_and_charges(self): ("Sales Taxes and Charges Template", self.invoice.taxes_and_charges), ] ) - tax_rate = tax.rate or frappe.db.get_value("Account", tax.account_head, "tax_rate") or 0 + trade_tax.rate_applicable_percent = tax_rate if len(self.invoice.taxes) == 1: From 42849861876823f1443e48281305fe5674f8919b Mon Sep 17 00:00:00 2001 From: "Daniel F. Rose" Date: Tue, 12 May 2026 20:12:11 +0200 Subject: [PATCH 5/7] feat: implement XML attachment file naming functionality (#253) * feat(eu_einvoice): configurable base name for auto-attached XRechnung XML Add optional pattern on E Invoice Settings (auto_name_format_for_xml_file) for the file base name when auto-attaching XML on Sales Invoice submit. Empty pattern keeps using the document name; otherwise use naming-series-style segments (dot-separated, parse_naming_series, {field} placeholders, date tokens), strip leading # per segment so counter-only parts do not consume Series, sanitize with get_safe_file_name, and fall back to the document name on error. Colocate get_xml_attachment_file_base_name with Sales Invoice custom logic and cover naming edge cases in test_sales_invoice.py. Refresh E Invoice Settings controller and de / template catalogs for the new strings. * refactor(eu_einvoice): enhance download_xrechnung to use configurable base name Update the download_xrechnung function to retrieve the Sales Invoice document and check permissions before generating the XML file. The filename now utilizes a configurable base name from E Invoice Settings, improving flexibility for file naming. This change ensures that the generated XML file adheres to the specified naming format. * chore(eu_einvoice): update E Invoice Settings and localization files Rearrange fields in e_invoice_settings.json for better organization, adding a label for the XML Settings section. Update localization files (de.po and main.pot) to reflect changes in field names and add new translations for XML Settings. Adjust POT creation dates for consistency. * refactor(eu_einvoice): centralize sales invoice xml stem naming Resolve the downloadable XML filename stem in get_xml_attachment_file_base_name: read *Auto name format for XML file* from **E Invoice Settings** when the pattern argument is omitted, accept an optional keyword-only pattern override, and build the stem with parse_naming_series plus a no-op number generator so naming has no series counter DB side effects. Sanitize with get_safe_file_name and fall back to doc.name when the pattern is empty or fails. Call sites use the helper without duplicating settings reads. Tests pass pattern= for empty or whitespace patterns, and assert the settings-backed path by patching frappe.get_single_value only for **E Invoice Settings** / auto_name_format_for_xml_file. --------- Co-authored-by: Daniel Rose <26166128+dafrose@users.noreply.github.com> --- .../custom/sales_invoice.py | 45 ++- .../custom/test_sales_invoice.py | 58 ++++ .../e_invoice_settings.json | 20 +- .../e_invoice_settings/e_invoice_settings.py | 1 + eu_einvoice/locale/de.po | 320 +++++++++++------- eu_einvoice/locale/main.pot | 320 +++++++++++------- 6 files changed, 526 insertions(+), 238 deletions(-) create mode 100644 eu_einvoice/european_e_invoice/custom/test_sales_invoice.py diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index e57ef6e3..32a3edbf 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -15,8 +15,10 @@ from drafthorse.models.trade import LogisticsServiceCharge from drafthorse.models.tradelines import LineItem from frappe import _ -from frappe.core.doctype.file.utils import find_file_by_url +from frappe.core.doctype.file.utils import find_file_by_url, get_safe_file_name from frappe.core.utils import html2text +from frappe.model.naming import parse_naming_series +from frappe.utils import cstr from frappe.utils.data import date_diff, flt, getdate, to_markdown from eu_einvoice.common_codes import CommonCodeRetriever @@ -45,8 +47,10 @@ @frappe.whitelist() def download_xrechnung(invoice_id: str): - frappe.local.response.filename = f"{invoice_id}.xml" - frappe.local.response.filecontent = get_einvoice(invoice_id) + invoice = frappe.get_doc("Sales Invoice", invoice_id) + base_name = get_xml_attachment_file_base_name(invoice) + frappe.local.response.filecontent = get_einvoice(invoice) + frappe.local.response.filename = f"{base_name}.xml" frappe.local.response.type = "download" @@ -919,7 +923,8 @@ def _attach_xml_file(doc: SalesInvoice, xml_content: bytes, field_name: str | No ) return - file_name = f"{doc.name}.xml".replace("/", "-") + base_name = get_xml_attachment_file_base_name(doc) + file_name = f"{base_name}.xml" # Create new File document file_doc = frappe.new_doc("File") @@ -1142,3 +1147,35 @@ def attach_xml_to_pdf(invoice_id: str, pdf_data: bytes) -> bytes: xml_bytes = get_einvoice(invoice_id) return attach_xml(pdf_data, xml_bytes, level) + + +def get_xml_attachment_file_base_name(doc, *, pattern: str | None = None) -> str: + """Filename stem (no `.xml`) for the downloadable XML. + + Uses *pattern* when given, otherwise reads *Auto name format for XML file* + from **E Invoice Settings**. Falls back to `doc.name` when the pattern is + empty or fails to resolve. Result is sanitized via `get_safe_file_name` + (same rules as **File** attachments). + """ + if pattern is None: + pattern = frappe.get_single_value("E Invoice Settings", "auto_name_format_for_xml_file") + pattern = cstr(pattern).strip() + if pattern: + try: + base = parse_naming_series(pattern, doc=doc, number_generator=_no_series_counter).strip() + except Exception: + frappe.log_error( + title=_("E Invoice XML file name pattern failed"), + message=frappe.get_traceback(), + reference_doctype=doc.doctype, + reference_name=doc.name, + ) + base = "" + if base: + return get_safe_file_name(base) + return get_safe_file_name(doc.name) + + +def _no_series_counter(_key: str, _digits: int) -> str: + """Disable the series counter so XML naming has no DB side effects.""" + return "" diff --git a/eu_einvoice/european_e_invoice/custom/test_sales_invoice.py b/eu_einvoice/european_e_invoice/custom/test_sales_invoice.py new file mode 100644 index 00000000..6e36ff10 --- /dev/null +++ b/eu_einvoice/european_e_invoice/custom/test_sales_invoice.py @@ -0,0 +1,58 @@ +from unittest.mock import patch + +import frappe +from frappe.tests.utils import FrappeTestCase + +from eu_einvoice.european_e_invoice.custom.sales_invoice import ( + get_xml_attachment_file_base_name, +) + + +class TestXmlAttachmentNaming(FrappeTestCase): + def test_auto_name_format_from_e_invoice_settings(self): + doc = frappe._dict(name="SINV-00001", po_no="PO-42", doctype="Sales Invoice") + field = "auto_name_format_for_xml_file" + pattern = "XMLSTEM.-.{po_no}" + real_gsv = frappe.get_single_value + + def get_single_value(doctype, fname, cache=True): + if doctype == "E Invoice Settings" and fname == field: + return pattern + return real_gsv(doctype, fname, cache=cache) + + with patch.object(frappe, "get_single_value", side_effect=get_single_value): + self.assertEqual(get_xml_attachment_file_base_name(doc), "XMLSTEM-PO-42") + + def test_empty_or_whitespace_uses_doc_name(self): + doc = frappe._dict(name="SINV/00001", doctype="Sales Invoice") + self.assertEqual(get_xml_attachment_file_base_name(doc, pattern=""), "SINV_00001") + self.assertEqual(get_xml_attachment_file_base_name(doc, pattern=" "), "SINV_00001") + + def test_dot_separated_pattern_with_field(self): + doc = frappe._dict(name="SINV-00001", po_no="PO-1", doctype="Sales Invoice") + base = get_xml_attachment_file_base_name(doc, pattern="EXAMPLE.-.{po_no}") + self.assertEqual(base, "EXAMPLE-PO-1") + + def test_dot_separated_inv_field_end(self): + doc = frappe._dict(name="SINV-00001", po_no="X-9", doctype="Sales Invoice") + base = get_xml_attachment_file_base_name(doc, pattern="INV.-.{po_no}.-.END") + self.assertEqual(base, "INV-X-9-END") + + def test_leading_hashes_stripped_per_part_avoids_series_counter(self): + doc = frappe._dict(name="SINV-00001", po_no="PO-1", doctype="Sales Invoice") + base = get_xml_attachment_file_base_name(doc, pattern="EXAMPLE.-.{po_no}.#####") + self.assertEqual(base, "EXAMPLE-PO-1") + + def test_hash_in_literal_sanitized_like_file_utils(self): + doc = frappe._dict(name="SINV-00001", doctype="Sales Invoice") + base = get_xml_attachment_file_base_name(doc, pattern="INV#X") + self.assertEqual(base, "INV_X") + + def test_only_hash_segments_falls_back_to_doc_name(self): + doc = frappe._dict(name="SINV-00001", doctype="Sales Invoice") + self.assertEqual(get_xml_attachment_file_base_name(doc, pattern="#####"), "SINV-00001") + + def test_slash_in_resolved_base_is_sanitized(self): + doc = frappe._dict(name="SINV-00001", po_no="A/B", doctype="Sales Invoice") + base = get_xml_attachment_file_base_name(doc, pattern="{po_no}") + self.assertEqual(base, "A_B") diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json b/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json index d63ab1d8..0b5c2418 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -15,6 +15,8 @@ "section_break_bt120", "vat_exemption_reason_text", "section_break_yldr", + "auto_name_format_for_xml_file", + "column_break_vlzj", "auto_attach_xml", "attach_field_for_xml_file" ], @@ -55,8 +57,10 @@ "options": "\nWarning Message\nError Message" }, { + "bold": 1, "fieldname": "section_break_yldr", - "fieldtype": "Section Break" + "fieldtype": "Section Break", + "label": "XML Settings" }, { "default": "0", @@ -77,6 +81,16 @@ "fieldtype": "Autocomplete", "label": "Sales Invoice Number Field" }, + { + "fieldname": "column_break_vlzj", + "fieldtype": "Column Break" + }, + { + "description": "Pattern for the file name of the XML. .xml is appended automatically. Leave empty to use the document name (Sales Invoice ID). In case of an error, the document name is used as fallback.\n

Segments use a dot (.) between literal text and dynamic parts. Example:
EXAMPLE-.MM.-.{po_no}.-.YYYY", + "fieldname": "auto_name_format_for_xml_file", + "fieldtype": "Data", + "label": "Auto Name Format for XML File" + }, { "fieldname": "section_break_bt120", "fieldtype": "Section Break", @@ -93,7 +107,7 @@ "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2026-04-21 12:00:00.000000", + "modified": "2026-05-08 11:55:24.180676", "modified_by": "Administrator", "module": "European e-Invoice", "name": "E Invoice Settings", @@ -114,4 +128,4 @@ "sort_field": "creation", "sort_order": "DESC", "states": [] -} \ No newline at end of file +} diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py b/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py index 48197706..18268b3f 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py @@ -18,6 +18,7 @@ class EInvoiceSettings(Document): attach_field_for_xml_file: DF.Autocomplete | None auto_attach_xml: DF.Check + auto_name_format_for_xml_file: DF.Data | None error_action_on_save: DF.Literal["", "Warning Message", "Error Message"] error_action_on_submit: DF.Literal["", "Warning Message", "Error Message"] sales_invoice_number_field: DF.Autocomplete | None diff --git a/eu_einvoice/locale/de.po b/eu_einvoice/locale/de.po index e1b5a1e2..43e1d172 100644 --- a/eu_einvoice/locale/de.po +++ b/eu_einvoice/locale/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: European e-Invoice VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2026-04-21 15:04+0000\n" +"POT-Creation-Date: 2026-05-08 09:09+0053\n" "PO-Revision-Date: 2026-02-05 11:13+0100\n" "Last-Translator: hallo@alyf.de\n" "Language: de\n" @@ -16,28 +16,31 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.13.1\n" +"Generated-By: Babel 2.16.0\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:809 msgid "A document level discount is currently not supported in the e-invoice." msgstr "Ein Rabatt auf der Dokumentebene wird in der E-Rechnung derzeit nicht unterstützt." -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_account_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Account Name" msgstr "" -#. Label of a Select field in DocType 'E Invoice Settings' +#. Label of the error_action_on_save (Select) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Action on Validation Error during Save" msgstr "Aktion bei Validierungsfehler beim Speichern" -#. Label of a Select field in DocType 'E Invoice Settings' +#. Label of the error_action_on_submit (Select) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Action on Validation Error during Submit" msgstr "Aktion bei Validierungsfehler beim Buchen" -#. Label of a Currency field in DocType 'E Invoice Payment Term' +#. Label of the discount_actual_amount (Currency) field in DocType 'E Invoice +#. Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Actual Amount" msgstr "Tatsächlicher Betrag" @@ -46,17 +49,18 @@ msgstr "Tatsächlicher Betrag" msgid "Additional supporting document to be embedded in the e-invoice file." msgstr "Zusätzliches Dokument, das in die E-Rechnung eingebettet werden soll." -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the agreement_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Agreement" msgstr "Vereinbarung" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the allowance_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Allowance Total" msgstr "Abschläge gesamt" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the amended_from (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Amended From" msgstr "Korrektur von" @@ -65,92 +69,103 @@ msgstr "Korrektur von" msgid "An E Invoice Import with the same Invoice ID and Supplier already exists." msgstr "Eine E-Rechnung mit der gleichen Rechnungs-ID und Lieferanten existiert bereits." -#. Label of a Autocomplete field in DocType 'E Invoice Settings' +#. Label of the attach_field_for_xml_file (Autocomplete) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Attach Field for XML File" msgstr "Anhangsfeld für XML-Datei" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the auto_name_format_for_xml_file (Data) field in DocType 'E +#. Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "Auto Name Format for XML File" +msgstr "Namensmuster für die XML-Datei" + +#. Label of the auto_attach_xml (Check) field in DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Auto-attach XML File" msgstr "XML-Datei automatisch anhängen" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_bic (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "BIC" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Trade Tax' +#. Label of the basis_amount (Currency) field in DocType 'E Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Basis Amount" msgstr "Basisbetrag" -#. Label of a Date field in DocType 'E Invoice Payment Term' +#. Label of the discount_basis_date (Date) field in DocType 'E Invoice Payment +#. Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Basis Date" msgstr "Skontofrist" -#. Label of a Float field in DocType 'E Invoice Item' +#. Label of the billed_quantity (Float) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Billed Quantity" msgstr "Berechnete Menge" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the billing_period_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period" msgstr "Leistungszeitraum" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the billing_period_end (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period End" msgstr "Leistungszeitraum Ende" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the billing_period_start (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period Start" msgstr "Leistungszeitraum Start" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the buyer_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer" msgstr "Käufer" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_address_line_1 (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Address Line 1" msgstr "Käufer-Adresse Zeile 1" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_address_line_2 (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Address Line 2" msgstr "Käufer-Adresse Zeile 2" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_city (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer City" msgstr "Käufer-Stadt" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the buyer_country (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Country" msgstr "Käufer-Land" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_electronic_address (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Electronic Address" msgstr "Elektronische Adresse des Käufers" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_electronic_address_scheme (Data) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Electronic Address Scheme" msgstr "Schema der elektronischen Adresse des Käufers" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Name" msgstr "Käufer-Name" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_postcode (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Postcode" msgstr "Käufer-Postleitzahl" @@ -160,30 +175,42 @@ msgstr "Käufer-Postleitzahl" msgid "Buyer Reference" msgstr "Käufer-Referenz" -#. Label of a Currency field in DocType 'E Invoice Trade Tax' +#. Label of the calculated_amount (Currency) field in DocType 'E Invoice Trade +#. Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Calculated Amount" msgstr "Berechneter Betrag" -#. Label of a Percent field in DocType 'E Invoice Payment Term' +#. Label of the discount_calculation_percent (Percent) field in DocType 'E +#. Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Calculation Percent" msgstr "Berechnung Prozentsatz" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:834 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:840 msgid "Cannot create E Invoice." msgstr "E-Rechnung konnte nicht erstellt werden." -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:848 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:854 msgid "Cannot validate E Invoice schematron." msgstr "E-Rechnung konnte nicht validiert werden." -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the charge_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Charge Total" msgstr "Zuschläge gesamt" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Code List" +msgstr "" + +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Common Code" +msgstr "" + +#. Label of the company (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Company" msgstr "Unternehmen" @@ -202,7 +229,7 @@ msgstr "E-Rechnung konnte nicht validiert werden. Details im Fehlerlog." msgid "Create" msgstr "Erstellen" -#. Label of a Button field in DocType 'E Invoice Item' +#. Label of the create_item (Button) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Create Item" msgstr "Artikel erstellen" @@ -212,66 +239,77 @@ msgstr "Artikel erstellen" msgid "Create Purchase Invoice" msgstr "Eingangsrechnung erstellen" -#. Label of a Button field in DocType 'E Invoice Import' +#. Label of the create_supplier (Button) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier" msgstr "Lieferant erstellen" -#. Label of a Button field in DocType 'E Invoice Import' +#. Label of the create_supplier_address (Button) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier Address" msgstr "Lieferanten-Adresse erstellen" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the currency (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Currency" msgstr "Währung" -#. Label of a Small Text field in DocType 'E Invoice Settings' +#. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Default VAT exemption reason" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the delivery_tab (Tab Break) field in DocType 'E Invoice Import' +#. Label of the delivery_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Delivery" msgstr "Lieferung" -#. Label of a Section Break field in DocType 'E Invoice Payment Term' +#. Label of the section_break_mgef (Section Break) field in DocType 'E Invoice +#. Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Discount" msgstr "Rabatt" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the document_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Document" msgstr "Dokument" +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Documentation" +msgstr "" + #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:14 msgid "Download eInvoice" msgstr "E-Rechnung herunterladen" -#. Label of a Date field in DocType 'E Invoice Payment Term' +#. Label of the due (Date) field in DocType 'E Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Due" msgstr "Fällig" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the due_date (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Date" msgstr "Fälligkeitsdatum" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the due_payable (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Payable" msgstr "Fälliger Betrag" #. Name of a DocType +#. Label of a Workspace Sidebar Item #: eu_einvoice/custom_fields.py:19 #: eu_einvoice/european_e_invoice/custom/purchase_order.js:5 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "E Invoice Import" msgstr "E-Rechnungs-Import" @@ -279,7 +317,8 @@ msgstr "E-Rechnungs-Import" msgid "E Invoice Import {0} does not exist" msgstr "E-Rechnungs-Import {0} existiert nicht" -#. Label of a Check field in DocType 'E Invoice Import' +#. Label of the e_invoice_is_correct (Check) field in DocType 'E Invoice +#. Import' #: eu_einvoice/custom_fields.py:165 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "E Invoice Is Correct" @@ -300,7 +339,9 @@ msgid "E Invoice Profile" msgstr "E-Rechnungs-Profil" #. Name of a DocType +#. Label of a Workspace Sidebar Item #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "E Invoice Settings" msgstr "E-Rechnungs-Einstellungen" @@ -309,7 +350,11 @@ msgstr "E-Rechnungs-Einstellungen" msgid "E Invoice Trade Tax" msgstr "E-Rechnungs-Steuer" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:816 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1185 +msgid "E Invoice XML file name pattern failed" +msgstr "Namensmuster für E-Rechnungs-XML-Datei fehlgeschlagen" + +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:822 msgid "E Invoice is not correct" msgstr "E-Rechnung ist nicht korrekt" @@ -318,11 +363,18 @@ msgstr "E-Rechnung ist nicht korrekt" msgid "E Invoicing" msgstr "" -#. Label of a Attach field in DocType 'E Invoice Import' +#. Label of the einvoice (Attach) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "E-Invoice" msgstr "E-Rechnung" +#. Label of a Desktop Icon +#. Title of a Workspace Sidebar +#: eu_einvoice/desktop_icon/e_invoicing.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "E-Invoicing" +msgstr "" + #: eu_einvoice/custom_fields.py:63 eu_einvoice/custom_fields.py:85 #: eu_einvoice/custom_fields.py:107 msgid "Electronic Address" @@ -344,30 +396,32 @@ msgstr "Eingebettetes Dokument" msgid "Error Message" msgstr "Fehlermeldung" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:51 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:52 msgid "Field '{0}' does not exist on Sales Invoice doctype" msgstr "Feld '{0}' existiert nicht im DocType 'Sales Invoice'" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:59 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:60 msgid "Field '{0}' must be of type 'Attach'. Current type: {1}" msgstr "Feld '{0}' muss vom Typ 'Anhängen' sein. Aktueller Typ: {1}" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the file_section_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "File Section" msgstr "Datei-Abschnitt" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the grand_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Grand Total" msgstr "Gesamtbetrag" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the header_section (Section Break) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Header" msgstr "Kopfzeile" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_iban (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "IBAN" msgstr "IBAN" @@ -378,28 +432,28 @@ msgstr "IBAN" msgid "If set, written to BT-120 (ram:ExemptionReason) on VAT breakdowns where an exemption reason code is emitted. Left unset in the XML when empty." msgstr "Wenn ausgefüllt, wird der Text als BT-120 (ram:ExemptionReason) in der Steueraufschlüsselung geschrieben, sobald ein Befreiungsgrundcode ausgegeben wird. Bleibt das Feld leer, wird BT-120 im XML nicht gesetzt." -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the id (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Invoice ID" msgstr "Rechnungs-ID" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the issue_date (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Issue Date" msgstr "Ausstellungsdatum" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the item (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Item" msgstr "Artikel" -#. Label of a Table field in DocType 'E Invoice Import' -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the items (Table) field in DocType 'E Invoice Import' +#. Label of the items_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Items" msgstr "Positionen" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the line_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" msgstr "Zeilensumme" @@ -408,12 +462,13 @@ msgstr "Zeilensumme" msgid "Link to {0}" msgstr "Mit {0} verknüpfen" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the monetary_summation_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Monetary Summation" msgstr "Gesamtbeträge" -#. Label of a Currency field in DocType 'E Invoice Item' +#. Label of the net_rate (Currency) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Net Rate" msgstr "Nettopreis" @@ -432,17 +487,29 @@ msgstr "Keine E-Rechnung" msgid "On submit, only for E Invoice Profile \"XRECHNUNG\"" msgstr "Nur bei E-Rechnungs-Profil \"XRECHNUNG\" beim Buchen" -#. Label of a Currency field in DocType 'E Invoice Payment Term' +#. Label of the partial_amount (Currency) field in DocType 'E Invoice Payment +#. Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Partial Amount" msgstr "Teilbetrag" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Description of the 'Auto Name Format for XML File' (Data) field in DocType +#. 'E Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "" +"Pattern for the file name of the XML. .xml is appended automatically. Leave empty to use the document name (Sales Invoice ID). In case of an error, the document name is used as fallback.\n" +"

Segments use a dot (.) between literal text and dynamic parts. Example:
EXAMPLE-.MM.-.{po_no}.-.YYYY" +msgstr "" +"Muster für den Dateinamen der XML-Datei. .xml wird automatisch angehängt. Leer lassen, um den Dokumentnamen zu verwenden (ID der Ausgangsrechnung). Bei einem Fehler wird der Dokumentname als Fallback verwendet.\n" +"

Literaltext und dynamische Teile werden mit einem Punkt (.) getrennt. Beispiel:
BEISPIEL-.MM.-.{po_no}.-.YYYY" + +#. Label of the payment_means_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Payment Means" msgstr "Zahlungsmittel" -#. Label of a Table field in DocType 'E Invoice Import' +#. Label of the payment_terms (Table) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Payment Terms" msgstr "Zahlungsbedingungen" @@ -463,31 +530,28 @@ msgstr "Bitte beachten Sie die Validierungsfehler der E-Rechnung." msgid "Please select a company before submitting" msgstr "Bitte vor dem Buchen ein Unternehmen auswählen." -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the product_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product" msgstr "Produkt" -#. Label of a Small Text field in DocType 'E Invoice Item' +#. Label of the product_description (Small Text) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Description" msgstr "Produktbeschreibung" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the product_name (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Name" msgstr "Produktname" -#. Label of a Read Only field in DocType 'E Invoice Import' +#. Label of the profile (Read Only) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Profile" msgstr "Profil" -#. Linked DocType in E Invoice Import's connections -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Invoice" -msgstr "Eingangsrechnung" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:647 msgid "Purchase Invoice {0} is already linked to E Invoice Import {1}" msgstr "Eingangsrechnung {0} ist bereits mit E-Rechnungs-Import {1} verknüpft" @@ -497,12 +561,12 @@ msgstr "Eingangsrechnung {0} ist bereits mit E-Rechnungs-Import {1} verknüpft" msgid "Purchase Manager" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the purchase_order (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Purchase Order" msgstr "Lieferantenauftrag" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the po_detail (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" msgstr "" @@ -512,7 +576,8 @@ msgstr "" msgid "Purchase User" msgstr "" -#. Label of a Percent field in DocType 'E Invoice Trade Tax' +#. Label of the rate_applicable_percent (Percent) field in DocType 'E Invoice +#. Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Rate Applicable Percent" msgstr "Anwendbarer Prozentsatz" @@ -521,84 +586,98 @@ msgstr "Anwendbarer Prozentsatz" msgid "Row {0}" msgstr "Zeile {0}" -#. Label of a Section Break field in DocType 'E Invoice Settings' +#. Label of the sales_invoice_section (Section Break) field in DocType 'E +#. Invoice Settings' +#. Label of a Workspace Sidebar Item #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "Sales Invoice" msgstr "Ausgangsrechnung" -#. Label of a Autocomplete field in DocType 'E Invoice Settings' +#. Label of the sales_invoice_number_field (Autocomplete) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Sales Invoice Number Field" msgstr "Rechnungsnummer-Feld" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the seller_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller" msgstr "Verkäufer" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_address_line_1 (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Address Line 1" msgstr "Verkäufer-Adresse Zeile 1" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_address_line_2 (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Address Line 2" msgstr "Verkäufer-Adresse Zeile 2" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_city (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller City" msgstr "Verkäufer-Stadt" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the seller_country (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Country" msgstr "Verkäufer-Land" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_electronic_address (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Electronic Address" msgstr "Elektronische Adresse des Verkäufers" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_electronic_address_scheme (Data) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Electronic Address Scheme" msgstr "Schema der elektronischen Adresse des Verkäufers" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Name" msgstr "Verkäufer-Name" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_postcode (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Postcode" msgstr "Verkäufer-Postleitzahl" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the seller_product_id (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Seller Product ID" msgstr "Verkäufer-Produkt-ID" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_tax_id (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Tax ID" msgstr "Verkäufer-Steuer-ID" -#. Label of a Tab Break field in DocType 'E Invoice Import' -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Settings" +msgstr "" + +#. Label of the settlement_tab (Tab Break) field in DocType 'E Invoice Import' +#. Label of the settlement_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Settlement" msgstr "Ausgleich" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the supplier (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Supplier" msgstr "Lieferant" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the supplier_address (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Supplier Address" msgstr "Lieferanten-Adresse" @@ -613,27 +692,27 @@ msgstr "Lieferantenrechnungsdatei" msgid "System Manager" msgstr "" -#. Label of a Link field in DocType 'E Invoice Trade Tax' +#. Label of the tax_account (Link) field in DocType 'E Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Tax Account" msgstr "Steuer-Konto" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the tax_basis_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "Steuerbasis gesamt" -#. Label of a Percent field in DocType 'E Invoice Item' +#. Label of the tax_rate (Percent) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Tax Rate" msgstr "Steuersatz" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the tax_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Total" msgstr "Steuer gesamt" -#. Label of a Table field in DocType 'E Invoice Import' +#. Label of the taxes (Table) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Taxes" msgstr "Steuern" @@ -646,22 +725,22 @@ msgstr "Das Format der hochgeladenen Datei ({0}) wird für E-Rechnungen nicht un msgid "The uploaded file does not contain valid XML data." msgstr "Die hochgeladene Datei enthält keine gültige XML-Daten." -#. Label of a Currency field in DocType 'E Invoice Item' +#. Label of the total_amount (Currency) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Total Amount" msgstr "Gesamtbetrag" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the total_prepaid (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Total Prepaid" msgstr "Vorausbezahlt" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the uom (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "UOM" msgstr "Einheit" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the unit_code (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" msgstr "Einheits-Code" @@ -675,38 +754,43 @@ msgstr "Nicht unterstütztes Dateiformat" msgid "Upload the .xml or .pdf file provided by your supplier." msgstr "Laden Sie die von Ihrem Lieferanten bereitgestellte .xml- oder .pdf-Datei hoch." -#. Label of a Section Break field in DocType 'E Invoice Settings' +#. Label of the section_break_bt120 (Section Break) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "VAT exemption (e-invoice)" msgstr "Umsatzsteuerbefreiung (E-Rechnung)" -#. Label of a Small Text field in DocType 'E Invoice Trade Tax' +#. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E +#. Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "VAT exemption reason" msgstr "Grund für Umsatzsteuerbefreiung" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the validate_sales_invoice_on_save (Check) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Save" msgstr "E-Rechnung beim Speichern validieren" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the validate_sales_invoice_on_submit (Check) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Submit" msgstr "E-Rechnung beim Buchen validieren" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the validation_details_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Details" msgstr "Validierungsdetails" -#. Label of a Text field in DocType 'E Invoice Import' +#. Label of the validation_errors (Text) field in DocType 'E Invoice Import' #: eu_einvoice/custom_fields.py:175 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Errors" msgstr "Validierungsfehler" -#. Label of a Text field in DocType 'E Invoice Import' +#. Label of the validation_warnings (Text) field in DocType 'E Invoice Import' #: eu_einvoice/custom_fields.py:185 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Warnings" @@ -723,19 +807,25 @@ msgstr "{0} ansehen" msgid "Warning Message" msgstr "Warnung" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:782 +#. Label of the section_break_yldr (Section Break) field in DocType 'E Invoice +#. Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "XML Settings" +msgstr "XML-Einstellungen" + +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:788 msgid "{0} row #{1}: Discount Date should be after Posting Date" msgstr "{0} Zeile {1}: Rabatt-Datum sollte nach Buchungsdatum liegen" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:771 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:777 msgid "{0} row #{1}: The charge type 'Actual' is only supported in the eInvoice profiles 'EXTENDED' and 'XRECHNUNG'." msgstr "Die Gebührenart 'Tatsächlich' wird nur in den E-Rechnungs-Profilen 'EXTENDED' und 'XRECHNUNG' unterstützt." -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:759 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:765 msgid "{0} row #{1}: Type '{2}' is not supported in e-invoice" msgstr "{0} Zeile #{1}: Typ '{2}' wird in der E-Rechnung nicht unterstützt" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:794 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:800 msgid "{0}: Only one mode of payment will be considered in the e-invoice." msgstr "{0}: Nur eine Zahlungsart wird in der E-Rechnung berücksichtigt." diff --git a/eu_einvoice/locale/main.pot b/eu_einvoice/locale/main.pot index ff18b773..54bcd9a4 100644 --- a/eu_einvoice/locale/main.pot +++ b/eu_einvoice/locale/main.pot @@ -7,35 +7,38 @@ msgid "" msgstr "" "Project-Id-Version: European e-Invoice VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2026-04-21 15:04+0000\n" -"PO-Revision-Date: 2026-04-21 15:04+0000\n" +"POT-Creation-Date: 2026-05-08 09:09+0053\n" +"PO-Revision-Date: 2026-05-08 09:09+0053\n" "Last-Translator: hallo@alyf.de\n" "Language-Team: hallo@alyf.de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.13.1\n" +"Generated-By: Babel 2.16.0\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:809 msgid "A document level discount is currently not supported in the e-invoice." msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_account_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Account Name" msgstr "" -#. Label of a Select field in DocType 'E Invoice Settings' +#. Label of the error_action_on_save (Select) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Action on Validation Error during Save" msgstr "" -#. Label of a Select field in DocType 'E Invoice Settings' +#. Label of the error_action_on_submit (Select) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Action on Validation Error during Submit" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Payment Term' +#. Label of the discount_actual_amount (Currency) field in DocType 'E Invoice +#. Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Actual Amount" msgstr "" @@ -44,17 +47,18 @@ msgstr "" msgid "Additional supporting document to be embedded in the e-invoice file." msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the agreement_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Agreement" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the allowance_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Allowance Total" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the amended_from (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Amended From" msgstr "" @@ -63,92 +67,103 @@ msgstr "" msgid "An E Invoice Import with the same Invoice ID and Supplier already exists." msgstr "" -#. Label of a Autocomplete field in DocType 'E Invoice Settings' +#. Label of the attach_field_for_xml_file (Autocomplete) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Attach Field for XML File" msgstr "" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the auto_name_format_for_xml_file (Data) field in DocType 'E +#. Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "Auto Name Format for XML File" +msgstr "" + +#. Label of the auto_attach_xml (Check) field in DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Auto-attach XML File" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_bic (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "BIC" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Trade Tax' +#. Label of the basis_amount (Currency) field in DocType 'E Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Basis Amount" msgstr "" -#. Label of a Date field in DocType 'E Invoice Payment Term' +#. Label of the discount_basis_date (Date) field in DocType 'E Invoice Payment +#. Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Basis Date" msgstr "" -#. Label of a Float field in DocType 'E Invoice Item' +#. Label of the billed_quantity (Float) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Billed Quantity" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the billing_period_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period" msgstr "" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the billing_period_end (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period End" msgstr "" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the billing_period_start (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Billing Period Start" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the buyer_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_address_line_1 (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Address Line 1" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_address_line_2 (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Address Line 2" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_city (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer City" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the buyer_country (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Country" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_electronic_address (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Electronic Address" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_electronic_address_scheme (Data) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Electronic Address Scheme" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Name" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the buyer_postcode (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Buyer Postcode" msgstr "" @@ -158,30 +173,42 @@ msgstr "" msgid "Buyer Reference" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Trade Tax' +#. Label of the calculated_amount (Currency) field in DocType 'E Invoice Trade +#. Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Calculated Amount" msgstr "" -#. Label of a Percent field in DocType 'E Invoice Payment Term' +#. Label of the discount_calculation_percent (Percent) field in DocType 'E +#. Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Calculation Percent" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:834 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:840 msgid "Cannot create E Invoice." msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:848 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:854 msgid "Cannot validate E Invoice schematron." msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the charge_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Charge Total" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Code List" +msgstr "" + +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Common Code" +msgstr "" + +#. Label of the company (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Company" msgstr "" @@ -200,7 +227,7 @@ msgstr "" msgid "Create" msgstr "" -#. Label of a Button field in DocType 'E Invoice Item' +#. Label of the create_item (Button) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Create Item" msgstr "" @@ -210,66 +237,77 @@ msgstr "" msgid "Create Purchase Invoice" msgstr "" -#. Label of a Button field in DocType 'E Invoice Import' +#. Label of the create_supplier (Button) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier" msgstr "" -#. Label of a Button field in DocType 'E Invoice Import' +#. Label of the create_supplier_address (Button) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier Address" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the currency (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Currency" msgstr "" -#. Label of a Small Text field in DocType 'E Invoice Settings' +#. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Default VAT exemption reason" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the delivery_tab (Tab Break) field in DocType 'E Invoice Import' +#. Label of the delivery_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Delivery" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Payment Term' +#. Label of the section_break_mgef (Section Break) field in DocType 'E Invoice +#. Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Discount" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the document_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Document" msgstr "" +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Documentation" +msgstr "" + #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:14 msgid "Download eInvoice" msgstr "" -#. Label of a Date field in DocType 'E Invoice Payment Term' +#. Label of the due (Date) field in DocType 'E Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Due" msgstr "" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the due_date (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Date" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the due_payable (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Payable" msgstr "" #. Name of a DocType +#. Label of a Workspace Sidebar Item #: eu_einvoice/custom_fields.py:19 #: eu_einvoice/european_e_invoice/custom/purchase_order.js:5 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "E Invoice Import" msgstr "" @@ -277,7 +315,8 @@ msgstr "" msgid "E Invoice Import {0} does not exist" msgstr "" -#. Label of a Check field in DocType 'E Invoice Import' +#. Label of the e_invoice_is_correct (Check) field in DocType 'E Invoice +#. Import' #: eu_einvoice/custom_fields.py:165 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "E Invoice Is Correct" @@ -298,7 +337,9 @@ msgid "E Invoice Profile" msgstr "" #. Name of a DocType +#. Label of a Workspace Sidebar Item #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "E Invoice Settings" msgstr "" @@ -307,7 +348,11 @@ msgstr "" msgid "E Invoice Trade Tax" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:816 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1185 +msgid "E Invoice XML file name pattern failed" +msgstr "" + +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:822 msgid "E Invoice is not correct" msgstr "" @@ -316,11 +361,18 @@ msgstr "" msgid "E Invoicing" msgstr "" -#. Label of a Attach field in DocType 'E Invoice Import' +#. Label of the einvoice (Attach) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "E-Invoice" msgstr "" +#. Label of a Desktop Icon +#. Title of a Workspace Sidebar +#: eu_einvoice/desktop_icon/e_invoicing.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "E-Invoicing" +msgstr "" + #: eu_einvoice/custom_fields.py:63 eu_einvoice/custom_fields.py:85 #: eu_einvoice/custom_fields.py:107 msgid "Electronic Address" @@ -343,30 +395,32 @@ msgstr "" msgid "Error Message" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:51 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:52 msgid "Field '{0}' does not exist on Sales Invoice doctype" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:59 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:60 msgid "Field '{0}' must be of type 'Attach'. Current type: {1}" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the file_section_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "File Section" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the grand_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Grand Total" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the header_section (Section Break) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Header" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the payee_iban (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "IBAN" msgstr "" @@ -377,28 +431,28 @@ msgstr "" msgid "If set, written to BT-120 (ram:ExemptionReason) on VAT breakdowns where an exemption reason code is emitted. Left unset in the XML when empty." msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the id (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Invoice ID" msgstr "" -#. Label of a Date field in DocType 'E Invoice Import' +#. Label of the issue_date (Date) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Issue Date" msgstr "" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the item (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Item" msgstr "" -#. Label of a Table field in DocType 'E Invoice Import' -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the items (Table) field in DocType 'E Invoice Import' +#. Label of the items_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Items" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the line_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" msgstr "" @@ -407,12 +461,13 @@ msgstr "" msgid "Link to {0}" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the monetary_summation_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Monetary Summation" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Item' +#. Label of the net_rate (Currency) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Net Rate" msgstr "" @@ -431,17 +486,27 @@ msgstr "" msgid "On submit, only for E Invoice Profile \"XRECHNUNG\"" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Payment Term' +#. Label of the partial_amount (Currency) field in DocType 'E Invoice Payment +#. Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Partial Amount" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Description of the 'Auto Name Format for XML File' (Data) field in DocType +#. 'E Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "" +"Pattern for the file name of the XML. .xml is appended automatically. Leave empty to use the document name (Sales Invoice ID). In case of an error, the document name is used as fallback.\n" +"

Segments use a dot (.) between literal text and dynamic parts. Example:
EXAMPLE-.MM.-.{po_no}.-.YYYY" +msgstr "" + +#. Label of the payment_means_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Payment Means" msgstr "" -#. Label of a Table field in DocType 'E Invoice Import' +#. Label of the payment_terms (Table) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Payment Terms" msgstr "" @@ -462,31 +527,28 @@ msgstr "" msgid "Please select a company before submitting" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of the product_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product" msgstr "" -#. Label of a Small Text field in DocType 'E Invoice Item' +#. Label of the product_description (Small Text) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Description" msgstr "" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the product_name (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Name" msgstr "" -#. Label of a Read Only field in DocType 'E Invoice Import' +#. Label of the profile (Read Only) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Profile" msgstr "" -#. Linked DocType in E Invoice Import's connections -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Invoice" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:647 msgid "Purchase Invoice {0} is already linked to E Invoice Import {1}" msgstr "" @@ -496,12 +558,12 @@ msgstr "" msgid "Purchase Manager" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the purchase_order (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Purchase Order" msgstr "" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the po_detail (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" msgstr "" @@ -511,7 +573,8 @@ msgstr "" msgid "Purchase User" msgstr "" -#. Label of a Percent field in DocType 'E Invoice Trade Tax' +#. Label of the rate_applicable_percent (Percent) field in DocType 'E Invoice +#. Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Rate Applicable Percent" msgstr "" @@ -520,84 +583,98 @@ msgstr "" msgid "Row {0}" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Settings' +#. Label of the sales_invoice_section (Section Break) field in DocType 'E +#. Invoice Settings' +#. Label of a Workspace Sidebar Item #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +#: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "Sales Invoice" msgstr "" -#. Label of a Autocomplete field in DocType 'E Invoice Settings' +#. Label of the sales_invoice_number_field (Autocomplete) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Sales Invoice Number Field" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of the seller_tab (Tab Break) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_address_line_1 (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Address Line 1" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_address_line_2 (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Address Line 2" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_city (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller City" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the seller_country (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Country" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_electronic_address (Data) field in DocType 'E Invoice +#. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Electronic Address" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_electronic_address_scheme (Data) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Electronic Address Scheme" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_name (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Name" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_postcode (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Postcode" msgstr "" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the seller_product_id (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Seller Product ID" msgstr "" -#. Label of a Data field in DocType 'E Invoice Import' +#. Label of the seller_tax_id (Data) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Seller Tax ID" msgstr "" -#. Label of a Tab Break field in DocType 'E Invoice Import' -#. Label of a Section Break field in DocType 'E Invoice Item' +#. Label of a Workspace Sidebar Item +#: eu_einvoice/workspace_sidebar/e_invoicing.json +msgid "Settings" +msgstr "" + +#. Label of the settlement_tab (Tab Break) field in DocType 'E Invoice Import' +#. Label of the settlement_section (Section Break) field in DocType 'E Invoice +#. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Settlement" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the supplier (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Supplier" msgstr "" -#. Label of a Link field in DocType 'E Invoice Import' +#. Label of the supplier_address (Link) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Supplier Address" msgstr "" @@ -612,27 +689,27 @@ msgstr "" msgid "System Manager" msgstr "" -#. Label of a Link field in DocType 'E Invoice Trade Tax' +#. Label of the tax_account (Link) field in DocType 'E Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Tax Account" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the tax_basis_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "" -#. Label of a Percent field in DocType 'E Invoice Item' +#. Label of the tax_rate (Percent) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Tax Rate" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the tax_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Total" msgstr "" -#. Label of a Table field in DocType 'E Invoice Import' +#. Label of the taxes (Table) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Taxes" msgstr "" @@ -645,22 +722,22 @@ msgstr "" msgid "The uploaded file does not contain valid XML data." msgstr "" -#. Label of a Currency field in DocType 'E Invoice Item' +#. Label of the total_amount (Currency) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Total Amount" msgstr "" -#. Label of a Currency field in DocType 'E Invoice Import' +#. Label of the total_prepaid (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Total Prepaid" msgstr "" -#. Label of a Link field in DocType 'E Invoice Item' +#. Label of the uom (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "UOM" msgstr "" -#. Label of a Data field in DocType 'E Invoice Item' +#. Label of the unit_code (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" msgstr "" @@ -674,38 +751,43 @@ msgstr "" msgid "Upload the .xml or .pdf file provided by your supplier." msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Settings' +#. Label of the section_break_bt120 (Section Break) field in DocType 'E Invoice +#. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "VAT exemption (e-invoice)" msgstr "" -#. Label of a Small Text field in DocType 'E Invoice Trade Tax' +#. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E +#. Invoice Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "VAT exemption reason" msgstr "" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the validate_sales_invoice_on_save (Check) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Save" msgstr "" -#. Label of a Check field in DocType 'E Invoice Settings' +#. Label of the validate_sales_invoice_on_submit (Check) field in DocType 'E +#. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Submit" msgstr "" -#. Label of a Section Break field in DocType 'E Invoice Import' +#. Label of the validation_details_section (Section Break) field in DocType 'E +#. Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Details" msgstr "" -#. Label of a Text field in DocType 'E Invoice Import' +#. Label of the validation_errors (Text) field in DocType 'E Invoice Import' #: eu_einvoice/custom_fields.py:175 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Errors" msgstr "" -#. Label of a Text field in DocType 'E Invoice Import' +#. Label of the validation_warnings (Text) field in DocType 'E Invoice Import' #: eu_einvoice/custom_fields.py:185 #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Validation Warnings" @@ -723,19 +805,25 @@ msgstr "" msgid "Warning Message" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:782 +#. Label of the section_break_yldr (Section Break) field in DocType 'E Invoice +#. Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "XML Settings" +msgstr "" + +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:788 msgid "{0} row #{1}: Discount Date should be after Posting Date" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:771 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:777 msgid "{0} row #{1}: The charge type 'Actual' is only supported in the eInvoice profiles 'EXTENDED' and 'XRECHNUNG'." msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:759 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:765 msgid "{0} row #{1}: Type '{2}' is not supported in e-invoice" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:794 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:800 msgid "{0}: Only one mode of payment will be considered in the e-invoice." msgstr "" From dfdec0d00d9ab1fa832f34925f5081f8947ce9fe Mon Sep 17 00:00:00 2001 From: Raffael Meyer <14891507+barredterra@users.noreply.github.com> Date: Tue, 12 May 2026 20:32:11 +0200 Subject: [PATCH 6/7] chore: ignore translatable strings from frappe and erpnext (#259) * chore: ignore translatable strings from frappe and erpnext * chore: update translations --- eu_einvoice/hooks.py | 5 + eu_einvoice/locale/de.po | 257 ++---------------------------------- eu_einvoice/locale/main.pot | 254 ++--------------------------------- 3 files changed, 29 insertions(+), 487 deletions(-) diff --git a/eu_einvoice/hooks.py b/eu_einvoice/hooks.py index a366205b..e9712ed5 100644 --- a/eu_einvoice/hooks.py +++ b/eu_einvoice/hooks.py @@ -246,3 +246,8 @@ # default_log_clearing_doctypes = { # "Logging DocType Name": 30 # days to retain logs # } + +# Translation +# ------------ +# List of apps whose translatable strings should be excluded from this app's translations. +ignore_translatable_strings_from = ["frappe", "erpnext"] diff --git a/eu_einvoice/locale/de.po b/eu_einvoice/locale/de.po index 43e1d172..63457573 100644 --- a/eu_einvoice/locale/de.po +++ b/eu_einvoice/locale/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: European e-Invoice VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2026-05-08 09:09+0053\n" +"POT-Creation-Date: 2026-05-12 20:23+0053\n" "PO-Revision-Date: 2026-02-05 11:13+0100\n" "Last-Translator: hallo@alyf.de\n" "Language: de\n" @@ -18,15 +18,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:809 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:807 msgid "A document level discount is currently not supported in the e-invoice." msgstr "Ein Rabatt auf der Dokumentebene wird in der E-Rechnung derzeit nicht unterstützt." -#. Label of the payee_account_name (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Account Name" -msgstr "" - #. Label of the error_action_on_save (Select) field in DocType 'E Invoice #. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -60,11 +55,6 @@ msgstr "Vereinbarung" msgid "Allowance Total" msgstr "Abschläge gesamt" -#. Label of the amended_from (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Amended From" -msgstr "Korrektur von" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:106 msgid "An E Invoice Import with the same Invoice ID and Supplier already exists." msgstr "Eine E-Rechnung mit der gleichen Rechnungs-ID und Lieferanten existiert bereits." @@ -175,23 +165,17 @@ msgstr "Käufer-Postleitzahl" msgid "Buyer Reference" msgstr "Käufer-Referenz" -#. Label of the calculated_amount (Currency) field in DocType 'E Invoice Trade -#. Tax' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json -msgid "Calculated Amount" -msgstr "Berechneter Betrag" - #. Label of the discount_calculation_percent (Percent) field in DocType 'E #. Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Calculation Percent" msgstr "Berechnung Prozentsatz" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:840 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:838 msgid "Cannot create E Invoice." msgstr "E-Rechnung konnte nicht erstellt werden." -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:854 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:852 msgid "Cannot validate E Invoice schematron." msgstr "E-Rechnung konnte nicht validiert werden." @@ -200,21 +184,6 @@ msgstr "E-Rechnung konnte nicht validiert werden." msgid "Charge Total" msgstr "Zuschläge gesamt" -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Code List" -msgstr "" - -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Common Code" -msgstr "" - -#. Label of the company (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Company" -msgstr "Unternehmen" - #. Description of the 'Sales Invoice Number Field' (Autocomplete) field in #. DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -225,65 +194,17 @@ msgstr "Konfigurieren Sie dies, wenn Sie benutzerdefinierte Rechnungsnummern in msgid "Could not validate E Invoice schematron. See Error Log for details." msgstr "E-Rechnung konnte nicht validiert werden. Details im Fehlerlog." -#: eu_einvoice/european_e_invoice/custom/purchase_order.js:12 -msgid "Create" -msgstr "Erstellen" - -#. Label of the create_item (Button) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Create Item" -msgstr "Artikel erstellen" - -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.js:93 -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:437 -msgid "Create Purchase Invoice" -msgstr "Eingangsrechnung erstellen" - -#. Label of the create_supplier (Button) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Create Supplier" -msgstr "Lieferant erstellen" - #. Label of the create_supplier_address (Button) field in DocType 'E Invoice #. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier Address" msgstr "Lieferanten-Adresse erstellen" -#. Label of the currency (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Currency" -msgstr "Währung" - #. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E #. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Default VAT exemption reason" -msgstr "" - -#. Label of the delivery_tab (Tab Break) field in DocType 'E Invoice Import' -#. Label of the delivery_section (Section Break) field in DocType 'E Invoice -#. Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Delivery" -msgstr "Lieferung" - -#. Label of the section_break_mgef (Section Break) field in DocType 'E Invoice -#. Payment Term' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json -msgid "Discount" -msgstr "Rabatt" - -#. Label of the document_tab (Tab Break) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Document" -msgstr "Dokument" - -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Documentation" -msgstr "" +msgstr "Standard-Befreiungsgrund für Umsatzsteuer" #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:14 msgid "Download eInvoice" @@ -294,11 +215,6 @@ msgstr "E-Rechnung herunterladen" msgid "Due" msgstr "Fällig" -#. Label of the due_date (Date) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Due Date" -msgstr "Fälligkeitsdatum" - #. Label of the due_payable (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Payable" @@ -350,11 +266,11 @@ msgstr "E-Rechnungs-Einstellungen" msgid "E Invoice Trade Tax" msgstr "E-Rechnungs-Steuer" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1185 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1168 msgid "E Invoice XML file name pattern failed" msgstr "Namensmuster für E-Rechnungs-XML-Datei fehlgeschlagen" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:822 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:820 msgid "E Invoice is not correct" msgstr "E-Rechnung ist nicht korrekt" @@ -373,7 +289,7 @@ msgstr "E-Rechnung" #: eu_einvoice/desktop_icon/e_invoicing.json #: eu_einvoice/workspace_sidebar/e_invoicing.json msgid "E-Invoicing" -msgstr "" +msgstr "E-Rechnungen" #: eu_einvoice/custom_fields.py:63 eu_einvoice/custom_fields.py:85 #: eu_einvoice/custom_fields.py:107 @@ -389,13 +305,6 @@ msgstr "Schema der elektronischen Adresse" msgid "Embedded Document" msgstr "Eingebettetes Dokument" -#. Option for the 'Action on Validation Error during Save' (Select) field in -#. DocType 'E Invoice Settings' -#. Option for the 'Action on Validation Error during Submit' (Select) field in -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -msgid "Error Message" -msgstr "Fehlermeldung" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:52 msgid "Field '{0}' does not exist on Sales Invoice doctype" msgstr "Feld '{0}' existiert nicht im DocType 'Sales Invoice'" @@ -410,49 +319,12 @@ msgstr "Feld '{0}' muss vom Typ 'Anhängen' sein. Aktueller Typ: {1}" msgid "File Section" msgstr "Datei-Abschnitt" -#. Label of the grand_total (Currency) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Grand Total" -msgstr "Gesamtbetrag" - -#. Label of the header_section (Section Break) field in DocType 'E Invoice -#. Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Header" -msgstr "Kopfzeile" - -#. Label of the payee_iban (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "IBAN" -msgstr "IBAN" - #. Description of the 'Default VAT exemption reason' (Small Text) field in #. DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "If set, written to BT-120 (ram:ExemptionReason) on VAT breakdowns where an exemption reason code is emitted. Left unset in the XML when empty." msgstr "Wenn ausgefüllt, wird der Text als BT-120 (ram:ExemptionReason) in der Steueraufschlüsselung geschrieben, sobald ein Befreiungsgrundcode ausgegeben wird. Bleibt das Feld leer, wird BT-120 im XML nicht gesetzt." -#. Label of the id (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Invoice ID" -msgstr "Rechnungs-ID" - -#. Label of the issue_date (Date) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Issue Date" -msgstr "Ausstellungsdatum" - -#. Label of the item (Link) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Item" -msgstr "Artikel" - -#. Label of the items (Table) field in DocType 'E Invoice Import' -#. Label of the items_tab (Tab Break) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Items" -msgstr "Positionen" - #. Label of the line_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" @@ -468,11 +340,6 @@ msgstr "Mit {0} verknüpfen" msgid "Monetary Summation" msgstr "Gesamtbeträge" -#. Label of the net_rate (Currency) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Net Rate" -msgstr "Nettopreis" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:446 msgid "No machine-readable data was found in the PDF file. You can create a regular Purchase Invoice manually instead." msgstr "In der PDF-Datei wurden keine maschinenlesbaren Daten gefunden. Sie können stattdessen eine reguläre Eingangsrechnung manuell erstellen." @@ -509,11 +376,6 @@ msgstr "" msgid "Payment Means" msgstr "Zahlungsmittel" -#. Label of the payment_terms (Table) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Payment Terms" -msgstr "Zahlungsbedingungen" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:120 msgid "Please create or select a supplier before submitting" msgstr "Bitte vor dem Buchen einen Lieferanten auswählen oder erstellen." @@ -530,12 +392,6 @@ msgstr "Bitte beachten Sie die Validierungsfehler der E-Rechnung." msgid "Please select a company before submitting" msgstr "Bitte vor dem Buchen ein Unternehmen auswählen." -#. Label of the product_section (Section Break) field in DocType 'E Invoice -#. Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Product" -msgstr "Produkt" - #. Label of the product_description (Small Text) field in DocType 'E Invoice #. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json @@ -547,34 +403,14 @@ msgstr "Produktbeschreibung" msgid "Product Name" msgstr "Produktname" -#. Label of the profile (Read Only) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Profile" -msgstr "Profil" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:647 msgid "Purchase Invoice {0} is already linked to E Invoice Import {1}" msgstr "Eingangsrechnung {0} ist bereits mit E-Rechnungs-Import {1} verknüpft" -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Manager" -msgstr "" - -#. Label of the purchase_order (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Order" -msgstr "Lieferantenauftrag" - #. Label of the po_detail (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" -msgstr "" - -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase User" -msgstr "" +msgstr "Bestellposition" #. Label of the rate_applicable_percent (Percent) field in DocType 'E Invoice #. Trade Tax' @@ -582,18 +418,6 @@ msgstr "" msgid "Rate Applicable Percent" msgstr "Anwendbarer Prozentsatz" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:673 -msgid "Row {0}" -msgstr "Zeile {0}" - -#. Label of the sales_invoice_section (Section Break) field in DocType 'E -#. Invoice Settings' -#. Label of a Workspace Sidebar Item -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Sales Invoice" -msgstr "Ausgangsrechnung" - #. Label of the sales_invoice_number_field (Autocomplete) field in DocType 'E #. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -659,11 +483,6 @@ msgstr "Verkäufer-Produkt-ID" msgid "Seller Tax ID" msgstr "Verkäufer-Steuer-ID" -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Settings" -msgstr "" - #. Label of the settlement_tab (Tab Break) field in DocType 'E Invoice Import' #. Label of the settlement_section (Section Break) field in DocType 'E Invoice #. Item' @@ -672,51 +491,15 @@ msgstr "" msgid "Settlement" msgstr "Ausgleich" -#. Label of the supplier (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Supplier" -msgstr "Lieferant" - -#. Label of the supplier_address (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Supplier Address" -msgstr "Lieferanten-Adresse" - #: eu_einvoice/custom_fields.py:28 msgid "Supplier Invoice File" msgstr "Lieferantenrechnungsdatei" -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -msgid "System Manager" -msgstr "" - -#. Label of the tax_account (Link) field in DocType 'E Invoice Trade Tax' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json -msgid "Tax Account" -msgstr "Steuer-Konto" - #. Label of the tax_basis_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "Steuerbasis gesamt" -#. Label of the tax_rate (Percent) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Tax Rate" -msgstr "Steuersatz" - -#. Label of the tax_total (Currency) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Tax Total" -msgstr "Steuer gesamt" - -#. Label of the taxes (Table) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Taxes" -msgstr "Steuern" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:456 msgid "The format of the uploaded file ({0}) is not supported for E-Invoices. Please upload a valid E-Invoice file or create a regular Purchase Invoice manually instead." msgstr "Das Format der hochgeladenen Datei ({0}) wird für E-Rechnungen nicht unterstützt. Bitte laden Sie eine gültige E-Rechnungsdatei hoch oder erstellen Sie stattdessen eine reguläre Eingangsrechnung manuell." @@ -725,21 +508,11 @@ msgstr "Das Format der hochgeladenen Datei ({0}) wird für E-Rechnungen nicht un msgid "The uploaded file does not contain valid XML data." msgstr "Die hochgeladene Datei enthält keine gültige XML-Daten." -#. Label of the total_amount (Currency) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Total Amount" -msgstr "Gesamtbetrag" - #. Label of the total_prepaid (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Total Prepaid" msgstr "Vorausbezahlt" -#. Label of the uom (Link) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "UOM" -msgstr "Einheit" - #. Label of the unit_code (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" @@ -796,10 +569,6 @@ msgstr "Validierungsfehler" msgid "Validation Warnings" msgstr "Validierungswarnungen" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.js:75 -msgid "View {0}" -msgstr "{0} ansehen" - #. Option for the 'Action on Validation Error during Save' (Select) field in #. DocType 'E Invoice Settings' #. Option for the 'Action on Validation Error during Submit' (Select) field in @@ -813,19 +582,19 @@ msgstr "Warnung" msgid "XML Settings" msgstr "XML-Einstellungen" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:788 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:786 msgid "{0} row #{1}: Discount Date should be after Posting Date" msgstr "{0} Zeile {1}: Rabatt-Datum sollte nach Buchungsdatum liegen" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:777 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:775 msgid "{0} row #{1}: The charge type 'Actual' is only supported in the eInvoice profiles 'EXTENDED' and 'XRECHNUNG'." msgstr "Die Gebührenart 'Tatsächlich' wird nur in den E-Rechnungs-Profilen 'EXTENDED' und 'XRECHNUNG' unterstützt." -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:765 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:763 msgid "{0} row #{1}: Type '{2}' is not supported in e-invoice" msgstr "{0} Zeile #{1}: Typ '{2}' wird in der E-Rechnung nicht unterstützt" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:800 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:798 msgid "{0}: Only one mode of payment will be considered in the e-invoice." msgstr "{0}: Nur eine Zahlungsart wird in der E-Rechnung berücksichtigt." diff --git a/eu_einvoice/locale/main.pot b/eu_einvoice/locale/main.pot index 54bcd9a4..ff95e80f 100644 --- a/eu_einvoice/locale/main.pot +++ b/eu_einvoice/locale/main.pot @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: European e-Invoice VERSION\n" "Report-Msgid-Bugs-To: hallo@alyf.de\n" -"POT-Creation-Date: 2026-05-08 09:09+0053\n" -"PO-Revision-Date: 2026-05-08 09:09+0053\n" +"POT-Creation-Date: 2026-05-12 20:23+0053\n" +"PO-Revision-Date: 2026-05-12 20:23+0053\n" "Last-Translator: hallo@alyf.de\n" "Language-Team: hallo@alyf.de\n" "MIME-Version: 1.0\n" @@ -16,15 +16,10 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.16.0\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:809 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:807 msgid "A document level discount is currently not supported in the e-invoice." msgstr "" -#. Label of the payee_account_name (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Account Name" -msgstr "" - #. Label of the error_action_on_save (Select) field in DocType 'E Invoice #. Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -58,11 +53,6 @@ msgstr "" msgid "Allowance Total" msgstr "" -#. Label of the amended_from (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Amended From" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:106 msgid "An E Invoice Import with the same Invoice ID and Supplier already exists." msgstr "" @@ -173,23 +163,17 @@ msgstr "" msgid "Buyer Reference" msgstr "" -#. Label of the calculated_amount (Currency) field in DocType 'E Invoice Trade -#. Tax' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json -msgid "Calculated Amount" -msgstr "" - #. Label of the discount_calculation_percent (Percent) field in DocType 'E #. Invoice Payment Term' #: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json msgid "Calculation Percent" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:840 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:838 msgid "Cannot create E Invoice." msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:854 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:852 msgid "Cannot validate E Invoice schematron." msgstr "" @@ -198,21 +182,6 @@ msgstr "" msgid "Charge Total" msgstr "" -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Code List" -msgstr "" - -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Common Code" -msgstr "" - -#. Label of the company (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Company" -msgstr "" - #. Description of the 'Sales Invoice Number Field' (Autocomplete) field in #. DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -223,66 +192,18 @@ msgstr "" msgid "Could not validate E Invoice schematron. See Error Log for details." msgstr "" -#: eu_einvoice/european_e_invoice/custom/purchase_order.js:12 -msgid "Create" -msgstr "" - -#. Label of the create_item (Button) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Create Item" -msgstr "" - -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.js:93 -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:437 -msgid "Create Purchase Invoice" -msgstr "" - -#. Label of the create_supplier (Button) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Create Supplier" -msgstr "" - #. Label of the create_supplier_address (Button) field in DocType 'E Invoice #. Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Create Supplier Address" msgstr "" -#. Label of the currency (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Currency" -msgstr "" - #. Label of the vat_exemption_reason_text (Small Text) field in DocType 'E #. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Default VAT exemption reason" msgstr "" -#. Label of the delivery_tab (Tab Break) field in DocType 'E Invoice Import' -#. Label of the delivery_section (Section Break) field in DocType 'E Invoice -#. Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Delivery" -msgstr "" - -#. Label of the section_break_mgef (Section Break) field in DocType 'E Invoice -#. Payment Term' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json -msgid "Discount" -msgstr "" - -#. Label of the document_tab (Tab Break) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Document" -msgstr "" - -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Documentation" -msgstr "" - #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:14 msgid "Download eInvoice" msgstr "" @@ -292,11 +213,6 @@ msgstr "" msgid "Due" msgstr "" -#. Label of the due_date (Date) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Due Date" -msgstr "" - #. Label of the due_payable (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Due Payable" @@ -348,11 +264,11 @@ msgstr "" msgid "E Invoice Trade Tax" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1185 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:1168 msgid "E Invoice XML file name pattern failed" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:822 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:820 msgid "E Invoice is not correct" msgstr "" @@ -387,14 +303,6 @@ msgstr "" msgid "Embedded Document" msgstr "" -#. Option for the 'Action on Validation Error during Save' (Select) field in -#. DocType 'E Invoice Settings' -#. Option for the 'Action on Validation Error during Submit' (Select) field in -#. DocType 'E Invoice Settings' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -msgid "Error Message" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:52 msgid "Field '{0}' does not exist on Sales Invoice doctype" msgstr "" @@ -409,49 +317,12 @@ msgstr "" msgid "File Section" msgstr "" -#. Label of the grand_total (Currency) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Grand Total" -msgstr "" - -#. Label of the header_section (Section Break) field in DocType 'E Invoice -#. Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Header" -msgstr "" - -#. Label of the payee_iban (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "IBAN" -msgstr "" - #. Description of the 'Default VAT exemption reason' (Small Text) field in #. DocType 'E Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "If set, written to BT-120 (ram:ExemptionReason) on VAT breakdowns where an exemption reason code is emitted. Left unset in the XML when empty." msgstr "" -#. Label of the id (Data) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Invoice ID" -msgstr "" - -#. Label of the issue_date (Date) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Issue Date" -msgstr "" - -#. Label of the item (Link) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Item" -msgstr "" - -#. Label of the items (Table) field in DocType 'E Invoice Import' -#. Label of the items_tab (Tab Break) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Items" -msgstr "" - #. Label of the line_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" @@ -467,11 +338,6 @@ msgstr "" msgid "Monetary Summation" msgstr "" -#. Label of the net_rate (Currency) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Net Rate" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:446 msgid "No machine-readable data was found in the PDF file. You can create a regular Purchase Invoice manually instead." msgstr "" @@ -506,11 +372,6 @@ msgstr "" msgid "Payment Means" msgstr "" -#. Label of the payment_terms (Table) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Payment Terms" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:120 msgid "Please create or select a supplier before submitting" msgstr "" @@ -527,12 +388,6 @@ msgstr "" msgid "Please select a company before submitting" msgstr "" -#. Label of the product_section (Section Break) field in DocType 'E Invoice -#. Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Product" -msgstr "" - #. Label of the product_description (Small Text) field in DocType 'E Invoice #. Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json @@ -544,53 +399,21 @@ msgstr "" msgid "Product Name" msgstr "" -#. Label of the profile (Read Only) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Profile" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:647 msgid "Purchase Invoice {0} is already linked to E Invoice Import {1}" msgstr "" -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Manager" -msgstr "" - -#. Label of the purchase_order (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase Order" -msgstr "" - #. Label of the po_detail (Link) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" msgstr "" -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Purchase User" -msgstr "" - #. Label of the rate_applicable_percent (Percent) field in DocType 'E Invoice #. Trade Tax' #: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json msgid "Rate Applicable Percent" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:673 -msgid "Row {0}" -msgstr "" - -#. Label of the sales_invoice_section (Section Break) field in DocType 'E -#. Invoice Settings' -#. Label of a Workspace Sidebar Item -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Sales Invoice" -msgstr "" - #. Label of the sales_invoice_number_field (Autocomplete) field in DocType 'E #. Invoice Settings' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json @@ -656,11 +479,6 @@ msgstr "" msgid "Seller Tax ID" msgstr "" -#. Label of a Workspace Sidebar Item -#: eu_einvoice/workspace_sidebar/e_invoicing.json -msgid "Settings" -msgstr "" - #. Label of the settlement_tab (Tab Break) field in DocType 'E Invoice Import' #. Label of the settlement_section (Section Break) field in DocType 'E Invoice #. Item' @@ -669,51 +487,15 @@ msgstr "" msgid "Settlement" msgstr "" -#. Label of the supplier (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Supplier" -msgstr "" - -#. Label of the supplier_address (Link) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Supplier Address" -msgstr "" - #: eu_einvoice/custom_fields.py:28 msgid "Supplier Invoice File" msgstr "" -#. Name of a role -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json -msgid "System Manager" -msgstr "" - -#. Label of the tax_account (Link) field in DocType 'E Invoice Trade Tax' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json -msgid "Tax Account" -msgstr "" - #. Label of the tax_basis_total (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "" -#. Label of the tax_rate (Percent) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Tax Rate" -msgstr "" - -#. Label of the tax_total (Currency) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Tax Total" -msgstr "" - -#. Label of the taxes (Table) field in DocType 'E Invoice Import' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json -msgid "Taxes" -msgstr "" - #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:456 msgid "The format of the uploaded file ({0}) is not supported for E-Invoices. Please upload a valid E-Invoice file or create a regular Purchase Invoice manually instead." msgstr "" @@ -722,21 +504,11 @@ msgstr "" msgid "The uploaded file does not contain valid XML data." msgstr "" -#. Label of the total_amount (Currency) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "Total Amount" -msgstr "" - #. Label of the total_prepaid (Currency) field in DocType 'E Invoice Import' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Total Prepaid" msgstr "" -#. Label of the uom (Link) field in DocType 'E Invoice Item' -#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json -msgid "UOM" -msgstr "" - #. Label of the unit_code (Data) field in DocType 'E Invoice Item' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" @@ -793,10 +565,6 @@ msgstr "" msgid "Validation Warnings" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.js:75 -msgid "View {0}" -msgstr "" - #. Option for the 'Action on Validation Error during Save' (Select) field in #. DocType 'E Invoice Settings' #. Option for the 'Action on Validation Error during Submit' (Select) field in @@ -811,19 +579,19 @@ msgstr "" msgid "XML Settings" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:788 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:786 msgid "{0} row #{1}: Discount Date should be after Posting Date" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:777 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:775 msgid "{0} row #{1}: The charge type 'Actual' is only supported in the eInvoice profiles 'EXTENDED' and 'XRECHNUNG'." msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:765 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:763 msgid "{0} row #{1}: Type '{2}' is not supported in e-invoice" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:800 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:798 msgid "{0}: Only one mode of payment will be considered in the e-invoice." msgstr "" From a68887005d5ad9e1d530ca383122b83f1bb6fb75 Mon Sep 17 00:00:00 2001 From: 0xD0M1M0 <76812428+0xD0M1M0@users.noreply.github.com> Date: Tue, 12 May 2026 21:22:40 +0200 Subject: [PATCH 7/7] fix: changed sum function --- .../european_e_invoice/custom/sales_invoice.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index 0cfaa735..b54895c3 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -498,18 +498,21 @@ def _add_line_item(self, item: SalesInvoiceItem): li.settlement.monetary_summation.total_amount = flt(item.net_amount, item.precision("net_amount")) self.doc.trade.items.add(li) - def _sum_item_net_matching_on_net_total_rate(self, tax) -> float: + def _sum_item_net_matching_on_net_total_rate(self, tax) -> float | None: """Sum ``net_amount`` for items whose resolved VAT % matches this tax row (multi-rate invoices).""" tax_row_vat_percent = flt( tax.rate or frappe.db.get_value("Account", tax.account_head, "tax_rate") or 0.0 ) if not tax_row_vat_percent: return 0.0 - sum_net_amount = sum( - line_item.net_amount - for line_item in self.invoice.items - if get_item_rate(line_item.item_tax_template, self.invoice.taxes) == tax_row_vat_percent - ) + sum_net_amount = 0 + for line_item in self.invoice.items: + item_rate = get_item_rate(line_item.item_tax_template, self.invoice.taxes) + if item_rate is None: + return None + if flt(item_rate) == tax_row_vat_percent: + sum_net_amount += line_item.net_amount + return flt(sum_net_amount, self.invoice.precision("net_total")) def _add_taxes_and_charges(self):