[IMP] odoo-at-payroll: record GP3 income tax build, P0 legal verification and conventions in docs

This commit is contained in:
2026-09-11 22:24:03 +02:00
parent 90e4bcaa5d
commit f638f5100d
3 changed files with 111 additions and 6 deletions
+45 -1
View File
@@ -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-L1L8).
- **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)
@@ -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
+39 -5
View File
@@ -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 13, 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.06916.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.) ✅