diff --git a/finance/app/templates/hilfe.html b/finance/app/templates/hilfe.html
index 1d9320f..c7ecac3 100644
--- a/finance/app/templates/hilfe.html
+++ b/finance/app/templates/hilfe.html
@@ -95,18 +95,18 @@
Aufteilung: zeigt für einen Monat, welche monatlichen
Kosten je Kategorie anfallen und wie viel der Einkünfte frei verfügbar
bleibt. Grundlage ist immer die Planung (Fixposten, Einmalposten,
- Kredite), nie die tatsächlichen Buchungen: „System-Plan" rechnet mit
+ Kredite), nie die tatsächlichen Buchungen: „System-Plan“ rechnet mit
allen Posten und Krediten ohne Szenario-Änderungen und ist für jeden
Monat wählbar; ein Szenario (mit seinen Änderungen und Krediten) erst ab
dem laufenden Monat. Fixposten werden auf den Monat umgerechnet
(vierteljährlich ÷ 3, jährlich ÷ 12), Einmalposten und Kreditraten zählen
voll im Monat ihrer Fälligkeit, eine Kredit-Auszahlung zählt nicht als
- Einkunft. Die Häkchen „Fixposten", „Einmalposten", „Kredite" gelten für
+ Einkunft. Die Häkchen „Fixposten“, „Einmalposten“, „Kredite“ gelten für
Einnahmen und Ausgaben. Das Tortendiagramm zeigt die Einkünfte (Kosten je
- Kategorie plus „Frei verfügbar"); übersteigen die Kosten die Einkünfte,
+ Kategorie plus „Frei verfügbar“); übersteigen die Kosten die Einkünfte,
zeigt es die Gesamtkosten. Kleine Kategorien (unter 3 %, bzw. ab der
- neunten) sind zu „Übrige" zusammengefasst – höchstens 8 benannte
- Kategorien plus „Übrige" und „Frei verfügbar". Ein Klick auf ein Segment oder
+ neunten) sind zu „Übrige“ zusammengefasst – höchstens 8 benannte
+ Kategorien plus „Übrige“ und „Frei verfügbar“. Ein Klick auf ein Segment oder
einen Legendeneintrag zeigt darunter die Posten dieser Kategorie.
diff --git a/finance/tests/test_aufteilung_gui.py b/finance/tests/test_aufteilung_gui.py
index aeb4a83..38db7ea 100644
--- a/finance/tests/test_aufteilung_gui.py
+++ b/finance/tests/test_aufteilung_gui.py
@@ -276,3 +276,37 @@ def test_drilldown_sonderzeichen(client, db):
assert "kategorie=Haus+%26+Garten" in t
r = _drill(client, kategorie="Haus & Garten")
assert "Haus & Garten: 300,00 € / Monat" in r.text and "Rasen" in r.text
+
+
+def test_monat_vor_jahr_1000_vierstellig(client, db):
+ _login(client)
+ eink, wohnen = Category(name="Einkommen"), Category(name="Wohnen")
+ db.add_all([eink, wohnen])
+ db.flush()
+ db.add_all([
+ RecurringItem(name="Gehalt", amount=D("3000.00"), rhythm="monthly", due_day=1, category_id=eink.id),
+ RecurringItem(name="Miete", amount=D("-1000.00"), rhythm="monthly", due_day=1, category_id=wohnen.id),
+ ])
+ db.commit()
+ r = _get(client, monat="0001-01")
+ assert r.status_code == 200
+ assert 'value="0001-01"' in r.text
+ assert "01.0001" in r.text
+ assert "monat=0001-01" in r.text
+
+
+def test_uebrige_mitglieder_in_legende_der_zweiten_torte(client, db):
+ _login(client)
+ eink, kat = Category(name="Einkommen"), Category(name="Vielfalt")
+ db.add_all([eink, kat])
+ db.flush()
+ db.add(RecurringItem(name="Gehalt", amount=D("3000.00"), rhythm="monthly", due_day=1, category_id=eink.id))
+ db.add(RecurringItem(name="Großposten", amount=D("-1000.00"), rhythm="monthly", due_day=1, category_id=kat.id))
+ for i in range(10):
+ db.add(RecurringItem(name=f"Kleinposten {i}", amount=D("-5.00"), rhythm="monthly",
+ due_day=1, category_id=kat.id))
+ db.commit()
+ t = _drill(client, kategorie="Vielfalt").text
+ legende = re.search(r'