From c2a28edbc9b93bdbdff43bc2e2a3f7084a89ac3f Mon Sep 17 00:00:00 2001 From: Guido Flohr Date: Tue, 4 Feb 2025 20:53:45 +0200 Subject: [PATCH] document differences to JSON --- .../LC_MESSAGES/com.cantanea.e-invoice-eu.mo | Bin 95517 -> 96543 bytes .../docs/_po/com.cantanea.e-invoice-eu.pot | 15 + packages/docs/_po/de.po | 31 +- packages/docs/_po/markdown.pot | 15 + packages/docs/_po/perl.pot | 2 +- .../docs/en/docs/details/internal-format.md | 9 + .../docs/details/internes-format/index.html | 353 +++++++++++------- .../docs/service/andere-endpunkte/index.html | 36 +- .../de/docs/service/deployment/index.html | 102 ++--- .../service/rechnungen-erzeugen/index.html | 60 +-- .../docs/details/internal-format/index.html | 16 + .../docs/service/creating-invoices/index.html | 60 +-- .../en/docs/service/deployment/index.html | 102 ++--- .../docs/service/other-endpoints/index.html | 36 +- 14 files changed, 503 insertions(+), 334 deletions(-) diff --git a/packages/docs/LocaleData/de/LC_MESSAGES/com.cantanea.e-invoice-eu.mo b/packages/docs/LocaleData/de/LC_MESSAGES/com.cantanea.e-invoice-eu.mo index 632b8466322f1fdd0c9ac57e2c1b9b714a5639e0..1cc1ee259aba59b0d3a77e120c8371fbe50774b8 100644 GIT binary patch delta 7177 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'\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2025-02-04 20:42+0200\n" +"PO-Revision-Date: 2025-02-04 20:53+0200\n" "Last-Translator: Guido Flohr \n" "Language-Team: German\n" "Language: de\n" @@ -1036,7 +1036,34 @@ msgstr "" "die Schemadefinition zurückgreifen. Sie ist im [GitHub-Repository E-Invoice-" "EU](https://github.com/gflohr/e-invoice-eu/blob/main/src/schema/" "invoice.schema.json) oder als REST-Endpunkt [`/api/schema/invoice`]([% " -"q.llink(name=’other-endpoints’) %]#invoice-schema) verügbar." +"q.llink(name='other-endpoints') %]#invoice-schema) verügbar." + +#: ../en/docs/details/internal-format.md:310 +msgid "## Differences to Peppol UBL" +msgstr "## Unterschiede zu Peppol UBL" + +#: ../en/docs/details/internal-format.md:312 +msgid "" +"At the moment, the only differences to Peppol UBL are, that the fields\n" +"[`cbc:CustomizationID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-" +"invoice/cbc-CustomizationID/)\n" +"and\n" +"[`cbc:ProfileID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-" +"invoice/cbc-ProfileID/)\n" +"are optional. The reason is that the value of these fields can be deduced " +"from\n" +"the output format. You only have to specify them if you want to override " +"the\n" +"built-in default values for them." +msgstr "" +"Die einzigen Unterschiede zu Peppol UBL sind zur Zeit, dass die Felder \n" +"[`cbc:CustomizationID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-" +"invoice/cbc-CustomizationID/)\n" +"und\n" +"[`cbc:ProfileID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-" +"invoice/cbc-ProfileID/) optional sind. Der Grund dafür ist, dass sie aus dem " +"Ausgabeformat geschlossen werden können. Sie müssen nur angegeben werden, " +"wenn man die eingebauten Vorgabewerte für sie überschreiben will." #: ../en/docs/e-invoice-formats.md:2 msgctxt "title" diff --git a/packages/docs/_po/markdown.pot b/packages/docs/_po/markdown.pot index 2ff290d..bfee74f 100644 --- a/packages/docs/_po/markdown.pot +++ b/packages/docs/_po/markdown.pot @@ -590,6 +590,21 @@ msgid "" "or as the REST endpoint [`/api/schema/invoice`]([% q.llink(name='other-endpoints') %]#invoice-schema)." msgstr "" +#: ../en/docs/details/internal-format.md:310 +msgid "## Differences to Peppol UBL" +msgstr "" + +#: ../en/docs/details/internal-format.md:312 +msgid "" +"At the moment, the only differences to Peppol UBL are, that the fields\n" +"[`cbc:CustomizationID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cbc-CustomizationID/)\n" +"and\n" +"[`cbc:ProfileID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cbc-ProfileID/)\n" +"are optional. The reason is that the value of these fields can be deduced from\n" +"the output format. You only have to specify them if you want to override the\n" +"built-in default values for them." +msgstr "" + #: ../en/docs/e-invoice-formats.md:2 msgctxt "title" msgid "E-invoice Formats" diff --git a/packages/docs/_po/perl.pot b/packages/docs/_po/perl.pot index 224db8b..333394b 100644 --- a/packages/docs/_po/perl.pot +++ b/packages/docs/_po/perl.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: 'Guido Flohr '\n" -"POT-Creation-Date: 2025-02-04 20:42+0200\n" +"POT-Creation-Date: 2025-02-04 20:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/packages/docs/en/docs/details/internal-format.md b/packages/docs/en/docs/details/internal-format.md index 0e8d2b9..91e152d 100644 --- a/packages/docs/en/docs/details/internal-format.md +++ b/packages/docs/en/docs/details/internal-format.md @@ -307,3 +307,12 @@ If you are familiar with [JSON Schema](https://json-schema.org/), you can also use this. It is available in the [GitHub repo E-Invoice-EU](https://github.com/gflohr/e-invoice-eu/blob/main/src/schema/invoice.schema.json) or as the REST endpoint [`/api/schema/invoice`]([% q.llink(name='other-endpoints') %]#invoice-schema). +## Differences to Peppol UBL + +At the moment, the only differences to Peppol UBL are, that the fields +[`cbc:CustomizationID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cbc-CustomizationID/) +and +[`cbc:ProfileID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cbc-ProfileID/) +are optional. The reason is that the value of these fields can be deduced from +the output format. You only have to specify them if you want to override the +built-in default values for them. diff --git a/qgoda-site/e-invoice-eu/de/docs/details/internes-format/index.html b/qgoda-site/e-invoice-eu/de/docs/details/internes-format/index.html index b30a206..0866cc3 100644 --- a/qgoda-site/e-invoice-eu/de/docs/details/internes-format/index.html +++ b/qgoda-site/e-invoice-eu/de/docs/details/internes-format/index.html @@ -106,236 +106,323 @@

