v1.32: deutsches Datumsformat in allen Modulen (fmtDatum, ISO-Normalisierung)

This commit is contained in:
2026-10-04 18:51:00 +02:00
parent 18a35dbac9
commit 7616af73cf
11 changed files with 55 additions and 16 deletions
+7 -2
View File
@@ -211,6 +211,11 @@ const mapBeleg = (b) => ({
const deutschesDatum = () => new Date().toLocaleDateString('de-DE')
const deutschesDatumZeit = () => new Date().toLocaleString('de-DE')
/** ISO-Eingaben (YYYY-MM-DD, z. B. aus date-Feldern) in das deutsche Format wandeln. */
const datumDeutsch = (s) => {
const iso = /^(\d{4})-(\d{2})-(\d{2})$/.exec(String(s || '').trim())
return iso ? `${iso[3]}.${iso[2]}.${iso[1]}` : String(s || '').trim()
}
// ── Health ───────────────────────────────────────────────────
app.get('/api/healthz', async (_req, res) => {
@@ -566,7 +571,7 @@ app.post('/api/meters', auth, adminOnly, async (req, res, next) => {
if (!ZAEHLER_ARTEN.includes(art)) return res.status(400).json({ fehler: 'Ungültige Zählerart.' })
const standZahl = Number(stand)
if (!Number.isFinite(standZahl) || standZahl < 0) return res.status(400).json({ fehler: 'Ungültiger Zählerstand.' })
const datum = String(standAm || '').trim() || deutschesDatum()
const datum = datumDeutsch(standAm) || deutschesDatum()
if (!zaehlerVerlauf.datumGueltig(datum)) return res.status(400).json({ fehler: 'Ungültiges Ablesedatum.' })
// Wohnung angegeben → Haus aus der Wohnung ableiten; sonst muss das Haus im Body stehen
let einheitId = unitId ? String(unitId) : null
@@ -665,7 +670,7 @@ app.post('/api/meters/:id/readings', auth, async (req, res, next) => {
const { stand, standAm } = req.body || {}
const standZahl = Number(stand)
if (!Number.isFinite(standZahl) || standZahl < 0) return res.status(400).json({ fehler: 'Ungültiger Zählerstand.' })
const datum = String(standAm || '').trim() || deutschesDatum()
const datum = datumDeutsch(standAm) || deutschesDatum()
if (!zaehlerVerlauf.datumGueltig(datum)) return res.status(400).json({ fehler: 'Ungültiges Ablesedatum.' })
const { eintrag, anomalie, grund } = await zaehlerVerlauf.standEintragen({
meter: m, stand: standZahl, standAm: datum,