From d0706772bec573fe06ddde5ee5ed6a404292b62f Mon Sep 17 00:00:00 2001 From: Janne Wulf Date: Sun, 15 Mar 2026 14:25:35 +0100 Subject: [PATCH 1/3] Fix tax signs in old style events --- pytr/event.py | 3 +++ tests/test_events.py | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/pytr/event.py b/pytr/event.py index 0587e77..a24b591 100644 --- a/pytr/event.py +++ b/pytr/event.py @@ -703,6 +703,9 @@ def _parse_shares_value_fees_taxes_note( dump_dict["subtitle"] = taxes_dict["title"] dump_dict["type"] = "taxes" taxes = cls._parse_float_from_text_value(taxes_dict.get("detail", {}).get("text", ""), dump_dict) + if taxes_dict.get("title") == "Steuern": + # old style event + taxes = -taxes # no logging here because events may or may not have taxes if ( diff --git a/tests/test_events.py b/tests/test_events.py index 9dba310..5d13d5a 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -593,7 +593,7 @@ def test_events(): "isin": "LU0392494562", "shares": 32, "value": 30.21, - "taxes": 6.83, + "taxes": -6.83, "transactions": [ { "Datum": "2024-12-31T23:59:59", @@ -602,7 +602,7 @@ def test_events(): "Notiz": "MSCI World USD (Dist)", "ISIN": "LU0392494562", "Stück": 32.0, - "Steuern": -6.83, + "Steuern": 6.83, } ], }, From e14cb2d99024450054c5d46d28b8a9567e541796 Mon Sep 17 00:00:00 2001 From: Janne Wulf Date: Sun, 15 Mar 2026 20:21:29 +0100 Subject: [PATCH 2/3] Fix tax signs in old style events for interest --- pytr/event.py | 5 ++++- tests/test_events.py | 16 ++++++++-------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/pytr/event.py b/pytr/event.py index a24b591..12bb317 100644 --- a/pytr/event.py +++ b/pytr/event.py @@ -704,7 +704,7 @@ def _parse_shares_value_fees_taxes_note( dump_dict["type"] = "taxes" taxes = cls._parse_float_from_text_value(taxes_dict.get("detail", {}).get("text", ""), dump_dict) if taxes_dict.get("title") == "Steuern": - # old style event + get_event_logger().info(f"Flip tax sign. {dump_dict}: {taxes} -> {-taxes}") taxes = -taxes # no logging here because events may or may not have taxes @@ -777,6 +777,9 @@ def _parse_taxes(cls, event_dict: Dict[Any, Any]) -> Optional[float]: taxes = cls._parse_float_from_text_value( taxes_dict.get("detail", {}).get("text", ""), dump_dict, pref_locale ) + if taxes_dict.get("title") == "Steuern": + get_event_logger().info(f"Flip tax sign. {dump_dict}: {taxes} -> {-taxes}") + taxes = -taxes # no logging here because events may or may not have taxes return taxes diff --git a/tests/test_events.py b/tests/test_events.py index 5d13d5a..18f483c 100644 --- a/tests/test_events.py +++ b/tests/test_events.py @@ -801,14 +801,14 @@ def test_events(): "event_type": PPEventType.INTEREST, "title": "Zinsen", "value": 11.76, - "taxes": 4.51, + "taxes": -4.51, "transactions": [ { "Datum": "2024-09-01T16:39:48", "Typ": "Zinsen", "Wert": 11.76, "Notiz": "Zinsen", - "Steuern": -4.51, + "Steuern": 4.51, } ], }, @@ -817,14 +817,14 @@ def test_events(): "event_type": PPEventType.INTEREST, "title": "Zinsen", "value": 11.76, - "taxes": 4.51, + "taxes": -4.51, "transactions": [ { "Datum": "2024-09-01T16:39:48", "Typ": "Zinsen", "Wert": 11.76, "Notiz": "Zinsen", - "Steuern": -4.51, + "Steuern": 4.51, } ], }, @@ -1685,14 +1685,14 @@ def test_events(): "event_type": PPEventType.INTEREST, "title": "Zinsen", "value": 4.87, - "taxes": 1.87, + "taxes": -1.87, "transactions": [ { "Datum": "2025-07-01T06:46:37", "Typ": "Zinsen", "Wert": 4.87, "Notiz": "Zinsen", - "Steuern": -1.87, + "Steuern": 1.87, } ], }, @@ -1701,14 +1701,14 @@ def test_events(): "event_type": PPEventType.INTEREST, "title": "Zinsen", "value": 4.87, - "taxes": 1.87, + "taxes": -1.87, "transactions": [ { "Datum": "2025-07-01T06:46:37", "Typ": "Zinsen", "Wert": 4.87, "Notiz": "Zinsen", - "Steuern": -1.87, + "Steuern": 1.87, } ], }, From 9cfb37f885b093241c1586bd7ccda7ac88cf6586 Mon Sep 17 00:00:00 2001 From: Janne Wulf Date: Sun, 15 Mar 2026 20:24:44 +0100 Subject: [PATCH 3/3] Remove log statement --- pytr/event.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pytr/event.py b/pytr/event.py index 12bb317..21886a9 100644 --- a/pytr/event.py +++ b/pytr/event.py @@ -704,7 +704,6 @@ def _parse_shares_value_fees_taxes_note( dump_dict["type"] = "taxes" taxes = cls._parse_float_from_text_value(taxes_dict.get("detail", {}).get("text", ""), dump_dict) if taxes_dict.get("title") == "Steuern": - get_event_logger().info(f"Flip tax sign. {dump_dict}: {taxes} -> {-taxes}") taxes = -taxes # no logging here because events may or may not have taxes @@ -778,7 +777,6 @@ def _parse_taxes(cls, event_dict: Dict[Any, Any]) -> Optional[float]: taxes_dict.get("detail", {}).get("text", ""), dump_dict, pref_locale ) if taxes_dict.get("title") == "Steuern": - get_event_logger().info(f"Flip tax sign. {dump_dict}: {taxes} -> {-taxes}") taxes = -taxes # no logging here because events may or may not have taxes