diff --git a/.agents/MEMORY.md b/.agents/MEMORY.md index 61edf59..81c2e66 100644 --- a/.agents/MEMORY.md +++ b/.agents/MEMORY.md @@ -2,6 +2,19 @@ ## Current focus +**GP3 Lohnsteuer im Kern umgesetzt und grün (52/52 Tests) — GP4 +SV/DB (AP4) als Nächstes** (2026-09-11): Kern 19.0.2.0.0 +(`lohnsteuer.py` § 33/§ 66 kumulativ-Rollung/§ 67 Sechstel-Aufrollung/ +§ 68, Lohnsteuertage 30/Monat, user-Bemessungsformeln) + +`rule_parameters_lst_2026.xml` + Flags; privat 19.0.3.0.0 (dünne +SVDN_*/LST-Regeln, B13/B14/UE-§-68-Flags). P0: AN-AB entfallen +(Reform), Verkehrs-AB 496 €, SV monatlich stets voll (60 % = nur +Veranlagung — RQ-5 korrigiert), § 124b Z 440: 15 ÜStd/170 € 2026. +D4: result_rules-Threading (Zeilen erst nach Regelschleife), +result_qty für Stundendarstellung; TASY-Wizard-Latenzfehler +behoben (b64-Dekode + Werte-Records-API), TASY-Suite erstmals +grün. Parallel lief die 3. RIS-Runde des Konflikt-Agents: + **3. RIS-Runde integriert (11.09.2026, `.additional_docs/ris_normtexte/`)** — A-Punkte gegen die Tagesfassung textverifiziert; Integration in RQ/ PLAN/RUNBOOK/KB-KONFLIKTE + 5 Layer-2-Abgleichnotizen. **A1-Korrektur:** @@ -82,6 +95,35 @@ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“). ## Completed +- **GP3 Lohnsteuer komplett im Kern umgesetzt (52/52 grün)** + (2026-09-11): `l10n_at_hr_payroll` 19.0.2.0.0 — + `models/lohnsteuer.py` (§ 33-Zonentarif; § 66 kumulativ mit + Rollung: Lohnsteuertage 30/Monat [user], Teilmonat § 66 Abs 3, + JBG = Bemessung × Faktor − 132/60-Pauschalen, Absetzbeträge + 496/612/828/+273, AVB/AVAB via Vertrags-Feld; § 67: Sechstel = + kumulierte laufende Brutto × 60 ÷ Lohnsteuertage, Fixsatz- + Pakete 620-frei/24.380-6/25.000-27/33.333-35,75, Freigrenze + 2.615 → tarifisch, Abs 10-Überschuss → LSt-lfd, Günstig- + Aufrollung je SZ-Zahlung, Abs 12 SV-SZ vorher; § 68-Buckets + szfn/ue_std mit zuschlagsanteil-Quote + Stunden-Caps 15/170 + versioniert; DN-SV kv/pv/av/ak/wf HBG-capped, Wien 0,75 via + Company-Flag; Fünftelregelung-Utility), + `data/rule_parameters_lst_2026.xml`, Flags auf hr.salary.rule/ + hr.version/res.company. Laufzeit-Architektur: dünne Regeln + reichen `result_rules` (localdict) an die Kern-Computes — + compute_sheet legt Zeilen erst NACH der Regelschleife an; + Code-Regeln: Menge über `result_qty` (quantity-Feld nur fix/%). + TASY-Wizard: 2 Latenzfehler behoben (Binary-b64-Dekode in + `_tasy_root`; `_get_parameter_from_code` liefert geparste + Werte/None, nicht Records → `_line_vals`/Test_01 korrigiert) — + TASY-Suite 4/4 erstmals laufend. Privat 19.0.3.0.0: + salary_rules_lst_private.xml (SVDN_KV/PV/AV/AK/WF, LST_LFD, + LST_SZ; Sequenzen 60-71), GP2-Regeln per-unit + result_qty + + Bemessungs-Flags (KVGEO/UE_*/MEHR_*/NACHT_SV laufend, B13/B14/ + B14_RUECK sonstig, §-68-Buckets). Tests: Kern 13 + TASY 4 + + privat 8/21/6 = **52/52 grün**; Rechenfälle + `docs/rechenfaelle/lohnsteuer.md` (RF-L1–L8). + - **GP2 Entgelt-Engine General-AT umgesetzt (29/29 grün)** (2026-09-11): `l10n_at_hr_payroll_private` 19.0.2.0.0 — `data/structure_private.xml` (Type/Structure/ATP-Kategorien, @@ -931,5 +973,7 @@ B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“). `test_kv_katalog` 8/8 + `test_entgelt_private` 21/21 auf `odoo_dev`; Rechenfall-Fixtures unter `docs/rechenfaelle/`; GP3 Kern-Bau als Nächstes) -- `addons/l10n_at_hr_payroll/` — Kern (SV/TASY; AP3 landet hier) +- `addons/l10n_at_hr_payroll/` — Bundes-Kern (SV/TASY + **GP3 + Lohnsteuer**: `models/lohnsteuer.py`, `rule_parameters_lst_2026.xml`; + 52/52 grün; GP4 SV/DB als Nächstes) - `addons/l10n_at_gemeinde_payroll/` — GemBG (AP1+AP2) \ No newline at end of file diff --git a/personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md b/personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md index 47fe1f6..7b5c3d8 100644 --- a/personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md +++ b/personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md @@ -783,6 +783,33 @@ Budget: die Kandidaten 8.13, der DZ (8.11) und die Regel-Optionen (NSchAB, DAG) laufen über die GP0-/Pilotmandant-Entscheidung bzw. Change-Requests. +**Update 2026-09-11 (GP3 umgesetzt):** Lohnsteuer komplett im Kern +gebaut (AP3, D3-Vorfinanzierung) und grün: `models/lohnsteuer.py` +(§ 33-Tarif, § 66 kumulativ mit Rollung über Lohnsteuertage 30/Monat, +§ 67 Sechstel/Fixsätze mit Günstig-Aufrollung, § 68-Buckets, +DN-SV-Bemessungsbestandteil), `data/rule_parameters_lst_2026.xml` +(Tarif-Zonen, Pauschalen 132/60, Absetzbeträge 496/612/828/273, +§-67-Staffel/Freigrenze 2.615, § 68 SZFN 400/600 + ÜStd 15/170 +versioniert), Flags (`l10n_at_bemessung`, `steuerbefreiung_68`, +`zuschlagsanteil`, `familienabsetzbetrag`, `ueberw_nachtarbeit`, +`wf_wien`). P0-Funde: **AN-AB entfallen** (Reform — im Tarif +integriert); Verkehrs-AB 496 €; 60 %-Werbungskosten = nur +Veranlagungsmechanik (monatlich SV stets voll über § 62 Z 1 iVm +§ 16 Abs 3) — RQ Abschnitt 5 korrigiert. Private Anbindung: dünne +Regeln SVDN_KV/PV/AV/AK/WF + LST_LFD/LST_SZ + B13/B14/UE-Flags. +D4: compute_sheet legt Zeilen erst nach der Regelschleife an → +Laufzeitdaten über `result_rules` (localdict) an die Kern-Computes +gereicht; Code-Regeln steuern die Menge über `result_qty`. +Latenzfehler des nie runtime-getesteten TASY-Wizards behoben +(Binary-b64-Dekode; `_get_parameter_from_code` liefert Werte statt +Records). Tests: Kern-Suite + `test_lst_private` + GP2-Regression +— **52/52 grün** auf `odoo_dev` (incl. erstmals laufender TASY- +Suite 4/4). Rechenfälle `docs/rechenfaelle/lohnsteuer.md`. +Offen für GP4: DG-Seite, Geringfügigkeit/§ 53a, beitragsfreie +Kumulative, FLAF/KommSt/DZ (privat), SV-Beitragsmonats-Allokation +für Aufrollungen; GP8: 15.2./Fünftel/Tarif-Vollausbau, Kontroll- +sechstel-Verfahrensreport; GP7: Lohnzettel/L16. + **Update 2026-09-11 (GP2 umgesetzt):** Entgelt-Engine auf Basis des freigegebenen Bauplans umgesetzt und grün: Structure „AT Privat- wirtschaft (KV)" + `ATP_*`-Kategorien, 10 Work-Entry-Types der diff --git a/personalverrechnung/RECHTSQUELLEN-Privat.md b/personalverrechnung/RECHTSQUELLEN-Privat.md index d32ae12..c6f04c0 100644 --- a/personalverrechnung/RECHTSQUELLEN-Privat.md +++ b/personalverrechnung/RECHTSQUELLEN-Privat.md @@ -258,18 +258,52 @@ Quelle: konsolidierter Volltext (jusline-RIS-Spiegel, Stand verifiziert — Primärzitat künftig über RIS-Bundesnormen „Einkommensteuergesetz 1988" führen, nicht über eine GesNr. -### Tarif und Monatsabzug +### Tarif und Monatsabzug — ✅ P0-GP3 2026-09-11 (EStG-Volltext +Fassung 10. 09. 2026, lokal; §-Anker je Wert) - **§ 33 Abs 1 Tarif 2026** ✅ (Steuerreform Phase 2): 0 % bis 13.539 €; 20 % bis 21.992 €; 30 % bis 36.458 €; 40 % bis 70.365 €; 48 % bis 104.859 €; 50 % bis 1.000.000 €; 55 % darüber (befristet bis 2029) — ident mit RECHTSQUELLEN-Bgld.md Abschnitt 5. -- **§ 66 Monatslohnsteuer** ✅: Hochrechnung auf das 360-Tage-Jahr; - Absetzbeträge-Detail in GP3 (LStR 2002 als Auslegungskanon ❓). +- **§ 66 Monatslohnsteuer ✅** (Algorithmus wörtlich): + LSt = Tarif(hochgerechnetes Jahreseinkommen) − Absetzbeträge + ÷ Hochrechnungsfaktor; **Faktor = 360 ÷ Lohnsteuertage** + (user decision: 30 je vollem Monat; Teilmonat per § 66 Abs 3: + Kalendertage inkl. arbeitsfreier Tage, max 30). Kumulativ je LZP + (YTD-Basis − bereits einbehaltene LSt) = Rollungsprinzip: + Vormonats-Korrekturen rollen automatisch in den Zuflussmonat + (Aufrollung-Workflow, user decision 2026-09-11). +- **Lohnsteuerbemessung (user-Formel, § 62-Kette idF):** + laufend = SV-Beitragsgrundlage − SV-DN (KV/PV/ALV + AK § 62 Z 3 + + WF § 62 Z 5, je nicht auf §-67-Bezüge) − steuerfreie Bezüge; + jahresbezogene Beträge (§ 66 Abs 2) = Werbe-Pauschbetrag + **132 €** (§ 16 Abs 3) + SA-Pauschbetrag **60 €** (§ 18 Abs 2), + nach der Hochrechnung von der JBG abzuziehen. +- **Absetzbeträge 2026** (§ 66 zitiert § 33 Abs 3a Z 1–3, Abs 4 + Z 1/2, Abs 5 Z 1/2/4, Abs 6 — Anm.-Werte): + - **Arbeitnehmerabsetzbetrag: entfallen** (Steuerreform — im + Tarif integriert; historische 1.500-S-Regelung obsolet). + - **Verkehrsabsetzbetrag (§ 33 Abs 5 Z 1): 496 €**; Pendler- + Variante Z 2: 853 € bei Einkommen ≤ 15.069 €, einschleichend + auf 496 € zwischen 15.069–16.056 € (R1-Option, Pendlerdaten); + Pendlereuro Z 4: 6 €/km (R1-Option); Zuschlag Z 3 804 € = nur + Veranlagung (§ 66 nennt Z 3 nicht). + - **Alleinverdiener-/Alleinerzieherabsetzbetrag (§ 33 Abs 4 + Z 1/Z 2):** Kind 1 **612 €**, 2 Kinder **828 €**, je weiteres + Kind **+273 €**; AVB-Partnergrenze **7.411 €**/Jahr. Engine: + Vertrags-Feld `l10n_at_familienabsetzbetrag` (user decision). + - **Familienbonus Plus (§ 33 Abs 3a):** 166,68/58,34 € monatlich + via L34-Antrag — R1 außerhalb (Antragsverwaltung). + - **Pensionistenabsetzbetrag (§ 33 Abs 6):** Pensionsezahler, + nicht R1-Payroll. SV-Rückerstattung § 33 Abs 7/8: R1-Option. - **Arbeitslohn-Begriff:** § 25/§ 26 ✅; Dienstverhältnis-Begriff § 47 Abs 2 ✅ (Grenzfälle: freie Dienstnehmer/GBV außerhalb R1). -- **§ 62 Abzugsposten** ✅ (SV-DN-Beiträge); **§ 16 Abs 1 Z 3** ✅ - (Werbungskosten: 60 % der SV-DN-Beiträge). +- **§ 62 Abzugsposten ✅** (idF-Kette: Z 1 Werbe-Pauschbetrag inkl. + ohne-Anrechnung-SV-Beiträge — monatlich voll abziehbar; Z 2 SA- + Pauschbetrag; Z 3 Interessenvertretung/AK; Z 5 WF — je nicht + auf §-67-Bezüge). **Korrektur 2026-09-11:** die frühere Angabe + „§ 16 Abs 1 Z 3: 60 % der SV-DN-Beiträge" betraf nur die + Veranlagung; idF (§ 16 Abs 1 Z 3 lit a) volle Beiträge. ### Sonstige Bezüge — § 67 (Kernmechanik für 13./14.) ✅