[IMP] odoo-at-payroll: record GP3 income tax build, P0 legal verification and conventions in docs
This commit is contained in:
+45
-1
@@ -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)
|
||||
@@ -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
|
||||
|
||||
@@ -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.) ✅
|
||||
|
||||
|
||||
Reference in New Issue
Block a user