🏆
Strafenkatalog EGB • Self-Hosted

Strafenkatalog

Mannschaftskasse, Strafen- & Benutzerverwaltung

⚡ Direkt-Login nach Rolle (Demo-Zugänge)
{{ toast }}
{{ currentUser.team }} • {{ getRoleLabel(currentUser.role) }}

{{ pageTitle }}

{{ currentUser.first_name }} {{ currentUser.last_name }} ({{ currentUser.nickname }})
{{ currentUser.email }} • {{ getRoleLabel(currentUser.role) }}
Rolle testen / wechseln:
{{ statistics.total_open_penalties }} Offene Strafen (€{{ statistics.total_amount_open.toFixed(2) }})
{{ statistics.total_overdue_penalties }} Überfällig (€{{ statistics.total_amount_overdue.toFixed(2) }})
€{{ statistics.total_amount_collected.toFixed(2) }} Eingezahlt ({{ statistics.total_paid_penalties }} Strafen)
{{ penaltyReports.length }} Offene Meldungen (Voting)

Meine offenen Strafen

{{ myOpenPenalties.length }} aktiv
🎉
Vorbildlich! Keine offenen Strafen.
{{ getPenaltyTitle(p.penalty_id) }}
{{ p.reason || getPenaltyDesc(p.penalty_id) }}
{{ getStatusLabel(p.status) }}
Fällig: {{ formatDate(p.due_date) }} €{{ (p.amount + (p.late_fee || 0)).toFixed(2) }}

🔥 Sünderliste (Top-Ranking)

Nach Gesamtsumme
{{ idx + 1 }}
{{ pl.first_name }} {{ pl.last_name }}
{{ pl.count }} Strafen • Offen: €{{ pl.openAmount.toFixed(2) }}
€{{ pl.totalAmount.toFixed(2) }}

{{ canAssignDirectly ? '⚡ Strafe direkt verhängen / melden' : '🕵️ Verstoß ans Team melden' }}

🗳️ Offene Team-Meldungen ({{ penaltyReports.length }})

Ab {{ systemSettings.min_votes_for_approval }} Stimmen bereit
Keine offenen Meldungen zur Abstimmung.
{{ getPenaltyTitle(r.penalty_id) }}
Beschuldigter: {{ getPlayerName(r.reported_player_id) }}
👍 {{ r.votes }} / {{ systemSettings.min_votes_for_approval }} Stimmen

"{{ r.reason }}"

📋 Verhängte Strafen ({{ filteredPenalties.length }})

🔒 Hinweis: Das Bearbeiten, Stornieren oder Verbuchen von Strafen ist ausschließlich für Admin, Superuser und Kassenwart freigeschaltet.

✏️ Strafe bearbeiten

{{ getPenaltyTitle(p.penalty_id) }}
Spieler: {{ getPlayerName(p.player_id) }}
{{ getStatusLabel(p.status) }}
💬 "{{ p.reason }}"
Fällig: {{ formatDate(p.due_date) }} €{{ (p.amount + (p.late_fee || 0)).toFixed(2) }} (+€{{ p.late_fee.toFixed(2) }} Mahn.)

💰 Zahlungseingang verbuchen

🧾 Zahlungshistorie

{{ payments.length }} Buchungen
{{ getPlayerName(pay.player_id) }}
{{ formatDate(pay.payment_date) }} • {{ pay.payment_method.toUpperCase() }} • {{ pay.notes }}
+€{{ pay.amount.toFixed(2) }}

{{ userForm.id ? '✏️ Benutzer bearbeiten' : '➕ Neuen Benutzer / Spieler anlegen' }}

Mitgliederliste & Rollen

{{ u.first_name }} {{ u.last_name }} ({{ u.nickname }})
{{ u.email }} {{ u.offices ? '• ' + u.offices : '' }}
{{ getRoleLabel(u.role) }}

{{ catalogForm.id ? '✏️ Katalog-Strafe bearbeiten' : '➕ Neue Strafe zum Katalog hinzufügen' }}

Aktive Tarife im Strafenkatalog

{{ c.title }}
[{{ c.category.toUpperCase() }}] {{ c.description }}
€{{ c.amount.toFixed(2) }}

⚙️ Fristen, Mahngebühren & Voting-Regeln

{{ toast }}