- Bedingungen § 8: 12 Monate ab Leistungsbeginn, Kuendigung zum Ende bis 1 Monat vorher, danach monatlich; Sonderkuendigung bei Geschaeftsaufgabe (1 Monat Frist), einvernehmliche Beendigung jederzeit; gilt beidseitig - Kuendigungslogik computeCancellationDate (Mindestlaufzeit, verpasste Frist, Wunschtermin, Geschaeftsaufgabe, Monatsende) + cancelAt gespiegelt - Stripe-Kundenportal: Kuendigung aus (Stripe kennt keine Mindestlaufzeit) - Bestellseite, Abo-Karte, Vertragsbestaetigung, Checkout-Text, PDF, Leitfaden angepasst; termsVersion 2026-09-25-v3 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
63 lines
3.0 KiB
HTML
63 lines
3.0 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>Verträge hier kündigen – WEBklar</title>
|
||
<link rel="stylesheet" href="/legal-form.css">
|
||
</head>
|
||
<body>
|
||
<main>
|
||
<div class="brandline">WEBKLAR</div>
|
||
<h1>Verträge hier kündigen</h1>
|
||
|
||
<form id="decl-form" class="card" novalidate>
|
||
<fieldset>
|
||
<legend data-label-for="kind" data-label="Art der Kündigung">Art der Kündigung</legend>
|
||
<label class="radio"><input type="radio" name="kind" value="ordentlich" data-text="Ordentliche Kündigung" checked> Ordentliche Kündigung</label>
|
||
<label class="radio"><input type="radio" name="kind" value="ausserordentlich" data-text="Außerordentliche Kündigung"> Außerordentliche Kündigung aus wichtigem Grund</label>
|
||
<label class="radio"><input type="radio" name="kind" value="geschaeftsaufgabe" data-text="Sonderkündigung wegen Geschäftsaufgabe"> Sonderkündigung wegen Geschäftsaufgabe</label>
|
||
</fieldset>
|
||
<div id="reason-wrap" class="hidden">
|
||
<label for="reason" data-label-for="reason" data-label="Kündigungsgrund">Kündigungsgrund</label>
|
||
<textarea id="reason" name="reason" maxlength="2000"></textarea>
|
||
</div>
|
||
|
||
<label for="name" data-label-for="name" data-label="Name">Name</label>
|
||
<input id="name" name="name" autocomplete="name" required maxlength="200">
|
||
|
||
<label for="email" data-label-for="email" data-label="E-Mail für die Bestätigung">E-Mail-Adresse <small>(dorthin schicken wir die Bestätigung)</small></label>
|
||
<input id="email" name="email" type="email" autocomplete="email" required maxlength="255">
|
||
|
||
<label for="customerNumber" data-label-for="customerNumber" data-label="Kundennummer">Kundennummer <small>(optional)</small></label>
|
||
<input id="customerNumber" name="customerNumber" maxlength="50">
|
||
|
||
<label>Vertrag</label>
|
||
<input value="WEBklar Wartungs-Abo" disabled>
|
||
|
||
<fieldset>
|
||
<legend>Zeitpunkt</legend>
|
||
<label class="radio"><input type="radio" name="when" value="naechstmoeglich" checked> zum nächstmöglichen Zeitpunkt</label>
|
||
<label class="radio"><input type="radio" name="when" value="datum"> zu einem bestimmten Datum</label>
|
||
<input type="date" id="effective-date" class="hidden">
|
||
</fieldset>
|
||
|
||
<p class="error hidden" id="form-error"></p>
|
||
<button type="submit" class="big-btn">Jetzt kündigen</button>
|
||
</form>
|
||
|
||
<div id="done" class="card ok hidden">
|
||
<h2 style="margin-top:0">Ihre Kündigung ist eingegangen</h2>
|
||
<p>Eingang: <strong id="done-at"></strong></p>
|
||
<dl id="done-list"></dl>
|
||
<p>Die Bestätigung mit dem Zeitpunkt, zu dem Ihr Vertrag endet, haben wir an Ihre E-Mail-Adresse geschickt.</p>
|
||
<button type="button" class="print-btn" id="print-btn">Diese Bestätigung drucken oder als PDF speichern</button>
|
||
</div>
|
||
</main>
|
||
<script src="/legal-form.js"></script>
|
||
<script>
|
||
initLegalForm({ endpoint: '/api/abo/public/cancel', fields: ['kind', 'reason', 'name', 'email', 'customerNumber', 'effective'] })
|
||
</script>
|
||
</body>
|
||
</html>
|