2f55bfb21a
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).
158 lines
8.5 KiB
Markdown
158 lines
8.5 KiB
Markdown
# 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 I–M 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 01–04, 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.
|
||
**GP1–GP8 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**.) |