Commit graph

929 commits

Author SHA1 Message Date
3fae57a0e2 Feat: Kontaktformular im Impressum + /api/contact Endpoint ohne Auth (SW by-v986) 2026-05-15 16:46:37 +02:00
0f09f5a8dd Rechtliche Seiten überarbeitet: Impressum, Datenschutz, AGB
Impressum: Telefon-Placeholder entfernt, Kontakt auf E-Mail reduziert,
UGC-Haftungsklausel auf §§ 7 ff. DDG-Basis präzisiert.

Datenschutz: Neue Abschnitte Hosting & Infrastruktur (Brevo, Umami),
Technische Speicherung (TTDSG), Mindestalter, Moderation & Community;
KI-Abschnitt um US-Behörden-Restrisiko-Hinweis ergänzt; BayLDA-Adresse
korrigiert (Promenade 18) und E-Mail ergänzt; Version 3.

AGB: Neue Abschnitte Mindestalter (§ 2), Nutzungsregeln/Community (§ 4),
Nutzerinhalte/Lizenzen (§ 5), KI-Haftung (§ 11); Widerrufsrecht
auf aktive Protokollierung präzisiert; Kündigungsbutton-Hinweis nach
§ 312k BGB; Erstattungsausschluss um gesetzliche Ansprüche ergänzt;
Abschnitte neu durchnummeriert (1–15), Version 2.
2026-05-15 16:41:19 +02:00
738e354b0a Fix: APP_VER 984→985 in main.py (Dauerschleife) 2026-05-15 16:24:18 +02:00
d7f7a7e454 Neu: AGB-Seite + Impressum/Datenschutz aktualisiert (SW by-v985)
- Neue Seite agb.js mit 11 Abschnitten (Laufzeit, Zahlung, Widerruf etc.)
- Datenschutz: 'Abonnement & Kündigung' → 'Zahlungsdaten' (DSGVO-Fokus), DDG-Hinweis ergänzt
- Impressum: ODR-Link entfernt (EU-Plattform eingestellt 2025), Telefon-Pflichthinweis nach §5 DDG, Stand Mai 2026
- AGB-Link in alle Footer (index.html, landing.html, zuechter.html, welcome.js)
- page-section #page-agb in index.html, Route 'agb' in app.js ROUTES
2026-05-15 16:21:04 +02:00
d20e63496c Feat: AGB-Link im Footer (Welt-Welt) + AGB-Checkbox im Upgrade-Modal
- worlds.js: 'Datenschutz · AGB' in der Welt-Welt-Fußzeile
- settings.js: AGB-Checkbox über Widerrufs-Checkbox; beide müssen gecheckt sein bevor 'Anfrage senden' aktiv wird
2026-05-15 16:19:46 +02:00
ee280fdaae Feat: Automatische Zahlungsmahnung (Tag 21) + fristlose Kündigung (Tag 35) per Scheduler (§314 BGB) 2026-05-15 16:10:53 +02:00
e714580d77 Feat: Cashflow auf paid_amount, Differenz-Badge, Kulanz-Abschreibung im Bezahlt-Modal (SW by-v984) 2026-05-15 16:06:08 +02:00
0f6b5afd6a Fix: Syntaxfehler in invoices.py — fehlende schließende Klammer bei _s() 2026-05-15 15:56:25 +02:00
d0b0e2c671 Fix: SW-Install-Fehler — PRIORITY_PAGES nicht-blockierend cachen, kein addAll() (SW by-v983) 2026-05-15 15:53:13 +02:00
68fd9c0e38 Fix: En-Dash in PDF durch Bindestrich ersetzen + _s() Sanitizer für alle Texteingaben (SW by-v982) 2026-05-15 15:50:02 +02:00
1a8716b0b2 Perf: Prioritäts-Seiten pre-cache + Stale-While-Revalidate + Background-Warm-up (SW by-v981) 2026-05-15 15:41:55 +02:00
78f3077317 UX: Freischalten zeigt Rechnungsentwurf-Nummer im Toast + Confirm-Hinweis (SW by-v980) 2026-05-15 14:01:45 +02:00
04d8ed153b UX: Neue Rechnung — Hinweis 'nicht für Abos', neutraler Placeholder, passender Notiz-Default (SW by-v979) 2026-05-15 13:56:13 +02:00
49e01683ad Fix: 'Fällig bis' Umlaut korrigiert im PDF-Info-Block 2026-05-15 13:51:26 +02:00
f0f767e466 Fix: iOS Tastatur — modal-body maxHeight begrenzen + manueller scroll statt scrollIntoView (SW by-v978) 2026-05-15 13:43:17 +02:00
ed6dd8da13 Fix: Quartalssumme korrekt (alle inkl. Storno), Netto ausgeblendet (SW by-v977) 2026-05-15 13:38:08 +02:00
6104132714 Feat: Quartalsbericht — Stornozeilen mit Minusbeträgen, nach Datum sortiert, Summen netten sich heraus (SW by-v976) 2026-05-15 13:27:05 +02:00
b10b3140eb Fix: Stornorechnung referenziert Originalnummer + Datum (§14 UStG Pflicht) 2026-05-15 13:18:32 +02:00
cabb2fd6f7 Fix: iOS Modal scrollIntoView bei Tastatur; CSV Stornierte mit 0€ + Stornonummer (SW by-v975) 2026-05-15 13:15:49 +02:00
2bbf3bc3f6 Fix: CSV-Spalten korrigiert — Netto/Brutto getrennt, Zahlungseingang statt Erstellt (SW by-v974) 2026-05-15 12:53:26 +02:00
8f3d639e34 Fix: Stornierte/Entwurfs-Rechnungen aus Quartalsbericht und Cashflow-Summen ausgeschlossen 2026-05-15 12:49:04 +02:00
5fd86dac4b UX: Admin-Panel Desktop — Sidebar-Navigation, 1200px Breite, keine abgeschnittenen Tabs (SW by-v973) 2026-05-15 12:42:04 +02:00
af039efe82 Fix: Date-Header in ausgehenden Mails (formatdate UTC, Container hat keine lokale TZ) 2026-05-15 12:37:41 +02:00
865407d428 Feat: Alle ausgehenden Mails landen im IMAP-Gesendet-Ordner (SMTP + Brevo) 2026-05-15 12:32:52 +02:00
aea5f04bc1 Fix: Von-Gründer-eingeladen → 100% dauerhaft (statt 50%); SW by-v972 2026-05-15 12:25:41 +02:00
810c78ae8b Feat: Referral/Gründer-Rabatt vollständig integriert (SW by-v971) 2026-05-15 12:22:31 +02:00
63a1fc585c Feat: Referral/Gründer-Rabatt in Rechnungssystem integriert (Discount-Badge, Auto-Vorausfüllung) 2026-05-15 12:22:15 +02:00
2163169b73 Feat: Rabattsystem in Rechnungserstellung integriert (Gründer/Referral)
- _get_discount_info() Hilfsfunktion in admin.py (Gründer 100%, Referral-Stufen 20/30/50%, von Gründer eingeladen 50%)
- list_upgrade_requests liefert discount_pct + discount_reason pro User
- GET /admin/users/{user_id}/discount Endpoint
- _handle_upgrade_invoices nutzt Rabatt für amount_net/discount_pct/after_disc + passende Notiz
- scheduler.py _create_renewal_invoice_draft: inline Rabattberechnung + korrekte Beträge
- admin.js: Discount-Badge in Upgrade-Card, data-Attribute am Invoice-Button, _discountNote(), discount_pct + notes im Modal vorbelegt
2026-05-15 12:21:33 +02:00
db4d5cb1b6 Legal: Widerrufs-Checkbox, AGB-Abschnitt, Rechnungsnotiz (SW by-v970) 2026-05-15 12:07:13 +02:00
9a7f100855 Legal: Widerrufs-Checkbox im Upgrade-Modal + AGB-Abschnitt in Datenschutz
- Upgrade-Modal: Checkbox §356 Abs.4 BGB muss aktiv bestätigt werden,
  "Anfrage senden" bleibt bis dahin deaktiviert
