Export Datev Invoice
Zuletzt geändert: 21.03.2026 08:03

Übersicht

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:

  1. Alle Eingabedateien (PDF, LedgerXml, Anhaenge) werden validiert und aufgeloest
  2. Dateien werden in einen temporaeren Ordner kopiert und DATEV-konform benannt
  3. Die document.xml wird mit XmlWriter erzeugt (UTF-8 ohne BOM)
  4. Optional: XSD-Validierung gegen Document_v060.xsd und Belegverwaltung_online_ledger_import_v060.xsd
  5. Alle Dateien werden als ZIP-Archiv komprimiert
  6. 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