Rename-EulandaDmsFolder #
ÜBERSICHT #
Benennt den DMS-Ordner eines Datensatzes um, nachdem sich dessen FolderName-Wert in der Datenbank geändert hat (z.B. Adresse.Match, Artikel.ArtNummer, ServiceArtikel.SarNummer).
SYNTAX #
Rename-EulandaDmsFolder [-DataObject] <string> [-Id] <int> [-OldFolderName] <string> [[-Conn]
<__ComObject>] [[-Udl] <string>] [[-ConnStr] <string>] [<CommonParameters>]
BESCHREIBUNG #
Typischer Anwendungsfall: Der Anwender ändert Adresse.Match im ERP. Der DMS-Ordner heißt aber weiterhin nach dem alten Match. Diese Funktion zieht den Ordner atomar auf den neuen Namen um – alle darunter liegenden Unterstrukturen (Auftrag, Lieferschein, Rechnung, Kontakt etc.) wandern mit, weil das Dateisystem den Eltern-Ordner als Ganzes verschiebt.
Der neue Pfad wird per Resolve-EulDmsFolder aus der aktuellen DB-Config berechnet. Den alten Pfad konstruiert die Funktion aus dem gemeinsamen Parent und dem vom Caller mitgegebenen -OldFolderName. Der Caller muss sich also den alten Wert vor dem DB-Update merken.
Sinnvoll nur für text-basierte FolderName-Felder, die der User ändern kann:
Eulanda.Adresse(Match)Eulanda.Kreditor(Match)Eulanda.Artikel(ArtNummer)Eulanda.ServiceArtikel(SarNummer)Eulanda.SepaMandat(MandatsReferenz)
Für ID- oder KopfNummer-basierte DataObjects (Auftrag, Rechnung, Lieferschein, Kontakt, ArtikelIdent etc.) ist Rename nicht nötig – der Wert ändert sich nie.
Idempotenz-Verhalten: Die Funktion liefert ein PSCustomObject mit dem Feld Action, das einen der folgenden Werte hat:
NoChangeAlter == Neuer Pfad (z.B. Match auf gleichen Wert gesetzt)NothingToDoWeder alter noch neuer Ordner existiert im DMSAlreadyMovedNeuer Pfad existiert, alter nicht – schon umgezogenMovedAlter Pfad existierte, wurde auf neuen Pfad verschoben
Konflikt: Wenn beide Pfade existieren, wirft die Funktion – das muss manuell aufgeloest werden (welcher ist der richtige?).
PARAMETER #
-DataObject #
Type: string
Qualifizierter DataObject-Name (z.B. Eulanda.Adresse, Eulanda.Artikel).
-Id #
Type: int
Datensatz-ID (Primärschlüssel in der zugehörigen Tabelle).
-OldFolderName #
Type: string
Der alte FolderName-Wert, unter dem der Ordner heute noch im Dateisystem liegt. Typisch: der Match/ArtNummer/SarNummer-Wert vor dem DB-Update.
-Conn #
Type: __ComObject
Bereits offene ADODB-Verbindung.
-Udl #
Type: string
UDL-Dateipfad zur Verbindung.
-ConnStr #
Type: string
ADODB-Connection-String zur Verbindung.
AUSGABEN #
PSCustomObject mit `OldPath`, `NewPath`, `Action`.
BEISPIELE #
# Match einer Adresse ändern und DMS-Ordner mitnehmen
$id = 42
$oldMatch = (Invoke-AdodbQuery -Conn $conn -Sql "SELECT Match FROM Adresse WHERE Id = $id").Match
Invoke-AdodbNonQuery -Conn $conn -Sql "UPDATE Adresse SET Match = 'NEUMATCH' WHERE Id = $id"
Rename-EulandaDmsFolder -DataObject 'Eulanda.Adresse' -Id $id -OldFolderName $oldMatch -Conn $conn
# Artikel-Nummer ändern
Rename-EulandaDmsFolder -DataObject 'Eulanda.Artikel' -Id 17 -OldFolderName '1100' -Conn $conn