- Akzeptanz-Zeitstempel wird mit der upgradeRequest-Message mitgeschickt
- datenschutz.js: neuer Abschnitt "Abonnement & Kündigung" mit Laufzeit,
  Verlängerung, Zahlung, Kündigung, Erstattung und Widerrufsrecht
2026-05-15 12:06:14 +02:00
699926cd76 Fix: Rechnung-Hinweistext auf AGB-konforme Jahresbeitrags-Notiz umgestellt
Alle drei Rechnungs-Einstiegspunkte (Admin-Upgrade-Button, automatische
Verlängerung via Scheduler, manuelles Upgrade via admin.py) erhalten jetzt
den einheitlichen Hinweis zum Jahresbeitrag gem. AGB ohne Rückerstattung.
2026-05-15 12:06:05 +02:00
a9f7923716 Feat: Kündigung blockt Erneuerungsentwurf; Upgrade storniert alte Rechnungen + legt neuen Entwurf an 2026-05-15 12:00:27 +02:00
b1dbde332f Feat: Erneuerungsrechnung-Entwurf 30 Tage vor Abo-Ablauf + 7-Tage-Erinnerung an Admin 2026-05-15 11:53:29 +02:00
96030304d4 Fix: Leistungszeitraum als konkreter Datumszeitraum (Rechnungsdatum bis +12 Monate) 2026-05-15 11:49:48 +02:00
24a1aecda4 Fix: Leistungszeitraum '12 Monate ab Rechnungsdatum' statt festem Datum (SW by-v969) 2026-05-15 11:45:13 +02:00
b14a251bdc Feat: Entwurf bearbeiten (PATCH), erneut senden; SW by-v968 2026-05-15 11:33:48 +02:00
a2d089bce4 Fix: SMTP_SUPPORT_PASS Fallback in mailer, scaninput Logging 2026-05-15 11:29:16 +02:00
41a4808ad5 Fix: Storno sendet PDF+Mail+Scaninput; /scaninput Volume in staging ergänzt 2026-05-15 11:18:48 +02:00
8e36eb0611 Fix: PDF — breiter Header-Balken mit Logo, eine Seite, Hinweis-Prefix, Footer fix 2026-05-15 11:13:28 +02:00
0a466ef6ce Feat: Rechnungsadresse — Profil, Upgrade-Modal Hinweis, Rechnung-erstellen-Button in Upgrade-Cards (SW by-v967) 2026-05-15 10:59:12 +02:00
95b70d5119 Fix: Rechnungs-PDF komplett neu — DIN-5008-Layout, Überlagerung behoben, Bankverbindung, Footer, Deutsche Formatierung 2026-05-15 10:45:49 +02:00
fa513be7f5 Release v1.6.0 — Rechnungs-System (SW by-v966)
- Rechnungserstellung mit fortlaufender Nr. RG-YYYY-NNNN
- PDF-Generierung (fpdf2) mit §14-UStG-Pflichtangaben
- Kleinunternehmer-Modus (§19 UStG) via ENV
- Mail-Versand mit PDF-Anhang (Brevo/SMTP)
- Speicherung in /scaninput + Paperless-ngx REST-API
- Admin-Panel: Invoice-Tab, Pay/Cancel-Modals, Cashflow
- Quartalsbericht als CSV-Download + Mail-Versand
- Action-Items: offene Rechnungen im To-Do-Band
- Stornonummern ST-YYYY-NNNN
- docker-compose: /volume1/scaninput:/scaninput
2026-05-15 10:07:10 +02:00
5dddacff96 Feat: Admin action-items invoices_unpaid, CSV-Download, Quartalsbericht-Versand 2026-05-15 10:06:04 +02:00
77093774f9 Feat: Admin-Rechnungs-Endpoints — invoices_unpaid, CSV-Download, Quartalsbericht-Versand
- action_items(): invoices_unpaid (status='sent') zum Return-Dict hinzugefügt
- GET /api/admin/invoices/quarterly/{year}/{q}/csv — CSV-Download (Semikolon-getrennt, UTF-8-BOM für Excel)
- POST /api/admin/invoices/send-quarterly-report — sendet CSV-Anhang an Steuerberater + Zusammenfassung an René (SMTP_FROM); graceful fallback wenn attachments noch nicht von mailer.py unterstützt
2026-05-15 10:04:46 +02:00
b68a12587a Feature: Rechnungs-System (invoices) — Backend komplett
- DB-Migration: invoices + invoice_items Tabellen inkl. Indizes
- routes/invoices.py: vollständiger Admin-Router (prefix /api/admin/invoices)
  - CRUD: Liste, Detail, Erstellen, Senden, Bezahlen, Stornieren
  - PDF-Generierung via fpdf2 mit §14-UStG-Pflichtangaben (Kleinunternehmer-Hinweis)
  - Cashflow-Übersicht und Quartalsbericht
  - PDF-Download-Endpunkt
  - Speicherung in /scaninput + optionaler Paperless-Upload
