From 6e2404774ae2e340860ec210185e4c1ed817220f Mon Sep 17 00:00:00 2001 From: Rob Date: Sat, 28 Mar 2026 09:54:23 +0100 Subject: [PATCH] Summenfelder mit Punkt-Dezimaltrenner fuer PDF-JavaScript Nullformat Kompatibilitaet --- src/pdf_filler.py | 10 ++++++---- tests/test_pdf_filler.py | 14 +++++++------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/pdf_filler.py b/src/pdf_filler.py index 627afc5..b5f63a4 100644 --- a/src/pdf_filler.py +++ b/src/pdf_filler.py @@ -79,11 +79,13 @@ def build_field_dict( fields[f"plan.{idx}"] = "" fields[f"{pauschale_prefix}.{idx}"] = "0" - # Summary fields (replicate PDF JavaScript calculations) + # Summary fields (replicate PDF JavaScript calculations). + # Values use period decimal separator because the PDF's JavaScript + # format action (Nullformat) parses them as JS numbers. pauschale_5_euro = pauschale_5_count * 8.6 - fields["pauschale_5_sum"] = f"{pauschale_5_euro:.2f}".replace(".", ",") - fields["pauschale_25_sum"] = "0,00" - fields["pauschale_sum"] = f"{pauschale_5_euro:.2f}".replace(".", ",") + fields["pauschale_5_sum"] = f"{pauschale_5_euro:.2f}" + fields["pauschale_25_sum"] = "0.00" + fields["pauschale_sum"] = f"{pauschale_5_euro:.2f}" fields["anwesend_sum"] = str(pauschale_5_count) return fields diff --git a/tests/test_pdf_filler.py b/tests/test_pdf_filler.py index 9c69d9d..36d6bb9 100644 --- a/tests/test_pdf_filler.py +++ b/tests/test_pdf_filler.py @@ -178,28 +178,28 @@ class TestSummaryFields: assert fields["anwesend_sum"] == "2" def test_pauschale_5_sum_euro(self, cfg): - """pauschale_5_sum = qualifying days * 8,60.""" + """pauschale_5_sum = qualifying days * 8.60 (period decimal for JS).""" entries = [_present(1, 6.0), _present(2, 7.0), _present(3, 5.0)] fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1)) - assert fields["pauschale_5_sum"] == "17,20" # 2 * 8.60 + assert fields["pauschale_5_sum"] == "17.20" # 2 * 8.60 def test_pauschale_sum_equals_5_sum(self, cfg): entries = [_present(1, 6.0)] fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1)) - assert fields["pauschale_sum"] == "8,60" - assert fields["pauschale_25_sum"] == "0,00" + assert fields["pauschale_sum"] == "8.60" + assert fields["pauschale_25_sum"] == "0.00" def test_no_qualifying_days(self, cfg): entries = [_absent(1, "K"), _present(2, 4.0)] fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1)) assert fields["anwesend_sum"] == "0" - assert fields["pauschale_5_sum"] == "0,00" - assert fields["pauschale_sum"] == "0,00" + assert fields["pauschale_5_sum"] == "0.00" + assert fields["pauschale_sum"] == "0.00" def test_empty_attendance(self, cfg): fields = build_field_dict(_make_attendance(), cfg, date(2026, 2, 1)) assert fields["anwesend_sum"] == "0" - assert fields["pauschale_5_sum"] == "0,00" + assert fields["pauschale_5_sum"] == "0.00" # ---------------------------------------------------------------------------