[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
|
## 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/`)**
|
**3. RIS-Runde integriert (11.09.2026, `.additional_docs/ris_normtexte/`)**
|
||||||
— A-Punkte gegen die Tagesfassung textverifiziert; Integration in RQ/
|
— A-Punkte gegen die Tagesfassung textverifiziert; Integration in RQ/
|
||||||
PLAN/RUNBOOK/KB-KONFLIKTE + 5 Layer-2-Abgleichnotizen. **A1-Korrektur:**
|
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
|
## 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)**
|
- **GP2 Entgelt-Engine General-AT umgesetzt (29/29 grün)**
|
||||||
(2026-09-11): `l10n_at_hr_payroll_private` 19.0.2.0.0 —
|
(2026-09-11): `l10n_at_hr_payroll_private` 19.0.2.0.0 —
|
||||||
`data/structure_private.xml` (Type/Structure/ATP-Kategorien,
|
`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
|
`test_kv_katalog` 8/8 + `test_entgelt_private` 21/21 auf
|
||||||
`odoo_dev`; Rechenfall-Fixtures unter `docs/rechenfaelle/`;
|
`odoo_dev`; Rechenfall-Fixtures unter `docs/rechenfaelle/`;
|
||||||
GP3 Kern-Bau als Nächstes)
|
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)
|
- `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.
|
(NSchAB, DAG) laufen über die GP0-/Pilotmandant-Entscheidung bzw.
|
||||||
Change-Requests.
|
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
|
**Update 2026-09-11 (GP2 umgesetzt):** Entgelt-Engine auf Basis des
|
||||||
freigegebenen Bauplans umgesetzt und grün: Structure „AT Privat-
|
freigegebenen Bauplans umgesetzt und grün: Structure „AT Privat-
|
||||||
wirtschaft (KV)" + `ATP_*`-Kategorien, 10 Work-Entry-Types der
|
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
|
verifiziert — Primärzitat künftig über RIS-Bundesnormen
|
||||||
„Einkommensteuergesetz 1988" führen, nicht über eine GesNr.
|
„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
|
- **§ 33 Abs 1 Tarif 2026** ✅ (Steuerreform Phase 2): 0 % bis
|
||||||
13.539 €; 20 % bis 21.992 €; 30 % bis 36.458 €; 40 % bis 70.365 €;
|
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
|
48 % bis 104.859 €; 50 % bis 1.000.000 €; 55 % darüber (befristet
|
||||||
bis 2029) — ident mit RECHTSQUELLEN-Bgld.md Abschnitt 5.
|
bis 2029) — ident mit RECHTSQUELLEN-Bgld.md Abschnitt 5.
|
||||||
- **§ 66 Monatslohnsteuer** ✅: Hochrechnung auf das 360-Tage-Jahr;
|
- **§ 66 Monatslohnsteuer ✅** (Algorithmus wörtlich):
|
||||||
Absetzbeträge-Detail in GP3 (LStR 2002 als Auslegungskanon ❓).
|
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
|
- **Arbeitslohn-Begriff:** § 25/§ 26 ✅; Dienstverhältnis-Begriff
|
||||||
§ 47 Abs 2 ✅ (Grenzfälle: freie Dienstnehmer/GBV außerhalb R1).
|
§ 47 Abs 2 ✅ (Grenzfälle: freie Dienstnehmer/GBV außerhalb R1).
|
||||||
- **§ 62 Abzugsposten** ✅ (SV-DN-Beiträge); **§ 16 Abs 1 Z 3** ✅
|
- **§ 62 Abzugsposten ✅** (idF-Kette: Z 1 Werbe-Pauschbetrag inkl.
|
||||||
(Werbungskosten: 60 % der SV-DN-Beiträge).
|
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.) ✅
|
### Sonstige Bezüge — § 67 (Kernmechanik für 13./14.) ✅
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user