+ {/* Global Policy */}
+
+
+ Globale Retention-Policy
+
+
+
+ Globale Aufbewahrungsfrist:
+ {globalDays > 0 ? (
+ {globalDays} Tage ({Math.round(globalDays / 365)} Jahre)
+ ) : (
+ Kein globaler Lock (config.yml)
+ )}
+
+
+ Die globale Frist wird in config.yml → storage.retention_days konfiguriert.
+ Mandanten-spezifische Einstellungen überschreiben diese, wenn gesetzt.
+
+ { setPurgeOpen(true); setPurgeResult(null); }}
+ >
+ Abgelaufene Mails jetzt löschen (Purge)
+
+ {error && {error}
}
+
+
+
+ {/* Per-tenant table */}
+
+
+ Retention pro Mandant
+
+
+ {loading ? (
+ Lädt...
+ ) : (
+
+
+
+ Mandant
+ Aufbewahrungsfrist
+
+
+
+
+ {(data?.tenants ?? []).map((t) => (
+
+ {t.name}
+ {retentionLabel(t.retention_days, globalDays)}
+
+ handleEditOpen(t)}>
+ Bearbeiten
+
+
+
+ ))}
+
+
+ )}
+
+
+
+ {/* Edit Dialog */}
+
{ if (!o) setEditTenant(null); }}>
+
+
+ Retention für "{editTenant?.name}"
+
+ Aufbewahrungsfrist in Tagen. 0 = globale Einstellung verwenden.
+ GoBD: mind. 10 Jahre = 3650 Tage.
+
+
+
+
Aufbewahrung (Tage)
+
setEditDays(e.target.value)}
+ />
+ {editDays && parseInt(editDays) > 0 && (
+
+ ≈ {(parseInt(editDays) / 365).toFixed(1)} Jahre
+
+ )}
+
+
+ setEditTenant(null)}>
+ Abbrechen
+
+
+ {saving ? "Speichern..." : "Speichern"}
+
+
+
+
+
+ {/* Purge Dialog */}
+
+
+
+ Abgelaufene Mails löschen
+
+ Alle Mails, deren Aufbewahrungsfrist abgelaufen ist, werden unwiderruflich gelöscht.
+ Mails innerhalb der Frist bleiben erhalten.
+
+
+ {purgeResult !== null ? (
+
+ {purgeResult === 0
+ ? "Keine abgelaufenen Mails gefunden."
+ : `${purgeResult} Mail(s) erfolgreich gelöscht.`}
+
+ ) : (
+
+ Dieser Vorgang kann nicht rückgängig gemacht werden.
+
+ )}
+
+ setPurgeOpen(false)}>
+ {purgeResult !== null ? "Schließen" : "Abbrechen"}
+
+ {purgeResult === null && (
+
+ {purging ? "Lösche..." : "Jetzt löschen"}
+
+ )}
+
+
+
+
+ );
+}