Add Vorlagen editor, upload portal, onboarding, and participant import command
- Dokument-Vorlagen-Editor: create/edit/reset document templates (admin) - Upload-Portal: public portal for Nachweis uploads via token - Onboarding: invite Destinatäre via email with multi-step wizard - Bestätigungsschreiben: preview and send confirmation letters - Email settings: SMTP configuration UI - Management command: import_veranstaltung_teilnehmer for bulk participant import Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
424
app/templates/portal/datenschutzerklaerung.html
Normal file
424
app/templates/portal/datenschutzerklaerung.html
Normal file
@@ -0,0 +1,424 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Datenschutzerklärung – van Hees-Theyssen-Vogel'sche Stiftung</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
|
||||
<style>
|
||||
:root {
|
||||
--racing-green: #004225;
|
||||
--racing-green-light: #006837;
|
||||
}
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
font-size: 0.95rem;
|
||||
line-height: 1.7;
|
||||
color: #333;
|
||||
}
|
||||
.portal-header {
|
||||
background: linear-gradient(135deg, var(--racing-green) 0%, var(--racing-green-light) 100%);
|
||||
color: white;
|
||||
padding: 2rem 0;
|
||||
}
|
||||
.portal-header h1 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 0.25rem;
|
||||
}
|
||||
.portal-header .subtitle {
|
||||
font-size: 0.9rem;
|
||||
opacity: 0.85;
|
||||
}
|
||||
.content-card {
|
||||
background: white;
|
||||
border-radius: 12px;
|
||||
box-shadow: 0 2px 12px rgba(0,0,0,0.08);
|
||||
padding: 2.5rem;
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
h2 {
|
||||
color: var(--racing-green);
|
||||
font-size: 1.15rem;
|
||||
font-weight: 600;
|
||||
border-bottom: 2px solid var(--racing-green);
|
||||
padding-bottom: 0.4rem;
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
h2:first-of-type {
|
||||
margin-top: 0;
|
||||
}
|
||||
h3 {
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
.dsgvo-article {
|
||||
background: #f0f7f4;
|
||||
border-left: 4px solid var(--racing-green);
|
||||
border-radius: 0 6px 6px 0;
|
||||
padding: 0.75rem 1rem;
|
||||
margin: 0.5rem 0 1rem 0;
|
||||
font-size: 0.88rem;
|
||||
color: #004225;
|
||||
}
|
||||
.rights-list li {
|
||||
padding: 0.4rem 0;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
.rights-list li:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.footer-note {
|
||||
font-size: 0.82rem;
|
||||
color: #6c757d;
|
||||
text-align: center;
|
||||
padding: 1.5rem 0;
|
||||
}
|
||||
.ao-hinweis {
|
||||
background: #fff8e1;
|
||||
border: 1px solid #ffc107;
|
||||
border-radius: 8px;
|
||||
padding: 1rem 1.25rem;
|
||||
margin: 1rem 0;
|
||||
font-size: 0.88rem;
|
||||
}
|
||||
@media print {
|
||||
.portal-header { background: #004225 !important; -webkit-print-color-adjust: exact; }
|
||||
.content-card { box-shadow: none; border: 1px solid #ddd; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- Header -->
|
||||
<div class="portal-header">
|
||||
<div class="container">
|
||||
<div class="row align-items-center">
|
||||
<div class="col">
|
||||
<h1><i class="fas fa-shield-alt me-2"></i>Datenschutzerklärung</h1>
|
||||
<div class="subtitle">van Hees-Theyssen-Vogel'sche Stiftung · Destinatär-Portal</div>
|
||||
</div>
|
||||
<div class="col-auto text-end">
|
||||
<small class="opacity-75">Stand: März 2026</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Content -->
|
||||
<div class="container my-4">
|
||||
<div class="content-card">
|
||||
|
||||
<!-- 1. Verantwortliche Stelle -->
|
||||
<h2><i class="fas fa-building me-2"></i>1. Verantwortliche Stelle</h2>
|
||||
<p>
|
||||
Verantwortliche Stelle im Sinne der Datenschutz-Grundverordnung (DSGVO) und des Bundesdatenschutzgesetzes (BDSG) ist:
|
||||
</p>
|
||||
<address class="ms-3">
|
||||
<strong>van Hees-Theyssen-Vogel'sche Stiftung</strong><br>
|
||||
Raesfelder Str. 3<br>
|
||||
46499 Hamminkeln<br><br>
|
||||
<i class="fas fa-envelope me-1"></i> stiftung@vhtv-stiftung.de
|
||||
</address>
|
||||
<p class="text-muted small">
|
||||
Die Stiftung ist als gemeinnützige Familienstiftung anerkannt und verfolgt ausschließlich und unmittelbar
|
||||
gemeinnützige Zwecke im Sinne des § 52 der Abgabenordnung (AO).
|
||||
</p>
|
||||
|
||||
<!-- 2. Grundsätze -->
|
||||
<h2><i class="fas fa-gavel me-2"></i>2. Grundsätze der Datenverarbeitung</h2>
|
||||
<p>
|
||||
Wir verarbeiten personenbezogene Daten nur, soweit dies zur Erfüllung unserer satzungsmäßigen Aufgaben
|
||||
und gesetzlichen Pflichten erforderlich ist. Die Verarbeitung erfolgt stets im Einklang mit der
|
||||
Datenschutz-Grundverordnung (DSGVO) und dem Bundesdatenschutzgesetz (BDSG).
|
||||
</p>
|
||||
<p>
|
||||
Wir erheben, verarbeiten und speichern Ihre personenbezogenen Daten grundsätzlich nur
|
||||
</p>
|
||||
<ul>
|
||||
<li>mit Ihrer ausdrücklichen Einwilligung (Art. 6 Abs. 1 lit. a DSGVO), oder</li>
|
||||
<li>zur Erfüllung einer vertraglichen oder vorvertraglichen Verpflichtung (Art. 6 Abs. 1 lit. b DSGVO), oder</li>
|
||||
<li>aufgrund einer rechtlichen Verpflichtung (Art. 6 Abs. 1 lit. c DSGVO), oder</li>
|
||||
<li>zur Wahrung berechtigter Interessen (Art. 6 Abs. 1 lit. f DSGVO).</li>
|
||||
</ul>
|
||||
|
||||
<!-- 3. Upload-Portal -->
|
||||
<h2><i class="fas fa-upload me-2"></i>3. Nachweis-Upload-Portal (bestehende Destinatäre)</h2>
|
||||
<p>
|
||||
Das Upload-Portal ermöglicht Ihnen die sichere, digitale Einreichung von Unterlagen im Rahmen
|
||||
des halbjährlichen Nachweisverfahrens. Der Zugang erfolgt ausschließlich über einen persönlichen,
|
||||
einmalig nutzbaren Token-Link, den Sie per E-Mail erhalten.
|
||||
</p>
|
||||
|
||||
<h3>3.1 Verarbeitete Daten</h3>
|
||||
<ul>
|
||||
<li><strong>Hochgeladene Dokumente</strong> (Studienbescheinigungen, Einkommensnachweise, Vermögensnachweise)</li>
|
||||
<li><strong>IP-Adresse</strong> (ausschließlich als kryptographischer Hash gespeichert; keine Rückführung möglich)</li>
|
||||
<li><strong>Zeitstempel</strong> der Token-Einlösung und des Dokumenten-Uploads</li>
|
||||
<li><strong>Token-Status</strong> (eingelöst / abgelaufen)</li>
|
||||
</ul>
|
||||
|
||||
<h3>3.2 Rechtsgrundlage</h3>
|
||||
<div class="dsgvo-article">
|
||||
<strong>Art. 6 Abs. 1 lit. b DSGVO</strong> — Verarbeitung zur Erfüllung der satzungsmäßigen Verpflichtung
|
||||
der Stiftung, die Bedürftigkeit und Anspruchsberechtigung ihrer Destinatäre gemäß § 53 AO zu prüfen und
|
||||
zu dokumentieren.
|
||||
</div>
|
||||
|
||||
<h3>3.3 Zweck der Verarbeitung</h3>
|
||||
<p>
|
||||
Die Verarbeitung dient ausschließlich der satzungsgemäßen Aufgabe der Stiftung: der Prüfung, ob die
|
||||
Voraussetzungen für eine Unterstützungsleistung gemäß § 53 Abgabenordnung (AO) weiterhin vorliegen.
|
||||
Dies umfasst insbesondere die Überprüfung der Bedürftigkeit (Einkommens- und Vermögensgrenzen)
|
||||
sowie der Anspruchsvoraussetzungen.
|
||||
</p>
|
||||
|
||||
<div class="ao-hinweis">
|
||||
<i class="fas fa-info-circle me-2 text-warning"></i>
|
||||
<strong>Hinweis gemäß § 53 AO:</strong> Die van Hees-Theyssen-Vogel'sche Stiftung ist als gemeinnützige
|
||||
Stiftung verpflichtet, die Bedürftigkeit der unterstützten Personen nachzuweisen.
|
||||
Gemäß § 53 Nr. 2 AO dürfen nur Personen unterstützt werden, deren Bezüge
|
||||
(einschließlich Leistungen nach SGB) nicht mehr als das Fünffache des Regelsatzes
|
||||
nach dem Dritten Kapitel SGB XII überschreiten und deren Vermögen den
|
||||
gemeinen Wert von 15.500 € nicht übersteigt. Die Einreichung der Nachweise ist
|
||||
daher gesetzlich geboten und unverzichtbar.
|
||||
</div>
|
||||
|
||||
<h3>3.4 Speicherdauer und Löschkonzept</h3>
|
||||
<table class="table table-sm table-bordered">
|
||||
<thead class="table-light">
|
||||
<tr>
|
||||
<th>Datenkategorie</th>
|
||||
<th>Speicherdauer</th>
|
||||
<th>Begründung</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Upload-Token (abgelaufen, nicht eingelöst)</td>
|
||||
<td>90 Tage nach Ablauf</td>
|
||||
<td>Nachvollziehbarkeit von Zustellungsversuchen</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>IP-Hash</td>
|
||||
<td>90 Tage</td>
|
||||
<td>Sicherheit / Missbrauchsschutz</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Hochgeladene Nachweisdokumente</td>
|
||||
<td>10 Jahre nach letzter Unterstützungsleistung</td>
|
||||
<td>Steuerrechtliche Aufbewahrungspflichten (§ 147 AO)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Zeitstempel und Protokolldaten</td>
|
||||
<td>10 Jahre</td>
|
||||
<td>Gemeinnützigkeitsnachweis gegenüber Finanzbehörden</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- 4. Onboarding -->
|
||||
<h2><i class="fas fa-user-plus me-2"></i>4. Onboarding-Formular (neue Destinatäre)</h2>
|
||||
<p>
|
||||
Das Onboarding-Formular dient der erstmaligen Aufnahme in den Kreis der Destinatäre der Stiftung.
|
||||
Dabei werden im Rahmen eines mehrstufigen Verfahrens umfangreiche personenbezogene Daten erhoben.
|
||||
</p>
|
||||
|
||||
<h3>4.1 Erhobene Datenkategorien</h3>
|
||||
|
||||
<p><strong>Persönliche Identifikationsdaten:</strong></p>
|
||||
<ul>
|
||||
<li>Vor- und Nachname, Geburtsdatum, Geburtsort</li>
|
||||
<li>Anschrift (Straße, PLZ, Ort)</li>
|
||||
<li>Telefon- und Mobilnummer, E-Mail-Adresse</li>
|
||||
<li>Kopie des Personalausweises oder Reisepasses</li>
|
||||
<li>Tabellarischer Lebenslauf</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>Verwandtschaftsnachweis:</strong></p>
|
||||
<ul>
|
||||
<li>Nachweis des Verwandtschaftsverhältnisses zu einem Geschwisterteil des Stifters
|
||||
Hendrik van Hees oder seiner Ehefrau Aletta Theyssen-Vogel</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>Ausbildungs- und Studiendaten:</strong></p>
|
||||
<ul>
|
||||
<li>Aktueller Ausbildungs-/Studienstatus</li>
|
||||
<li>Studienbescheinigung oder Ausbildungsnachweis</li>
|
||||
<li>Voraussichtliche Dauer der Ausbildung/des Studiums</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>Finanzdaten:</strong></p>
|
||||
<ul>
|
||||
<li>Haushaltsgröße und Zusammensetzung des Haushalts</li>
|
||||
<li>Bezüge und Einkünfte (einschließlich Leistungen nach SGB)</li>
|
||||
<li>Einkommensteuerbescheid, Lohn-/Gehaltsnachweis, ggf. Rentenbescheid</li>
|
||||
<li>Unterhaltsleistungen und sonstige Bezüge</li>
|
||||
<li>Miet- und Heizungsaufwendungen (ggf. Mietvertragskopie)</li>
|
||||
<li>Vermögensübersicht (Spareinlagen, Wertpapiere, Immobilien)</li>
|
||||
<li>Monatliche Aufwendungen für Lebensunterhalt und Ausbildung</li>
|
||||
</ul>
|
||||
|
||||
<h3>4.2 Rechtsgrundlagen</h3>
|
||||
<div class="dsgvo-article">
|
||||
<strong>Art. 6 Abs. 1 lit. b DSGVO</strong> — Verarbeitung zur Durchführung vorvertraglicher
|
||||
Maßnahmen im Rahmen der Aufnahme als Destinatär der Stiftung.<br><br>
|
||||
<strong>Art. 9 Abs. 2 lit. b DSGVO</strong> — Soweit Daten besonderer Kategorien verarbeitet
|
||||
werden (z. B. Pflegegrad, Gesundheitsdaten im Zusammenhang mit Einkommenssituation),
|
||||
erfolgt dies zur Erfüllung von Rechten und Pflichten im Bereich des Sozialrechts
|
||||
sowie zur Überprüfung der Anspruchsvoraussetzungen gemäß § 53 AO.<br><br>
|
||||
<strong>Art. 6 Abs. 1 lit. a DSGVO</strong> — Einwilligung für die Verarbeitung freiwillig
|
||||
übermittelter Daten, die über das gesetzlich Erforderliche hinausgehen.
|
||||
</div>
|
||||
|
||||
<h3>4.3 Zweck der Verarbeitung</h3>
|
||||
<p>
|
||||
Die erhobenen Daten dienen ausschließlich der Prüfung der Aufnahmevoraussetzungen
|
||||
als Destinatär sowie der laufenden Überprüfung der Anspruchsberechtigung.
|
||||
Eine Weitergabe an Dritte erfolgt nicht, es sei denn, dies ist gesetzlich vorgeschrieben
|
||||
(z. B. Finanzbehörden im Rahmen von Betriebsprüfungen).
|
||||
</p>
|
||||
|
||||
<h3>4.4 Vier-Augen-Prinzip und Freigabeverfahren</h3>
|
||||
<p>
|
||||
Alle im Onboarding-Verfahren erfassten Daten werden erst nach ausdrücklicher
|
||||
Freigabe durch den Stiftungsvorstand aktiviert. Bis zur Freigabe haben nur autorisierte
|
||||
Stiftungsmitarbeiter Zugriff. Das Aufnahmeverfahren ist nicht automatisiert;
|
||||
jede Aufnahme wird durch den Vorstand beschlossen.
|
||||
</p>
|
||||
|
||||
<h3>4.5 Speicherdauer</h3>
|
||||
<p>
|
||||
Abgebrochene oder nicht freigegebene Onboarding-Vorgänge werden spätestens nach
|
||||
90 Tagen vollständig gelöscht. Für aufgenommene Destinatäre gilt die steuerrechtliche
|
||||
Aufbewahrungsfrist gemäß § 147 AO (10 Jahre nach Ende des Förderzeitraums).
|
||||
</p>
|
||||
|
||||
<!-- 5. Technische Sicherheit -->
|
||||
<h2><i class="fas fa-lock me-2"></i>5. Technische Sicherheitsmaßnahmen</h2>
|
||||
<ul>
|
||||
<li><strong>HTTPS-Verschlüsselung</strong> für alle Datenübertragungen</li>
|
||||
<li><strong>Token-basierter Zugang</strong> (kryptographisch sicher, 64-Zeichen-Token, einmalig nutzbar)</li>
|
||||
<li><strong>IP-Anonymisierung</strong> durch SHA-256-Hash; keine Klartextspeicherung</li>
|
||||
<li><strong>CSRF-Schutz</strong> für alle Formularübertragungen</li>
|
||||
<li><strong>Rate Limiting</strong> zum Schutz vor Missbrauch</li>
|
||||
<li><strong>Automatische Tokenablaufzeit</strong> (30 Tage)</li>
|
||||
<li><strong>Dateivalidierung</strong> (nur PDF, JPG, PNG; maximale Dateigröße 20 MB)</li>
|
||||
</ul>
|
||||
|
||||
<!-- 6. Keine automatisierte Entscheidungsfindung -->
|
||||
<h2><i class="fas fa-robot me-2"></i>6. Keine automatisierte Entscheidungsfindung</h2>
|
||||
<p>
|
||||
Es findet keine automatisierte Entscheidungsfindung im Sinne von Art. 22 DSGVO statt.
|
||||
Alle Entscheidungen über die Gewährung von Unterstützungsleistungen werden durch
|
||||
den Stiftungsvorstand nach menschlicher Prüfung getroffen.
|
||||
</p>
|
||||
|
||||
<!-- 7. Weitergabe an Dritte -->
|
||||
<h2><i class="fas fa-share-alt me-2"></i>7. Weitergabe personenbezogener Daten</h2>
|
||||
<p>
|
||||
Eine Weitergabe Ihrer personenbezogenen Daten an Dritte erfolgt grundsätzlich nicht.
|
||||
Ausnahmen gelten nur, soweit:
|
||||
</p>
|
||||
<ul>
|
||||
<li>eine gesetzliche Verpflichtung zur Weitergabe besteht (z. B. im Rahmen
|
||||
von Steuerprüfungen oder behördlichen Anfragen), oder</li>
|
||||
<li>Sie ausdrücklich in die Weitergabe eingewilligt haben.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Auftragsverarbeiter (z. B. Hosting-Dienstleister) sind vertraglich zur Einhaltung
|
||||
der DSGVO verpflichtet und dürfen die Daten nur zu den vereinbarten Zwecken verwenden.
|
||||
</p>
|
||||
|
||||
<!-- 8. Ihre Rechte -->
|
||||
<h2><i class="fas fa-user-shield me-2"></i>8. Ihre Rechte als betroffene Person</h2>
|
||||
<p>
|
||||
Sie haben nach der Datenschutz-Grundverordnung folgende Rechte gegenüber der
|
||||
verantwortlichen Stelle:
|
||||
</p>
|
||||
<ul class="rights-list list-unstyled">
|
||||
<li>
|
||||
<i class="fas fa-eye text-success me-2"></i>
|
||||
<strong>Auskunftsrecht (Art. 15 DSGVO):</strong> Sie haben das Recht, Auskunft über
|
||||
die zu Ihrer Person gespeicherten Daten zu erhalten.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-edit text-primary me-2"></i>
|
||||
<strong>Berichtigungsrecht (Art. 16 DSGVO):</strong> Sie haben das Recht, unrichtige
|
||||
oder unvollständige Daten berichtigen zu lassen.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-trash text-danger me-2"></i>
|
||||
<strong>Löschungsrecht (Art. 17 DSGVO):</strong> Sie haben das Recht auf Löschung
|
||||
Ihrer Daten, soweit keine gesetzlichen Aufbewahrungspflichten entgegenstehen.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-pause text-warning me-2"></i>
|
||||
<strong>Einschränkungsrecht (Art. 18 DSGVO):</strong> Sie haben das Recht, die
|
||||
Verarbeitung Ihrer Daten unter bestimmten Voraussetzungen einschränken zu lassen.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-hand-paper text-secondary me-2"></i>
|
||||
<strong>Widerspruchsrecht (Art. 21 DSGVO):</strong> Sie können der Verarbeitung
|
||||
Ihrer Daten aus Gründen, die sich aus Ihrer besonderen Situation ergeben, widersprechen.
|
||||
Bitte beachten Sie, dass ein Widerspruch bei gesetzlich vorgeschriebener Datenverarbeitung
|
||||
(§ 53 AO) ggf. zur Einstellung der Unterstützungsleistungen führen kann.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-download text-info me-2"></i>
|
||||
<strong>Datenübertragbarkeit (Art. 20 DSGVO):</strong> Sie haben das Recht, die Ihnen
|
||||
bereitgestellten Daten in einem strukturierten, maschinenlesbaren Format zu erhalten.
|
||||
</li>
|
||||
<li>
|
||||
<i class="fas fa-undo text-dark me-2"></i>
|
||||
<strong>Widerrufsrecht (Art. 7 Abs. 3 DSGVO):</strong> Eine erteilte Einwilligung können
|
||||
Sie jederzeit mit Wirkung für die Zukunft widerrufen. Der Widerruf berührt nicht die
|
||||
Rechtmäßigkeit der bis dahin erfolgten Verarbeitung.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<p>
|
||||
Zur Ausübung Ihrer Rechte wenden Sie sich bitte schriftlich oder per E-Mail an die
|
||||
verantwortliche Stelle (siehe Abschnitt 1).
|
||||
</p>
|
||||
|
||||
<!-- 9. Beschwerderecht -->
|
||||
<h2><i class="fas fa-balance-scale me-2"></i>9. Beschwerderecht bei der Aufsichtsbehörde</h2>
|
||||
<p>
|
||||
Sie haben das Recht, sich bei einer Datenschutz-Aufsichtsbehörde über die Verarbeitung
|
||||
Ihrer personenbezogenen Daten zu beschweren. Zuständig ist in der Regel die Behörde
|
||||
des Bundeslandes, in dem Sie Ihren gewöhnlichen Aufenthaltsort haben, oder des Bundeslandes,
|
||||
in dem die verantwortliche Stelle ihren Sitz hat:
|
||||
</p>
|
||||
<address class="ms-3">
|
||||
<strong>Landesbeauftragte für Datenschutz und Informationsfreiheit Nordrhein-Westfalen</strong><br>
|
||||
Postfach 20 04 44<br>
|
||||
40102 Düsseldorf<br>
|
||||
<i class="fas fa-globe me-1"></i> www.ldi.nrw.de
|
||||
</address>
|
||||
|
||||
<!-- 10. Änderungen -->
|
||||
<h2><i class="fas fa-history me-2"></i>10. Änderungen dieser Datenschutzerklärung</h2>
|
||||
<p>
|
||||
Wir behalten uns vor, diese Datenschutzerklärung bei Bedarf anzupassen, um sie
|
||||
stets den aktuellen rechtlichen Anforderungen zu entsprechen oder um Änderungen
|
||||
unserer Leistungen in der Erklärung umzusetzen. Für Ihren erneuten Besuch gilt
|
||||
dann die neue Datenschutzerklärung.
|
||||
</p>
|
||||
|
||||
</div><!-- /content-card -->
|
||||
|
||||
<div class="footer-note">
|
||||
© van Hees-Theyssen-Vogel'sche Stiftung · Raesfelder Str. 3, 46499 Hamminkeln ·
|
||||
stiftung@vhtv-stiftung.de · Stand: März 2026
|
||||
</div>
|
||||
|
||||
</div><!-- /container -->
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
216
app/templates/portal/einwilligung_onboarding.html
Normal file
216
app/templates/portal/einwilligung_onboarding.html
Normal file
@@ -0,0 +1,216 @@
|
||||
{# Einwilligungserklärung für das Onboarding-Formular (Schritt 1) #}
|
||||
{# Wird eingebettet in das mehrstufige Onboarding-Formular. #}
|
||||
{# Variablen: einladung_token, stiftung_email #}
|
||||
|
||||
<div class="dse-panel card border-0 shadow-sm mb-4">
|
||||
<div class="card-header" style="background: linear-gradient(135deg, #004225 0%, #006837 100%); color: white;">
|
||||
<h5 class="mb-0">
|
||||
<i class="fas fa-shield-alt me-2"></i>
|
||||
Datenschutz & Einwilligung
|
||||
</h5>
|
||||
<small class="opacity-85">Bitte lesen Sie die folgenden Erklärungen sorgfältig und bestätigen Sie diese, um fortzufahren.</small>
|
||||
</div>
|
||||
|
||||
<div class="card-body p-4">
|
||||
|
||||
{# ─── Datenschutzerklärung ─────────────────────────────────────────────── #}
|
||||
<div class="section mb-4">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-file-alt me-1"></i> Datenschutzerklärung
|
||||
</h6>
|
||||
|
||||
<div class="border rounded p-3 bg-light" style="max-height: 280px; overflow-y: auto; font-size: 0.88rem; line-height: 1.6;">
|
||||
|
||||
<p><strong>Verantwortliche Stelle:</strong><br>
|
||||
van Hees-Theyssen-Vogel'sche Stiftung, Raesfelder Str. 3, 46499 Hamminkeln<br>
|
||||
E-Mail: {{ stiftung_email|default:"stiftung@vhtv-stiftung.de" }}</p>
|
||||
|
||||
<p><strong>Zweck der Datenerhebung:</strong><br>
|
||||
Die von Ihnen in diesem Formular eingegebenen personenbezogenen Daten dienen ausschließlich
|
||||
der Prüfung Ihrer Aufnahme als Destinatär (Begünstigter) der Stiftung. Dies umfasst die
|
||||
Feststellung Ihrer Anspruchsberechtigung gemäß § 53 Abgabenordnung (AO) sowie der
|
||||
Stiftungssatzung.</p>
|
||||
|
||||
<p><strong>Erhobene Daten:</strong>
|
||||
Persönliche Identifikationsdaten (Name, Adresse, Geburtsdatum, Kontaktdaten),
|
||||
Identitätsnachweise, Verwandtschaftsnachweis, Ausbildungs-/Studiendaten sowie
|
||||
Angaben zur finanziellen Situation (Einkommen, Vermögen, Haushaltskosten).</p>
|
||||
|
||||
<p><strong>Rechtsgrundlagen:</strong>
|
||||
Art. 6 Abs. 1 lit. b DSGVO (Vertragsanbahnung), Art. 9 Abs. 2 lit. b DSGVO
|
||||
(besondere Datenkategorien im Bereich Sozialrecht) sowie Ihre nachstehende
|
||||
Einwilligung gemäß Art. 6 Abs. 1 lit. a DSGVO.</p>
|
||||
|
||||
<p><strong>Speicherdauer:</strong>
|
||||
Nicht abgeschlossene oder nicht freigegebene Anträge werden spätestens nach 90 Tagen gelöscht.
|
||||
Daten aufgenommener Destinatäre werden für die Dauer des Förderverhältnisses sowie
|
||||
10 Jahre darüber hinaus aufbewahrt (steuerrechtliche Aufbewahrungspflicht gem. § 147 AO).</p>
|
||||
|
||||
<p><strong>Ihre Rechte:</strong>
|
||||
Sie haben das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16 DSGVO),
|
||||
Löschung (Art. 17 DSGVO), Einschränkung der Verarbeitung (Art. 18 DSGVO),
|
||||
Datenübertragbarkeit (Art. 20 DSGVO) und Widerspruch (Art. 21 DSGVO).
|
||||
Weiterhin können Sie eine erteilte Einwilligung jederzeit widerrufen (Art. 7 Abs. 3 DSGVO).
|
||||
Zur Ausübung Ihrer Rechte wenden Sie sich an: stiftung@vhtv-stiftung.de.</p>
|
||||
|
||||
<p><strong>Beschwerderecht:</strong>
|
||||
Sie haben das Recht, sich bei der Landesbeauftragten für Datenschutz und
|
||||
Informationsfreiheit NRW zu beschweren (www.ldi.nrw.de).</p>
|
||||
|
||||
<p class="mb-0">
|
||||
<a href="{% url 'portal:datenschutzerklaerung' %}" target="_blank" class="text-decoration-none">
|
||||
<i class="fas fa-external-link-alt me-1"></i>
|
||||
Vollständige Datenschutzerklärung öffnen
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="form-check mt-3">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_dse" name="zustimmung_dse"
|
||||
value="1" required>
|
||||
<label class="form-check-label fw-semibold" for="zustimmung_dse">
|
||||
Ich habe die Datenschutzerklärung gelesen und verstanden und stimme der
|
||||
Verarbeitung meiner personenbezogenen Daten zum genannten Zweck zu.
|
||||
</label>
|
||||
<div class="invalid-feedback">
|
||||
Bitte bestätigen Sie die Datenschutzerklärung, um fortzufahren.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
{# ─── Erklärung des Leistungsempfängers ───────────────────────────────── #}
|
||||
<div class="section mb-4">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-pen-fancy me-1"></i> Erklärung des Antragstellers (gemäß Stiftungsmerkblatt)
|
||||
</h6>
|
||||
|
||||
<div class="border rounded p-3 bg-light" style="font-size: 0.88rem; line-height: 1.7;">
|
||||
<p>
|
||||
Ich erkläre, dass meine Angaben in diesem Formular sowie in allen beigefügten Unterlagen
|
||||
<strong>vollständig und wahrheitsgemäß</strong> sind. Ich bin mir bewusst, dass
|
||||
unvollständige, fehlerhafte oder wissentlich falsche Angaben zum Ausschluss
|
||||
von Leistungen der Stiftung sowie ggf. zur Rückforderung bereits gewährter
|
||||
Unterstützung führen können.
|
||||
</p>
|
||||
<p>
|
||||
Ich verpflichte mich, <strong>Änderungen meiner Einkommens- und Vermögenssituation</strong>
|
||||
sowie meines Ausbildungsstatus unverzüglich der Stiftung mitzuteilen, sobald diese
|
||||
zu einer Änderung der Anspruchsvoraussetzungen führen könnten.
|
||||
</p>
|
||||
<p class="mb-0">
|
||||
Mir ist bekannt, dass die Stiftung ihre Unterstützungsleistungen nach Maßgabe
|
||||
des <strong>§ 53 Abgabenordnung (AO)</strong> erbringt und daher die Einhaltung
|
||||
der dort genannten Einkommens- und Vermögensgrenzen regelmäßig überprüfen muss.
|
||||
</p>
|
||||
|
||||
<div class="mt-3 p-2 rounded" style="background: #fff8e1; border: 1px solid #ffc107; font-size: 0.82rem;">
|
||||
<i class="fas fa-info-circle me-1 text-warning"></i>
|
||||
<strong>Aktuelle Grenzwerte gemäß § 53 Nr. 2 AO (Stand 01/2024):</strong>
|
||||
Bezüge max. 2.245 € monatlich (5× Regelsatz 449 €); Vermögen max. 15.500 €.
|
||||
Bei Haushaltsangehörigen erhöhen sich die Grenzen entsprechend.
|
||||
Maßgeblich sind die jeweils gültigen Werte zum Zeitpunkt der Prüfung.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-check mt-3">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_erklaerung" name="zustimmung_erklaerung"
|
||||
value="1" required>
|
||||
<label class="form-check-label fw-semibold" for="zustimmung_erklaerung">
|
||||
Ich bestätige die vorstehende Erklärung und erkenne die Angabepflichten
|
||||
sowie die Folgen unvollständiger oder falscher Angaben an.
|
||||
</label>
|
||||
<div class="invalid-feedback">
|
||||
Bitte bestätigen Sie die Erklärung des Antragstellers, um fortzufahren.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
|
||||
{# ─── Optionale Einwilligung ───────────────────────────────────────────── #}
|
||||
<div class="section mb-2">
|
||||
<h6 class="text-uppercase text-muted fw-bold mb-3" style="font-size: 0.78rem; letter-spacing: 0.05em;">
|
||||
<i class="fas fa-envelope-open-text me-1"></i> Kommunikation (freiwillig)
|
||||
</h6>
|
||||
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" id="zustimmung_kommunikation"
|
||||
name="zustimmung_kommunikation" value="1">
|
||||
<label class="form-check-label" for="zustimmung_kommunikation">
|
||||
Ich bin damit einverstanden, dass die Stiftung mich per E-Mail über
|
||||
Fristen, Nachweisverpflichtungen und stiftungsbezogene Informationen kontaktiert.
|
||||
</label>
|
||||
<small class="d-block text-muted mt-1">
|
||||
Diese Einwilligung ist freiwillig und kann jederzeit widerrufen werden.
|
||||
Ohne diese Einwilligung ist ggf. nur postalische Kommunikation möglich.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{# Hidden: Zeitstempel der Einwilligung #}
|
||||
<input type="hidden" name="einwilligung_zeitstempel" id="einwilligung_zeitstempel">
|
||||
|
||||
</div><!-- /card-body -->
|
||||
</div><!-- /dse-panel -->
|
||||
|
||||
{# JavaScript: Zeitstempel bei Seitenaufruf setzen, Pflichtfelder validieren #}
|
||||
<script>
|
||||
(function () {
|
||||
// Zeitstempel der Anzeige setzen (nicht des Absendens, soll als Nachweis dienen)
|
||||
var ts = document.getElementById('einwilligung_zeitstempel');
|
||||
if (ts) {
|
||||
ts.value = new Date().toISOString();
|
||||
}
|
||||
|
||||
// Bootstrap-Validierung für Pflicht-Checkboxen
|
||||
var form = document.querySelector('form');
|
||||
if (form) {
|
||||
form.addEventListener('submit', function (evt) {
|
||||
var dse = document.getElementById('zustimmung_dse');
|
||||
var erkl = document.getElementById('zustimmung_erklaerung');
|
||||
var valid = true;
|
||||
|
||||
if (dse && !dse.checked) {
|
||||
dse.classList.add('is-invalid');
|
||||
valid = false;
|
||||
} else if (dse) {
|
||||
dse.classList.remove('is-invalid');
|
||||
}
|
||||
|
||||
if (erkl && !erkl.checked) {
|
||||
erkl.classList.add('is-invalid');
|
||||
valid = false;
|
||||
} else if (erkl) {
|
||||
erkl.classList.remove('is-invalid');
|
||||
}
|
||||
|
||||
if (!valid) {
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
// Zum ersten Fehler scrollen
|
||||
var firstInvalid = form.querySelector('.is-invalid');
|
||||
if (firstInvalid) {
|
||||
firstInvalid.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
||||
}
|
||||
}
|
||||
}, true);
|
||||
|
||||
// Live-Feedback bei Checkbox-Änderung
|
||||
['zustimmung_dse', 'zustimmung_erklaerung'].forEach(function (id) {
|
||||
var el = document.getElementById(id);
|
||||
if (el) {
|
||||
el.addEventListener('change', function () {
|
||||
if (this.checked) {
|
||||
this.classList.remove('is-invalid');
|
||||
this.classList.add('is-valid');
|
||||
} else {
|
||||
this.classList.remove('is-valid');
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
46
app/templates/portal/onboarding_basis.html
Normal file
46
app/templates/portal/onboarding_basis.html
Normal file
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{% block title %}Onboarding{% endblock %} – vHTV-Stiftung</title>
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||||
<style>
|
||||
:root { --gruen: #004225; --gruen-hell: #006837; }
|
||||
body { background: #f8f9fa; font-size: 0.95rem; line-height: 1.7; color: #333; }
|
||||
.portal-header { background: linear-gradient(135deg, var(--gruen) 0%, var(--gruen-hell) 100%); color: #fff; padding: 1.5rem 0; }
|
||||
.portal-header h1 { font-size: 1.4rem; font-weight: 600; margin-bottom: 0.25rem; }
|
||||
.portal-header .subtitle { font-size: 0.85rem; opacity: 0.85; }
|
||||
.fortschritt-bar { background: rgba(255,255,255,0.2); border-radius: 4px; height: 8px; margin-top: 12px; }
|
||||
.fortschritt-fill { background: #fff; border-radius: 4px; height: 8px; transition: width 0.3s; }
|
||||
.fortschritt-label { font-size: 0.8rem; opacity: 0.9; margin-top: 4px; }
|
||||
.card { border: none; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
|
||||
.card-header { background: #e8f4ee; border-bottom: 2px solid var(--gruen); }
|
||||
.card-header h2 { font-size: 1.15rem; color: var(--gruen); margin: 0; }
|
||||
.btn-weiter { background: var(--gruen); border-color: var(--gruen); }
|
||||
.btn-weiter:hover { background: var(--gruen-hell); border-color: var(--gruen-hell); }
|
||||
.btn-zurueck { border-color: #aaa; color: #555; }
|
||||
.required-mark { color: #c00; }
|
||||
.hinweis-box { background: #fff8e1; border-left: 4px solid #f0ad4e; border-radius: 4px; padding: 12px 16px; font-size: 0.9rem; }
|
||||
.dse-scroll { max-height: 300px; overflow-y: auto; border: 1px solid #dee2e6; border-radius: 4px; padding: 16px; background: #fff; font-size: 0.85rem; }
|
||||
.portal-footer { text-align: center; font-size: 0.8rem; color: #aaa; margin-top: 2rem; padding-bottom: 2rem; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="portal-header">
|
||||
<div class="container">
|
||||
<h1>van Hees-Theyssen-Vogel'sche Stiftung</h1>
|
||||
<p class="subtitle mb-0">Onboarding-Antrag</p>
|
||||
{% block fortschritt %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="container py-4">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-12 col-md-8 col-lg-7">
|
||||
{% block inhalt %}{% endblock %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="portal-footer">van Hees-Theyssen-Vogel'sche Stiftung · Raesfelder Str. 3, 46499 Hamminkeln · Tel. 02858/836780</div>
|
||||
</body>
|
||||
</html>
|
||||
24
app/templates/portal/onboarding_danke.html
Normal file
24
app/templates/portal/onboarding_danke.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Antrag eingereicht{% endblock %}
|
||||
{% block fortschritt %}{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-body text-center py-5">
|
||||
<div style="font-size: 3rem; color: #2c5f2e; margin-bottom: 16px;">✓</div>
|
||||
<h2 style="color: #2c5f2e;">Ihr Antrag wurde eingereicht!</h2>
|
||||
<p class="lead mt-3">Vielen Dank für Ihre Angaben.</p>
|
||||
<p>Ihr Onboarding-Antrag wurde erfolgreich übermittelt. Die Stiftung prüft Ihre Angaben und wird sich in Kürze mit Ihnen in Verbindung setzen.</p>
|
||||
<div class="hinweis-box mt-4 text-start">
|
||||
<strong>Nächste Schritte:</strong>
|
||||
<ul class="mt-2 mb-0">
|
||||
<li>Die Stiftung prüft Ihren Antrag (4-Augen-Prinzip durch den Vorstand).</li>
|
||||
<li>Sie erhalten eine Rückmeldung per E-Mail an die angegebene Adresse.</li>
|
||||
<li>Ggf. werden weitere Unterlagen angefordert.</li>
|
||||
</ul>
|
||||
</div>
|
||||
<p class="mt-4 text-muted small">
|
||||
Bei Fragen: van Hees-Theyssen-Vogel'sche Stiftung · Tel. 02858/836780
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
24
app/templates/portal/onboarding_fehler.html
Normal file
24
app/templates/portal/onboarding_fehler.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Fehler – Onboarding{% endblock %}
|
||||
{% block fortschritt %}{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-body text-center py-5">
|
||||
<div style="font-size: 2.5rem; color: #c0392b; margin-bottom: 16px;">⚠</div>
|
||||
{% if fehler_typ == "bereits_abgeschlossen" %}
|
||||
<h2 class="text-danger">Dieser Link wurde bereits verwendet</h2>
|
||||
<p>Das Onboarding-Verfahren für diesen Einladungslink wurde bereits abgeschlossen.</p>
|
||||
<p>Wenn Sie Fragen haben, wenden Sie sich bitte direkt an die Stiftung.</p>
|
||||
{% elif fehler_typ == "abgelaufen" %}
|
||||
<h2 class="text-danger">Dieser Einladungslink ist abgelaufen</h2>
|
||||
<p>Der Einladungslink ist nicht mehr gültig. Bitte kontaktieren Sie die Stiftung, um einen neuen Link zu erhalten.</p>
|
||||
{% else %}
|
||||
<h2 class="text-danger">Ungültiger Link</h2>
|
||||
<p>Dieser Einladungslink ist ungültig oder wurde nicht gefunden.</p>
|
||||
{% endif %}
|
||||
<p class="mt-4 text-muted small">
|
||||
van Hees-Theyssen-Vogel'sche Stiftung · Raesfelder Str. 3, 46499 Hamminkeln · Tel. 02858/836780
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
59
app/templates/portal/onboarding_schritt1.html
Normal file
59
app/templates/portal/onboarding_schritt1.html
Normal file
@@ -0,0 +1,59 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Schritt 1: Datenschutz{% endblock %}
|
||||
{% block fortschritt %}
|
||||
<div class="fortschritt-bar"><div class="fortschritt-fill" style="width:20%"></div></div>
|
||||
<p class="fortschritt-label">Schritt 1 von 5 – Datenschutz & Erklärung</p>
|
||||
{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header py-3">
|
||||
<h2>Schritt 1: Datenschutzerklärung & Erklärung des Leistungsempfängers</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if fehler %}
|
||||
<div class="alert alert-danger">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
|
||||
<p class="text-muted mb-3">Bitte lesen Sie die nachfolgende Datenschutzerklärung sowie die Erklärung des Leistungsempfängers und stimmen Sie beiden zu.</p>
|
||||
|
||||
<h5>1. Datenschutzerklärung</h5>
|
||||
<div class="dse-scroll mb-2">
|
||||
<strong>Verantwortliche Stelle:</strong> van Hees-Theyssen-Vogel'sche Stiftung, Raesfelder Str. 3, 46499 Hamminkeln<br><br>
|
||||
<strong>Verarbeitungszweck:</strong> Die von Ihnen übermittelten personenbezogenen Daten werden ausschließlich zum Zweck der Prüfung und Gewährung von Stiftungsleistungen gemäß der Stiftungssatzung verarbeitet.<br><br>
|
||||
<strong>Rechtsgrundlage:</strong> Die Verarbeitung erfolgt auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO (Vertragserfüllung) sowie für besondere Kategorien personenbezogener Daten (Einkommenssituation, Pflegegrad u.ä.) auf Grundlage Ihrer ausdrücklichen Einwilligung gem. Art. 9 Abs. 2 lit. a DSGVO.<br><br>
|
||||
<strong>Gespeicherte Daten:</strong> Name, Adresse, Geburtsdatum, Kontaktdaten, Einkommens- und Vermögensdaten, Ausbildungsnachweise, hochgeladene Dokumente.<br><br>
|
||||
<strong>Speicherdauer:</strong> Ihre Daten werden für die Dauer der Förderbeziehung sowie darüber hinaus für die gesetzlich vorgeschriebene Aufbewahrungszeit (i.d.R. 10 Jahre) gespeichert. Nicht angenommene Anträge werden nach 3 Jahren gelöscht.<br><br>
|
||||
<strong>Ihre Rechte:</strong> Sie haben das Recht auf Auskunft (Art. 15 DSGVO), Berichtigung (Art. 16 DSGVO), Löschung (Art. 17 DSGVO), Einschränkung der Verarbeitung (Art. 18 DSGVO) sowie das Recht auf Datenübertragbarkeit (Art. 20 DSGVO). Sie können Ihre Einwilligung jederzeit widerrufen, ohne dass die Rechtmäßigkeit der bis dahin erfolgten Verarbeitung berührt wird. Beschwerden können Sie an die Landesbeauftragte für Datenschutz und Informationsfreiheit NRW (LDI NRW) richten.<br><br>
|
||||
<strong>Weitergabe:</strong> Eine Weitergabe Ihrer Daten an Dritte erfolgt nur im gesetzlich zulässigen Rahmen (z.B. Steuerberater, Stiftungsaufsicht) oder auf Basis Ihrer ausdrücklichen Einwilligung.
|
||||
</div>
|
||||
|
||||
<h5 class="mt-4">2. Erklärung des Leistungsempfängers</h5>
|
||||
<div class="dse-scroll mb-2">
|
||||
<p>Das Merkblatt für die Bewilligung und Zahlung von Zuwendungen der van Hees-Theyssen-Vogel'schen Stiftung habe ich gelesen, verstanden und erkenne die dort genannten Angabepflichten als verbindlich an.</p>
|
||||
<p>Hinsichtlich der Regelungen insbesondere des Sozialgesetzbuches und der Abgabenordnung habe ich mich kundig gemacht und, soweit für mein Verständnis der Regelungen erforderlich, fachlichen Rat eingeholt.</p>
|
||||
<p>Ich verpflichte mich, alle erforderlichen Angaben unaufgefordert zu machen. Mir ist bekannt, dass Verstöße zur Einstellung jeglicher Förderung führen und rechtliche Folgen (z.B. Schadenersatz, strafrechtliche Folgen) nach sich ziehen, für die ich uneingeschränkt die Verantwortung übernehme.</p>
|
||||
<p><strong>Förderbedingungen (§ 53 AO):</strong> Grundsätzlich können nur Personen gefördert werden, die als Alleinstehende keine höheren monatlichen Bezüge als 2.245,00 € haben und deren Vermögen nicht zur nachhaltigen Verbesserung ihres Unterhalts ausreicht (Schonvermögen i.d.R. max. 15.500 €). Die Sätze erhöhen sich bei weiteren Haushaltsangehörigen.</p>
|
||||
</div>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="form-check mt-3">
|
||||
<input class="form-check-input" type="checkbox" name="dse_zustimmung" id="dse_zustimmung" required>
|
||||
<label class="form-check-label" for="dse_zustimmung">
|
||||
Ich habe die <strong>Datenschutzerklärung</strong> gelesen und stimme der Verarbeitung meiner personenbezogenen Daten zu. <span class="required-mark">*</span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check mt-2">
|
||||
<input class="form-check-input" type="checkbox" name="merkblatt_zustimmung" id="merkblatt_zustimmung" required>
|
||||
<label class="form-check-label" for="merkblatt_zustimmung">
|
||||
Ich habe die <strong>Erklärung des Leistungsempfängers</strong> gelesen und erkenne die Angabepflichten als verbindlich an. <span class="required-mark">*</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-end mt-4">
|
||||
<button type="submit" class="btn btn-primary btn-weiter px-4">Weiter →</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
97
app/templates/portal/onboarding_schritt2.html
Normal file
97
app/templates/portal/onboarding_schritt2.html
Normal file
@@ -0,0 +1,97 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Schritt 2: Persönliche Daten{% endblock %}
|
||||
{% block fortschritt %}
|
||||
<div class="fortschritt-bar"><div class="fortschritt-fill" style="width:40%"></div></div>
|
||||
<p class="fortschritt-label">Schritt 2 von 5 – Persönliche Daten</p>
|
||||
{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header py-3">
|
||||
<h2>Schritt 2: Persönliche Angaben</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if fehler %}
|
||||
<div class="alert alert-danger">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
<p class="text-muted small">Pflichtfelder sind mit <span class="required-mark">*</span> markiert. (Merkblatt Punkte 1–4)</p>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="row g-3 mb-3">
|
||||
<div class="col-sm-6">
|
||||
<label for="vorname" class="form-label">Vorname <span class="required-mark">*</span></label>
|
||||
<input type="text" class="form-control{% if 'vorname' in fehlende_felder %} is-invalid{% endif %}" id="vorname" name="vorname" value="{{ post_data.vorname|default:data.schritt2.vorname|default:'' }}" required>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<label for="nachname" class="form-label">Nachname <span class="required-mark">*</span></label>
|
||||
<input type="text" class="form-control{% if 'nachname' in fehlende_felder %} is-invalid{% endif %}" id="nachname" name="nachname" value="{{ post_data.nachname|default:data.schritt2.nachname|default:'' }}" required>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<label for="geburtsdatum" class="form-label">Geburtsdatum <span class="required-mark">*</span></label>
|
||||
<input type="date" class="form-control{% if 'geburtsdatum' in fehlende_felder %} is-invalid{% endif %}" id="geburtsdatum" name="geburtsdatum" value="{{ post_data.geburtsdatum|default:data.schritt2.geburtsdatum|default:'' }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Adresse (Punkt 1)</h6>
|
||||
<div class="row g-3 mb-3">
|
||||
<div class="col-12">
|
||||
<label for="strasse" class="form-label">Straße und Hausnummer <span class="required-mark">*</span></label>
|
||||
<input type="text" class="form-control{% if 'strasse' in fehlende_felder %} is-invalid{% endif %}" id="strasse" name="strasse" value="{{ post_data.strasse|default:data.schritt2.strasse|default:'' }}" required>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<label for="plz" class="form-label">PLZ <span class="required-mark">*</span></label>
|
||||
<input type="text" class="form-control{% if 'plz' in fehlende_felder %} is-invalid{% endif %}" id="plz" name="plz" maxlength="10" value="{{ post_data.plz|default:data.schritt2.plz|default:'' }}" required>
|
||||
</div>
|
||||
<div class="col-sm-8">
|
||||
<label for="ort" class="form-label">Ort <span class="required-mark">*</span></label>
|
||||
<input type="text" class="form-control{% if 'ort' in fehlende_felder %} is-invalid{% endif %}" id="ort" name="ort" value="{{ post_data.ort|default:data.schritt2.ort|default:'' }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Kontaktdaten (Punkt 1)</h6>
|
||||
<div class="row g-3 mb-3">
|
||||
<div class="col-sm-6">
|
||||
<label for="telefon" class="form-label">Telefonnummer <span class="required-mark">*</span></label>
|
||||
<input type="tel" class="form-control{% if 'telefon' in fehlende_felder %} is-invalid{% endif %}" id="telefon" name="telefon" value="{{ post_data.telefon|default:data.schritt2.telefon|default:'' }}" required>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<label for="handynummer" class="form-label">Handynummer</label>
|
||||
<input type="tel" class="form-control" id="handynummer" name="handynummer" value="{{ post_data.handynummer|default:data.schritt2.handynummer|default:'' }}">
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label for="email" class="form-label">E-Mail-Adresse <span class="required-mark">*</span></label>
|
||||
<input type="email" class="form-control{% if 'email' in fehlende_felder %} is-invalid{% endif %}" id="email" name="email" value="{{ post_data.email|default:data.schritt2.email|default:einladung.email }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Verwandtschaftsverhältnis (Punkt 4)</h6>
|
||||
<div class="mb-3">
|
||||
<label for="verwandtschaftsverhaeltnis" class="form-label">
|
||||
Verwandtschaftsverhältnis zu einem Geschwisterteil des Stifters Hendrik van Hees oder seiner Ehefrau Aletta Theyssen-Vogel <span class="required-mark">*</span>
|
||||
</label>
|
||||
<textarea class="form-control{% if 'verwandtschaftsverhaeltnis' in fehlende_felder %} is-invalid{% endif %}" id="verwandtschaftsverhaeltnis" name="verwandtschaftsverhaeltnis" rows="2" required>{{ post_data.verwandtschaftsverhaeltnis|default:data.schritt2.verwandtschaftsverhaeltnis|default:'' }}</textarea>
|
||||
<div class="form-text">z.B. „Enkelin von Margarethe van Hees, Schwester des Stifters"</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="familienzweig" class="form-label">Familienzweig</label>
|
||||
<select class="form-select" id="familienzweig" name="familienzweig">
|
||||
<option value="">– bitte wählen –</option>
|
||||
<option value="hauptzweig" {% if data.schritt2.familienzweig == 'hauptzweig' or post_data.familienzweig == 'hauptzweig' %}selected{% endif %}>Hauptzweig</option>
|
||||
<option value="nebenzweig" {% if data.schritt2.familienzweig == 'nebenzweig' or post_data.familienzweig == 'nebenzweig' %}selected{% endif %}>Nebenzweig</option>
|
||||
<option value="verwandt" {% if data.schritt2.familienzweig == 'verwandt' or post_data.familienzweig == 'verwandt' %}selected{% endif %}>Verwandt</option>
|
||||
<option value="anderer" {% if data.schritt2.familienzweig == 'anderer' or post_data.familienzweig == 'anderer' %}selected{% endif %}>Anderer</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between mt-4">
|
||||
<button type="submit" name="aktion" value="zurueck" class="btn btn-outline-secondary btn-zurueck">← Zurück</button>
|
||||
<button type="submit" class="btn btn-primary btn-weiter px-4">Weiter →</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
86
app/templates/portal/onboarding_schritt3.html
Normal file
86
app/templates/portal/onboarding_schritt3.html
Normal file
@@ -0,0 +1,86 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Schritt 3: Ausbildung/Studium{% endblock %}
|
||||
{% block fortschritt %}
|
||||
<div class="fortschritt-bar"><div class="fortschritt-fill" style="width:60%"></div></div>
|
||||
<p class="fortschritt-label">Schritt 3 von 5 – Ausbildung & Studium</p>
|
||||
{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header py-3">
|
||||
<h2>Schritt 3: Ausbildung & Studium</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if fehler %}
|
||||
<div class="alert alert-danger">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
<p class="text-muted small">(Merkblatt Punkte 5–6)</p>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="mb-4">
|
||||
<label class="form-label fw-bold">Befinden Sie sich derzeit in einer Ausbildung oder einem Studium? <span class="required-mark">*</span></label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="in_ausbildung" id="ausbildung_ja" value="ja"
|
||||
{% if data.schritt3.in_ausbildung %}checked{% endif %}>
|
||||
<label class="form-check-label" for="ausbildung_ja">Ja</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="in_ausbildung" id="ausbildung_nein" value="nein"
|
||||
{% if data.schritt3.in_ausbildung == False or not data.schritt3 %}checked{% endif %}>
|
||||
<label class="form-check-label" for="ausbildung_nein">Nein</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="ausbildung-felder">
|
||||
<div class="mb-3">
|
||||
<label for="ausbildungsart" class="form-label">Art der Ausbildung / des Studiums (Punkt 5)</label>
|
||||
<select class="form-select" id="ausbildungsart" name="ausbildungsart">
|
||||
<option value="">– bitte wählen –</option>
|
||||
<option value="studium" {% if data.schritt3.ausbildungsart == 'studium' %}selected{% endif %}>Studium (Universität/FH)</option>
|
||||
<option value="berufsausbildung" {% if data.schritt3.ausbildungsart == 'berufsausbildung' %}selected{% endif %}>Berufsausbildung</option>
|
||||
<option value="berufsschule" {% if data.schritt3.ausbildungsart == 'berufsschule' %}selected{% endif %}>Berufsschule</option>
|
||||
<option value="promotionsstudium" {% if data.schritt3.ausbildungsart == 'promotionsstudium' %}selected{% endif %}>Promotionsstudium</option>
|
||||
<option value="weiterbildung" {% if data.schritt3.ausbildungsart == 'weiterbildung' %}selected{% endif %}>Berufliche Weiterbildung</option>
|
||||
<option value="sonstiges" {% if data.schritt3.ausbildungsart == 'sonstiges' %}selected{% endif %}>Sonstiges</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="institution" class="form-label">Name der Hochschule / Ausbildungsstätte</label>
|
||||
<input type="text" class="form-control" id="institution" name="institution"
|
||||
value="{{ data.schritt3.institution|default:'' }}"
|
||||
placeholder="z.B. Universität Münster, IHK Duisburg">
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="voraussichtliche_dauer" class="form-label">Voraussichtliches Ende der Ausbildung / des Studiums (Punkt 6)</label>
|
||||
<input type="text" class="form-control" id="voraussichtliche_dauer" name="voraussichtliche_dauer"
|
||||
value="{{ data.schritt3.voraussichtliche_dauer|default:'' }}"
|
||||
placeholder="z.B. Sommersemester 2027 oder 08/2026">
|
||||
<div class="form-text">Bitte Semester oder Monat/Jahr angeben.</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="hinweis-box mt-3">
|
||||
<strong>Hinweis:</strong> Studienbescheinigungen und Ausbildungsnachweise können Sie im nächsten Schritt (Dokumente-Upload) hochladen.
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between mt-4">
|
||||
<button type="submit" name="aktion" value="zurueck" class="btn btn-outline-secondary btn-zurueck">← Zurück</button>
|
||||
<button type="submit" class="btn btn-primary btn-weiter px-4">Weiter →</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function toggleAusbildungsFelder() {
|
||||
const ja = document.getElementById('ausbildung_ja').checked;
|
||||
document.getElementById('ausbildung-felder').style.opacity = ja ? '1' : '0.4';
|
||||
}
|
||||
document.getElementById('ausbildung_ja').addEventListener('change', toggleAusbildungsFelder);
|
||||
document.getElementById('ausbildung_nein').addEventListener('change', toggleAusbildungsFelder);
|
||||
toggleAusbildungsFelder();
|
||||
</script>
|
||||
{% endblock %}
|
||||
97
app/templates/portal/onboarding_schritt4.html
Normal file
97
app/templates/portal/onboarding_schritt4.html
Normal file
@@ -0,0 +1,97 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Schritt 4: Finanzielle Situation{% endblock %}
|
||||
{% block fortschritt %}
|
||||
<div class="fortschritt-bar"><div class="fortschritt-fill" style="width:80%"></div></div>
|
||||
<p class="fortschritt-label">Schritt 4 von 5 – Finanzielle Situation</p>
|
||||
{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header py-3">
|
||||
<h2>Schritt 4: Finanzielle Situation</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if fehler %}
|
||||
<div class="alert alert-danger">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
<p class="text-muted small">(Merkblatt Punkte 7–12)</p>
|
||||
|
||||
<div class="hinweis-box mb-4">
|
||||
<strong>Förderbedingungen gem. § 53 AO:</strong> Förderung ist möglich, wenn monatliche Bezüge als Alleinstehende(r) max. <strong>2.245 €</strong> und das Vermögen max. <strong>15.500 €</strong> betragen. Die Sätze erhöhen sich bei weiteren Haushaltsangehörigen. Bitte machen Sie genaue und vollständige Angaben.
|
||||
</div>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
<h6 class="text-muted mt-2">Haushaltssituation (Punkt 7)</h6>
|
||||
<div class="mb-3">
|
||||
<label for="haushaltstyp" class="form-label">Sind Sie alleinstehend oder Haushaltsvorstand?</label>
|
||||
<select class="form-select" id="haushaltstyp" name="haushaltstyp">
|
||||
<option value="">– bitte wählen –</option>
|
||||
<option value="alleinstehend" {% if data.schritt4.haushaltstyp == 'alleinstehend' %}selected{% endif %}>Alleinstehend</option>
|
||||
<option value="haushaltsvorstand" {% if data.schritt4.haushaltstyp == 'haushaltsvorstand' %}selected{% endif %}>Haushaltsvorstand</option>
|
||||
<option value="sonstiges" {% if data.schritt4.haushaltstyp == 'sonstiges' %}selected{% endif %}>Sonstiges</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="haushaltsgroesse" class="form-label">Welche weiteren Personen/Angehörige leben gegebenenfalls in Ihrem Haushalt?</label>
|
||||
<textarea class="form-control" id="haushaltsgroesse" name="haushaltsgroesse" rows="2"
|
||||
placeholder="z.B. Ehepartner/in (45 J.), 2 Kinder (8 J., 12 J.)">{{ data.schritt4.haushaltsgroesse|default:'' }}</textarea>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Bezüge & Einkommen (Punkte 8–9)</h6>
|
||||
<div class="mb-3">
|
||||
<label for="monatliche_bezuege" class="form-label">Monatliche Bezüge im Sinne des Sozialgesetzbuches (€) (Punkt 8)</label>
|
||||
<input type="text" class="form-control" id="monatliche_bezuege" name="monatliche_bezuege"
|
||||
value="{{ data.schritt4.monatliche_bezuege|default:'' }}"
|
||||
placeholder="z.B. 1.200,00">
|
||||
<div class="form-text">Einkommensteuerbescheid, Lohn-/Gehaltsnachweis, Rentenbescheid, Pflegegrad etc. bitte im nächsten Schritt hochladen.</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="bezuege_art" class="form-label">Art der Bezüge (bitte kurz beschreiben)</label>
|
||||
<input type="text" class="form-control" id="bezuege_art" name="bezuege_art"
|
||||
value="{{ data.schritt4.bezuege_art|default:'' }}"
|
||||
placeholder="z.B. BAföG, Rente, Gehalt Teilzeit, Unterhalt">
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="unterhalt" class="form-label">Unterhaltsleistungen oder sonstige Bezüge, falls zutreffend (€) (Punkt 9)</label>
|
||||
<input type="text" class="form-control" id="unterhalt" name="unterhalt"
|
||||
value="{{ data.schritt4.unterhalt|default:'' }}"
|
||||
placeholder="z.B. 400,00 monatlich vom Vater">
|
||||
<div class="form-text">Belege bitte im nächsten Schritt hochladen.</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Wohnkosten & Vermögen (Punkte 10–11)</h6>
|
||||
<div class="mb-3">
|
||||
<label for="miete_heizung" class="form-label">Miet- und Heizungsaufwendungen pro Monat (€) (Punkt 10)</label>
|
||||
<input type="text" class="form-control" id="miete_heizung" name="miete_heizung"
|
||||
value="{{ data.schritt4.miete_heizung|default:'' }}"
|
||||
placeholder="z.B. 650,00">
|
||||
<div class="form-text">Kopie des Mietvertrags bitte im nächsten Schritt hochladen.</div>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="vermoegen" class="form-label">Gesamtvermögen (€) (Punkt 11)</label>
|
||||
<input type="text" class="form-control" id="vermoegen" name="vermoegen"
|
||||
value="{{ data.schritt4.vermoegen|default:'' }}"
|
||||
placeholder="z.B. 3.500,00 (Spar- und Girokonto)">
|
||||
<div class="form-text">Spar-/Festgeldguthaben, Aktien, Immobilien etc. bitte angeben.</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-3">
|
||||
<h6 class="text-muted">Lebensunterhalt (Punkt 12)</h6>
|
||||
<div class="mb-3">
|
||||
<label for="lebensunterhalt_aufwendungen" class="form-label">Aufwendungen für den Lebensunterhalt und ggf. Unterricht/Studium pro Monat (€)</label>
|
||||
<input type="text" class="form-control" id="lebensunterhalt_aufwendungen" name="lebensunterhalt_aufwendungen"
|
||||
value="{{ data.schritt4.lebensunterhalt_aufwendungen|default:'' }}"
|
||||
placeholder="z.B. 1.100,00">
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between mt-4">
|
||||
<button type="submit" name="aktion" value="zurueck" class="btn btn-outline-secondary btn-zurueck">← Zurück</button>
|
||||
<button type="submit" class="btn btn-primary btn-weiter px-4">Weiter →</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
108
app/templates/portal/onboarding_schritt5.html
Normal file
108
app/templates/portal/onboarding_schritt5.html
Normal file
@@ -0,0 +1,108 @@
|
||||
{% extends "portal/onboarding_basis.html" %}
|
||||
{% block title %}Schritt 5: Zusammenfassung & Dokumente{% endblock %}
|
||||
{% block fortschritt %}
|
||||
<div class="fortschritt-bar"><div class="fortschritt-fill" style="width:100%"></div></div>
|
||||
<p class="fortschritt-label">Schritt 5 von 5 – Zusammenfassung, Dokumente & Bestätigung</p>
|
||||
{% endblock %}
|
||||
{% block inhalt %}
|
||||
<div class="card mb-3">
|
||||
<div class="card-header py-3">
|
||||
<h2>Schritt 5: Zusammenfassung, Dokumente & Bestätigung</h2>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if fehler %}
|
||||
<div class="alert alert-danger">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
|
||||
<h5>Ihre Angaben im Überblick</h5>
|
||||
|
||||
{% if data.schritt2 %}
|
||||
<div class="table-responsive mb-3">
|
||||
<table class="table table-sm table-bordered">
|
||||
<tr><th class="table-light w-40">Name</th><td>{{ data.schritt2.vorname }} {{ data.schritt2.nachname }}</td></tr>
|
||||
<tr><th class="table-light">Geburtsdatum</th><td>{{ data.schritt2.geburtsdatum }}</td></tr>
|
||||
<tr><th class="table-light">Adresse</th><td>{{ data.schritt2.strasse }}, {{ data.schritt2.plz }} {{ data.schritt2.ort }}</td></tr>
|
||||
<tr><th class="table-light">E-Mail</th><td>{{ data.schritt2.email }}</td></tr>
|
||||
<tr><th class="table-light">Telefon</th><td>{{ data.schritt2.telefon }}{% if data.schritt2.handynummer %} / {{ data.schritt2.handynummer }}{% endif %}</td></tr>
|
||||
<tr><th class="table-light">Verwandtschaft</th><td>{{ data.schritt2.verwandtschaftsverhaeltnis }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if data.schritt3 %}
|
||||
<div class="table-responsive mb-3">
|
||||
<table class="table table-sm table-bordered">
|
||||
<tr><th class="table-light w-40">In Ausbildung/Studium</th><td>{% if data.schritt3.in_ausbildung %}Ja{% else %}Nein{% endif %}</td></tr>
|
||||
{% if data.schritt3.in_ausbildung %}
|
||||
<tr><th class="table-light">Art</th><td>{{ data.schritt3.ausbildungsart }}</td></tr>
|
||||
<tr><th class="table-light">Institution</th><td>{{ data.schritt3.institution }}</td></tr>
|
||||
<tr><th class="table-light">Voraussichtl. Ende</th><td>{{ data.schritt3.voraussichtliche_dauer }}</td></tr>
|
||||
{% endif %}
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if data.schritt4 %}
|
||||
<div class="table-responsive mb-3">
|
||||
<table class="table table-sm table-bordered">
|
||||
<tr><th class="table-light w-40">Haushaltstyp</th><td>{{ data.schritt4.haushaltstyp }}</td></tr>
|
||||
<tr><th class="table-light">Haushaltspersonen</th><td>{{ data.schritt4.haushaltsgroesse|default:"–" }}</td></tr>
|
||||
<tr><th class="table-light">Monatl. Bezüge</th><td>{{ data.schritt4.monatliche_bezuege|default:"–" }} €</td></tr>
|
||||
<tr><th class="table-light">Art der Bezüge</th><td>{{ data.schritt4.bezuege_art|default:"–" }}</td></tr>
|
||||
<tr><th class="table-light">Unterhalt</th><td>{{ data.schritt4.unterhalt|default:"–" }}</td></tr>
|
||||
<tr><th class="table-light">Miete & Heizung</th><td>{{ data.schritt4.miete_heizung|default:"–" }} €</td></tr>
|
||||
<tr><th class="table-light">Vermögen</th><td>{{ data.schritt4.vermoegen|default:"–" }} €</td></tr>
|
||||
<tr><th class="table-light">Lebensunterhalt</th><td>{{ data.schritt4.lebensunterhalt_aufwendungen|default:"–" }} €</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<hr class="my-4">
|
||||
<h5>Dokumente hochladen</h5>
|
||||
<p class="text-muted small">Laden Sie alle relevanten Nachweise hoch (Punkt 2, 3, 5, 8–10 des Merkblatts). Erlaubte Formate: PDF, JPG, PNG, TIFF – max. 20 MB je Datei.</p>
|
||||
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Personalausweis (Vorder- und Rückseite) oder Reisepass (Punkt 2)</label>
|
||||
<input type="file" class="form-control" name="ausweis" accept=".pdf,.jpg,.jpeg,.png,.tiff">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Tabellarischer Lebenslauf (Punkt 3)</label>
|
||||
<input type="file" class="form-control" name="lebenslauf" accept=".pdf,.jpg,.jpeg,.png">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Studienbescheinigung / Ausbildungsnachweis (Punkt 5, falls zutreffend)</label>
|
||||
<input type="file" class="form-control" name="studienbescheinigung" accept=".pdf,.jpg,.jpeg,.png">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Einkommensnachweis (Lohnabrechnung, Rentenbescheid, BAföG-Bescheid etc.) (Punkt 8)</label>
|
||||
<input type="file" class="form-control" name="einkommensnachweis" accept=".pdf,.jpg,.jpeg,.png">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Mietvertrag (Punkt 10, falls zutreffend)</label>
|
||||
<input type="file" class="form-control" name="mietvertrag" accept=".pdf,.jpg,.jpeg,.png">
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label class="form-label">Weitere Belege</label>
|
||||
<input type="file" class="form-control" name="weitere_belege" multiple accept=".pdf,.jpg,.jpeg,.png,.tiff">
|
||||
<div class="form-text">Mehrfachauswahl möglich.</div>
|
||||
</div>
|
||||
|
||||
<hr class="my-4">
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="checkbox" name="finale_bestaetigung" id="finale_bestaetigung" required>
|
||||
<label class="form-check-label" for="finale_bestaetigung">
|
||||
Ich bestätige, dass alle obigen Angaben vollständig und wahrheitsgemäß sind. Ich bin mir bewusst, dass falsche Angaben zur Einstellung der Förderung und rechtlichen Konsequenzen führen können. <span class="required-mark">*</span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="d-flex justify-content-between mt-4">
|
||||
<button type="submit" name="aktion" value="zurueck" class="btn btn-outline-secondary btn-zurueck">← Zurück</button>
|
||||
<button type="submit" class="btn btn-success px-4">Antrag einreichen ✓</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
38
app/templates/portal/upload_danke.html
Normal file
38
app/templates/portal/upload_danke.html
Normal file
@@ -0,0 +1,38 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Unterlagen eingereicht – vHTV-Stiftung</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; font-size: 15px; color: #222; background: #f4f6f8; margin: 0; padding: 0; }
|
||||
.container { max-width: 560px; margin: 60px auto; padding: 0 16px; text-align: center; }
|
||||
.card { background: #fff; border-radius: 10px; padding: 40px 32px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
|
||||
.icon { font-size: 64px; margin-bottom: 16px; }
|
||||
h1 { font-size: 24px; color: #1a3a5c; margin: 0 0 12px; }
|
||||
p { line-height: 1.6; color: #444; }
|
||||
.badge { display: inline-block; background: #e6f4ea; color: #2d7a3e; font-weight: bold; padding: 6px 16px; border-radius: 20px; margin: 12px 0; }
|
||||
.info { font-size: 13px; color: #777; margin-top: 20px; }
|
||||
.footer { margin-top: 28px; font-size: 12px; color: #aaa; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="card">
|
||||
<div class="icon">✔️</div>
|
||||
<h1>Vielen Dank!</h1>
|
||||
<p>Ihre Unterlagen für das <strong>{{ halbjahr_label }}</strong> wurden erfolgreich eingereicht.</p>
|
||||
<div class="badge">Einreichung bestätigt</div>
|
||||
<p>Die van Hees-Theyssen-Vogel'sche Stiftung wird Ihre Unterlagen prüfen und sich bei Rückfragen bei Ihnen melden.</p>
|
||||
<p class="info">
|
||||
Bei Fragen wenden Sie sich an:<br>
|
||||
Tel. 02858/836780 •
|
||||
<a href="mailto:Jan.Siebels@gmail.com">Jan.Siebels@gmail.com</a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="footer">
|
||||
van Hees-Theyssen-Vogel'sche Stiftung • Raesfelder Str. 3 • 46499 Hamminkeln
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
35
app/templates/portal/upload_fehler.html
Normal file
35
app/templates/portal/upload_fehler.html
Normal file
@@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Link ungültig – vHTV-Stiftung</title>
|
||||
<style>
|
||||
body { font-family: Arial, sans-serif; font-size: 15px; color: #222; background: #f4f6f8; margin: 0; padding: 0; }
|
||||
.container { max-width: 520px; margin: 60px auto; padding: 0 16px; text-align: center; }
|
||||
.card { background: #fff; border-radius: 10px; padding: 40px 32px; box-shadow: 0 2px 12px rgba(0,0,0,0.08); }
|
||||
.icon { font-size: 56px; margin-bottom: 16px; }
|
||||
h1 { font-size: 22px; color: #b30000; margin: 0 0 12px; }
|
||||
p { line-height: 1.6; color: #444; }
|
||||
.contact { background: #f0f6ff; border-radius: 6px; padding: 14px; margin-top: 20px; font-size: 14px; }
|
||||
.footer { margin-top: 28px; font-size: 12px; color: #aaa; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="card">
|
||||
<div class="icon">🚫</div>
|
||||
<h1>Link nicht mehr gültig</h1>
|
||||
<p>{{ message }}</p>
|
||||
<div class="contact">
|
||||
<strong>Bitte wenden Sie sich direkt an die Stiftung:</strong><br>
|
||||
Tel. 02858/836780<br>
|
||||
<a href="mailto:Jan.Siebels@gmail.com">Jan.Siebels@gmail.com</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer">
|
||||
van Hees-Theyssen-Vogel'sche Stiftung • Raesfelder Str. 3 • 46499 Hamminkeln
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
169
app/templates/portal/upload_formular.html
Normal file
169
app/templates/portal/upload_formular.html
Normal file
@@ -0,0 +1,169 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Unterlagen hochladen – vHTV-Stiftung</title>
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; }
|
||||
body { font-family: Arial, sans-serif; font-size: 15px; color: #222; background: #f4f6f8; margin: 0; padding: 0; }
|
||||
.container { max-width: 720px; margin: 40px auto; padding: 0 16px 40px; }
|
||||
.header { background: #1a3a5c; color: #fff; padding: 24px 28px; border-radius: 8px 8px 0 0; }
|
||||
.header h1 { margin: 0 0 4px; font-size: 20px; }
|
||||
.header p { margin: 0; font-size: 13px; opacity: 0.8; }
|
||||
.card { background: #fff; border-radius: 0 0 8px 8px; padding: 28px; box-shadow: 0 2px 10px rgba(0,0,0,0.08); }
|
||||
.badge { display: inline-block; background: #e8f0fb; color: #1a3a5c; font-weight: bold; padding: 4px 12px; border-radius: 20px; font-size: 13px; margin-bottom: 12px; }
|
||||
.info-box { background: #f0f6ff; border: 1px solid #b0cce8; border-radius: 6px; padding: 14px 16px; margin-bottom: 20px; font-size: 14px; }
|
||||
.error-box { background: #fff3f3; border: 1px solid #e88; border-radius: 6px; padding: 12px 16px; margin-bottom: 16px; color: #c00; }
|
||||
|
||||
/* Category sections */
|
||||
.kategorie { border: 1px solid #dde4ed; border-radius: 8px; padding: 20px; margin-bottom: 20px; }
|
||||
.kategorie h3 { margin: 0 0 4px; font-size: 16px; color: #1a3a5c; }
|
||||
.kategorie .hinweis { font-size: 13px; color: #666; margin: 0 0 12px; }
|
||||
.kategorie.pflicht { border-left: 3px solid #1a3a5c; }
|
||||
|
||||
label { display: block; font-weight: bold; margin-bottom: 6px; font-size: 14px; }
|
||||
.upload-area { border: 2px dashed #b0cce8; border-radius: 6px; padding: 20px; text-align: center; cursor: pointer; background: #fafcff; transition: border-color 0.2s; position: relative; }
|
||||
.upload-area:hover, .upload-area.dragover { border-color: #1a3a5c; background: #e8f0fb; }
|
||||
.upload-area input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; }
|
||||
.upload-area .icon { font-size: 28px; margin-bottom: 4px; }
|
||||
.upload-area p { margin: 2px 0; color: #555; font-size: 13px; }
|
||||
.upload-area .hint { font-size: 11px; color: #888; }
|
||||
.file-list { margin: 8px 0 0; font-size: 13px; color: #444; list-style: none; padding: 0; }
|
||||
.file-list li { padding: 3px 0; border-bottom: 1px solid #f0f0f0; }
|
||||
|
||||
.oder-text { text-align: center; color: #999; font-size: 13px; margin: 10px 0; font-style: italic; }
|
||||
textarea { width: 100%; border: 1px solid #ccc; border-radius: 5px; padding: 10px; font-family: inherit; font-size: 14px; resize: vertical; min-height: 60px; }
|
||||
textarea:focus { border-color: #1a3a5c; outline: none; }
|
||||
|
||||
.submit-btn { display: block; width: 100%; background: #1a3a5c; color: #fff; border: none; border-radius: 5px; padding: 14px; font-size: 16px; font-weight: bold; cursor: pointer; margin-top: 20px; }
|
||||
.submit-btn:hover { background: #14304e; }
|
||||
.deadline { font-size: 13px; color: #888; margin-top: 16px; text-align: center; }
|
||||
.footer { text-align: center; margin-top: 24px; font-size: 12px; color: #aaa; }
|
||||
.pflicht-hinweis { font-size: 12px; color: #888; margin-bottom: 16px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="header">
|
||||
<h1>van Hees-Theyssen-Vogel'sche Stiftung</h1>
|
||||
<p>Sicheres Dokumenten-Upload-Portal</p>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="badge">{{ halbjahr_label }}</div>
|
||||
<p>Guten Tag, <strong>{{ destinataer.vorname }} {{ destinataer.nachname }}</strong>,</p>
|
||||
<p>bitte laden Sie hier Ihre Unterlagen für das <strong>{{ halbjahr_label }}</strong> hoch.
|
||||
Für jede Kategorie können Sie eine Datei hochladen und/oder einen Text eingeben.</p>
|
||||
|
||||
<p class="pflicht-hinweis">Pro Kategorie muss mindestens eine Datei <em>oder</em> ein Texteintrag eingereicht werden.</p>
|
||||
|
||||
{% if fehler %}
|
||||
<div class="error-box">{{ fehler }}</div>
|
||||
{% endif %}
|
||||
|
||||
<form method="post" enctype="multipart/form-data" action="">
|
||||
{% csrf_token %}
|
||||
|
||||
<!-- 1. Studiennachweis -->
|
||||
<div class="kategorie pflicht">
|
||||
<h3>Studiennachweis</h3>
|
||||
<p class="hinweis">Semesterbescheinigung, Ausbildungsnachweis, Leistungsnachweise (Zeugnisse, Kreditpunkte etc.)</p>
|
||||
<label for="studiennachweis">Datei hochladen:</label>
|
||||
<div class="upload-area" data-target="studiennachweis">
|
||||
<input type="file" name="studiennachweis" id="studiennachweis" accept=".pdf,.jpg,.jpeg,.png,.tiff,.tif">
|
||||
<div class="icon">📄</div>
|
||||
<p>Datei hierher ziehen oder klicken</p>
|
||||
<p class="hint">PDF, JPG, PNG, TIFF • max. {{ max_dateigroesse_mb }} MB</p>
|
||||
</div>
|
||||
<ul class="file-list" data-list="studiennachweis"></ul>
|
||||
<p class="oder-text">— oder Texteintrag —</p>
|
||||
<textarea name="studiennachweis_text" placeholder="z.B. 'Semesterbescheinigung liegt bei' oder 'Kein Studium/Ausbildung mehr seit ...'">{{ studiennachweis_text|default:"" }}</textarea>
|
||||
</div>
|
||||
|
||||
<!-- 2. Einkommenssituation -->
|
||||
<div class="kategorie pflicht">
|
||||
<h3>Einkommenssituation</h3>
|
||||
<p class="hinweis">Einkommensteuerbescheid, Lohn-/Gehaltsnachweis, Rentenbescheid, Bescheinigung Pflegegrad etc.</p>
|
||||
<label for="einkommenssituation">Datei hochladen:</label>
|
||||
<div class="upload-area" data-target="einkommenssituation">
|
||||
<input type="file" name="einkommenssituation" id="einkommenssituation" accept=".pdf,.jpg,.jpeg,.png,.tiff,.tif">
|
||||
<div class="icon">📄</div>
|
||||
<p>Datei hierher ziehen oder klicken</p>
|
||||
<p class="hint">PDF, JPG, PNG, TIFF • max. {{ max_dateigroesse_mb }} MB</p>
|
||||
</div>
|
||||
<ul class="file-list" data-list="einkommenssituation"></ul>
|
||||
<p class="oder-text">— oder Texteintrag —</p>
|
||||
<textarea name="einkommenssituation_text" placeholder="z.B. 'Keine Änderungen seit letzter Meldung' oder Details zu Änderungen">{{ einkommenssituation_text|default:"" }}</textarea>
|
||||
</div>
|
||||
|
||||
<!-- 3. Vermögenssituation -->
|
||||
<div class="kategorie pflicht">
|
||||
<h3>Vermögenssituation</h3>
|
||||
<p class="hinweis">Angaben zu Spar-/Festgeldguthaben, Aktien, Immobilien etc.</p>
|
||||
<label for="vermogenssituation">Datei hochladen:</label>
|
||||
<div class="upload-area" data-target="vermogenssituation">
|
||||
<input type="file" name="vermogenssituation" id="vermogenssituation" accept=".pdf,.jpg,.jpeg,.png,.tiff,.tif">
|
||||
<div class="icon">📄</div>
|
||||
<p>Datei hierher ziehen oder klicken</p>
|
||||
<p class="hint">PDF, JPG, PNG, TIFF • max. {{ max_dateigroesse_mb }} MB</p>
|
||||
</div>
|
||||
<ul class="file-list" data-list="vermogenssituation"></ul>
|
||||
<p class="oder-text">— oder Texteintrag —</p>
|
||||
<textarea name="vermogenssituation_text" placeholder="z.B. 'Keine Änderungen seit letzter Meldung' oder Details zu Änderungen">{{ vermogenssituation_text|default:"" }}</textarea>
|
||||
</div>
|
||||
|
||||
<!-- 4. Weitere Dokumente (optional) -->
|
||||
<div class="kategorie">
|
||||
<h3>Weitere Dokumente (optional)</h3>
|
||||
<p class="hinweis">Mietvertrag, Unterhaltsbelege, sonstige Nachweise</p>
|
||||
<label for="weitere_dokumente">Datei hochladen:</label>
|
||||
<div class="upload-area" data-target="weitere_dokumente">
|
||||
<input type="file" name="weitere_dokumente" id="weitere_dokumente" accept=".pdf,.jpg,.jpeg,.png,.tiff,.tif">
|
||||
<div class="icon">📄</div>
|
||||
<p>Datei hierher ziehen oder klicken</p>
|
||||
<p class="hint">PDF, JPG, PNG, TIFF • max. {{ max_dateigroesse_mb }} MB</p>
|
||||
</div>
|
||||
<ul class="file-list" data-list="weitere_dokumente"></ul>
|
||||
<p class="oder-text">— oder Texteintrag —</p>
|
||||
<textarea name="weitere_dokumente_text" placeholder="Optionale Anmerkungen oder Beschreibung">{{ weitere_dokumente_text|default:"" }}</textarea>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="submit-btn">Unterlagen jetzt einreichen</button>
|
||||
</form>
|
||||
|
||||
<p class="deadline">⏱ Gültig bis: {{ gueltig_bis|date:"d.m.Y" }}</p>
|
||||
</div>
|
||||
<div class="footer">
|
||||
van Hees-Theyssen-Vogel'sche Stiftung • Raesfelder Str. 3 • 46499 Hamminkeln<br>
|
||||
Fragen? Tel. 02858/836780
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
document.querySelectorAll('.upload-area').forEach(area => {
|
||||
const input = area.querySelector('input[type="file"]');
|
||||
const target = area.dataset.target;
|
||||
const list = document.querySelector(`[data-list="${target}"]`);
|
||||
|
||||
function updateList(files) {
|
||||
list.innerHTML = '';
|
||||
Array.from(files).forEach(f => {
|
||||
const li = document.createElement('li');
|
||||
li.textContent = `\u2714 ${f.name} (${(f.size/1024/1024).toFixed(2)} MB)`;
|
||||
list.appendChild(li);
|
||||
});
|
||||
}
|
||||
|
||||
input.addEventListener('change', () => updateList(input.files));
|
||||
area.addEventListener('dragover', e => { e.preventDefault(); area.classList.add('dragover'); });
|
||||
area.addEventListener('dragleave', () => area.classList.remove('dragover'));
|
||||
area.addEventListener('drop', e => {
|
||||
e.preventDefault();
|
||||
area.classList.remove('dragover');
|
||||
input.files = e.dataTransfer.files;
|
||||
updateList(e.dataTransfer.files);
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user