Files
fegger 2f55bfb21a [IMP] odoo-at-payroll: GP8-Bau dokumentiert — M8 erreicht, GP1-GP8 komplett
CHANGELOG-GP8-Eintrag; Plan-Abschnitt-10-Update (Fristenkalender, Kontrollsechstel-Wizard, Mitteilungsfile-Import, 2027-Parameter-Rahmen, Vertragsstichtage-UI, All-in/DAG-Reports, B14-Verifikation); MEMORY-Handoff (100/100, odoo_dev auf GP8, GP9/AP9 als optionaler Folgeauftrag); README-Update (GP1-GP8 komplett).
2026-09-12 20:00:27 +02:00

158 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# l10n_at_hr_payroll_private (General-AT)
General-AT-Payroll (KV-basierte Privatwirtschaft: KV-Gehaltskataloge,
AZG/UrlG-Arbeitszeit, 13./14. Bezüge, Abfertigung Neu) für Odoo 19.
**Implementierungsplan (freigegeben, M0):**
[`personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md`](../../personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md)
· verbindliche Rechtslage:
[`personalverrechnung/RECHTSQUELLEN-Privat.md`](../../personalverrechnung/RECHTSQUELLEN-Privat.md)
**GP1 umgesetzt (KV-Framework):**
- `l10n.at.payroll.kv` — KV-Stammdaten mit Trace-Link zur KV-Library
(`library_variant_id``personalverrechnung/quellen/kv/kv-catalog.json`)
und Quellen-URL der Arbeitgeberkammer;
- `l10n.at.payroll.kv.wert` — versionierte KV-Eckwerte (Muster
`hr.rule.parameter.value`, KV-Scope): Regelkonsum über
`employee.kv_id._wert('code', payslip.date_to)`;
- `l10n.at.payroll.kv.gruppe` / `.stufe` — Verwendungs-/Lohngruppen mit
Erfahrungsstufen, Jahrestabellen je `gueltig_ab`
(unique(Gruppe, Stufe, Stichtag));
- Vertragsfelder auf `hr.version` (durchgereicht auf `hr.employee`):
`kv_id`, `kv_gruppe_id`, `erfahrungsstufe`, `ueberzahlung`;
- Import-Wizard „KV-Katalog importieren": Tabellenpaste/CSV
(Gruppe;Stufe;Gehalt[;Bezeichnung]) mit Vorschau, Sprungwarnung
> 10 % (Warnzeilen werden nie automatisch übernommen) und Versionierung
über `gueltig_ab` — historische Werte bleiben unangetastet.
**Seed D2 (Referenz-KVs R1):** SI-2203 „Handwerk und Gewerbe" +
SI-2748 „Metallgewerbe", Gehaltstabellen ab 1. 1. 2026 kuratiert aus den
KV-Library-Volltexten (`quellen/kv/oegb/texts/`). Besonderheiten im Seed:
- SI-2203: VG I ist ab 1. 1. 2026 aufgelassen (Vorrückung nach § 17 Abs 6);
Meistergruppen M IM III als eigene Gruppen (M II ohne/mit Fachschule);
- SI-2748: eigene Vorrückungsverläufe als eigene Gruppen (IV-M = Meister
in VG IV bis „nach 17 VWGJ", V-OM = Obermeister bis „nach 12 VWGJ");
Nacht-Sondervergütung 2,71 € (2026) bzw. 2,76 € (2027) als
Jahresversionen.
**Kern-Vorfinanzierung (D3):** Lohnsteuer (AP3) und SV/DB-Regeln (AP4)
werden im Kern-Modul `l10n_at_hr_payroll` gebaut und von beiden
Produkten konsumiert; bei Bgld.-Auftragserteilung Anrechnung per
Change-Request.
**GP2 Entgelt-Engine (umgesetzt 2026-09-11):** Structure „AT
Privatwirtschaft (KV)", AZG-Fenster-WETs, Regelinventar
KVGEO/NACHT_SV/UE_*/MEHR_*/URL_UE/B13/B14/B14_RUECK/NETTO —
vollständig `kv.wert`-getrieben (Rechenfälle `docs/rechenfaelle/`).
**GP3 Lohnsteuer (umgesetzt 2026-09-11):** dünne Regeln
SVDN_KV/PV/AV/AK/WF + LST_LFD/LST_SZ auf dem AP3-Kern (§ 66
kumulativ mit Rollung, § 67 Sechstel/Fixsätze mit Günstig-
Aufrollung, § 68-Steuerfreiheiten; Rechenfälle `docs/rechenfaelle/
lohnsteuer.md`).
**GP4 SV/DB (umgesetzt 2026-09-11):** SVDN_SZ-Nachtrag (§ 67 Abs 12 —
Netto-Korrektur in §-67-Monaten), DG-Block SVDG_KV/PV/AV/UV/WF/IESG +
SVDG_SZ_* + §-53a-UV Geringfügiger (Kategorie ATP_DG, ohne
Nettoeffekt; ÖGK 2026: DG 20,98 % / Wien 21,23 %), Lohnnebenkosten
FLAFDB (§ 41 FLAG), KOMMST (§ 9 KommStG) und DZ (§§ 122/126 WKG,
company-flag-gated) mit Freibetragsstaffel 1.095/1.460 € — Logik/Werte
im Bundes-Kern (`models/sozialversicherung.py`, D3-Vorfinanzierung):
§-2a-ALV-DN-Staffel, Geringfügigkeit (§ 5 Abs 2 iVm § 810 Abs 3 ASVG),
beitragsfreie Bezüge § 49 Abs 3 mit Jahres-Kumulativen,
altersabhängige Satzausschaltungen (§ 1 Abs 2 lit e AlVG, § 51
Abs 6/7 ASVG, § 12 IESG), WF-Satzvektor Wien, Beitragsmonats-
Allokation (Anspruchsprinzip) und DAG-Bewertung (§ 1 DAG).
Rechenfälle `docs/rechenfaelle/sozialversicherung.md`.
**GP5 Abfertigung Neu (umgesetzt 2026-09-11):** BMSVG-Regel `BVG`
(§ 6 Abs 1: 1,53 % DG auf Entgelt **und** SZ; Kern-Parameter
`at_sv_bv_dg`) auf **EIGENER, ungecappter BV-Grundlage** (§ 6 Abs 5
iVm § 49 ASVG — kein HBG-/Jahresdeckel, ohne §-67-Abs-3/6-Zeilen gemäß
§ 49 Abs 3 Z 7 ASVG) — `models/abfertigung_private.py`:
- **Beitragsfreier erster Monat taggenau** (§ 6 Abs 1): Fenster
[Eintritt, Eintritt + 1 Monat), Pflicht ab Monatsjubiläum
(15. 06. → 15. 07.); 30-Tage-Aliquotierung (KB 4.500/30 × 17 =
2.550); Monatsende-Klippe (31. 01.) → frei bis Monatsultimo,
Pflicht ab Folgemonatserstem; AV ≤ 1 Monat zur Gänze beitragsfrei;
**Wiederzulassung binnen 12 Monaten → Pflicht ab dem 1. Tag**
(OGH 9 ObA 30/16a; Vor-AV beliebiger Dauer — auch < 1 Monat);
- **SZ ohne Fenster-Kürzung**; frei nur bei Beitragsmonat im Fenster
(taggenau); läuft **auch für geringfügig Beschäftigte und
Lehrlinge** (§ 46, § 1 Abs 2 Z 1);
- **Anwartschaft** (§ 15: gutgebrachte Beiträge + Erträge aus dem
Kassen-Auszug, KEINE Monatsentgelt-Staffel) aus validierten
Läufen; Vertragsfelder Abfertigung-Neu/BV-Kasse
(`l10n.at.bv.kasse` mit Leitzahl für eSV/mBGM) + Erträge/Vor-Beitrags-
monate am Mitarbeiter; **Anwartschaftsreport** (QWeb, am Mitarbeiter
druckbar) + **Endabrechnungs-Wizard** (§§ 14-17: §-14-Abs-2-
Verfügungsmatrix mit 36-Beitragsmonate-Kriterium, §-16-Fälligkeit,
6-Monats-Erklärungsfrist, 5 §-17-Optionen) — Auszahlung selbst
läuft über die MV-Kasse, nicht über den Payslip.
Rechenfälle `docs/rechenfaelle/abfertigung.md`.
**GP6 FI-Buchung UGB (umgesetzt 2026-09-12):** Buchungsmatrix nach dem
Österreichischen Einheitskontenrahmen (KFS/BW 6): Hook
`_configure_payroll_account_at` (Chart-Load + `<function>`-Datendatei,
idempotent; Konto-Suche exakt mit Längen-gebundenem Präfix-Fallback —
kein Match auf Odoo-Scaffold-Konten) ordnet Regelkonten, Journal SLR
(Default = Gehälterkonto, BE-Muster) und das NET-Konto **3850
„Verbindlichkeiten aus Lohn und Gehalt"** (Anlage + reconcile) zu.
**EKR-Debit-Split Arbeiter/Angestellte:** `l10n_at_personalgruppe` am
Vertrag + Override-Feld `l10n_at_account_debit_arbeiter` je Regel
(Option A minimal: Grundentgelt 6000, Sozialaufwand 6500, Abgaben
6600/6601/6602; Zuschläge/ÜStd/SZ/Prämien buchen bis zur
Referenzbuchhaltungs-Fixierung auf die Angestellten-Konten);
Gesamtüberschreibung von `_prepare_slip_lines` (Odoo bietet keinen
Override-Punkt; durch Tests gepinnt). Netto-Regel auf Odoo-Konvention
**NET** umbenannt + die automatisch kopierte Default-NET-Regel wird
archiviert (Code-Kollision im result_rules-Dict; archiviert statt
unlinkt — historische Linien behalten die Referenz).
Auszahlung über `hr_payroll_account_iso20022`; kein VRV/MVAG
(gem360-Brücke).
Rechenfälle `docs/rechenfaelle/buchhaltung.md`.
**GP7 Meldewesen/Belege (umgesetzt 2026-09-12):** auf dem Kern-
Framework (ELDA-Fixlängen-Dateien, ISO-8859-15, CRLF-Annahme;
L16 + Arbeitsstättenmeldung + Belege Lohnzettel AT/Monatsdienstliste/
Monatsjournal im Kern): **mBGM/JASV** (Paket/mBGM/Tarifblock/Verrech-
nungsbasis/-position, T01-Gesamtsatz aus ``at_mbgm_tarif`` — normativ
39,05 % laufend / 37,55 % SZ; Abschläge A01/A02/A03 § 2a AMPFG **je
Basis AB und SZ**, A09/A10/A15 aus GP4-Stichtagen; BV-Basis + V01 aus
GP5; Storno-R-Sätze mit REFU; Fehlanzeige als Null-Paket; Gering-
fährige/fallweise ohne Tarifparameter = listenweiser Laufabbruch);
**Versichertenmeldung** M3/M4 (deklarative Event-Erkennung über die
Meldungs-Registry — idempotent, kein write-diff; BBER 0104, GERF,
FRDV, BVAB/BVJN aus GP5, VWAZ; AGRD-Mapping am Abgangsgrund) und
**fallweise Anmeldung** (BEST MA, SART 32; MVP je Anmeldetag);
NSchAB-Branche als Company-Flag (B001-T01 + 3,80 %).
Rechenfälle `docs/rechenfaelle/meldewesen.md`.
**GP8 Jahreswechsel/Fristen/Retro (umgesetzt 2026-09-12):**
Fristenkalender (`l10n.at.payroll.frist` mit ir.cron, Auto-
Erzeugung monatlich/jährlich, Überfällig-Färbung, Sprung zur
GP7-Deklaration), Jahres-Retro-Wizard (Kontrollsechstel § 67
Abs 10 mit Günstig-Vergleich, §-77-Abs-3/4-Option), Mitteilungs-
file-Import (ELDA-Rückantwort-XML), Vertragsstichtage-UI,
All-in-Deckungsrechnung + DAG-Ausweis (QWeb), 2027-Parameter-Rahmen.
**GP1GP8 komplett (M8 erreicht).**
**Offen (GP9/AP9):** UI/Security (Rollen), Multi-Company-Test,
Dokumentation, Schulung; geringfähig/fallweise-Tarifparameter.
Tests: `test_kv_katalog` + `test_entgelt_private` (GP2) +
`test_lst_private` (GP3) + `test_sv_private` (GP4) +
`test_bv_private` (GP5) + `test_account_private` (GP6) +
`test_elda_l16` (GP7 Kern) + `test_meldewesen_private` (GP7) +
`test_gp8` (GP8 Kern) —
`.venv/bin/python -m odoo -d <testdb> -i l10n_at_hr_payroll,l10n_at_hr_payroll_private
--test-tags /l10n_at_hr_payroll,/l10n_at_hr_payroll_private --test-enable --stop-after-init
--addons-path=odoo_19.0+e.20260910/odoo-19.0+e.20260910/odoo/addons,addons`
(Lokal grün am 2026-09-12 auf Wegwerf-DB, frischer `-i`-Lauf:
**100/100 Tests**.)