Start-/Endzeit optional: ohne Zeiten Arbeitszeit Kunde & Mehrarbeit leer
- Start- und Endzeit nicht mehr vorbelegt (leeres Feld, Platzhalter HH:MM) - TimeInput erlaubt Leeren eines Feldes - Validierung: beide Zeiten zusammen angeben oder beide leer lassen - Ohne Zeiten zeigen Vorschau und Liste "—" für Arbeitszeit Kunde und Mehrarbeit (Eintrag mit nur Reisezeit/Vertriebsunterstützung möglich) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,11 @@ export function mehrarbeit(arbeitszeitStd: number, pauseStd: number): number {
|
||||
return arbeitszeitStd - 8 - pauseStd;
|
||||
}
|
||||
|
||||
/** True, wenn sowohl Beginn als auch Ende gültige Uhrzeiten sind (beide angegeben). */
|
||||
export function hatZeiten(beginn: string, ende: string): boolean {
|
||||
return parseHM(beginn) !== null && parseHM(ende) !== null;
|
||||
}
|
||||
|
||||
/** Deutscher Wochentagsname für ein "YYYY-MM-DD"-Datum, oder "" bei ungültig. */
|
||||
export function weekdayName(datum: string): string {
|
||||
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(datum ?? '');
|
||||
|
||||
+7
-2
@@ -14,10 +14,15 @@ export function parseArbeitszeitInput(body: unknown): ArbeitszeitInput {
|
||||
const ort = String(b.ort ?? '') as Ort;
|
||||
if (!ORTE.includes(ort)) throw new Error('Ungültiger Ort.');
|
||||
|
||||
// Beginn/Ende sind optional. Wenn angegeben, müssen sie gültig sein;
|
||||
// entweder beide leer oder beide gesetzt.
|
||||
const beginn = String(b.beginn ?? '');
|
||||
const ende = String(b.ende ?? '');
|
||||
if (parseHM(beginn) === null) throw new Error('Ungültige Startzeit.');
|
||||
if (parseHM(ende) === null) throw new Error('Ungültige Endzeit.');
|
||||
if (beginn !== '' && parseHM(beginn) === null) throw new Error('Ungültige Startzeit.');
|
||||
if (ende !== '' && parseHM(ende) === null) throw new Error('Ungültige Endzeit.');
|
||||
if ((beginn === '') !== (ende === '')) {
|
||||
throw new Error('Bitte Start- und Endzeit gemeinsam angeben oder beide leer lassen.');
|
||||
}
|
||||
|
||||
const reisezeit = toNumber(b.reisezeit, 0);
|
||||
const vertriebsunterstuetzung = toNumber(b.vertriebsunterstuetzung, 2);
|
||||
|
||||
Reference in New Issue
Block a user