Test Eul Excel Template
Zuletzt geändert: 24.05.2026 08:59

Übersicht

Test-EulExcelTemplate #

ÜBERSICHT #

Validiert ein Excel-Template gegen das aktuelle DB-Schema und liefert eine Issue-Liste plus eine reparierte Template-Kopie mit Defaults.

SYNTAX #

Test-EulExcelTemplate [-Conn] <__ComObject> [-Template] <PSObject> [<CommonParameters>]

BESCHREIBUNG #

Templates werden in der SQL-Registry persistiert und können “veralten”, wenn sich das Datenbank-Schema oder der Lieferanten-Stamm ändert. Test-EulExcelTemplate ist die Sicherheitsschleife, die das Plugin (und beliebige Headless-Skripte) vor dem Anwenden eines Templates ausführt: was nicht mehr passt, wird gemeldet und aus einer Reparatur-Kopie entfernt, damit ein “Trotzdem laden mit Defaults”- Pfad ohne Crash funktioniert.

Geprüft wird:

  • Tabelle: existiert via Get-EulTableSchema. Wenn nicht, ist das ein harter Fehler (IsValid=$false), Repaired bleibt $null.
  • Columns: jede Spalte aus Template.Columns muss im Schema sein. Fehlende werden in der Reparatur-Kopie entfernt.
  • KeyColumns: müssen im Schema sein und dürfen keine Computed- Spalten sein (Identity-Spalten sind erlaubt - z.B. ID als Key bei UpdateOnly). Fehlende/Computed werden entfernt.
  • OrderBy: einfacher Spalten-Token-Parser (vor optionalem ASC/DESC); unbekannte Token lösen ein Warning aus und leeren OrderBy in der Reparatur-Kopie.
  • SupplierPriceColumns: gegen Schema; fehlende werden entfernt.
  • IgnoreFieldsOnUpdate: gegen Schema; fehlende werden entfernt.
  • SupplierMatch (nur bei Type='Import' und nicht-leer): muss einen Treffer in Get-EulSupplierList haben. Wenn nicht (z.B. Lieferant gelöscht oder Match in anderem Mandanten unbekannt), wird SupplierMatch in der Reparatur-Kopie geleert (= eigener Stamm).

PARAMETER #

-Conn #

Type: __ComObject

Offene ADODB-Verbindung. Caller-owns-Connection.

-Template #

Type: PSObject

Template-Objekt wie von Get-EulExcelTemplate geliefert. Mindestens die Eigenschaften Table, Columns, KeyColumns, OrderBy, SupplierMatch, SupplierPriceColumns, IgnoreFieldsOnUpdate, Type werden gelesen; fehlende Properties werden als leer behandelt.

AUSGABEN #

[PSCustomObject] mit Eigenschaften:

IsValid (bool) - $false nur bei harten Fehlern (Tabelle existiert nicht). Issues (PSCustomObject[]) - Pro Befund: Severity/Category/ Field/Message. Repaired (PSCustomObject) - Kopie des Templates ohne die beanstandeten Einträge. $null wenn IsValid=$false. Issue-Schema: Severity (string) ‘Error’ oder ‘Warning’ Category (string) ‘Table’ / ‘Columns’ / ‘KeyColumns’ / ‘OrderBy’ / ‘Supplier’ / ‘SupplierPriceColumns’ / ‘IgnoreFieldsOnUpdate’ Field (string) Der einzelne beanstandete Wert (Spaltenname, Match, …), leer für Kategorie-Probleme. Message (string) Menschenlesbare Beschreibung (deutsch).

BEISPIELE #

$t = Get-EulExcelTemplate -Conn $conn -Table 'Artikel' -Name 'Standard'
$r = Test-EulExcelTemplate -Conn $conn -Template $t
if (-not $r.IsValid) { throw "Template nicht ladbar" }
if ($r.Issues.Count -gt 0) {
  $r.Issues | Format-Table Severity, Category, Field, Message
  # ... User fragen, dann mit $r.Repaired weiter arbeiten ...
}

HINWEISE #

Pendant zu Get-EulExcelTemplate/Save-EulExcelTemplate. Plugin- seitig (EulandaXcel) wird Apply nur bei IsValid=$true angeboten und bei Issues.Count -gt 0 ein Modal mit Liste plus “Weiter mit Defaults”/“Abbrechen” gezeigt.