Summenfelder mit Punkt-Dezimaltrenner fuer PDF-JavaScript Nullformat Kompatibilitaet
This commit is contained in:
1 parent
4001bb78f5
commit
6e2404774a
2 files changed
+13
-11
No files matched your search
+6
-4
@@ -79,11 +79,13 @@ def build_field_dict(
|
|||||||
fields[f"plan.{idx}"] = ""
|
fields[f"plan.{idx}"] = ""
|
||||||
fields[f"{pauschale_prefix}.{idx}"] = "0"
|
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
|
pauschale_5_euro = pauschale_5_count * 8.6
|
||||||
fields["pauschale_5_sum"] = f"{pauschale_5_euro:.2f}".replace(".", ",")
|
fields["pauschale_5_sum"] = f"{pauschale_5_euro:.2f}"
|
||||||
fields["pauschale_25_sum"] = "0,00"
|
fields["pauschale_25_sum"] = "0.00"
|
||||||
fields["pauschale_sum"] = f"{pauschale_5_euro:.2f}".replace(".", ",")
|
fields["pauschale_sum"] = f"{pauschale_5_euro:.2f}"
|
||||||
fields["anwesend_sum"] = str(pauschale_5_count)
|
fields["anwesend_sum"] = str(pauschale_5_count)
|
||||||
|
|
||||||
return fields
|
return fields
|
||||||
|
|||||||
@@ -178,28 +178,28 @@ class TestSummaryFields:
|
|||||||
assert fields["anwesend_sum"] == "2"
|
assert fields["anwesend_sum"] == "2"
|
||||||
|
|
||||||
def test_pauschale_5_sum_euro(self, cfg):
|
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)]
|
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))
|
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):
|
def test_pauschale_sum_equals_5_sum(self, cfg):
|
||||||
entries = [_present(1, 6.0)]
|
entries = [_present(1, 6.0)]
|
||||||
fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1))
|
fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1))
|
||||||
assert fields["pauschale_sum"] == "8,60"
|
assert fields["pauschale_sum"] == "8.60"
|
||||||
assert fields["pauschale_25_sum"] == "0,00"
|
assert fields["pauschale_25_sum"] == "0.00"
|
||||||
|
|
||||||
def test_no_qualifying_days(self, cfg):
|
def test_no_qualifying_days(self, cfg):
|
||||||
entries = [_absent(1, "K"), _present(2, 4.0)]
|
entries = [_absent(1, "K"), _present(2, 4.0)]
|
||||||
fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1))
|
fields = build_field_dict(_make_attendance(*entries), cfg, date(2026, 2, 1))
|
||||||
assert fields["anwesend_sum"] == "0"
|
assert fields["anwesend_sum"] == "0"
|
||||||
assert fields["pauschale_5_sum"] == "0,00"
|
assert fields["pauschale_5_sum"] == "0.00"
|
||||||
assert fields["pauschale_sum"] == "0,00"
|
assert fields["pauschale_sum"] == "0.00"
|
||||||
|
|
||||||
def test_empty_attendance(self, cfg):
|
def test_empty_attendance(self, cfg):
|
||||||
fields = build_field_dict(_make_attendance(), cfg, date(2026, 2, 1))
|
fields = build_field_dict(_make_attendance(), cfg, date(2026, 2, 1))
|
||||||
assert fields["anwesend_sum"] == "0"
|
assert fields["anwesend_sum"] == "0"
|
||||||
assert fields["pauschale_5_sum"] == "0,00"
|
assert fields["pauschale_5_sum"] == "0.00"
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in new issue
Block a user