diff --git a/eu_einvoice/european_e_invoice/custom/sales_invoice.py b/eu_einvoice/european_e_invoice/custom/sales_invoice.py index da4ba878..e57ef6e3 100644 --- a/eu_einvoice/european_e_invoice/custom/sales_invoice.py +++ b/eu_einvoice/european_e_invoice/custom/sales_invoice.py @@ -127,6 +127,7 @@ def __init__( self.doc = None self.item_tax_rates = set() self.delivery_dates = [] + self.vat_exemption_reason_text = "" def get_einvoice(self) -> Document | None: """Return the einvoice document as a Python object.""" @@ -135,6 +136,9 @@ def get_einvoice(self) -> Document | None: def create_einvoice(self): """Create the einvoice document as a Python object.""" self.doc = Document() + self.vat_exemption_reason_text = str( + frappe.db.get_single_value("E Invoice Settings", "vat_exemption_reason_text") or "" + ).strip() self._set_context() self._set_header() @@ -273,7 +277,10 @@ def _set_seller(self): self._set_seller_address() def _set_seller_id(self): - for row in self.customer.supplier_numbers: + supplier_numbers = getattr(self.customer, "supplier_numbers", None) + if not supplier_numbers: + return + for row in supplier_numbers: if row.company == self.invoice.company and row.supplier_number: self.doc.trade.agreement.seller.id = row.supplier_number break @@ -486,6 +493,7 @@ def _add_line_item(self, item: SalesInvoiceItem): ("Sales Taxes and Charges Template", self.invoice.taxes_and_charges), ] ).upper() + self._set_optional_vat_exemption_reason_text(li.settlement.trade_tax) li.settlement.monetary_summation.total_amount = flt(item.net_amount, item.precision("net_amount")) self.doc.trade.items.add(li) @@ -614,8 +622,13 @@ def _add_empty_tax(self): ("Sales Taxes and Charges Template", self.invoice.taxes_and_charges), ] ).upper() + self._set_optional_vat_exemption_reason_text(trade_tax) self.doc.trade.settlement.trade_tax.add(trade_tax) + def _set_optional_vat_exemption_reason_text(self, trade_tax: ApplicableTradeTax) -> None: + if self.vat_exemption_reason_text: + trade_tax.exemption_reason = self.vat_exemption_reason_text + def _add_delivery_date(self): if self.delivery_dates: delivery_date = sorted(self.delivery_dates)[-1] diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py b/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py index 2a402a74..903c9a73 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py @@ -1,6 +1,7 @@ # Copyright (c) 2024, ALYF GmbH and contributors # For license information, please see license.txt +from __future__ import annotations from pathlib import Path from typing import TYPE_CHECKING @@ -223,7 +224,7 @@ def _validate_schematron(self, xml_bytes): if any(validation_warnings): self.validation_warnings += "\n".join(validation_warnings) - def parse_seller(self, seller: "TradeParty"): + def parse_seller(self, seller: TradeParty): self.seller_name = str(seller.name) self.seller_tax_id = ( seller.tax_registrations.children[0].id._text if seller.tax_registrations.children else None @@ -232,13 +233,13 @@ def parse_seller(self, seller: "TradeParty"): self.seller_electronic_address_scheme = str(seller.electronic_address.uri_ID._scheme_id) self.parse_address(seller.address, "seller") - def parse_buyer(self, buyer: "TradeParty"): + def parse_buyer(self, buyer: TradeParty): self.buyer_name = str(buyer.name) self.buyer_electronic_address = str(buyer.electronic_address.uri_ID._text) self.buyer_electronic_address_scheme = str(buyer.electronic_address.uri_ID._scheme_id) self.parse_address(buyer.address, "buyer") - def parse_address(self, address: "PostalTradeAddress", prefix: str) -> _dict: + def parse_address(self, address: PostalTradeAddress, prefix: str) -> _dict: country = frappe.db.get_value("Country", {"code": str(address.country_id).lower()}, "name") self.set(f"{prefix}_city", str(address.city_name)) @@ -247,7 +248,7 @@ def parse_address(self, address: "PostalTradeAddress", prefix: str) -> _dict: self.set(f"{prefix}_postcode", str(address.postcode)) self.set(f"{prefix}_country", str(country)) - def parse_line_item(self, li: "LineItem"): + def parse_line_item(self, li: LineItem): item = self.append("items") net_rate = float(li.agreement.net.amount._value) @@ -274,13 +275,15 @@ def parse_line_item(self, li: "LineItem"): item.tax_rate = flt_or_none(li.settlement.trade_tax.rate_applicable_percent._value) item.total_amount = flt_or_none(li.settlement.monetary_summation.total_amount._value) - def parse_tax(self, tax: "ApplicableTradeTax"): + def parse_tax(self, tax: ApplicableTradeTax): t = self.append("taxes") t.basis_amount = flt_or_none(tax.basis_amount._value) t.rate_applicable_percent = flt_or_none(tax.rate_applicable_percent._value) t.calculated_amount = flt_or_none(tax.calculated_amount._value) + reason_text = tax.exemption_reason._text + t.vat_exemption_reason_text = str(reason_text).strip() if reason_text else None - def parse_payment_term(self, term: "PaymentTerms"): + def parse_payment_term(self, term: PaymentTerms): if not term.partial_amount.children: self.due_date = term.due._value return @@ -309,7 +312,7 @@ def parse_payment_term(self, term: "PaymentTerms"): if term.discount_terms.actual_amount._value: t.discount_actual_amount = float(term.discount_terms.actual_amount._value) - def parse_monetary_summation(self, summation: "MonetarySummation"): + def parse_monetary_summation(self, summation: MonetarySummation): self.line_total = flt_or_none(summation.line_total._value) self.allowance_total = flt_or_none(summation.allowance_total._value) self.charge_total = flt_or_none(summation.charge_total._value) @@ -322,14 +325,14 @@ def parse_monetary_summation(self, summation: "MonetarySummation"): self.total_prepaid = flt_or_none(summation.prepaid_total._value) self.due_payable = flt_or_none(summation.due_amount._value) - def parse_bank_details(self, payment_means: "PaymentMeans"): + def parse_bank_details(self, payment_means: PaymentMeans): self.payee_iban = payment_means.payee_account.iban._text or None if EInvoiceProfile(self.profile) >= EInvoiceProfile.EN16931: self.payee_account_name = payment_means.payee_account.account_name._text or None self.payee_bic = payment_means.payee_institution.bic._text or None - def parse_billing_period(self, period: "BillingSpecifiedPeriod"): + def parse_billing_period(self, period: BillingSpecifiedPeriod): self.billing_period_start = period.start._value self.billing_period_end = period.end._value @@ -466,8 +469,8 @@ def relative_url_to_path(url: str) -> Path: @frappe.whitelist() -def create_purchase_invoice(source_name, target_doc=None): - def post_process(source, target: "PurchaseInvoice"): +def create_purchase_invoice(source_name: str, target_doc: Document | None = None): + def post_process(source, target: PurchaseInvoice): target.set_missing_values() def process_item_row(source, target, source_parent) -> None: 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 9b5f467f..1a69a724 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 @@ -12,6 +12,8 @@ "error_action_on_save", "error_action_on_submit", "sales_invoice_number_field", + "section_break_bt120", + "vat_exemption_reason_text", "section_break_yldr", "auto_attach_xml", "attach_field_for_xml_file" @@ -74,13 +76,24 @@ "fieldname": "sales_invoice_number_field", "fieldtype": "Autocomplete", "label": "Sales Invoice Number Field" + }, + { + "fieldname": "section_break_bt120", + "fieldtype": "Section Break", + "label": "VAT exemption (e-invoice)" + }, + { + "description": "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.", + "fieldname": "vat_exemption_reason_text", + "fieldtype": "Small Text", + "label": "Default VAT exemption reason" } ], "grid_page_length": 50, "index_web_pages_for_search": 1, "issingle": 1, "links": [], - "modified": "2026-02-06 17:52:09.990716", + "modified": "2026-06-08 13:02:59.672943", "modified_by": "Administrator", "module": "European e-Invoice", "name": "E Invoice Settings", 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 f61bdfcf..48197706 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 @@ -23,6 +23,7 @@ class EInvoiceSettings(Document): sales_invoice_number_field: DF.Autocomplete | None validate_sales_invoice_on_save: DF.Check validate_sales_invoice_on_submit: DF.Check + vat_exemption_reason_text: DF.SmallText | None # end: auto-generated types def before_validate(self): diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json b/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json index 8a631c44..f0fbc8ff 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.json @@ -9,6 +9,7 @@ "basis_amount", "rate_applicable_percent", "calculated_amount", + "vat_exemption_reason_text", "tax_account" ], "fields": [ @@ -35,6 +36,12 @@ "options": "currency", "read_only": 1 }, + { + "fieldname": "vat_exemption_reason_text", + "fieldtype": "Small Text", + "label": "VAT exemption reason", + "read_only": 1 + }, { "fieldname": "tax_account", "fieldtype": "Link", @@ -45,12 +52,13 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2024-09-26 21:18:13.837830", + "modified": "2026-06-08 13:04:01.003993", "modified_by": "Administrator", "module": "European e-Invoice", "name": "E Invoice Trade Tax", "owner": "Administrator", "permissions": [], + "row_format": "Dynamic", "sort_field": "creation", "sort_order": "DESC", "states": [] diff --git a/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.py b/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.py index c63ad54f..76032038 100644 --- a/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.py +++ b/eu_einvoice/european_e_invoice/doctype/e_invoice_trade_tax/e_invoice_trade_tax.py @@ -21,6 +21,7 @@ class EInvoiceTradeTax(Document): parenttype: DF.Data rate_applicable_percent: DF.Percent tax_account: DF.Link | None + vat_exemption_reason_text: DF.SmallText | None # end: auto-generated types pass diff --git a/eu_einvoice/locale/de.po b/eu_einvoice/locale/de.po index b7c75151..91c2a2ee 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-12 20:40+0053\n" +"POT-Creation-Date: 2026-06-05 10:01+0053\n" "PO-Revision-Date: 2026-02-05 11:13+0100\n" "Last-Translator: hallo@alyf.de\n" "Language: de\n" @@ -18,10 +18,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.13.1\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:790 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 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' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json +msgid "Account Name" +msgstr "Kontoname" + #. Label of a 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" @@ -51,7 +56,7 @@ msgstr "Vereinbarung" msgid "Allowance Total" msgstr "Abschläge gesamt" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:105 +#: 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." @@ -160,11 +165,11 @@ msgstr "Berechneter Betrag" msgid "Calculation Percent" msgstr "Berechnung Prozentsatz" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:821 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:834 msgid "Cannot create E Invoice." msgstr "E-Rechnung konnte nicht erstellt werden." -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:835 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:848 msgid "Cannot validate E Invoice schematron." msgstr "E-Rechnung konnte nicht validiert werden." @@ -173,18 +178,28 @@ msgstr "E-Rechnung konnte nicht validiert werden." msgid "Charge Total" msgstr "Zuschläge gesamt" +#. Label of a Link in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Code List" +msgstr "Code List" + #. Description of a Card Break in the E-Invoicing Workspace #: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json msgid "Code Lists are typically public lists of common codes used in data interchange between third parties" msgstr "Code-Listen sind in der Regel öffentliche Listen von häufig verwendeten Codes, die in der Datenübertragung zwischen Drittanbietern verwendet werden." +#. Label of a Link in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Common Code" +msgstr "Common Code" + #. 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 msgid "Configure this if you are storing custom invoice numbers in a field other than name." msgstr "Konfigurieren Sie dies, wenn Sie benutzerdefinierte Rechnungsnummern in einem anderen Feld als name speichern." -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:211 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:212 msgid "Could not validate E Invoice schematron. See Error Log for details." msgstr "E-Rechnung konnte nicht validiert werden. Details im Fehlerlog." @@ -194,7 +209,7 @@ 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:434 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:437 msgid "Create Purchase Invoice" msgstr "Eingangsrechnung erstellen" @@ -222,6 +237,28 @@ msgstr "Kundennummer beim Lieferanten" msgid "Customer numbers assigned by the supplier" msgstr "Vom Lieferanten zugewiesene Kundennummern" +#. Label of a 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 "Standard Grund für die Umsatzsteuerbefreiung" + +#. Label of a Tab Break field in DocType 'E Invoice Import' +#. Label of a 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' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json +msgid "Discount" +msgstr "Rabatt" + +#. Label of a shortcut in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Documentation" +msgstr "Dokumentation" + #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:16 msgid "Download eInvoice" msgstr "E-Rechnung herunterladen" @@ -243,7 +280,7 @@ msgstr "Fälliger Betrag" msgid "E Invoice Import" msgstr "E-Rechnungs-Import" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:650 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:653 msgid "E Invoice Import {0} does not exist" msgstr "E-Rechnungs-Import {0} existiert nicht" @@ -279,7 +316,7 @@ msgstr "E-Rechnungs-Einstellungen" msgid "E Invoice Trade Tax" msgstr "E-Rechnungs-Steuer" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:816 msgid "E Invoice is not correct" msgstr "E-Rechnung ist nicht korrekt" @@ -312,11 +349,11 @@ msgstr "Schema der elektronischen Adresse" msgid "Embedded Document" msgstr "Eingebettetes Dokument" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:50 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:51 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:58 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:59 msgid "Field '{0}' must be of type 'Attach'. Current type: {1}" msgstr "Feld '{0}' muss vom Typ 'Anhängen' sein. Aktueller Typ: {1}" @@ -325,6 +362,43 @@ msgstr "Feld '{0}' muss vom Typ 'Anhängen' sein. Aktueller Typ: {1}" msgid "File Section" msgstr "Datei-Abschnitt" +#. Label of a 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 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 a 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' +#: 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' +#: 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" @@ -339,16 +413,26 @@ msgstr "Mit {0} verknüpfen" msgid "Monetary Summation" msgstr "Gesamtbeträge" +#. Label of a 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" + #. Label of a shortcut in the E-Invoicing Workspace #: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json msgid "New E Invoice Import" msgstr "Neuer E-Rechnungs-Import" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:443 +#. Label of a shortcut in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "New Sales Invoice" +msgstr "Neue Ausgangsrechnung" + +#: 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." -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:446 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:449 msgid "Not an E-Invoice" msgstr "Keine E-Rechnung" @@ -368,11 +452,16 @@ msgstr "Teilbetrag" msgid "Payment Means" msgstr "Zahlungsmittel" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:119 +#. Label of a 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." -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:125 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:126 msgid "Please map all invoice lines to an item before submitting" msgstr "Bitte vor dem Buchen alle Positionen einem Artikel zuordnen." @@ -380,10 +469,15 @@ msgstr "Bitte vor dem Buchen alle Positionen einem Artikel zuordnen." msgid "Please note the validation errors of the e-invoice." msgstr "Bitte beachten Sie die Validierungsfehler der E-Rechnung." -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:122 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:123 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Description" @@ -394,10 +488,20 @@ msgstr "Produktbeschreibung" msgid "Product Name" msgstr "Produktname" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:644 +#. 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" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" @@ -408,6 +512,11 @@ msgstr "Bestellposition" msgid "Rate Applicable Percent" msgstr "Anwendbarer Prozentsatz" +#. Label of a Section Break field in DocType 'E Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "Sales Invoice" +msgstr "Ausgangsrechnung" + #. Label of a 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" @@ -475,6 +584,16 @@ msgstr "Verkäufer-Steuer-ID" msgid "Settlement" msgstr "Ausgleich" +#. Label of a 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' +#: 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" @@ -497,30 +616,60 @@ msgstr "Lieferantennummern" msgid "Supplier numbers assigned by the customer" msgstr "Vom Kunden zugewiesene Lieferantennummern" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "Steuerbasis gesamt" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:453 +#. Label of a 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' +#: 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' +#: 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." -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:160 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:161 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' +#: 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' #: 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" msgstr "Einheits-Code" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:456 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:459 msgid "Unsupported file format" msgstr "Nicht unterstütztes Dateiformat" @@ -529,6 +678,16 @@ 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' +#: 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Save" @@ -563,19 +722,19 @@ msgstr "Validierungswarnungen" msgid "Warning Message" msgstr "Warnung" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:769 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:782 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:758 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:771 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:746 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:759 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:781 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:794 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 879bcab9..c60088c0 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-12 20:40+0053\n" -"PO-Revision-Date: 2026-05-12 20:40+0053\n" +"POT-Creation-Date: 2026-06-05 10:01+0053\n" +"PO-Revision-Date: 2026-06-05 10:01+0053\n" "Last-Translator: hallo@alyf.de\n" "Language-Team: hallo@alyf.de\n" "MIME-Version: 1.0\n" @@ -16,10 +16,15 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.13.1\n" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:790 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 msgid "A document level discount is currently not supported in the e-invoice." msgstr "" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Action on Validation Error during Save" @@ -49,7 +54,7 @@ msgstr "" msgid "Allowance Total" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:105 +#: 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 "" @@ -158,11 +163,11 @@ msgstr "" msgid "Calculation Percent" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:821 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:834 msgid "Cannot create E Invoice." msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:835 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:848 msgid "Cannot validate E Invoice schematron." msgstr "" @@ -171,18 +176,28 @@ msgstr "" msgid "Charge Total" msgstr "" +#. Label of a Link in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Code List" +msgstr "" + #. Description of a Card Break in the E-Invoicing Workspace #: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json msgid "Code Lists are typically public lists of common codes used in data interchange between third parties" msgstr "" +#. Label of a Link in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Common Code" +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 msgid "Configure this if you are storing custom invoice numbers in a field other than name." msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:211 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:212 msgid "Could not validate E Invoice schematron. See Error Log for details." msgstr "" @@ -192,7 +207,7 @@ 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:434 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:437 msgid "Create Purchase Invoice" msgstr "" @@ -220,6 +235,28 @@ msgstr "" msgid "Customer numbers assigned by the supplier" msgstr "" +#. Label of a 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' +#: 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' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_payment_term/e_invoice_payment_term.json +msgid "Discount" +msgstr "" + +#. Label of a shortcut in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "Documentation" +msgstr "" + #: eu_einvoice/european_e_invoice/custom/sales_invoice.js:16 msgid "Download eInvoice" msgstr "" @@ -241,7 +278,7 @@ msgstr "" msgid "E Invoice Import" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:650 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:653 msgid "E Invoice Import {0} does not exist" msgstr "" @@ -277,7 +314,7 @@ msgstr "" msgid "E Invoice Trade Tax" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:803 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:816 msgid "E Invoice is not correct" msgstr "" @@ -310,11 +347,11 @@ msgstr "" msgid "Embedded Document" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:50 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:51 msgid "Field '{0}' does not exist on Sales Invoice doctype" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:58 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.py:59 msgid "Field '{0}' must be of type 'Attach'. Current type: {1}" msgstr "" @@ -323,6 +360,43 @@ msgstr "" msgid "File Section" msgstr "" +#. Label of a 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 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 a 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' +#: 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' +#: 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Line Total" @@ -337,16 +411,26 @@ msgstr "" msgid "Monetary Summation" msgstr "" +#. Label of a Currency field in DocType 'E Invoice Item' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json +msgid "Net Rate" +msgstr "" + #. Label of a shortcut in the E-Invoicing Workspace #: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json msgid "New E Invoice Import" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:443 -msgid "No machine-readable data was found in the PDF file. You can create a regular Purchase Invoice manually instead." +#. Label of a shortcut in the E-Invoicing Workspace +#: eu_einvoice/european_e_invoice/workspace/e_invoicing/e_invoicing.json +msgid "New Sales Invoice" 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 "" + +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:449 msgid "Not an E-Invoice" msgstr "" @@ -366,11 +450,16 @@ msgstr "" msgid "Payment Means" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:119 +#. Label of a 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 "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:125 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:126 msgid "Please map all invoice lines to an item before submitting" msgstr "" @@ -378,10 +467,15 @@ msgstr "" msgid "Please note the validation errors of the e-invoice." msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:122 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:123 msgid "Please select a company before submitting" msgstr "" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Product Description" @@ -392,10 +486,20 @@ msgstr "" msgid "Product Name" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:644 +#. 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 "" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Purchase Order Row" @@ -406,6 +510,11 @@ msgstr "" msgid "Rate Applicable Percent" msgstr "" +#. Label of a Section Break field in DocType 'E Invoice Settings' +#: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json +msgid "Sales Invoice" +msgstr "" + #. Label of a 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" @@ -473,6 +582,16 @@ msgstr "" msgid "Settlement" msgstr "" +#. Label of a 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' +#: 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 "" @@ -495,30 +614,60 @@ msgstr "" msgid "Supplier numbers assigned by the customer" msgstr "" +#. Label of a 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.json msgid "Tax Basis Total" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:453 +#. Label of a 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' +#: 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' +#: 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 "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:160 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:161 msgid "The uploaded file does not contain valid XML data." msgstr "" +#. Label of a 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' #: 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_item/e_invoice_item.json msgid "Unit Code" msgstr "" -#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:456 +#: eu_einvoice/european_e_invoice/doctype/e_invoice_import/e_invoice_import.py:459 msgid "Unsupported file format" msgstr "" @@ -527,6 +676,16 @@ msgstr "" msgid "Upload the .xml or .pdf file provided by your supplier." msgstr "" +#. Label of a 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' +#: 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' #: eu_einvoice/european_e_invoice/doctype/e_invoice_settings/e_invoice_settings.json msgid "Validate Sales Invoice on Save" @@ -562,19 +721,19 @@ msgstr "" msgid "Warning Message" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:769 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:782 msgid "{0} row #{1}: Discount Date should be after Posting Date" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:758 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:771 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:746 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:759 msgid "{0} row #{1}: Type '{2}' is not supported in e-invoice" msgstr "" -#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:781 +#: eu_einvoice/european_e_invoice/custom/sales_invoice.py:794 msgid "{0}: Only one mode of payment will be considered in the e-invoice." msgstr ""