3c5cc3aded
CHANGELOG-GP9-Eintrag; MEMORY-Handoff (GP1-GP9 komplett, M8 final, AP10 optional).
428 lines
25 KiB
Markdown
428 lines
25 KiB
Markdown
# 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** `<function>`-
|
||
Datendatei für Bestands-Companies (erster `<value>` = 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: `<function>` 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). |