diff --git a/finance/app/templates/base.html b/finance/app/templates/base.html index edacb9e..431ed95 100644 --- a/finance/app/templates/base.html +++ b/finance/app/templates/base.html @@ -50,6 +50,14 @@ out[k] = null; } else if (kind === 'int') { out[k] = parseInt(v, 10); + } else if (kind === 'amount') { + // Deutsche Betragseingabe: "1.234,56" -> "1234.56". Ohne Komma + // bleibt der Wert unveraendert (Punkt-Eingaben funktionieren weiter). + var s = String(v).replace(/[\s€]/g, ''); + if (s.indexOf(',') !== -1) { + s = s.replace(/\./g, '').replace(',', '.'); + } + out[k] = s; } else { out[k] = v; } diff --git a/finance/app/templates/index.html b/finance/app/templates/index.html index c47a71d..7cf6455 100644 --- a/finance/app/templates/index.html +++ b/finance/app/templates/index.html @@ -46,7 +46,7 @@ hx-swap="none" hx-on::after-request="if(event.detail.successful){window.location.reload()}"> - diff --git a/finance/app/templates/planning.html b/finance/app/templates/planning.html index e77d5e1..526b803 100644 --- a/finance/app/templates/planning.html +++ b/finance/app/templates/planning.html @@ -36,7 +36,7 @@
- + - + - - + + - +
diff --git a/finance/tests/test_gui.py b/finance/tests/test_gui.py index 095643f..101423c 100644 --- a/finance/tests/test_gui.py +++ b/finance/tests/test_gui.py @@ -66,6 +66,22 @@ def test_planung_zeigt_deutsche_labels(client, db): assert "-600,00" in r.text +def test_betragsfelder_haben_amount_typ_und_deutsche_platzhalter(client, db): + client.post("/login", data={"username": "admin", "password": "geheim"}) + planung = client.get("/planung").text + # Fixposten-, Einmalposten-, Kredit-Formulare senden deutsche Eingaben: + assert planung.count('data-type="amount"') >= 4 + assert '-49,99' in planung and '-2000,00' in planung + assert '-49.99' not in planung and '-2000.00' not in planung + # Anker-Formular wird nur je Konto gerendert - ohne Konto in der DB gaebe + # es keine Zeile mit dem Anker-Input (Template-Zweig "Keine Konten + # angelegt"), daher hier ein Konto anlegen wie in den Nachbartests. + db.add(Account(bank="dkb", iban="DE-AMT-1", name="Amount-Test", type="giro")) + db.commit() + index = client.get("/").text + assert 'placeholder="500,00"' in index + + def test_import_page_has_dropzone_and_list(client): client.post("/login", data={"username": "admin", "password": "geheim"}) r = client.get("/import")