feat: Szenario-Einträge je Stichtag mit Zeitraum und Art Neuer Betrag (A14-T2)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -172,3 +172,25 @@ def test_category_rows_nur_kosten_der_kategorien():
|
||||
assert [r.name for r in category_rows(rs, {"Wohnen", "Versicherung"})] == ["Miete", "Police", "Strom"]
|
||||
assert category_rows(rs, set()) == []
|
||||
assert category_rows(rs, {FREI}) == []
|
||||
|
||||
|
||||
def test_stichtag_ist_faelligkeitstag_im_monat():
|
||||
r = PlainRecurring(1, "R1", D("-200.00"), "monthly", 14, None, None, None)
|
||||
mods = [PlainModifier("recurring", 1, "percent", D("50"), start_date=date(2030, 10, 16))]
|
||||
assert by_name(rows(month=date(2030, 10, 1), recurring=[r], modifiers=mods)) == {"R1": D("-200.00")}
|
||||
assert by_name(rows(month=date(2030, 11, 1), recurring=[r], modifiers=mods)) == {"R1": D("-100.00")}
|
||||
|
||||
|
||||
def test_stichtag_monatsende_geklemmt():
|
||||
# Fällig am 31.: im Februar ist der Stichtag der 28.02. (liegt im Zeitraum).
|
||||
r = PlainRecurring(1, "R1", D("-100.00"), "monthly", 31, None, None, None)
|
||||
mods = [PlainModifier("recurring", 1, "remove", D("0"), end_date=date(2030, 2, 28))]
|
||||
assert rows(month=date(2030, 2, 1), recurring=[r], modifiers=mods) == []
|
||||
assert by_name(rows(month=date(2030, 3, 1), recurring=[r], modifiers=mods)) == {"R1": D("-100.00")}
|
||||
|
||||
|
||||
def test_szenario_zahlung_ohne_recurring_id():
|
||||
r = PlainRecurring(None, "S", D("-30.00"), "monthly", 1, None, None, 1)
|
||||
rs = rows(recurring=[r])
|
||||
assert by_name(rs) == {"S": D("-30.00")}
|
||||
assert (rs[0].recurring_id, rs[0].category) == (None, "Wohnen")
|
||||
|
||||
Reference in New Issue
Block a user