- mailer.py: send_email() + Backends um optionale PDF-Anhänge erweitert
  (Brevo: base64, SMTP: MIMEApplication)
- main.py: invoices_router registriert
- docker-compose.yml: /volume1/scaninput:/scaninput Volume hinzugefügt
2026-05-15 10:04:23 +02:00
9c359bb07e Feat: Rechnungs-Management Tab in Admin-Oberfläche
Neuer 'Rechnungen'-Tab mit vollständiger Invoice-Verwaltung:
- Invoice-Liste mit Status-Badges (draft/sent/paid/cancelled) und kontextuellen Aktionen
- Modal: Neue Rechnung erstellen (dynamische Positionen, Live-Vorschau Netto/Brutto)
- Modal: Als bezahlt markieren (Datum + Betrag)
- Modal: Stornieren mit Pflichtgrund
- Modal: Detail-Ansicht mit Positionen-Tabelle
- Cashflow-View: Übersichtskacheln + Monatstabelle + Quartalsbericht-CSV-Download
- Action-Items Badge für offene Rechnungen (invoices_unpaid aus action-items API)
2026-05-15 09:56:42 +02:00
c032b9a3fb Fix: Stats-Kotbeutel → waste_basket Typ in osm_pois (zeigt echte Mülleimer-Zahl) 2026-05-14 22:47:14 +02:00
6495a5ff6b Fix: Stats-Kotbeutel aus osm_pois statt user_map_pois (zeigt 125.750 statt 2) 2026-05-14 22:45:50 +02:00
129badf010 Fix: Hero-Stats zeigt vollständigen Text 'Mülleimer für Kotbeutel' (SW by-v965) 2026-05-14 22:37:29 +02:00
cf6e5920ae Fix: APP_VER-Mismatch (Dauer-Aktualisieren-Bug), Mülleimer-Zahl im Hero (SW by-v964) 2026-05-14 22:15:17 +02:00