📊 Finanzübersicht
<% if (success) { %><%= success %>
<% } %>
<% if (error) { %><%= error %>
<% } %>
Gesamtumsatz (bezahlt)
<%= Number(totalRevenue.paid_total).toFixed(2).replace('.', ',') %> €
<%= totalRevenue.invoice_count %> Rechnungen gesamt
Offene Posten
<%= Number(totalRevenue.open_total).toFixed(2).replace('.', ',') %> €
<%= openInvoices.length %> offene Rechnungen
Rückläufer (offen)
<%= chargebackStats.open_count %>
<%= Number(chargebackStats.total_amount).toFixed(2).replace('.', ',') %> € gesamt
Mahngebühren (offen)
<%= Number(dunningStats.open_total).toFixed(2).replace('.', ',') %> €
<%= dunningStats.open_count %> offene Mahnungen
Mahngebühren (bezahlt)
<%= Number(dunningStats.paid_total).toFixed(2).replace('.', ',') %> €
Aktueller Satz: <%= Number(dunningFee).toFixed(2).replace('.', ',') %> €
Auslaufende Verträge
<%= expiringContracts.length %>
In den nächsten 3 Monaten
Monatlicher Umsatz (letzte 12 Monate)
| Periode | Rechnungen | Bezahlt | Offen | Gesamt |
|---|---|---|---|---|
| <%= m.period %> | <%= m.count %> | <%= Number(m.paid).toFixed(2).replace('.', ',') %> € | <%= Number(m.open_amount).toFixed(2).replace('.', ',') %> € | <%= Number(m.total).toFixed(2).replace('.', ',') %> € |
| Noch keine Abrechnungsdaten. | ||||
Offene Posten (<%= openInvoices.length %>)
✅ Keine offenen Posten!
<% } else { %>| Mitglied | Tarif | Periode | Betrag | Rechnung Nr. | Aktion |
|---|---|---|---|---|---|
|
<%= inv.last_name %>, <%= inv.first_name %> <%= inv.email %> |
<%= inv.tariff_name || '–' %> | <%= inv.period %> | <%= Number(inv.amount).toFixed(2).replace('.', ',') %> € | PF24-<%= String(inv.id).padStart(6,'0') %> | Zur Abrechnung |
Rückläufer
Keine Rückläufer vorhanden.
<% } else { %>| Datum | Mitglied | Periode | Betrag | Grund | Status | Aktion |
|---|---|---|---|---|---|---|
| <%= new Date(c.chargeback_date).toLocaleDateString('de-DE') %> | <%= c.last_name %>, <%= c.first_name %> | <%= c.period %> | <%= Number(c.amount).toFixed(2).replace('.', ',') %> € | <%= c.reason || '–' %> | <%= c.status === 'resolved' ? '✅ Erledigt' : '🔴 Offen' %> |
<% if (c.status === 'open') { %>
<% } %>
|
Mahngebühren
Keine Mahngebühren eingetragen.
<% } else { %>| Datum | Mitglied | Betrag | Grund | Status | Aktion |
|---|---|---|---|---|---|
| <%= new Date(d.issued_date).toLocaleDateString('de-DE') %> | <%= d.last_name %>, <%= d.first_name %> | <%= Number(d.amount).toFixed(2).replace('.', ',') %> € | <%= d.reason %> |
<%= d.status === 'paid' ? '✅ Bezahlt' : d.status === 'cancelled' ? '❌ Storniert' : '🔴 Offen' %>
<% if (d.paid_at) { %> <%= new Date(d.paid_at).toLocaleDateString('de-DE') %><% } %> |
<% if (d.status === 'open') { %>
<% } %>
|
Auslaufende Verträge – nächste 3 Monate (<%= expiringContracts.length %>)
<% if (expiringContracts.length === 0) { %>Keine auslaufenden Verträge in den nächsten 3 Monaten.
<% } else { %>| Mitglied | Tarif | Vertragsende | Restlaufzeit | Monatsbeitrag | Aktion |
|---|---|---|---|---|---|
|
<%= m.last_name %>, <%= m.first_name %> <%= m.email %> |
<%= m.tariff_name %> | <%= endDate.toLocaleDateString('de-DE') %> | noch <%= diffDays %> Tage | <%= Number(m.price_monthly).toFixed(2).replace('.', ',') %> € |
Stornierte Rechnungen (<%= cancelledInvoices.length %>)
<% if (cancelledInvoices.length === 0) { %>Keine stornierten Rechnungen vorhanden.
<% } else { %>| Nr. | Mitglied | Tarif | Periode | Betrag | Storniert am | Aktion |
|---|---|---|---|---|---|---|
| PF24-<%= String(inv.id).padStart(6,'0') %> |
<%= inv.last_name %>, <%= inv.first_name %> <%= inv.email %> |
<%= inv.tariff_name || '–' %> | <%= inv.period %> | <%= Number(inv.amount).toFixed(2).replace('.', ',') %> € | <%= new Date(inv.created_at).toLocaleDateString('de-DE') %> | Zur Abrechnung |