Export-InvoiceXml #
ÜBERSICHT #
Exportiert eine EULANDA-Rechnung als kommentiertes und strukturiertes XML gemäß EN16931 welches dann per XSLT Transformation in Xrechnung, ZUGFeRD oder EDIFACT INVOIC gewandelt werden kann.
SYNTAX #
Export-InvoiceXml [-Conn] <__ComObject> [[-WorkingDir] <string>] [[-OutputXml] <string>]
[[-InvoiceId] <nullable[int]>] [[-InvoiceNo] <nullable[int]>] [[-XsdFile] <string>]
[-ValidateXml] [-CommentXml] [-Xrechnung] [[-ZugferdProfile] <string>] [-IncludeAccounting]
[[-BankIBAN] <string>] [[-Attachment] <object[]>] [[-ContentSettings] <hashtable>]
[<CommonParameters>]
BESCHREIBUNG #
Diese Funktion liest Rechnungsdaten aus einer EULANDA-Datenbankverbindung (UDL oder Connection-String), generiert daraus eine strukturierte XML-Datei mit Metadaten und optionalen Kommentaren gemäß dem mitgelieferten XSD-Schema. Sie unterstützt sowohl das ZUGFeRD- als auch das Xrechnung-Format (je nach Schalter) und validiert optional gegen das XSD.
Optional können FIBU-Kontierungsdaten (Erlöskonten, MwSt-Sätze) aus der SQL-Funktion cnf_FibuBruttoErlöseKopf geladen und im XML als FIBULISTE ergänzt werden.
PARAMETER #
-Conn #
Type: __ComObject
Eine aktive ADODB-Verbindung zur EULANDA-Datenbank. Das Connection-Objekt kann über ‘Get-ConnByUdl’ erstellt werden.
-WorkingDir #
Type: string
Default: $null
Das Arbeitsverzeichnis, von dem aus relative Pfade aufgelöst werden.
-OutputXml #
Type: string
Default: $null
Pfad zur Zieldatei, in die das XML geschrieben wird. Wird relativ zum Skriptpfad aufgelöst.
-InvoiceId #
Type: nullable[int]
Default: $null
Gibt die ID der Rechnung an. Dies ist der Primärschlüssel in ‘Rechnung’. Hat Vorrang, sollte auch ‘-InvoiceNo’ gesetzt sein.
-InvoiceNo #
Type: nullable[int]
Default: $null
Gibt die Rechnungsnummer des Datenbankfeldes ‘KopfNummer’ an. Wird auch ‘-InvoiceId’ übergeben, hat die Id Vorrang.
-XsdFile #
Type: string
Default: $null
Pfad zur XSD-Datei, gegen die das erzeugte XML optional validiert wird. Aus der XSD wird aber auch die Feldbeschreibung aus den Kommentaren extrahiert.
-ValidateXml #
Type: switch
Wenn gesetzt, wird das erzeugte XML gegen das angegebene XSD validiert.
-CommentXml #
Type: switch
Wenn gesetzt, werden XML-Kommentare aus der XSD-Datei in das erzeugte XML eingefügt.
-Xrechnung #
Type: switch
Wenn gesetzt, wird der ‘ConformanceLevel’ auf Xrechnung gesetzt. Diese XML kann dann in einem weiteren Schritt in eine Xrechnung CII transformiert werden, ansonsten wäre sie ZUGFeRD kompatibel.
-ZugferdProfile #
Type: string
Default: ''
Profil der ZUGFeRD-Rechnung, wenn -Xrechnung nicht gesetzt ist: ‘Extended’ (Standard) oder ‘EN16931’. EN 16931 ist das kleinere Profil ohne die Extended-Felder (BT-X); es ist für Empfänger gedacht, deren Prüfprogramm nur die Norm und die XRechnung kennt (etwa der KoSIT-Validator). Der ConformanceLevel wird ‘urn:cen.eu:en16931:2017’, das Stylesheet lässt die Extended-Elemente weg, die Schemaprüfung nimmt die XSD EN 16931, und ConvertTo-ZugferdPdf schreibt ‘EN 16931’ in die XMP-Metadaten des PDF. Ohne den Parameter gilt der Schlüssel ‘ZugferdProfile’ aus -ContentSettings (Empfängerprofil), sonst Extended.
-IncludeAccounting #
Type: switch
Wenn gesetzt, werden zusätzlich FIBU-Kontierungsdaten (Erlöskonten, MwSt-Sätze) aus der SQL-Funktion cnf_FibuBruttoErlöseKopf geladen und als FIBULISTE im XML ergänzt. Dies ist nützlich für Datev-Exports oder andere Buchhaltungsintegrationen.
-Attachment #
Type: object[]
Dateien, die als Anlagen (BG-24, rechnungsbegründende Unterlagen wie Aufmaß oder Stundenbericht) eingebettet werden. Sie landen als Base64 im Block ANLAGELISTE, die XSLT-Transformationen machen daraus die eingebetteten Dokumente der XRechnung (CII), der UBL und der ZUGFeRD- XML. Erlaubt sind PDF, PNG, JPEG, CSV, XLSX und ODS mit zusammen höchstens 15 MB; ein anderer Typ oder mehr bricht den Export mit einer Klartextmeldung ab, siehe ‘Get-InvoiceAttachment’. Jeder Eintrag ist ein Pfad, ein FileInfo-Objekt oder eine Hashtable mit Path (Pflicht), FileName und Description; ohne Description gilt der Dateiname ohne Endung als Beschreibung (BT-123).
-ContentSettings #
Type: hashtable
Inhaltseinstellungen aus einem Empfängerprofil, vom Aufrufer schon aufgelöst (Xfacture ab 3.125: Standardprofil, gewähltes Profil der Adresse, Altwerte). Schlüssel: CreditNoteAmounts, CorrectionAmounts, SelfBilling, XmlComments, PartyIdField, LegalNoteCode, InvoiceTypeCoding, PznMixedMode, dazu ProfileName und ProfileRevision für METADATA/PROFILE und PROFILEREVISION, und Notes: feste Notizen, eine Zeile je Notiz “CODE: Text”; eine Notiz der Rechnung mit demselben Code geht vor. MemberNoField: wohin die Mitgliedsnummer des Warenempfängers (ohne abweichenden Warenempfänger: des Käufers) geht, ‘BuyerReference’ (BT-10, ohne Nummer am Warenempfänger gilt die des Käufers), ‘ShipToId’ (BT-71) oder beide mit Komma; fehlt eine Pflichtnummer, bricht der Export ab. XRechnungNotes: ‘collected’ schreibt in der XRechnung alle Notizen in eine, je Zeile “#CODE#Text#” (Notizen ohne Code als AAI); ZUGFeRD und Peppol bleiben unberührt. Was hier steht, gilt; Registry und Xfacture-Einstellungen der Adresse werden für diese Schlüssel nicht gelesen. Ohne den Parameter bleibt das Verhalten wie bisher.
AUSGABEN #
string
Der erzeugte XML-Dateiname inkl. Pfad.
BEISPIELE #
# Exportiert die Rechnung Nr. 12345 als XML im Format Xrechnung und validiert sie gegen das Schema.
$udl = "C:\cfg\eulanda.udl"
$conn = Get-ConnByUdl -Udl $udl
Export-InvoiceXml -Conn $conn -OutputXml ".\output\invoice.xml" -InvoiceNo 12345 `
-XsdFile ".\schema\eulanda-invoice.xsd" -ValidateXml -Xrechnung
# Exportiert Rechnung mit FIBU-Kontierungsdaten für Datev-Export.
$conn = Get-ConnByUdl -Udl "C:\cfg\eulanda.udl"
Export-InvoiceXml -Conn $conn -OutputXml "C:\Temp\invoice.xml" -InvoiceNo 20250006 `
-IncludeAccounting -CommentXml
VERWANDTE LINKS #
HINWEISE #
- Das XML enthält strukturierte Kommentare, basierend auf dem XSD.
- Die Daten werden aus EULANDA per ADODB gelesen und vollständig in eine Hashtable überführt.
- Unterstützt UTF-8 ohne BOM und XML-Deklaration mit Encoding=“UTF-8”.
- Nutzt ‘Get-CommentMapFromXsd’ und ‘Convert-HashtableToXml’ zur Erzeugung eines dokumentierten XMLs.
- Die XML-Datei enthält zusätzlich einen Kopfkommentar mit Zeitstempel und Dateiname.
- FIBU-Daten erscheinen im XML als
.… - Anlagen (BG-24) erscheinen im XML als
mit REFERENZ (BT-122), BESCHREIBUNG (BT-123), INHALT (BT-125, Base64), MIMETYPE und DATEINAME.… - Belegcode (BT-3) und Vorzeichen (Entscheidung 26.10.2026, plan-invoice-type-codes.md Abschnitt 6): Storno (Typ 12) und Korrektur (Typ 11, Typ 1 mit Bezug) sind 384 mit BG-3 und negativer Differenz; Gutschriften ohne Bezug sind 381 positiv, mit dem Mandantenschalter SelfBilling 389 (Gutschriftverfahren, Verkäufer ist die Adresse, Käufer der Firmenstamm, Zahlung an die Bankverbindung der Adresse). Schalter in der SQL-Registry ‘\Modules\Grundwerte\Xfacture’: SelfBilling (0/1), CreditNoteAmounts (positive/negative, 381) und CorrectionAmounts (negative/positive, 384); die beiden Vorzeichen auch je Adresse in den Xfacture-Einstellungen (Kontakt XFacture), Adresse vor Mandant. Alle drei wandern als METADATA/SELFBILLING, CREDITNOTEAMOUNTS und CORRECTIONAMOUNTS in die Roh-XML; Peppol-UBL macht aus einer 384 außerhalb DE-DE oder bei positive eine CreditNote 381 mit Bezug.