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),Repairedbleibt $null. - Columns: jede Spalte aus
Template.Columnsmuss 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 leerenOrderByin 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 inGet-EulSupplierListhaben. Wenn nicht (z.B. Lieferant gelöscht oder Match in anderem Mandanten unbekannt), wirdSupplierMatchin 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 ...
}
VERWANDTE LINKS #
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.