Internes Format

Die interne verwendete Datenstruktur ist fast identisch zu der von Peppol UBL-Rechnungen. Aus ihm können alle unterstützten Ausgabeformate erzeugt werden.
-[% USE q = Qgoda %] -[% USE Highlight %] -## Weshalb ein internes Format? -Daten im internen Format sind Ausgangspunkt für die Generierung von E-Rechnungen in allen unterstützten Ausgabeformaten. Dadurch brauchen sich Benutzerinnen und Benutzer der Software nicht mmit allen Details anderer Formate beschäftigen und können sich dadurch auf lediglich eins fokussieren. -[% title = "Erforderliches Fachwissen" %] -[% WRAPPER components/infobox.html type='info' title=title %] +

Weshalb ein internes Format?

+ +

Daten im internen Format sind Ausgangspunkt für die Generierung von E-Rechnungen in allen unterstützten Ausgabeformaten. Dadurch brauchen sich Benutzerinnen und Benutzer der Software nicht mmit allen Details anderer Formate beschäftigen und können sich dadurch auf lediglich eins fokussieren.

+ + + + + + + + + + + + + + +

Weshalb UBL?

+

Tatsächlich gibt es gerade einmal zwei mögliche Syntaxen für E-Rechnungen, die dem Europäischen Standard EN16931 entsprechen, nämlich UBL und CII. UBL wurde gewählt, weil die Syntax gut dokumentiert und im Vergleich zu CII weniger komplex ist.

-## Weshalb UBL? +

Nachteil der Sache ist, dass es zur Zeit nicht möglich ist, Informationen zu übermitteln, die in CII aber nicht in UBL vorgesehen sind. Das kann sich möglicherweise in der Zukunft noch ändern.

-Tatsächlich gibt es gerade einmal zwei mögliche Syntaxen für E-Rechnungen, die dem Europäischen Standard EN16931 entsprechen, nämlich UBL und CII. UBL wurde gewählt, weil die Syntax gut dokumentiert und im Vergleich zu CII weniger komplex ist. +

UBL vs. Peppol UBL

-Nachteil der Sache ist, dass es zur Zeit nicht möglich ist, Informationen zu übermitteln, die in CII aber nicht in UBL vorgesehen sind. Das kann sich möglicherweise in der Zukunft noch ändern. +

Mit der Universal Business Language UBL kann eine Vielzahl von Geschäftsdokumenten ausgedrückt werden. Eine dieser Dokumenttypen sind UBL-Rechnungen. Der UBL-Standard wird von der Organisation OASIS +Open gepflegt.

-## UBL vs. Peppol UBL +

Peppol (Pan-European Public Procurement +OnLine) ist eine Initiative der Europäischen Union, die die Standardisierung grenzüberschreitender Beschaffungsprozesse zum Zeil hat. Peppol gibt die Business Interoperability Specifications +(BIS), aktuell in der Version 3.0 heraus. Eine dieser Spezifikationen ist die für UBL-Rechnungen.

