Export-DatevInvoice #
ÜBERSICHT #
Erzeugt ein DATEV-konformes ZIP für den Belegtransfer an Unternehmen Online.
SYNTAX #
Export-DatevInvoice [-OutputPath] <string> [-Invoices] <array> [[-GeneratingSystem] <string>]
[[-RepositoryLevel1] <string>] [[-RepositoryLevel2] <string>] [[-InvoiceFolder] <string>]
[-Validate] [<CommonParameters>]
BESCHREIBUNG #
Baut aus vorbereiteten Rechnungsdateien (PDF, optional Kontierungs-XML) ein DATEV-konformes ZIP-Archiv gemaess der Spezifikation Document v6.0 / LedgerImport v6.0.
Das ZIP enthält pro Rechnung:
- Rechnungsbild_RA_
.pdf Rechnungsbild (Pflicht) - Rechnungsdaten_RA_
.xml Belegsatzdatei mit Kontierung (optional) - Rechnungsbild_RA_
_AnhangN.pdf Weitere Anhaenge (optional)
Zusaetzlich wird eine gemeinsame Verwaltungsdatei erzeugt:
- document.xml Verkuepft Rechnungsbilder mit Kontierungsdaten
Ablauf:
- Alle Eingabedateien (PDF, LedgerXml, Anhaenge) werden validiert und aufgeloest
- Dateien werden in einen temporaeren Ordner kopiert und DATEV-konform benannt
- Die document.xml wird mit XmlWriter erzeugt (UTF-8 ohne BOM)
- Optional: XSD-Validierung gegen Document_v060.xsd und Belegverwaltung_online_ledger_import_v060.xsd
- Alle Dateien werden als ZIP-Archiv komprimiert
- Der temporaere Ordner wird aufgeraeumt
Die Funktion ist ein reiner ZIP-Builder ohne Datenbankzugriff. Die Kontierungs-XML (LedgerImport) wird extern erzeugt, z.B. durch die XSLT-Transformation EULANDA-invoice-eul-datev.xslt aus einer EULANDA-META-XML.
Mehrere Rechnungen können in einem ZIP übergeben werden. Jede Rechnung erzeugt einen eigenen document-Block in der Verwaltungsdatei.
PARAMETER #
-OutputPath #
Type: string
Mandatory: True
Pfad zur ZIP-Datei die erzeugt werden soll. Relative Pfade werden aufgeloest. Eine bestehende Datei wird überschrieben.
-Invoices #
Type: array
Mandatory: True
Array von Hashtables, je Rechnung mit folgenden Keys:
- InvoiceNo [string, Pflicht] Rechnungsnummer (wird im Dateinamen verwendet)
- InvoiceDate [datetime, Pflicht] Rechnungsdatum (für Monats-/Jahresordner)
- PdfPath [string, Pflicht] Pfad zum Rechnungs-PDF
- LedgerXmlPath [string] Pfad zur Rechnungsdaten_RA_*.xml (optional)
- Attachments [string[]] Zusaetzliche PDF-Anhaenge (optional)
-GeneratingSystem #
Type: string
Default: 'EULANDA ERP'
Name des erzeugenden Systems für die document.xml (Standard: ‘EULANDA ERP’).
-RepositoryLevel1 #
Type: string
Default: 'EULANDA'
Kategorie im DATEV-Ablagesystem (Level 1, Standard: ‘EULANDA’). Empfehlung: Ein konstanter Name pro Software.
-RepositoryLevel2 #
Type: string
Default: 'Belege'
Ordner im DATEV-Ablagesystem (Level 2, Standard: ‘Belege’).
-InvoiceFolder #
Type: string
Default: 'Ausgangsrechnungen'
Bezeichnung des Rechnungsordners in DATEV Belege online (property key=“3”, Standard: ‘Ausgangsrechnungen’).
-Validate #
Type: switch
Validiert document.xml und Rechnungsdaten-XMLs gegen die DATEV-XSD-Schemas (Document_v060.xsd, Belegverwaltung_online_ledger_import_v060.xsd). Bei Fehlern werden Warnungen ausgegeben, das ZIP wird trotzdem erzeugt. Die XSD-Dateien müssen im xslt-Ordner des Moduls liegen.
AUSGABEN #
System.Management.Automation.PSCustomObject
Gibt ein Objekt mit folgenden Properties zurück: - Success [bool] Ob das ZIP erfolgreich erzeugt wurde - OutputPath [string] Pfad zur erzeugten ZIP-Datei - InvoiceCount [int] Anzahl enthaltener Rechnungen - Files [string[]] Liste aller Dateien im ZIP
BEISPIELE #
# Einzelrechnung ohne Kontierung (nur Belegbild für Ablage)
$inv = @{
InvoiceNo = '20214914'
InvoiceDate = [datetime]'2025-04-18'
PdfPath = 'C:\Temp\20214914.pdf'
}
Export-DatevInvoice -OutputPath 'C:\Temp\datev.zip' -Invoices @($inv)
# Einzelrechnung mit Kontierung (Erloeskonten) und Anhaengen
$inv = @{
InvoiceNo = 'R-2023-204'
InvoiceDate = [datetime]'2023-02-15'
PdfPath = 'C:\Temp\R-2023-204.pdf'
LedgerXmlPath = 'C:\Temp\Rechnungsdaten_RA_R-2023-204.xml'
Attachments = @('C:\Temp\Anhang1.pdf', 'C:\Temp\Anhang2.pdf')
}
Export-DatevInvoice -OutputPath 'C:\Temp\datev.zip' -Invoices @($inv) -Validate
# Mehrere Rechnungen in einem ZIP (Sammelexport)
$rechnungen = @(
@{ InvoiceNo = 'R-2023-101'; InvoiceDate = [datetime]'2023-01-12'
PdfPath = 'C:\Temp\101.pdf'; LedgerXmlPath = 'C:\Temp\RA_101.xml' },
@{ InvoiceNo = 'R-2023-204'; InvoiceDate = [datetime]'2023-02-15'
PdfPath = 'C:\Temp\204.pdf'; LedgerXmlPath = 'C:\Temp\RA_204.xml' }
)
Export-DatevInvoice -OutputPath 'C:\Temp\datev.zip' -Invoices $rechnungen
HINWEISE #
Voraussetzungen:
- PowerShell 5.1 oder höher
- System.IO.Compression (in .NET Framework enthalten)
DATEV-Spezifikation: Document v6.0, LedgerImport v6.0 XSD-Schemas im xslt-Ordner: Document_v060.xsd, Document_types_v060.xsd, Belegverwaltung_online_ledger_import_v060.xsd, Belegverwaltung_online_ledger_types_v060.xsd