Terminplaner: Handeintraege verlangen nur den Namen, Bestaetigung braucht eine Adresse

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-03 08:17:43 +00:00
1 parent be49d38e0c
commit 589f5088a6
3 files changed
+65 -14

No files matched your search

+8 -7
View File
@@ -262,11 +262,12 @@ async function legeBelegungAn(ctx, id, daten, ressourceId, start, block, now, be
/**
* Termin von Hand eintragen (Telefon, Laufkundschaft): `quelle 'manuell'`, sofort `bestaetigt`, `verbraucher false`
* (kein Widerruf, keine Belehrung durch das System: bei telefonischen Buchungen Sache des Betriebs). Eingabe und Pruefung
* wie beim Gast (Leistung, Person oder "egal", Tag, Uhrzeit, Name, Telefon, Nachricht, Zusatzfelder), aber ohne Zustimmungen
* und Erinnerung, die E-Mail-Adresse ist freiwillig. Die Zeit muss frei sein (freie Zeiten der Leistung), nur Vorlauf und
* Horizont gelten nicht (ohneRegeln; nie die Vergangenheit, nie belegte Zellen). G02 (Einladung, Verwaltungslink, ohne
* Widerrufsbelehrung) geht nur mit `bestaetigungSenden: true` und einer Adresse an den Gast. Kein K20: der Betrieb weiss es.
* (kein Widerruf, keine Belehrung durch das System: bei telefonischen Buchungen Sache des Betriebs). Pflicht ist nur der
* Name; E-Mail, Telefon, Nachricht und Zusatzfelder sind freiwillig, egal was gastFelder fuer Gaeste vorgibt, werden aber,
* wenn angegeben, wie beim Gast geprueft. Leistung, Person oder "egal", Tag und Uhrzeit wie beim Gast, ohne Zustimmungen
* und Erinnerung. Die Zeit muss frei sein (freie Zeiten der Leistung), nur Vorlauf und Horizont gelten nicht (ohneRegeln;
* nie die Vergangenheit, nie belegte Zellen). G02 (Einladung, Verwaltungslink, ohne Widerrufsbelehrung) geht nur mit
* `bestaetigungSenden: true` an den Gast; dann ist die E-Mail-Adresse Pflicht (400 Feld email). Kein K20: der Betrieb weiss es.
* @param {{ feature: object, einstellung: object }} ctx Kontext (kontext.js)
* @param {object} roh { leistung, ressource, tag, zeit, name, email?, telefon?, nachricht?, zusatz?, bestaetigungSenden? }
* @param {Date} now
@@ -277,11 +278,11 @@ export async function manuell(ctx, roh, now) {
pruefeNow(now, 'manuell')
pruefeKontext(ctx, 'manuell')
const e = ctx.einstellung
const g = pruefeEingabe(e, roh, now, { manuell: true })
const senden = roh?.bestaetigungSenden === true
const g = pruefeEingabe(e, roh, now, { manuell: true, bestaetigung: senden })
if (roh.bestaetigungSenden !== undefined && roh.bestaetigungSenden !== null && typeof roh.bestaetigungSenden !== 'boolean') {
throw fehlerMit(400, { bestaetigungSenden: MELDUNG.ungueltig })
}
const senden = roh.bestaetigungSenden === true && g.email !== ''
const { start, ressourceId } = await pruefeSlot(ctx, g, now, { ohneRegeln: true })
const block = blockEnde(start, g.leistung)