Warenwirtschaft: N-6 — Punkt mit 1-2 Nachkommastellen = Dezimaltrenner (Kundenentscheid 15.07.2026)

Neuer Helper reFormatWawiNumber(): '5.1'/'5.12' werden als 5,1/5,12
gelesen (kommt beim Kopieren von Daten vor); '1.500' bleibt Tausender.
Gilt nur für die WaWi-Eingaben (Mengen, Preise, Gewichte, Rezeptur) —
reFormatNumber() app-weit unverändert. JS-Parser (parseGerman,
parseDeNumber) auf dieselbe Regel vereinheitlicht; parseDeNumber
behandelte '1.500' bisher sogar als 1,5.

Tests: +1 (Parsing-Matrix).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-15 13:25:35 +00:00
parent 9b6c9def97
commit 016e8bbbd8
11 changed files with 60 additions and 31 deletions

View file

@ -35,6 +35,11 @@
if (!value) {
return 0;
}
// Audit N-6: einzelner Punkt mit 1–2 Nachkommastellen = Dezimaltrenner
// ("5.1" = 5,1) — identische Regel wie serverseitig (reFormatWawiNumber).
if (/^-?\d+\.\d{1,2}$/.test(value)) {
return parseFloat(value) || 0;
}
return parseFloat(value.replace(/\./g, '').replace(',', '.')) || 0;
}

View file

@ -80,8 +80,13 @@
function parseDeNumber(val) {
if (val === undefined || val === null || val === '') return NaN;
var s = String(val).replace(/\s/g, '').replace(',', '.');
var n = parseFloat(s);
var s = String(val).replace(/\s/g, '');
// Audit N-6: einzelner Punkt mit 1–2 Nachkommastellen = Dezimaltrenner;
// sonst deutsche Konvention (Punkt = Tausender) — wie serverseitig.
if (!/^-?\d+\.\d{1,2}$/.test(s)) {
s = s.replace(/\./g, '');
}
var n = parseFloat(s.replace(',', '.'));
return isNaN(n) ? NaN : n;
}