# CHANGELOG — odoo-at-payroll ## 2026-09-12 — General-AT GP9: UI/Security/Multi-Company/Doku (AP9) — Projekt M8 abgeschlossen - `addons/l10n_at_hr_payroll` (19.0.5.1.0): **Company-Stammdaten-UI** (BKNR, Lohnsteuernummer, Bundesland, WKO, WF-Wien — Reiter „Lohnverrechnung (AT)" am Company-Formular, vorher nur im Entwicklermodus erreichbar); **Multi-Company-Record-Rules** (security/security_rules.xml: ir.rule für L16, L16-Line, Kind, Frist — jede:r Payroll-User sieht nur eigene Companies). - `addons/l10n_at_hr_payroll_private` (19.0.8.1.0): **Mitarbeiter- UI** (All-in-Felder § 2g AVRAG + NSchAB-Company-Flag); **Multi-Company-Record-Rules** (mBGM, mBGM-Line, VR, VR-Event); **Demo-Datensatz** (data/demo.xml, noupdate: 3 AN inkl. KV, VSNR, BMSVG; Demo-Company mit BKNR/LStNr/BL — nur Demo-Modus); **Benutzerhandbuch** (docs/benutzerhandbuch.md: deutsch, ~10 Seiten Quick-Start: Stammdaten, Monatsabrechnung, Meldewesen, Belege, Fristen, Jahreswechsel, BV-Endabrechnung). - **GP1-GP9 komplett — AP9 abgeschlossen, Projekt M8 final.** 100/100 Tests grün; `odoo_dev` auf 19.0.5.1.0/19.0.8.1.0. ## 2026-09-12 — General-AT GP8: Fristenkalender, Jahres-Retro, Mitteilungsfile-Import, UI-Reports (M8) - `addons/l10n_at_hr_payroll` (19.0.5.0.0): **Fristenkalender** `models/fristenkalender.py` (`l10n.at.payroll.frist` — alle Melde-/Zahlungsfristen je Company/Jahr: SV 15. Folgemonat, DB/DZ/KommSt 15., KommSt-Jahreserklärung Ende März, L16/ Arbeitsstätte/§-109a/Schwerarbeit Ende Februar; Auto-Erzeugung per ir.cron, Überfällig-Färbung, Sprung zur GP7-Deklaration); **Jahres-Retro-/Aufrollungslauf** `models/jahresretro.py` (Kontrollsechstel § 67 Abs 10 — Günstig-Vergleich Fixsätze vs. Tarif je AN; §-77-Abs-3/4-Option; SV rollt auf Beitragsmonat, mBGM-Storno GP7); **Mitteilungsfile-Import** `models/mitteilungsfile.py` (ELDA-Rückantwort-XML parsen); **2027-Parameter-Rahmen** `data/rule_parameters_2027.xml` (nur Struktur, keine Werte). - `addons/l10n_at_hr_payroll_private` (19.0.8.0.0): **Vertragsstichtage-UI** `views/vertragsfelder_views.xml` (GP4- Stichtage + Status-Flags am Mitarbeiterformular); **All-in-Deckungsrechnung** + **DAG-Ausweis** `report/ gp8_reports.xml` (QWeb auf hr.payslip/hr.payslip.run); Frist-mBGM-Verlinkung `models/fristen_private.py` (ref_mbgm_id nur im Privatmodul — Kern kennt mBGM nicht). - **B14-Verifikation** (Nutzer-Empfehlung 1): aktuelle Implementierung praktisch korrekt — „längster Teil" nur bei mehrmonatig gesplitteten Urlauben relevant, dokumentiert ohne Code-Fix. - Tests: `test_gp8` (6 — Fristdefinitionen, Cron-Idempotenz, Überfällig-Logik, Mitteilungsfile-Parser, Import-UserError, Jahresretro-ohne-Daten) — **100/100 grün** (frischer `-i`-Lauf, Wegwerf-DB). `odoo_dev` auf GP8 aktualisiert. ## 2026-09-12 — General-AT GP7: Meldewesen/Belege umgesetzt (M7; Kern-Bau AP5/AP6) - `addons/l10n_at_hr_payroll` (19.0.4.0.0): **ELDA-Fixsatz-Framework** `models/elda.py` (DM-ORG 42.7.0: Fixlängen ohne Trennzeichen, a/n linksbündig-blank / n rechtsbündig-0, Cent ohne Interpunktion, Prozente ×1000, ISO-8859-15, Dateiheader optional, Vorlauf SART 00/ Schluss SART 99 mit SANR-Kette ab 1 und SANZ inkl. Rahmen; **CRLF als Satztrenner = Praxis-Annahme** — DM-ORG normiert keines). **Lohnzettel Finanz L16 + Arbeitsstättenmeldung § 34 Abs 6 ASVG** `models/lohnzettel_l16.py`: I1 (1.100) + L1 (**3.500**, Lohnzettelversion 28, BEST LF/VSTR 94) inkl. Kinderblock 15×123 ab Pos. 1501 — PDF-verifizierte Positions-Ketten; **KZ 210 = Bruttobezüge gem. § 25 gesamt** (KZ 245 = 210−215−220−230−243 = laufende Steuerbemessung, konsistent mit der GP3-§-66-Kette per Konstruktion; Ableitung aus l10n_at_bemessung/steuerbefreiung_68/ s67_abs, KEIN paralleles KZ-Feld). Arbeitsstätte: SART 45 (300, BEST AD/VSTR ST) je AN am 31. 12. aus dem Dienstort-Partner (GKZ manuell, Warnung wenn fehlt). **Kind-Datenmodell** `models/kind.py` (Nutzer-Entscheidung: FB+ rechnet NICHT im Lohnsteuerkern — Steuer < 0 → Arbeitnehmer- veranlagung; Modell dient der FABO+-Wartung: Monate voll/halb, Alterstaffel, L16-Kinderblock). **Stammdaten** `models/meldewesen.py`: BKNR + Lohnsteuernummer (Company), GKZ (res.partner), VSNR-Format- prüfung LLLPTTMMJJ auf hr.version.ssnid (Prüfziffer = Rest, SVS- Quelle), eSV-AGRD-Mapping auf hr.departure.reason. **Belege** (AP6): Lohnzettel AT (ir.actions.report auf hr.payslip) + Monatsdienstliste + Monatsjournal (QWeb auf hr.payslip.run, AbstractModel `models/monatsreports.py`; kein HR-Modul nutzt account.report). - `addons/l10n_at_hr_payroll_private` (19.0.7.0.0): **mBGM/JASV** (BEST MB, Version 02; `models/mbgm.py`): Paket PS/mBGM G1/Tarif- block T1/Verrechnungsbasis BS/Position V1 aus GP4-Beitragsmonats- Daten; T01/T02-GESAMT-Prozentsatz je BSGR aus `at_mbgm_tarif` (normativ laufend **39,05 %**, SZ **37,55 %** = DN KV 3,87 + PV 10,25 + AV 2,95 + DG 20,48); **Abschläge je Verrechnungsbasis** (A03/A02/A01 §-2a-AMPFG DN-AV auf AB UND SZ, A09 UV-60, A10 AV+IE-Entfall, A15 PV-Halbierung; Konkurrenz a4: A10 sperrt Staffelabschlag); BV-Basis (ungedeckelt, GP5) + V01; RSUM = Basis×Satz mit Konsistenz-Check gegen GP4-Payslip-Summen (±0,10 €); Storno R1 (REFU/VSUM wie Original), Fehlanzeige als Null-Paket; Geringfügige/fallweise ohne Parametrisierung → listenweiser Abbruch (keine Tarif-Erfindung). **Versichertenmeldung** `models/versichertenmeldung.py` (BEST VR, Version 03): M3 vor Arbeitsantritt / M4 (7 Tage) mit deklarativer Event-Erkennung über die Meldungs-Registry (idempotente Läufe, kein write-diff), BBER 01–04, GERF (Gehalt vs. GFG), FRDV, BVAB/BVJN aus GP5, VWAZ Stunden×100, AGRD aus dem Abgangsgrund-Mapping; **fallweise Anmeldung** (BEST MA, SART 32, Version 07; MVP je Anmeldetag). NSchAB-Branche als Company-Flag (B001-T01 + 3,80). - **Bewusst nicht in GP7:** Schwerarbeitsmeldung (DM-ORG E.22- Struktur vorhanden, aber keine ASchV-Datenbasis), § 109a (separate Honorar-Datenbasis), L17 (keine AG-Pflicht), Mitteilungsfile-Import (Nutzer-Entscheidung 5.2 → GP8), FB+-Lohnsteuermechanik (ANV). - Tests: `test_elda_l16` (4) + `test_meldewesen_private` (2) — **94/94 grün** (frischer `-i`-Lauf, Wegwerf-DB). Rechenfälle `docs/rechenfaelle/meldewesen.md`. ## 2026-09-12 — General-AT GP6: FI-Buchung UGB nach KFS/BW 6 umgesetzt (M6) - `addons/l10n_at_hr_payroll_private` (19.0.6.0.0): **GP6 FI-Buchung UGB** auf dem Österreichischen Einheitskontenrahmen (KFS/BW 6, Nutzer-Referenz-Exemplar `.additional_docs/KFSBW6_13072017_RF.pdf`): - `models/account_chart_private.py`: Buchungsmatrix + Hook `_configure_payroll_account_at` (BE-Muster `l10n_be_hr_payroll_ account`): Chart-Load (`_post_load_data`) **und** ``- Datendatei für Bestands-Companies (erster `` = Record-IDs, convert.py-Semantik), idempotent. Konto-Suche **exakt zuerst**, Präfix-Fallback nur bis eine Stelle länger — blockiert Odoo- Scaffold-Konten chartloser Firmen (6000 darf nicht 600000 „Expenses" matchen). NET-Konto **3850 „Verbindlichkeiten aus Lohn und Gehalt"** (Nutzer-Entscheidung 5.1) wird angelegt und auf reconcile gesetzt (l10n_at-Standardchart hat es nicht); Journal **SLR** mit Default = Gehälterkonto 6200 (BE-Muster; Odoo- Constraint verbietet Receivable/Payable als Journal-Default). - **EKR-Debit-Split Arbeiter/Angestellte** (Nutzer-Klärung: 600–619 Löhne, 620–639 Gehälter — die Angabe „6000 Gehälter/6200 Löhne" war gegenüber der eigenen KFS/BW-6-Referenz vertauscht): `l10n_at_personalgruppe` am Vertrag + `l10n_at_account_debit_arbeiter` je Regel; **Option A minimal** (Nutzer-Entscheidung 5.2): Overrides nur Grundentgelt 6000, Sozialaufwand 6500, Abgaben 6600/6601/6602 — Zuschläge (6225), ÜStd (6310), Prämien (6230), SZ (6240), BV (6440, EKR 644 ohne Split) buchen für Arbeiter bis zur Referenzbuchhaltungs- Fixierung auf die Angestellten-Konten (fehlende Konten → Warnung, keine Erfindung). `models/account_posting_private.py`: Gesamtüberschreibung von `_prepare_slip_lines` (Odoo bietet keinen Override-Punkt; Upstream-Kopie Odoo-Pin 19.0+e.20260910 mit einzeiliger Kontosubstitution, testgepinnt). - **NET-Umbenennung** (NETTO → NET, Odoo-Konvention): Zahlungsregistrierung (`action_register_payment`), net_wage und Negativ-Netto-Erkennung filtern `code == 'NET'`. **Odoo-19-Fund:** das Anlegen einer Structure kopiert die Regeln des `hr_payroll.default_structure` (BASIC/GROSS/NET/…) via Feld-Default in `rule_ids` — die kopierte Default-NET-Regel kollidiert im `result_rules`-Dict (Netto fiel auf 0). Fix: `` in `salary_rules_private.xml` archiviert die Kopie (`active=False`; One2many blendet Archivierte aus; KEIN Unlink — historische Lohnkontolinien behalten die Regel-Referenz; `struct_id` ist NOT NULL). - Matrix: KVGEO/URL_UE 6200/6000 · Zuschläge 6225 · ÜStd 6310 · Prämien 6230 · B13/B14 6240 · DN-SV/LSt auf 3600/3540 · NET 3850 · SVDG-Block 6560/6500 auf 3600 · **BVG 6440 (EKR 644) mit Fallback 6400** auf Credit **3600** (Abfuhr via KV-Träger; 5.3) · FLAFDB 6661/6601 auf 3541 · KOMMST 6660/6600 auf 3550 · DZ 6662/6602 auf 3542. depends: + `l10n_at`, `hr_payroll_account_iso20022` (SEPA-Auszahlung, Plan 4.5). - Tests: `test_account_private` (4: RF-BUCH-1..4 — Kontenplan-Mock ohne Chart-Install; Move-Balance, Kontenzeilen, Arbeiter-Split, Fallback/Warnung; NET-Rundungscents als Odoo-„Adjustment Entry" auf Journal-Default mit delta=0.02 toleriert). NETTO→NET in 4 Bestands-Suiten nachgezogen. **88/88 grün** (frischer `-i`-Lauf, Wegwerf-DB). Rechenfälle `docs/rechenfaelle/buchhaltung.md`. ## 2026-09-11 — General-AT GP5: Abfertigung Neu (BMSVG) umgesetzt (M6, Teil 1) - `addons/l10n_at_hr_payroll` (19.0.3.1.0): Kern-Parameter `at_sv_bv_dg` = 1,53 % (§ 6 Abs 1 BMSVG, ab 2003-01-01) in `rule_parameters_sv_2026.xml`. - `addons/l10n_at_hr_payroll_private` (19.0.5.0.0): **GP5 Abfertigung Neu** — Regel `BVG` (ATP_DG, ohne Nettoeffekt) auf **EIGENER, ungecappter BV-Grundlage** (§ 6 Abs 5 iVm § 49 ASVG: kein HBG-/ Jahresdeckel; ohne §-67-Abs-3/6-Zeilen — § 49 Abs 3 Z 7 ASVG; Nutzer-Entscheidung: kein Rückgriff auf die SV-SZ-Basis des Kerns, deren Z-7-Ausschluss fehlt → GP4-Beobachtung bleibt offen dokumentiert); `models/abfertigung_private.py`: - **Beitragsfreier erster Monat taggenau** (§ 6 Abs 1): Fenster [Eintritt, Eintritt + 1 Monat), Pflicht ab Monatsjubiläum (15. 06. → 15. 07. — KB-Beispiel 4.500/30 × 17 = 2.550, 30-Tage-Aliquotierung via Lohnsteuertage); **Monatsende-Klippe** (Eintritt 31. 01.) → frei bis Monatsultimo, Pflicht ab Folgemonatserstem (ABGB-Fristrechnung); **AV ≤ 1 Monat zur Gänze beitragsfrei**; - **Wiederzulassung binnen 12 Monaten → Beitragspflicht ab dem 1. Tag** (OGH 9 ObA 30/16a) — Vor-AV **beliebiger Dauer** (auch < 1 Monat) und schlägt auch die Kurz-AV-Freiheit (Nutzer-Klarstellung 2026-09-11); Suche über frühere `hr.version`-Verträge; - **SZ ohne Fenster-Kürzung**, frei nur bei Beitragsmonat im Fenster (**taggenau**: Fälligkeit 20. 07. bei Fensterende 15. 07. pflichtig); läuft **auch für geringfügig Beschäftigte und Lehrlinge** (§ 46, § 1 Abs 2 Z 1); - Vertragsfelder `l10n_at_abfertigung_neu` (§ 46-Flag) + `l10n_at_bv_kasse_id` (neues Modell `l10n.at.bv.kasse` mit Leitzahl für eSV/mBGM; Seed der 7 Kassen-Namen, lb-gsv-11, noupdate); Mitarbeiter-Felder `l10n_at_bv_ertraege`/ `l10n_at_bv_monate_extern` (Kassen-Auszug); - **Anwartschaft** (§ 15: gutgebrachte Beiträge + Erträge, KEINE Monatsentgelt-Staffel) on-the-fly aus validierten Läufen (`_at_bv_anwartschaft`); **Anwartschaftsreport** (QWeb auf `hr.employee`, AbstractModel `bv_report.py`) + **Endabrechnungs- Wizard** `l10n.at.bv.endabrechnung.wizard` (§§ 14-17: §-14-Abs-2- Verfügungsmatrix, 36-Beitragsmonate-IMMER-Sperre mit Vor-Monaten, §-16-Fälligkeit Ende des zweitfolgenden Monats, 6-Monats- Erklärungsfrist, 5 §-17-Optionen) — Auszahlung durch die MV-Kasse, kein Payslip-Bestandteil. - **Bewusst nicht in GP5:** §-7-BMSVG-Fiktivfälle (Präsenz-/Kranken-/ Wochengeld — setzt fehlende Entgeltersatzleistungs-Modellierung voraus; dokumentierte Option), Geringfügigen-Jahreszahlung + 2,5 % (Zahlungsmodus GP7), BV-Provider (Option). - Tests: `test_bv_private` (10) neu; **84/84 grün** auf Wegwerf-DB `gp5_test` (frischer `-i`-Lauf; Aufruf s. README). Rechenfälle `docs/rechenfaelle/abfertigung.md`. ## 2026-09-11 — General-AT GP4: SV/DB komplett im Kern umgesetzt (M5) - `addons/l10n_at_hr_payroll` (19.0.3.0.0): `models/sozialversicherung.py` — DG-Beiträge (ÖGK 2026: DG 20,98 %, Wien 21,23 %), §-54-SZ-Beiträge DG 20,48 % (KV/PV/AV/UV/IESG), Geringfügigkeit § 5 Abs 2 iVm **§ 810 Abs 3 ASVG** (GFG 2026 = 551,10 €, Aufwertung ausgesetzt — A7-Rest gelöst) mit Hochrechnung bei untermonatiger Beschäftigung, §-53a-Abs-1-UV 6,50 €/Monat, beitragsfreie Bezüge § 49 Abs 3 mit Jahres-Kumulativen je DN (8 €/AT, 1.000/365/186/300/2.000 €/J, Homeoffice 3 €/Tag × 100), altersabhängige Satzausschaltungen als Stichtags-Datumfelder am Vertrag (AlVG § 1 Abs 2 lit e — AV DN+DG +IESG; § 51 Abs 6 — UV ab 60/Lehrlinge; § 51 Abs 7 — PV hälftig DG+DN; § 41 Abs 4 lit f FLAG), **ALV-DN-Staffel § 2a AMPFG (DN-seitig; 0/1/2 % bis 2.225/2.427/2.630 €; auch für SZ; ab 2027 aufgehoben)**, WF-Satzvektor Bundesland × Jahr (Wien 0,75/0,75 ab 1. 1. 2026), Beitragsmonats-Allokation (Anspruchsprinzip, historische Sätze/HBG je Beitragsmonatsgruppe, 2025-HBG 6.450 €), DAG-Bewertung § 1 DAG (19,4 %, Schwelle 1,5 × GFG = 826,65 €, ≥ 2 Geringfügige, Lohnsumme ohne SZ). Parameter: `rule_parameters_sv_2026.xml` + AV-Staffel-Umbau (2025/2026/2027-Zeilen) in `rule_parameters_2026.xml`. - `addons/l10n_at_hr_payroll_private` (19.0.4.0.0): `salary_rules_sv_private.xml` — **SVDN_SZ-Nachtrag** (§ 67 Abs 12 als eigene Abzugszeile; GP3-Lücke: Netto in §-67-Monaten um den SV-DN(SZ) zu hoch), DG-Block SVDG_*/SVDG_SZ_*/SVDG_UV_GFG (ATP_DG, ohne Nettoeffekt), FLAFDB (§ 41 FLAG 3,7 %), KOMMST (§ 9 KommStG 3 %), DZ (§§ 122/126 WKG, WKO-flag-gated, Satzvektor je BL ⚠ WKO 8.11) mit gemeinsamer LNK-Basis (Zufluss, ohne §-67-Abs-3/6, lit f nur FLAF/DZ, Freibetragsstaffel 1.095/1.460 €). - **Rechtskorrektur § 2a AMPFG:** DN-SV auf laufenden Bezügen und SZ bei BG ≤ 2.225 € sinkt von pauschal 18,07 % auf 15,12 % (ALV-DN 0 %) — GP3-Rechenfälle RF-L1/L3/L5 und die betroffenen Tests nachgezogen (Engine war zuvor ohne Staffel); §-19a-Selbstversicherung 2026 = **83,49 €/Monat** (statt ≈ 77,80 € — TASY KVPVBTG19A), Zahlung direkt an den Träger (kein Lohnabzug). - Tests: Kern `test_sozialversicherung` (14) + privat `test_sv_private` (8) neu; GP3-Suiten §-2a-korrigiert — **74/74 grün** auf `odoo_dev` (Aufruf s. README). Rechenfälle `docs/rechenfaelle/sozialversicherung.md`; RQ-Privat Abschnitt 4 und KB-KONFLIKTE A7 aufgelöst (§ 810 Abs 3 / § 1 DAG / 83,49/826,65); Plan § 10 GP4-Update. ## 2026-09-10 — General-AT: Beschaffungsliste abgearbeitet (Primärquellen lokal) - **19 RIS-Gesetzestexte** (konsolidiert, Fassung vom 10. 09. 2026; UrlG 09. 09. 2026) via firecrawl nach `.firecrawl/ris/` beschafft: AZG, AngG, ArbVG, ASVG, EStG 1988, AVRAG, BAO, AÜG, UrlG, BMSVG, IESG, Lohnkontenverordnung 2006, MSchG, MSchV, VKG, KBGG, APSG, FamZeitbG, KommStG. Gesetzesnummern per RIS-Titelsuche ermittelt (Kurztitel-Fallen: AVRAG „-Anpassungsgesetz", BMSVG „Mitarbeiter- und Selbständigenvorsorgegesetz", IESG „-Entgeltsicherungsgesetz", APSG „Arbeitsplatz-Sicherungsgesetz"). Verzeichnis: `.firecrawl/ris/_README.md`. - **LStR 2002** als findok-Gesamtdokument XML (Stand 04. 09. 2026, alle Rz; GP3-kritische 766b/911a/1050/1052/1103/1106/1116a/ 1141–1163 verifiziert) — `.firecrawl/ris/findok/`. - **ELDA/eSV-Meldewesen** (Stand 07/2026): **DM-ORG 42.7.0** „Datenaustausch mit Dienstgebern" (Datensatzbeschreibung SV- Meldungen mBGM/An-Ab-Änderung/JASV **und** Lohnzettel-Finanz) + Änderungsprotokoll + **Prüfkataloge** L16 (ab 1. 1. 2026, Stand 12/2025)/L17/§ 109a/§ 109b + Mitteilungsfiles-XSDs — `.firecrawl/ris/elda/`. **SV-Werte 2026** (beitrags- + leistungs- rechtlich) von sozialversicherung.at — HBGL 6.930 €/GFG 551,10 € gegen Kern-Parametersatz verifiziert (inkl. GFG-Aufwertungs- aussetzung 2026 gem. § 810 Abs 3 ASVG). - **„Krankengeldumlage § 62 ASVG" als Falsch-Prämisse aufgelöst**: RIS-Gesamtabfrage „Krankengeldumlage" = 0 Treffer; § 62 ASVG = „Mitteilung über Beitragsrückstände, Beitragsabrechnung" (konsolidierter Text). Kein GP4-Baustein, kein Kern-Parameter. Korrigiert in `RECHTSQUELLEN-Privat.md` (Abschn. 4/11/13) und `IMPLEMENTIERUNGSPLAN-Privat.md` (2.1/4.6/4.7/8.10); Herkunft vermutlich deutsches U1-Umlageverfahren (EFZG). **Hinweis:** `RECHTSQUELLEN-Bgld.md` Abschn. 9 und `PLAN-payroll-bgld.md` führen denselben Prüfpunkt — gegen denselben Befund zu verifizieren (dort: öffentliche DG). - `RECHTSQUELLEN-Privat.md` Abschnitt 11 auf Beschaffungsstände umgestellt ([x] = lokal beschafft, §-Verifikation bleibt GP-Aufgabe); offen bleiben Pilotmandant, D3, UGB-Buchungsmatrix, Referenz-KV- Kuratierung (GP1), Bgld-AP0-Abstimmung + ELDA-/FinOnl-Anmeldungen (Nutzerseite). `RUNBOOK.md`: neue Sektion „Primärquellen-Downloads" (RIS-Titelsuche-Konventionen, Kurztitel-Fallen, Verifikations- befund-Disziplin). ## 2026-09-10 — General-AT: KB-Rechtsquellen-Abgleich in RECHTSQUELLEN dokumentiert - Systematischer Abgleich aller in der Wissensbasis referenzierten Rechtsquellen (571 Einträge, 2.767 `legal_bases`-Zitate, ~130 Normwerke) gegen `personalverrechnung/RECHTSQUELLEN-Privat.md`: 15 Gesetze auf Gesetzesebene enthalten (mit §-Ebenen-Lücken), ~85 bewusst außerhalb des R1-Scopes, 12 echte Lücken identifiziert (weder RQ noch Beschaffungsliste noch Plan erfasst). - `RECHTSQUELLEN-Privat.md`: neuer **Abschnitt 13** (Abgleichs- methodik + Matrix „enthalten mit §-Lücken", Zuordnung bekannt offen/Plan-erfasst/echte Lücken, Outside-Scope-Abgrenzung mit Compliance-Randnotizen) + Beschaffungslisten-Erweiterung in Abschnitt 11: AVRAG § 2g/§ 11a Abs 4; ASVG-Beitrags-/Melde-Rechts- block (§§ 11/33/34/41/471a/49 Abs 2/3/44 Abs 7/51/53b/60/143); EStG §§ 3/63/67a/69/109a/124b Z 478 lit f; KommStG § 10 + BAO §§ 4/29/30 (Betriebsstätte); AÜG (Überlasser-Betriebsstätte); UrlG §§ 7/10a; BMSVG §§ 7/9–12/27a/47; IESG § 12; Lohnkonten- verordnung 2006; Mutterschutz-/Karenz-Block (MSchG/MSchV, VKG, KBGG, APSG, FamZeitbG) als Scope-Entscheidung. - `IMPLEMENTIERUNGSPLAN-Privat.md`: 4.2 um AVRAG-§-2g-Feinmechanik (All-in/ÜStd-Pauschale: Grundlohn-Ausweis, Deckungsrechnung, § 7-UrlG-Ablöseverbot) erweitert; 8.13 um den Mutterschutz-/ Karenz-Block (Wochengeld = DG-Payroll-Berechnung) ergänzt; Abschnitt 10 dokumentiert den Nachtrag. Keine Änderung an D1–D4, Scope R1, Meilensteinen, Budget. ## 2026-09-10 — General-AT: Implementierungsplan um Wissensbasis-Anbindung aktualisiert - `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md`: neuer Abschnitt **2.1 Wissensbasis-Anbindung** — Verbindlichkeits-Regime (RECHTSQUELLEN-Privat bleibt verbindlich, KB = kuratierte Sekundärquelle mit ID + Stand) und Cluster-Anker je GP (571 Einträge/67 Cluster, Batches 1–9). - 4.2–4.7, 5, 6: kuratierte KB-Belege nachgetragen — GP2-Feinmechanik (Mehrarbeit § 19d AZG vs. ÜStd, zwei Nachtfenster 22–5/19–7, Feiertagsarbeitsentgelt ab 2026 wieder § 68-begünstigt, SZ-Basis je KV-Begriff), GP3 (Sechstelformel, Nachzahlungsmodi, Aufrollung § 77 Abs 3/4/4a), GP4 (beitragsfreie Bezugsbestandteile § 49 Abs 3 als Jahreskumulative, AK-Umlage/WF als DN-Lohnabzüge, altersabhängige Satzausschaltungen, AV-Staffel 2026), GP5 (freier BV-Monat taggenau, § 7-BMSVG-Fiktionen), GP7 (L16-KZ- Struktur, mBGM-Fristen, Schwerarbeitsmeldung, § 109a), GP8 (Jahres-Retro-/Aufrollungslauf, Fristenkalender). - Neue Offenpunkte: **8.11** Zuschlag zum DG-Beitrag DZ (§§ 122/126 WKG, 0,12 % Bundes- + 0,31–0,40 % Landeskammeranteil 2026) — Inventarlücke, Grundsatzentscheidung vor GP4; **8.12** KB-Konflikt- familien (AK-Umlage-Tragung, WBF-Wien 1,5 %, §-124b-Zitierung, Beispiel-DN-SV 18,07 % vs. 17,57 %, NSchAB/DAG-Belege) — RIS-Klärung vor GP3/GP4; **8.13** KB-Scope-Kandidaten (Lohnpfändung, Kranken- stand-EFZ/Krankenentgelt, Urlaubsersatzleistung, NSchAB, fallweise Beschäftigung, Sachbezüge, Prämien/Provisionen, Reisekosten/ Pendler) — Entscheidung über Pilotmandant/GP0, keine stillschweigende Scope-Erweiterung. Keine Änderung an D1–D4, Scope R1, Meilensteinen, Budget. ## 2026-09-09 — General-AT GP1: KV-Framework umgesetzt (M2) - `addons/l10n_at_hr_payroll_private` (19.0.1.0.0) von Gerüst auf GP1-Stand: `l10n.at.payroll.kv` (Trace-Link zur KV-Library), `kv.wert` (versionierte Eckwerte, Muster `hr.rule.parameter.value`), `kv.gruppe`/`.stufe` (Erfahrungsstufen-Jahrestabellen), Vertragsfelder auf `hr.version`/`hr.employee` (`kv_id`, `kv_gruppe_id`, `erfahrungsstufe`, `ueberzahlung`), Import-Wizard (Tabellenpaste, Sprungwarnung > 10 %, neue `gueltig_ab`-Versionen) samt Views/Menus/Security. - Seed D2 (SI-2203 Handwerk und Gewerbe + SI-2748 Metallgewerbe): Gehaltstabellen ab 1. 1. 2026 aus den KV-Library-Volltexten kuratiert (18 Gruppen, 131 Stufenwerte, 27 Eckwerte; inkl. Sonder- Vorrückungsverläufe IV-M/V-OM und aufgelassener VG I). - Test-Suite `test_kv_katalog` (8 Fälle); statisch validiert (py_compile, XML-Well-formedness, CSV-Konsistenz, Wizard-Logiksimulation) — Runtime-Abnahme auf dem Dev-Host ausständig (PostgreSQL). ## 2026-09-09 — General-AT GP0: Rechtsquellen verifiziert (M1) - `personalverrechnung/RECHTSQUELLEN-Privat.md` angelegt (GP0-Aufgabe 1): verbindliches Rechtsinventar für `l10n_at_hr_payroll_private`. - An Primärquellen (RIS, jusline-RIS-Spiegel) verifiziert: FLAF-DB § 41 FLAG **3,7 % 2026** (2,7 % ab 2028; GesNr 10008220); KommStG **3 %** (GesNr 10004841); BMSVG 1,53 % auf Entgelt + SZ ohne HBG-Cap, § 15 Anwartschaft (keine Monatsentgelt-Staffel), § 14 Abs 2 Verfügungsausschluss; UrlG 30/36 Werktage, § 6-Urlaubsentgelt; EStG 1988 § 67 sonstige Bezüge (0/6/27/35,75 % im Jahressechstel, Freigrenze 2.615 €, Kontrollsechstel § 77 Abs 4a) und § 68 Zulagen/ Zuschläge (2026-ÜStd-Maßnahme 15 Überstunden/170 €). - Plan-Korrekturen `IMPLEMENTIERUNGSPLAN-Privat.md`: Urlaubsentgelt **§ 6 UrlG** statt § 9 (seit 2001 aufgehoben); 13./14.-Begünstigung über **§ 67 EStG** statt „§ 68 Abs 5/6" (klärt auch die Rechtsbasis des Bgld-Offenpunkts P9); EOSB-Anwartschaftsmodell bestätigt; payroll-Skill-Zitat korrigiert. - Offen in GP0: Pilotmandant, Referenz-KV-Kuratierung (D2-KVs), ELDA-/FinOnl-Spezifikationen, AZG/AngG/ArbVG-Volltexte, LStR 2002, UGB-Buchungsmatrix. ## 2026-09-09 — General-AT-Implementierungsplan freigegeben (M0) - `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md` für `l10n_at_hr_payroll_private` (General-AT, KV-basierte Privatwirtschaft) erstellt und freigegeben: GP0–GP10; nächster Schritt **M1 (GP0)** (`RECHTSQUELLEN-Privat.md` anlegen, RIS-/findok-Verifikationen, Odoo-API-Neuverifikation, Pilotmandant-Definition, UGB-Buchungsmatrix). - Freigabe-Entscheidungen: **D1** Plan unter obigem Pfad geführt; **D2** Referenz-KVs R1 = SI-2203 Handwerk und Gewerbe + SI-2748 Metallgewerbe (RUNBOOK-Rechenfallset; Feinjustierung je Pilotmandant in GP0); **D3** **Kern-Vorfinanzierung durch General-AT** — AP3 (Lohnsteuer) und AP4 (SV/DB-Regeln) werden im Kern `l10n_at_hr_payroll` auf General-AT-Kosten gebaut (Spiegelung der Bgld-Entscheidung „AP3 im Kern"; die GemBG-Structure erbt sie). Meldewesen/Belege (AP5/AP6) analog, falls der Bgld.-Auftrag bis M7 nicht erteilt ist; bei Auftragserteilung Anrechnung/Umlegung per Change-Request. **D4** Odoo-19-Source steht kurzfristig als Geschwister-Checkout bereit (API-Neuverifikation erste Aufgabe in M1). - Budgettransparenz: General-AT-spezifischer Anteil ≈ 120–172 PT (Rahmen `personalverrechnung/PLAN-repo-split.md`: ~125–175 PT), inkl. D3-Vorfinanzierung ≈ 180–258 PT. - Housekeeping: README-Modultabelle und Gerüst-README `l10n_at_hr_payroll_private` auf Planstand aktualisiert; `.agents/MEMORY.md` fortgeschrieben. ## 2026-09-09 — Repo-Split aus gem360 (Migration) - History-Import der Payroll-Commits aus `gem360-git` (Branch `dev-payroll`, pfad-gefiltert via `git filter-repo`; siehe `personalverrechnung/PLAN-repo-split.md`). Branch heißt hier `main`. - `l10n_at_hr_payroll` (19.0.1.0.0) ausgegründet: SV-Werte 2026 als `hr.rule.parameter`-Seed, TASY-Mapping + Import-Wizard; Modelle umbenannt `gemeinde.payroll.tasy.*` → `l10n.at.payroll.tasy.*`. - `l10n_at_gemeinde_payroll` → 19.0.1.4.0: hängt nun an `l10n_at_hr_payroll` statt `l10n_at_vrv2015` (VRV-Verbleib: Brücke `l10n_at_gemeinde_payroll_vrv` im gem360-Repo, AP7); Beschreibung auf AP1+AP2-Stand korrigiert. - Bootstrap: `AGENTS.md`, Skills (payroll, odoo19-development, agent-memory), README, CHANGELOG; `l10n_at_hr_payroll_private` als Gerüst (README only).