Terminplaner: Widerrufsfunktion im Satzrahmen des Musters, Belehrung nur mit Anschrift und Telefon
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
459efff10a
commit
0c033ab1d2
3 files changed
+56
-42
No files matched your search
@@ -7,8 +7,8 @@
|
||||
*
|
||||
* widerrufsbelehrung: Muster der Anlage 1 und Muster-Widerrufsformular der Anlage 2 zu Art. 246a § 1 Abs. 2 Satz 2 EGBGB
|
||||
* (docs/rechtliches/quellen/, abgerufen 2026-10-02), Gestaltungshinweise fuer einen Dienstleistungsvertrag angewendet:
|
||||
* Fristbeginn „des Vertragsabschlusses.“, Betriebsdaten, Hinweis auf die Widerrufsfunktion als „anderer geeigneter
|
||||
* Hinweis“ (ohne Internetadresse), Wertersatz fuer Dienstleistungen. Alles Uebrige ist der Gesetzestext, unveraendert.
|
||||
* Fristbeginn „des Vertragsabschlusses.“, Betriebsdaten (Name, Anschrift, Telefon, E-Mail, alle Pflicht), Hinweis auf die
|
||||
* Widerrufsfunktion als „anderer geeigneter Hinweis“ (ohne Internetadresse) im woertlichen Satzrahmen, Wertersatz fuer Dienstleistungen. Alles Uebrige ist der Gesetzestext, unveraendert.
|
||||
* Ausgelassen: Textbausteine zu Waren (Besitz, Rueckzahlungsverweigerung, Rueckgabe, Rueckkosten, Wertverlust) und der
|
||||
* Absatz zum elektronischen Webformular (es gibt nur die Widerrufsfunktion). test/termineRechtstexte.test.js prueft
|
||||
* den Wortlaut gegen die Quelldateien.
|
||||
@@ -24,12 +24,21 @@ const ABSATZ = '\n\n'
|
||||
/** Einzeiliger Text: jeder Leerraum (auch Umbrueche) wird zu einem Leerzeichen, Rand getrimmt; Nicht-Text = ''. */
|
||||
const einzeilig = (wert) => (typeof wert === 'string' ? wert.replace(/\s+/g, ' ').trim() : '')
|
||||
|
||||
/** Betriebsdaten fuer die Texte. Name und E-Mail sind Pflicht (die Einstellung prueft sie), Anschrift und Telefon entfallen, wenn leer. */
|
||||
function betriebsdaten(betrieb) {
|
||||
/**
|
||||
* Betriebsdaten fuer die Texte. Name und E-Mail sind immer Pflicht (die Einstellung prueft sie). Mit vollstaendig: true
|
||||
* auch Anschrift und Telefonnummer (das Muster der Anlage 1 verlangt alle vier): fehlt eine Angabe oder ist sie leer,
|
||||
* entsteht ein TypeError, nie ein unvollstaendiger Text.
|
||||
*/
|
||||
function betriebsdaten(betrieb, { vollstaendig = false } = {}) {
|
||||
const name = einzeilig(betrieb?.name)
|
||||
const email = einzeilig(betrieb?.email)
|
||||
if (!name || !email) throw new TypeError('Betriebsname und E-Mail-Adresse sind für die Rechtstexte erforderlich.')
|
||||
return { name, email, adresse: einzeilig(betrieb.adresse), telefon: einzeilig(betrieb.telefon) }
|
||||
const adresse = einzeilig(betrieb.adresse)
|
||||
const telefon = einzeilig(betrieb.telefon)
|
||||
if (vollstaendig && (!adresse || !telefon)) {
|
||||
throw new TypeError('Anschrift und Telefonnummer des Betriebs sind für die Widerrufsbelehrung erforderlich.')
|
||||
}
|
||||
return { name, email, adresse, telefon }
|
||||
}
|
||||
|
||||
const verbinde = (teile) => teile.filter(Boolean).join(', ')
|
||||
@@ -38,10 +47,11 @@ const verbinde = (teile) => teile.filter(Boolean).join(', ')
|
||||
|
||||
const FRIST = 'des Vertragsabschlusses.' // Gestaltungshinweis a): Dienstleistungsvertrag
|
||||
|
||||
// Widerrufsfunktion: „anderer geeigneter Hinweis“ statt Internetadresse, danach der Gesetzeswortlaut.
|
||||
// Widerrufsfunktion: Satzrahmen des Gesetzes wörtlich („Sie können Ihr Widerrufsrecht auch online unter … ausüben.“); in die
|
||||
// Lücke „… [Internetadresse oder anderen geeigneten Hinweis …]“ kommt ein geeigneter Hinweis statt einer Internetadresse.
|
||||
const WIDERRUFSFUNKTION =
|
||||
'Sie können Ihr Widerrufsrecht auch online über die Schaltfläche „Vertrag widerrufen“ ausüben, '
|
||||
+ 'die Sie im Terminbereich auf unserer Website und über den Link „Termin verwalten“ in Ihrer Bestätigungs-E-Mail finden. '
|
||||
'Sie können Ihr Widerrufsrecht auch online unter „Vertrag widerrufen“ (Schaltfläche im Terminbereich auf unserer Website '
|
||||
+ 'sowie Link „Termin verwalten“ in Ihrer Bestätigungs-E-Mail) ausüben. '
|
||||
+ 'Wenn Sie diese Online-Funktion nutzen, übermitteln wir Ihnen auf einem dauerhaften Datenträger (z. B. durch eine E-Mail) '
|
||||
+ 'unverzüglich eine Eingangsbestätigung mit Informationen zum Inhalt der Widerrufserklärung sowie dem Datum und der Uhrzeit ihres Eingangs.'
|
||||
|
||||
@@ -53,7 +63,7 @@ const WERTERSATZ =
|
||||
|
||||
/** Kontaktangaben fuer „Um Ihr Widerrufsrecht auszuüben, müssen Sie uns (…)“: Name, Anschrift, Telefonnummer, E-Mail-Adresse. */
|
||||
function kontakt({ name, adresse, telefon, email }) {
|
||||
return verbinde([name, adresse, telefon && `Telefon: ${telefon}`, `E-Mail: ${email}`])
|
||||
return verbinde([name, adresse, `Telefon: ${telefon}`, `E-Mail: ${email}`])
|
||||
}
|
||||
|
||||
function belehrungsAbsaetze(daten) {
|
||||
@@ -98,11 +108,12 @@ function formularAbsaetze({ name, adresse, email }) {
|
||||
|
||||
/**
|
||||
* Widerrufsbelehrung und Muster-Widerrufsformular fuer einen Dienstleistungs-Termin, Sie-Form, als Text mit Zeilenumbruechen.
|
||||
* betrieb: { name, email, adresse?, telefon? } aus der Einstellung. Fehlen Name oder E-Mail: TypeError. Fehlende Anschrift
|
||||
* oder Telefonnummer entfallen aus dem Text (die Einstellung verlangt sie nicht; das Portal sollte die Anschrift verlangen).
|
||||
* betrieb: { name, email, adresse, telefon } aus der Einstellung, alle vier Pflicht. Fehlt eine Angabe oder ist sie leer: TypeError
|
||||
* (eine unvollstaendige gesetzliche Belehrung wird nie stillschweigend erzeugt). Die Einstellungspruefung soll Anschrift und
|
||||
* Telefon verlangen, sobald Gaeste ein Widerrufsrecht haben koennen (spaeterer Task); bis dahin faengt diese Funktion es ab.
|
||||
*/
|
||||
export function widerrufsbelehrung(betrieb) {
|
||||
const daten = betriebsdaten(betrieb)
|
||||
const daten = betriebsdaten(betrieb, { vollstaendig: true })
|
||||
return [...belehrungsAbsaetze(daten), ...formularAbsaetze(daten)].join(ABSATZ)
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user