Get Invoice Attachment Source
Zuletzt geändert: 06.11.2026 10:48

Übersicht

Get-InvoiceAttachmentSource #

ÜBERSICHT #

Sammelt die Beizettel einer Rechnung (Anlagen BG-24) aus dem DMS der Klassik und aus der Ablage der X-Suite und prüft sie.

SYNTAX #

Get-InvoiceAttachmentSource [-InvoiceId] <int> [[-InvoiceNo] <int>] [[-Source] <string>]
    [[-WorkFolder] <string>] [[-Conn] <__ComObject>] [[-Udl] <string>] [[-ConnStr] <string>]
    [<CommonParameters>]

BESCHREIBUNG #

Stundenzettel, Aufmaße und andere Beizettel gehen als Anlage mit der E-Rechnung hinaus. Bis November 2026 kamen sie nur aus dem Ordner ‘Annex’ im DMS-Ordner der Rechnung (Klassik, Plugin esol.DMS). Die X-Suite hat bewusst kein dateibasiertes DMS; ihre Beizettel liegen in der Ablage (EulandaXdms) und werden über die Sicht ‘xdms.InvoiceAttachment’ gelesen (EulandaXdms ab 1.1.0, Vertrag mit der XSuite-Sitzung vom 06.11.2026). Anlass: Kunde Brummbaum.

Diese Funktion kennt beide Quellen; wer sie aufruft (Xfacture, die E-Beleg-Route der X-Suite), weiß nicht, woher eine Datei kommt.

  • Dms: alle Dateien im Ordner ‘Annex’ des DMS-Ordners der Rechnung, nicht rekursiv, nach Namen sortiert, ohne versteckte und Systemdateien. Ohne DMS-Plugin oder ohne Ordner: nichts, kein Fehler.
  • Suite: die Zeilen der Sicht zur Rechnung in der Reihenfolge SortKey. Die Bytes werden in einen Arbeitsordner geschrieben, der Titel wird zur Beschreibung (BT-123), der Dateiname zur Kennung (BT-122). Ohne Sicht (keine X-Suite oder älteres EulandaXdms): nichts, kein Fehler. Fehlt das Leserecht, bricht die Funktion mit Klartext ab.
  • Auto (Vorgabe): beide Quellen, erst DMS, dann Ablage.

Am Ende prüft ‘Get-InvoiceAttachment’ die ganze Liste wie bisher: erlaubte Dateitypen, höchstens 15 MB zusammen, kein Name doppelt, auch nicht über beide Quellen hinweg. Gelesen wird nur; in die Ablage der X-Suite schreibt diese Funktion nichts (EulandaRules docs/plugins.md).

PARAMETER #

-InvoiceId #

Type: int

Id der Rechnung (dbo.Rechnung.Id).

-InvoiceNo #

Type: int

Rechnungsnummer, hilft dem DMS beim Finden des Ordners.

-Source #

Type: string
Default: 'Auto'

Auto (beide), Dms (nur Klassik) oder Suite (nur Ablage der X-Suite).

-WorkFolder #

Type: string
Default: ''

Ordner für die Dateien aus der Ablage der X-Suite. Ohne Angabe ein neuer Ordner unter %TEMP%. Der Aufrufer löscht ihn nach dem Export (Rückgabe WorkFolder).

-Conn #

Type: __ComObject

Offene ADODB-Verbindung. Wird nicht geschlossen.

-Udl #

Type: string

Pfad zu einer UDL-Datei, wenn keine Verbindung übergeben wird.

-ConnStr #

Type: string

Verbindungszeichenfolge, wenn keine Verbindung übergeben wird.

AUSGABEN #

hashtable mit
  • Items: hashtable[] wie von ‘Get-InvoiceAttachment’ (Path, FileName, MimeType, Reference, Description, Length) plus Source (‘Dms’ oder ‘Suite’); unverändert an ‘Export-Invoice -Attachment’ zu geben. - DmsFolder: der geprüfte Annex-Ordner oder ‘’. - SuiteAvailable: $true, wenn die Sicht der X-Suite da ist. - WorkFolder: der Arbeitsordner oder ‘’, wenn keiner gebraucht wurde.

BEISPIELE #

$att = Get-InvoiceAttachmentSource -Conn $conn -InvoiceId 4711 -InvoiceNo 20260852
Export-Invoice -Conn $conn -InvoiceId 4711 -OutputXml $xml -Attachment $att['Items']
if ($att['WorkFolder']) { Remove-Item $att['WorkFolder'] -Recurse -Force }

HINWEISE #

Plan: Xfacture docs/internal/plan-invoice-attachment-source.md; Vertrag der Sicht: EulandaXdms docs/internal/plan-invoice-annex.md.