DMS (Dokumentenmanagementsystem)
Das DMS-Modul dient der zentralen Verwaltung, Klassifizierung und Verknüpfung von Dokumenten wie Rechnungen, Angebote, Auftragsbestätigungen und sonstigen Belegen.
Es ist eng mit Kontakten, Projekten und der Kontakt-Historie verbunden.
Routen & Controller
Route: dms.index Controller: \App\Http\Controllers\DMS\DmsController Methode: index Beschreibung: Zeigt die Index-Ansicht des Dokumentenmanagementsystems
Die Index-Route rendert eine InertiaUI Table, welche über die Tabellenklasse App\Tables\Dms definiert ist.
Tabellenarchitektur
Die DMS-Übersicht basiert auf einer InertiaUI Table.
Eine Tabelle besteht aus folgenden Kernbestandteilen: - Resource (Datenquelle / Eloquent Model) - Columns (sichtbare Spalten) - Filters (Filtermöglichkeiten) - Actions (Zeilenaktionen) - Transforms (Anpassung der Ausgabeformate)
Resource (Datenquelle)
Verwendetes Model: App\Models\DMS\Dms
Suchfelder: - dokument_titel - dokument_inhalt
Standardsortierung: - datum_dokument_erstellt (absteigend)
TransformModel
Vor der Ausgabe werden bestimmte Felder transformiert.
Zweck: - Umwandlung interner Geldwerte (Minor Units) - Ausgabe als formatierte Preise
Transformierte Felder: - betrag_netto - betrag_brutto
Spaltenübersicht
Vorschau: - Typ: ImageColumn - Beschreibung: Dokumentvorschau (Thumbnail)
Aktionen: - Typ: ActionColumn - Beschreibung: Kontextaktionen (z. B. Vorschau)
Titel: - Typ: TextColumn - Beschreibung: Dokumenttitel mit Link zur Detailansicht
Typ: - Typ: BadgeColumn - Beschreibung: Dokumenttyp (Enum-basiert)
Kontakt: - Typ: TextColumn - Beschreibung: Verknüpfter Kontakt (optional)
Referenz: - Typ: TextColumn - Beschreibung: Referenznummer oder Freitext
Geprüft: - Typ: BooleanColumn - Beschreibung: Kennzeichnung, ob Dokument geprüft ist
OCR: - Typ: BooleanColumn - Beschreibung: Gibt an, ob OCR-Daten vorhanden sind
Betrag Netto: - Typ: NumericColumn - Beschreibung: Netto-Betrag des Dokuments
Betrag Brutto: - Typ: NumericColumn - Beschreibung: Brutto-Betrag (standardmäßig ausgeblendet)
Dokumenten-Datum: - Typ: DateColumn - Beschreibung: Datum des Dokuments
Erstellt am: - Typ: DateColumn - Beschreibung: Erstellungsdatum des Datensatzes
Filter
Dokumenten-Datum: - Typ: DateFilter - Beschreibung: Filter nach Dokumenten-Datum
Erledigt am: - Typ: DateFilter - Beschreibung: Filter nach Abschlussdatum
Typ: - Typ: SetFilter - Beschreibung: Filter nach Dokumenttyp (Enum)
Referenz: - Typ: TextFilter - Beschreibung: Filter mit Vergleichsoperatoren
Aktionen
Verfügbare Zeilenaktionen: - Vorschau (öffnet Dokument in einem Drawer)
Observer (DmsObserver)
Der DmsObserver reagiert auf Lebenszyklus-Ereignisse des DMS-Modells.
Löschen eines Dokuments
Beim Löschen eines Dokuments werden automatisch: - Suchindex-Einträge entfernt - Relationen gelöscht - Kontakt-Historien bereinigt - Physische Dateien gelöscht (Original, Vorschau, Zusatzdateien)
Erstellen & Aktualisieren
Beim Erstellen oder Aktualisieren eines Dokuments: - wird ein Kontakt-Historieneintrag erzeugt oder aktualisiert - wird der Historientyp abhängig vom Dokumenttyp gesetzt - werden Beträge und Dokumentdaten in die Kontaktchronik übernommen
Kontakt-Historien-Zuordnung
Eingangsrechnung: - Historientyp: Incoming Invoice
Ausgangsrechnung: - Historientyp: External Invoice
Angebot: - Historientyp: Offer
Auftragsbestätigung: - Historientyp: Order Confirmation
Sonstige Dokumente: - Historientyp: Allgemeiner DMS-Eintrag
Zusammenfassung
Das DMS-Modul: - nutzt InertiaUI Tables als zentrales Anzeigeelement - kapselt Business-Logik im Observer - synchronisiert Dokumente mit Kontakten und Historie - trennt Darstellung, Datenquelle und Logik sauber
Diese Architektur ermöglicht: - gute Wartbarkeit - Erweiterbarkeit - konsistente Datenhaltung