-Mit der [Universal Business Language UBL](https://groups.oasis-open.org/communities/tc-community-home2?CommunityKey=556949c8-dac8-40e6-bb16-018dc7ce54d6) kann eine [Vielzahl von Geschäftsdokumenten](http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.html#S-UBL-2.1-DOCUMENT-SCHEMAS) ausgedrückt werden. Eine dieser Dokumenttypen sind [UBL-Rechnungen](http://docs.oasis-open.org/ubl/os-UBL-2.1/UBL-2.1.html#T-INVOICE). Der UBL-Standard wird von der Organisation [OASIS -Open](https://groups.oasis-open.org/home) gepflegt. +

Die Spezifikation basiert auf der obengenannten UBL-Spezifikation von OASIS Open ist aber nicht identisch. Diese Dokumente bezeichnet daher die Peppol-BIS UBL-Rechnungen als Peppol UBL.

-[Peppol (Pan-European Public Procurement -OnLine)](https://peppol.org/) ist eine Initiative der Europäischen Union, die die Standardisierung grenzüberschreitender Beschaffungsprozesse zum Zeil hat. Peppol gibt die [Business Interoperability Specifications -(BIS)](https://docs.peppol.eu/poacc/billing/3.0/bis/), aktuell in der Version 3.0 heraus. Eine dieser Spezifikationen ist die für [UBL-Rechnungen](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/tree/). +

Struktur der Peppol-UBL-Dokumentation

-Die Spezifikation basiert auf der obengenannten UBL-Spezifikation von OASIS Open ist aber nicht identisch. Diese Dokumente bezeichnet daher die Peppol-BIS UBL-Rechnungen als Peppol UBL. +

Die Dokumentation der UBL-Rechnung steht sowohl als einzelne HTML-Seite als auch als mehrseitiger, klilckbarer Baum zur Verfügung.

-## Struktur der Peppol-UBL-Dokumentation +

Die Einzelseite eignet sich gut zum Suchen, während die mehrseitige Version leichter zu benutzen und zu verstehen ist.

-Die Dokumentation der UBL-Rechnung steht sowohl als [einzelne HTML-Seite](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/tree/) als auch als [mehrseitiger, klilckbarer Baum](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/) zur Verfügung. +

Document Object Model (DOM)

-Die Einzelseite eignet sich gut zum Suchen, während die mehrseitige Version leichter zu benutzen und zu verstehen ist. +

Da es sich bei UBL um ein XML-Format handelt, ist das zugrundeliegende Denkmodell das Document Object Model (DOM). Die Software E-Invoice-EU setzt allerdings stattdessen auf JSON. Der wichtigste strukturelle Unterschied zu XML - jedenfalls im Kontext von Peppol UBL - ist die Verfügbarkeit von Arrays (Listen) in JSON.

-### Document Object Model (DOM) +

Knoten und Blätter

-Da es sich bei UBL um ein XML-Format handelt, ist das zugrundeliegende Denkmodell das [Document Object Model (DOM)](https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model). Die Software E-Invoice-EU setzt allerdings stattdessen auf JSON. Der wichtigste strukturelle Unterschied zu XML - jedenfalls im Kontext von Peppol UBL - ist die Verfügbarkeit von Arrays (Listen) in JSON. +

Die Struktur von Peppol UBL besteht aus Knoten, also Elementen, die Unterelemente haben und Blättern, also Elementen, die keine Unterelemente haben.

-### Knoten und Blätter +

Knoten haben ein Namespace-Präfix cac, zum Beispiel das Element +cac:AccountingSupplierParty, das die Ausstellerin einer Rechnung beschreibt. Innerhalb der Definition findet sich die Postadresse der Lieferantin und als Teil davon das Element für die Stadt cbc:CityName, bei dem es sich um ein Blatt handelt, weil es keine Unterlemente hat. Wie alle anderen Blätter hat es ein Namespace-Präfix cbc.

-Die Struktur von Peppol UBL besteht aus Knoten, also Elementen, die Unterelemente haben und Blättern, also Elementen, die keine Unterelemente haben. +

Kardinalität

-Knoten haben ein Namespace-Präfix `cac`, zum Beispiel das Element -[`cac:AccountingSupplierParty`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AccountingSupplierParty/), das die Ausstellerin einer Rechnung beschreibt. Innerhalb der Definition findet sich die Postadresse der Lieferantin und als Teil davon das Element für die [Stadt `cbc:CityName`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AccountingSupplierParty/cac-Party/cac-PostalAddress/cbc-CityName/), bei dem es sich um ein Blatt handelt, weil es keine Unterlemente hat. Wie alle anderen Blätter hat es ein Namespace-Präfix `cbc`. +

Die Dokumentation von Peppol UBL gibt für jedes Element eine Kardinalität an. Die Kardinalität bestimmt, wie oft ein bestimmtes Element an einer bestimmten Stelle erscheinen darf. Die Kardinalität wird mit zwei durch zwei Punkten getrennten Ganzzahlen angegeben, zum Beispiel 0..2. Die erste Zahl gibt die Mindestanzahl und die zweite Zahl die Höchstzahl an Vorkommen an. Ist die zweite Zahl der Buchstabe n, wie zum Beispiel in 0..n, ist eine beliebige Anzahl von Vorkommen erlaubt.

-### Kardinalität +

Die folgende Tabelle listet typische Kardinalitäten auf.

-Die Dokumentation von Peppol UBL gibt für jedes Element eine *Kardinalität* an. Die Kardinalität bestimmt, wie oft ein bestimmtes Element an einer bestimmten Stelle erscheinen darf. Die Kardinalität wird mit zwei durch zwei Punkten getrennten Ganzzahlen angegeben, zum Beispiel `0..2`. Die erste Zahl gibt die Mindestanzahl und die zweite Zahl die Höchstzahl an Vorkommen an. Ist die zweite Zahl der Buchstabe `n`, wie zum Beispiel in `0..n`, ist eine beliebige Anzahl von Vorkommen erlaubt. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Kardinalität Bedeutung
1..1 Ein Pflichtelement, zum Beispiel die zu zahlende Summe einer Rechnung.
0..1 Ein optionales Element, zum Beispiel eine Anzahlung.
1..n Eine Liste als Pflichtelement mit einer beliebigen Anzahl an Elementen, zum Beispiel die Rechnungspositionen
0..n Eine optionale Liste mit einer beliebigen Anzahl an Elementen, zum Beispiel die Zu- und Abschläge auf Dokumentenebene
1..2 Eine Liste als Pflichtelement mit maximal zwei Elementen, zum Beispiel die Steuersummen
0..2 Eine optionale Liste mit maximal zwei Elementen, zum Beispiel die Steuerschemata einer Rechnungspartei
-Die folgende Tabelle listet typische Kardinalitäten auf. -| Kardinalität | Bedeutung | -|------------|------------| -| `1..1` | Ein Pflichtelement, zum Beispiel die [zu zahlende Summe einer Rechnung](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PayableAmount/). | -| `0..1` | Ein optionales Element, zum Beispiel eine [Anzahlung](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PrepaidAmount/). | -| `1..n` | Eine Liste als Pflichtelement mit einer beliebigen Anzahl an Elementen, zum Beispiel die [Rechnungspositionen](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-InvoiceLine/)| -| `0..n` | Eine optionale Liste mit einer beliebigen Anzahl an Elementen, zum Beispiel die [Zu- und Abschläge auf Dokumentenebene](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AllowanceCharge/) | -| `1..2` | Eine Liste als Pflichtelement mit maximal zwei Elementen, zum Beispiel die [Steuersummen](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-TaxTotal/) | -| `0..2` | Eine optionale Liste mit maximal zwei Elementen, zum Beispiel die [Steuerschemata einer Rechnungspartei](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AccountingSupplierParty/cac-Party/cac-PartyTaxScheme/) | +

Daumenregeln: Ist die erste Zahl 0 handelt es sich um ein optionales Element, ansonsten ist es obligatorisch, also ein Pflichtelement. Ist die zweite Zahl größer oder gleich 2 oder ist sie n, haben wir es mit einer Liste zu tun.

-Daumenregeln: Ist die erste Zahl `0` handelt es sich um ein optionales Element, ansonsten ist es obligatorisch, also ein Pflichtelement. Ist die zweite Zahl größer oder gleich `2` oder ist sie `n`, haben wir es mit einer Liste zu tun. +

Attribute

-### Attribute +

XML-Elemente können Attribute besitzen, welche den Wert des Elements weiter beschreiben. Zum Beispiel hat die fällige Summe einer Rechnung das obligatorische Attribut @currencyID, das die abgekürzte Währungsbezeichnung der Summe angbit. In der Spalte „Use“ des Abschnitts „attributes“ in der Dokumentation gibt der Buchstabe M an, dass es sich um ein obligatorisches Attribut handelt, es also angegeben werden muss.

-XML-Elemente können Attribute besitzen, welche den Wert des Elements weiter beschreiben. Zum Beispiel hat die [fällige Summe einer Rechnung](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PayableAmount/) das obligatorische Attribut `@currencyID`, das die abgekürzte Währungsbezeichnung der Summe angbit. In der Spalte „Use“ des Abschnitts „attributes“ in der Dokumentation gibt der Buchstabe `M` an, dass es sich um ein obligatorisches Attribut handelt, es also angegeben werden *muss*. +

Die Firmen-ID hat ein optionales Attribute schemeID. Dies wird durch den Buchstaben O in der Spalte „Use“ angegeben.

-Die [Firmen-ID](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AccountingSupplierParty/cac-Party/cac-PartyLegalEntity/cbc-CompanyID/) hat ein *optionales* Attribute `schemeID`. Dies wird durch den Buchstaben `O` in der Spalte „Use“ angegeben. +

Code-Listen

-### Code-Listen +

Viele Felder können keine beliebigen Werte aufnehmen sondern sind auf eine Auswahl aus einer Liste beschränkt. Diese Listen werden als Code-Listen bezeichnet. So muss zum Beispiel der [zu zahlende Rechnungsbetrag(https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PayableAmount/) eine Währungsbezeichnung haben und der Wert des entsprechenden Attributs @currencyID ist auf die Code-Liste ISO 4217 Currency codes beschränkt. Diese Information kann man erhalten, indem man erst auf den Element- oder Attributnamen und dann auf Namen der Code-Liste im Abschnitt „Code lists“ klickt. Die Seite der Code-Liste listet die möglichen Werte im Abschnitt „Codes“. Oft ist ees so, dass man ein wenig scrollen muss, um zur Werteliste zu gelangen.

-Viele Felder können keine beliebigen Werte aufnehmen sondern sind auf eine Auswahl aus einer Liste beschränkt. Diese Listen werden als *Code-Listen* bezeichnet. So muss zum Beispiel der [zu zahlende Rechnungsbetrag(https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PayableAmount/) eine Währungsbezeichnung haben und der Wert des entsprechenden Attributs [`@currencyID`](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-LegalMonetaryTotal/cbc-PayableAmount/currencyID/) ist auf die Code-Liste [ISO 4217 Currency codes](https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/) beschränkt. Diese Information kann man erhalten, indem man erst auf den Element- oder Attributnamen und dann auf Namen der Code-Liste im Abschnitt „Code lists“ klickt. Die Seite der Code-Liste listet die möglichen Werte im Abschnitt „Codes“. Oft ist ees so, dass man ein wenig scrollen muss, um zur Werteliste zu gelangen. +

Transformierung von XML zu JSON

-## Transformierung von XML zu JSON +

Weil E-Invoice-EU JSON und nicht XML benutzt, muss das Peppol UBL in JSON transformiert werden.

-Weil E-Invoice-EU JSON und nicht XML benutzt, muss das Peppol UBL in JSON transformiert werden. +

Grundsätzliches Vorgehen

-### Grundsätzliches Vorgehen +

Die Transformation von XML nach JSON in E-Invoice-EU ist logisch und unkompliziert, und schwerer zu erklären als zu verstehen.

-Die Transformation von XML nach JSON in E-Invoice-EU ist logisch und unkompliziert, und schwerer zu erklären als zu verstehen. +

Die XML-Struktur wird durch die Befolgung einfacher Regeln vorgenommen:

-Die XML-Struktur wird durch die Befolgung einfacher Regeln vorgenommen: +
    +
  1. Elemente werden JSON-Schlüssel – Jedes XML-Element wird durch einen Schlüssel im JSON-Objekt repräsentiert.
  2. +
  3. Die Verschachtelungstiefe wird bewahrt - Enthält ein Element Unterelemente, wird es ein Objekt mit diesen Elementen als Eigenschaften (properties).
  4. +
  5. Textwerte werden Strings - Enthält ein Element nur Text, wird der Text zum Wert für den entsprechenden Schlüssel.
  6. +
-1. Elemente werden JSON-Schlüssel – Jedes XML-Element wird durch einen Schlüssel im JSON-Objekt repräsentiert. -2. Die Verschachtelungstiefe wird bewahrt - Enthält ein Element Unterelemente, wird es ein Objekt mit diesen Elementen als Eigenschaften (*properties*). -3. Textwerte werden Strings - Enthält ein Element nur Text, wird der Text zum Wert für den entsprechenden Schlüssel. -Die Angabe des [Namens der Ausstellerin](https://docs.peppol.eu/poacc/billing/3.0/syntax/ubl-invoice/cac-AccountingSupplierParty/cac-Party/cac-PartyName/) einer Rechnung im folgenden unvollständige Fragment einer UBL-Rechnung als XML-Dokument mag das verdeutlichen: +

Die Angabe des Namens der Ausstellerin einer Rechnung im folgenden unvollständige Fragment einer UBL-Rechnung als XML-Dokument mag das verdeutlichen:

-[% FILTER $Highlight "language-markup" "line-numbers" %] - - - - + + +
<ubl:Invoice>
+  <cac:AccountingSupplierParty>
+    <cac:Party>
+      <cbc:PartyName>
         Acme Ltd.
-      
-    
-  
-
-[% END %]
+      </cbc:PartyName>
+    </cac:Party>
+  </cac:AccountingSupplierParty>
+</ubl:Invoice>
+ + + + + +

In JSON stellt sich der gleiche Sachverhalt so dar:

-In JSON stellt sich der gleiche Sachverhalt so dar: -[% FILTER $Highlight "language-json" "line-numbers" %] -{ - "ubl:Invoice": { - "cac:AccountingSupplierParty": { - "cac:Party": { - "cbc:PartyName": "Acme Ltd." +
{
+  "ubl:Invoice": {
+    "cac:AccountingSupplierParty": {
+      "cac:Party": {
+        "cbc:PartyName": "Acme Ltd."
       }
     }
   }
-}
-[% END %]
+}
+ + + + + +

Jedes XML-Element wird eine Eigenschaft des JSON-Objekts und die Hierarchie bleibt unverändert. Der Textinhalt von <cbc:PartyName wird zur Zeichenkette „Acme Ltd.“ in JSON.

+ +

Listen/Arrays

+ +

In XML fehlt das Konzept von Listen bzw. Arrays. Stattdessen werden Elemente einfach wiederholt. Das lässt sich an Rechnungspositionen zeigen:

-Jedes XML-Element wird eine Eigenschaft des JSON-Objekts und die Hierarchie bleibt unverändert. Der Textinhalt von `<ubl:Invoice> + <cac:InvoiceLine> + <cbc:ID>1</cbc:ID> + <cbc:AccountingCost>100:1</cbc:AccountingCost> + </cac:InvoiceLine> + <cac:InvoiceLine> + <cbc:ID>2</cbc:ID> + <cbc:AccountingCost>200:2</cbc:AccountingCost> + </cac:InvoiceLine> + <cac:InvoiceLine> + <cbc:ID>3</cbc:ID> + <cbc:AccountingCost>300:3</cbc:AccountingCost> + </cac:InvoiceLine> +</ubl:Invoice> - -[% FILTER $Highlight "language-markup" "line-numbers" %] - - - 1 - 100:1 - - - 2 - 200:2 - - - 3 - 300:3 - - -[% END %] -Es gibt drei Element `cac:InvoiceLine`. Es handelt sich also um eine Liste. -Die Transformierung nach JSON ist logisch: +

Es gibt drei Element cac:InvoiceLine. Es handelt sich also um eine Liste.

-[% FILTER $Highlight "language-json" "line-numbers" %] -{ - "ubl:Invoice": { - "cac:InvoiceLine": [ +

Die Transformierung nach JSON ist logisch:

+ + + + +
{
+  "ubl:Invoice": {
+    "cac:InvoiceLine": [
       {
-        "cbc:ID": "1",
-        "cbc:AccountingCost": "100:1",
+        "cbc:ID": "1",
+        "cbc:AccountingCost": "100:1",
       },
       {
-        "cbc:ID": "2",
-        "cbc:AccountingCost": "200:3",
+        "cbc:ID": "2",
+        "cbc:AccountingCost": "200:3",
       },
       {
-        "cbc:ID": "3",
-        "cbc:AccountingCost": "300:3",
+        "cbc:ID": "3",
+        "cbc:AccountingCost": "300:3",
       },
     ]
   }
-}
-[% END %]
+}
+ + + -Weil `cac:InvoiceLine` ein Array ist (es hat eine Kardinalität von `1..n`), wird es auch in JSON als Array dargestellt. Und die Listenelemente sind einfach die Unterknoten von `cac:InvoiceLine`. +

Weil cac:InvoiceLine ein Array ist (es hat eine Kardinalität von 1..n), wird es auch in JSON als Array dargestellt. Und die Listenelemente sind einfach die Unterknoten von cac:InvoiceLine.

-[% title = "Listen mit nur einem Element" %] -[% WRAPPER components/infobox.html type='info' title=title %] + + + + + + + -### Attribute -Einige Elemente haben Attribute: -[% FILTER $Highlight "language-markup" "line-numbers" %] - - - 23.04 - - -[% END %] +

Attribute

+

Einige Elemente haben Attribute:

-JSON kennt keine Attribute. Stattdessen wird an den Namen des Elements ein Klammeraffer `@` und der Name des Attributs angehangen: -[% FILTER $Highlight "language-json" "line-numbers" %] -{ - "ubl:Invoice": { - "cac:LegalMonetaryTotal": { - "cbc:PayableAmount": "23.04" - "cbc:PayableAmount@currencyID": "EUR" + +
<ubl:Invoice>
+  <cac:LegalMonetaryTotal>
+    <cbc:PayableAmount currencyID="EUR">23.04</cbc:PayableAmount>
+  </cac:LegalMonetaryTotal>
+</ubl:Invoice>
+ + + + + +

JSON kennt keine Attribute. Stattdessen wird an den Namen des Elements ein Klammeraffer @ und der Name des Attributs angehangen:

+ + + + +
{
+  "ubl:Invoice": {
+    "cac:LegalMonetaryTotal": {
+      "cbc:PayableAmount": "23.04"
+      "cbc:PayableAmount@currencyID": "EUR"
     }
   }
-}
-[% END %]
+}
+ + + + +

Nicht-String-Werte

-### Nicht-String-Werte +

Es ist wichtig, dass für alle Werte Strings verwendet werden müssen, selbst, wenn es sich um Zahlen handelt. Das lässt sich aus den obigen Beispielen ersehen.

-Es ist wichtig, dass für alle Werte Strings verwendet werden *müssen*, selbst, wenn es sich um Zahlen handelt. Das lässt sich aus den obigen Beispielen ersehen. +

Validierung

-## Validierung +

Es ist nicht wichtig, sich exakt an alle Details zu erinnern. Der Service steigt mit einer Fehlermeldung aus, wenn die Struktur der Eingabedaten nicht dem Schema entsprechen.

-Es ist nicht wichtig, sich exakt an alle Details zu erinnern. Der Service steigt mit einer Fehlermeldung aus, wenn die Struktur der Eingabedaten nicht dem Schema entsprechen. +

JSON-Schema

-## JSON-Schema +

Wer mit JSON Schema vertraut ist, kann auch auf die Schemadefinition zurückgreifen. Sie ist im GitHub-Repository E-Invoice-EU oder als REST-Endpunkt /api/schema/invoice verügbar.

-Wer mit [JSON Schema](https://json-schema.org/) vertraut ist, kann auch auf die Schemadefinition zurückgreifen. Sie ist im [GitHub-Repository E-Invoice-EU](https://github.com/gflohr/e-invoice-eu/blob/main/src/schema/invoice.schema.json) oder als REST-Endpunkt [`/api/schema/invoice`]([% q.llink(name=’other-endpoints’) %]#invoice-schema) verügbar. +

Unterschiede zu Peppol UBL

+

Die einzigen Unterschiede zu Peppol UBL sind zur Zeit, dass die Felder +cbc:CustomizationID +und +cbc:ProfileID optional sind. Der Grund dafür ist, dass sie aus dem Ausgabeformat geschlossen werden können. Sie müssen nur angegeben werden, wenn man die eingebauten Vorgabewerte für sie überschreiben will.

diff --git a/qgoda-site/e-invoice-eu/de/docs/service/andere-endpunkte/index.html b/qgoda-site/e-invoice-eu/de/docs/service/andere-endpunkte/index.html index 034a1bb..6014b5e 100644 --- a/qgoda-site/e-invoice-eu/de/docs/service/andere-endpunkte/index.html +++ b/qgoda-site/e-invoice-eu/de/docs/service/andere-endpunkte/index.html @@ -122,16 +122,16 @@

Liste der Fo
- - - - + + + + -
http http://localhost:3000/api/format/list
+
http http://localhost:3000/api/format/list
-
http http://localhost:300/api/format/list
+
http http://localhost:300/api/format/list
@@ -183,16 +183,16 @@

Rechnungsschema<
- - - - + + + + -
http http://localhost:3000/api/schema/invoice
+
http http://localhost:3000/api/schema/invoice
-
http http://localhost:300/api/schema/invoice
+
http http://localhost:300/api/schema/invoice
@@ -212,16 +212,16 @@

Mapping-Schema

- - - - + + + + -
http http://localhost:3000/api/schema/mapping
+
http http://localhost:3000/api/schema/mapping
-
http http://localhost:300/api/schema/mapping
+
http http://localhost:300/api/schema/mapping
diff --git a/qgoda-site/e-invoice-eu/de/docs/service/deployment/index.html b/qgoda-site/e-invoice-eu/de/docs/service/deployment/index.html index 48a9e8f..7e0b1c8 100644 --- a/qgoda-site/e-invoice-eu/de/docs/service/deployment/index.html +++ b/qgoda-site/e-invoice-eu/de/docs/service/deployment/index.html @@ -131,16 +131,16 @@

Docker-Contain
- - - - + + + + -
docker pull gflohr/e-invoice-eu:latest
+            
docker pull gflohr/e-invoice-eu:latest
 docker run --rm -d -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest
-
nerdctl pull gflohr/e-invoice-eu:latest
+            
nerdctl pull gflohr/e-invoice-eu:latest
 nerdctl run --rm -d -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest
@@ -186,29 +186,29 @@

- - - - - - - - + + + + + + + + -
npm install
+            
npm install
 npm run build
-
yarn install
+            
yarn install
 yarn run build
-
pnpm install
+            
pnpm install
 pnpm run build
-
bun install
+            
bun install
 bun run build
@@ -229,26 +229,26 @@

Mit Node
- - - - - - - - + + + + + + + + -
NODE_ENV=production npm run start:prod
+
NODE_ENV=production npm run start:prod
-
NODE_ENV=production yarn run start:prod
+
NODE_ENV=production yarn run start:prod
-
NODE_ENV=production pnpm run start:prod
+
NODE_ENV=production pnpm run start:prod
-
NODE_ENV=production pnpm run start:prod
+
NODE_ENV=production pnpm run start:prod
@@ -270,21 +270,21 @@

- - - - - - + + + + + + -
NODE_ENV=production bun apps/server/dist/main.js
+
NODE_ENV=production bun apps/server/dist/main.js
-
NODE_ENV=production deno --allow-env --allow-read --allow-net apps/server/dist/main.js
+
NODE_ENV=production deno --allow-env --allow-read --allow-net apps/server/dist/main.js
-
NODE_ENV=production node apps/server/dist/main.js
+
NODE_ENV=production node apps/server/dist/main.js
@@ -304,32 +304,32 @@

- - - - - - - - + + + + + + + + -
cd apps/server
+            
cd apps/server
 npm install
 npm run start:dev
-
cd apps/server
+            
cd apps/server
 yarn install
 yarn run start:dev
-
cd apps/server
+            
cd apps/server
 pnpm install
 pnpm run start:dev
-
cd apps/server
+            
cd apps/server
 bun install
 bun run start:dev
diff --git a/qgoda-site/e-invoice-eu/de/docs/service/rechnungen-erzeugen/index.html b/qgoda-site/e-invoice-eu/de/docs/service/rechnungen-erzeugen/index.html index c6063ed..0a720aa 100644 --- a/qgoda-site/e-invoice-eu/de/docs/service/rechnungen-erzeugen/index.html +++ b/qgoda-site/e-invoice-eu/de/docs/service/rechnungen-erzeugen/index.html @@ -146,18 +146,18 @@

Einfache
- - - - + + + + -
curl -X POST http://localhost:3000/api/invoice/transform-and-create/UBL \
+            
curl -X POST http://localhost:3000/api/invoice/transform-and-create/UBL \
     -F data=@contrib/templates/default-invoice.ods \
     -F mapping=@contrib/mappings/default-invoice.yaml
-
http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
+            
http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
     data@contrib/templates/default-invoice.ods \
     mapping@contrib/mappings/default-invoice.yaml
@@ -183,13 +183,13 @@

- - - - + + + + -
curl -X POST \
+            
curl -X POST \
     http://localhost:3000/api/invoice/transform-and-create/UBL \
     -F lang=de \
     -F data=@contrib/templates/default-invoice.ods \
@@ -205,7 +205,7 @@ 

http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \ +
http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
     lang=de \
     data@contrib/templates/default-invoice.ods \
     mapping@contrib/mappings/default-invoice.yaml \
@@ -292,18 +292,18 @@ 

- - - - + + + + -
curl -X POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
+            
curl -X POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
     -F data=@contrib/templates/default-invoice.ods \
     -F mapping=@contrib/mappings/default-invoice.yaml >e-invoice.pdf
-
http --form POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
+            
http --form POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
     data@contrib/templates/default-invoice.ods \
     mapping@contrib/mappings/default-invoice.yaml >e-invoice.pdf
@@ -331,17 +331,17 @@

- - - - + + + + -
curl -X POST http://localhost:3000/api/invoice/create/UBL \
+            
curl -X POST http://localhost:3000/api/invoice/create/UBL \
     -F invoice=@contrib/data/default-invoice.json
-
http --form POST http://localhost:3000/api/invoice/create/UBL \
+            
http --form POST http://localhost:3000/api/invoice/create/UBL \
     invoice@contrib/data/default-invoice.json
@@ -368,18 +368,18 @@

- - - - + + + + -
curl -X POST http://localhost:3000/api/mapping/transform/UBL \
+            
curl -X POST http://localhost:3000/api/mapping/transform/UBL \
     -F data=@contrib/templates/default-invoice.ods \
     -F mapping=@contrib/mappings/default-invoice.yaml
-
http --form POST http://localhost:3000/api/mapping/transform/UBL \
+            
http --form POST http://localhost:3000/api/mapping/transform/UBL \
     data@contrib/templates/default-invoice.ods \
     mapping@contrib/mappings/default-invoice.yaml
diff --git a/qgoda-site/e-invoice-eu/en/docs/details/internal-format/index.html b/qgoda-site/e-invoice-eu/en/docs/details/internal-format/index.html index 3788ad9..fe50bf9 100644 --- a/qgoda-site/e-invoice-eu/en/docs/details/internal-format/index.html +++ b/qgoda-site/e-invoice-eu/en/docs/details/internal-format/index.html @@ -220,6 +220,12 @@

Internal Format

+
  • + 8 + Differences to Peppol UBL + +
  • +

    @@ -601,6 +607,16 @@

    JSON Schema

    If you are familiar with JSON Schema, you can also use this. It is available in the GitHub repo E-Invoice-EU or as the REST endpoint /api/schema/invoice.

    + +

    Differences to Peppol UBL

    + +

    At the moment, the only differences to Peppol UBL are, that the fields +cbc:CustomizationID +and +cbc:ProfileID +are optional. The reason is that the value of these fields can be deduced from +the output format. You only have to specify them if you want to override the +built-in default values for them.

    diff --git a/qgoda-site/e-invoice-eu/en/docs/service/creating-invoices/index.html b/qgoda-site/e-invoice-eu/en/docs/service/creating-invoices/index.html index 33e5e8b..3f86493 100644 --- a/qgoda-site/e-invoice-eu/en/docs/service/creating-invoices/index.html +++ b/qgoda-site/e-invoice-eu/en/docs/service/creating-invoices/index.html @@ -211,18 +211,18 @@

    Basic E-invoice<
    - - - - + + + + -
    curl -X POST http://localhost:3000/api/invoice/transform-and-create/UBL \
    +            
    curl -X POST http://localhost:3000/api/invoice/transform-and-create/UBL \
         -F data=@contrib/templates/default-invoice.ods \
         -F mapping=@contrib/mappings/default-invoice.yaml
    -
    http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
    +            
    http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
         data@contrib/templates/default-invoice.ods \
         mapping@contrib/mappings/default-invoice.yaml
    @@ -255,13 +255,13 @@

    - - - - + + + + -
    curl -X POST \
    +            
    curl -X POST \
         http://localhost:3000/api/invoice/transform-and-create/UBL \
         -F lang=de \
         -F data=@contrib/templates/default-invoice.ods \
    @@ -277,7 +277,7 @@ 

    http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \ +
    http --form POST http://localhost:3000/api/invoice/transform-and-create/UBL \
         lang=de \
         data@contrib/templates/default-invoice.ods \
         mapping@contrib/mappings/default-invoice.yaml \
    @@ -406,18 +406,18 @@ 

    - - - - + + + + -
    curl -X POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
    +            
    curl -X POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
         -F data=@contrib/templates/default-invoice.ods \
         -F mapping=@contrib/mappings/default-invoice.yaml >e-invoice.pdf
    -
    http --form POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
    +            
    http --form POST http://localhost:3000/api/invoice/transform-and-create/Factur-X-Extended \
         data@contrib/templates/default-invoice.ods \
         mapping@contrib/mappings/default-invoice.yaml >e-invoice.pdf
    @@ -450,17 +450,17 @@

    - - - - + + + + -
    curl -X POST http://localhost:3000/api/invoice/create/UBL \
    +            
    curl -X POST http://localhost:3000/api/invoice/create/UBL \
         -F invoice=@contrib/data/default-invoice.json
    -
    http --form POST http://localhost:3000/api/invoice/create/UBL \
    +            
    http --form POST http://localhost:3000/api/invoice/create/UBL \
         invoice@contrib/data/default-invoice.json
    @@ -493,18 +493,18 @@

    - - - - + + + + -
    curl -X POST http://localhost:3000/api/mapping/transform/UBL \
    +            
    curl -X POST http://localhost:3000/api/mapping/transform/UBL \
         -F data=@contrib/templates/default-invoice.ods \
         -F mapping=@contrib/mappings/default-invoice.yaml
    -
    http --form POST http://localhost:3000/api/mapping/transform/UBL \
    +            
    http --form POST http://localhost:3000/api/mapping/transform/UBL \
         data@contrib/templates/default-invoice.ods \
         mapping@contrib/mappings/default-invoice.yaml
    diff --git a/qgoda-site/e-invoice-eu/en/docs/service/deployment/index.html b/qgoda-site/e-invoice-eu/en/docs/service/deployment/index.html index 653b474..5ac490b 100644 --- a/qgoda-site/e-invoice-eu/en/docs/service/deployment/index.html +++ b/qgoda-site/e-invoice-eu/en/docs/service/deployment/index.html @@ -215,16 +215,16 @@

    Docker Contain
    - - - - + + + + -
    docker pull gflohr/e-invoice-eu:latest
    +            
    docker pull gflohr/e-invoice-eu:latest
     docker run --rm -d -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest
    -
    nerdctl pull gflohr/e-invoice-eu:latest
    +            
    nerdctl pull gflohr/e-invoice-eu:latest
     nerdctl run --rm -d -p 3000:3000 --name e-invoice-eu gflohr/e-invoice-eu:latest
    @@ -275,29 +275,29 @@

    - - - - - - - - + + + + + + + + -
    npm install
    +            
    npm install
     npm run build
    -
    yarn install
    +            
    yarn install
     yarn run build
    -
    pnpm install
    +            
    pnpm install
     pnpm run build
    -
    bun install
    +            
    bun install
     bun run build
    @@ -318,26 +318,26 @@

    Run with Node.
    - - - - - - - - + + + + + + + + -
    NODE_ENV=production npm run start:prod
    +
    NODE_ENV=production npm run start:prod
    -
    NODE_ENV=production yarn run start:prod
    +
    NODE_ENV=production yarn run start:prod
    -
    NODE_ENV=production pnpm run start:prod
    +
    NODE_ENV=production pnpm run start:prod
    -
    NODE_ENV=production pnpm run start:prod
    +
    NODE_ENV=production pnpm run start:prod
    @@ -362,21 +362,21 @@

    Run wi
    - - - - - - + + + + + + -
    NODE_ENV=production bun apps/server/dist/main.js
    +
    NODE_ENV=production bun apps/server/dist/main.js
    -
    NODE_ENV=production deno --allow-env --allow-read --allow-net apps/server/dist/main.js
    +
    NODE_ENV=production deno --allow-env --allow-read --allow-net apps/server/dist/main.js
    -
    NODE_ENV=production node apps/server/dist/main.js
    +
    NODE_ENV=production node apps/server/dist/main.js
    @@ -396,32 +396,32 @@

    - - - - - - - - + + + + + + + + -
    cd apps/server
    +            
    cd apps/server
     npm install
     npm run start:dev
    -
    cd apps/server
    +            
    cd apps/server
     yarn install
     yarn run start:dev
    -
    cd apps/server
    +            
    cd apps/server
     pnpm install
     pnpm run start:dev
    -
    cd apps/server
    +            
    cd apps/server
     bun install
     bun run start:dev
    diff --git a/qgoda-site/e-invoice-eu/en/docs/service/other-endpoints/index.html b/qgoda-site/e-invoice-eu/en/docs/service/other-endpoints/index.html index f6e3b7d..2ac16cf 100644 --- a/qgoda-site/e-invoice-eu/en/docs/service/other-endpoints/index.html +++ b/qgoda-site/e-invoice-eu/en/docs/service/other-endpoints/index.html @@ -160,16 +160,16 @@

    List Formats

    - - - - + + + + -
    http http://localhost:3000/api/format/list
    +
    http http://localhost:3000/api/format/list
    -
    http http://localhost:300/api/format/list
    +
    http http://localhost:300/api/format/list
    @@ -222,16 +222,16 @@

    Invoice Schema

    - - - - + + + + -
    http http://localhost:3000/api/schema/invoice
    +
    http http://localhost:3000/api/schema/invoice
    -
    http http://localhost:300/api/schema/invoice
    +
    http http://localhost:300/api/schema/invoice
    @@ -252,16 +252,16 @@

    Mapping Schema

    - - - - + + + + -
    http http://localhost:3000/api/schema/mapping
    +
    http http://localhost:3000/api/schema/mapping
    -
    http http://localhost:300/api/schema/mapping
    +
    http http://localhost:300/api/schema/mapping