1706 lines
104 KiB
Markdown
1706 lines
104 KiB
Markdown
# Agent Memory — odoo-at-payroll
|
||
|
||
## Current focus
|
||
|
||
**AP 12b wertgebundene Sachbezüge umgesetzt — 166/166 Tests grün**
|
||
(2026-09-14, freigegeben):
|
||
|
||
- **Kern** `l10n_at_hr_payroll` (19.0.8.0.0): neues
|
||
`hr.salary.rule.l10n_at_sv_art` (`folgt` Default = rückwärtskompatibel,
|
||
`laufend`/`sonstig`/`keine`) trennt die SV- von der LSt-Zuordnung;
|
||
`_l10n_at_sv_art` / `_l10n_at_sv_brutto` und die SV-Basis-/§49-/SZ-
|
||
Pfade angepasst. Notwendig für Hardware-Verkauf (LSt sonstig/SV
|
||
laufend) und Bonusmeilen (LSt neutral/SV laufend). Kritischer Fix:
|
||
bei Odoo `DefaultDictPayroll` nur nach `code in result_rules` lesen —
|
||
`.get()` materialisiert eine leere künftige Regel und brach die LSt-
|
||
Engine mit `KeyError('total')`. Tests test_17/18 in test_lohnsteuer.
|
||
- **Privat** `l10n_at_hr_payroll_private` (19.0.9.7.0): neues
|
||
`models/sachbezuege_private.py` — Model B `hr.version`-Stammdaten
|
||
+ Mitarbeiter-Relateds für Wagen, Wohnung, Parkplatz, Handyprofil;
|
||
Werte `at_sb_wagen`/`_co2`/`_wohnung`/`_parkplatz`; Regeln
|
||
`SB_PARKPLATZ`/`_WOHNUNG`/`_WAGEN`/`_GEBRAUCHT`/`_BONUSMEILEN`/
|
||
`_HANDY`, Eingaben `ATP_SB_HANDY`/`_GEBRAUCHT`/`_BONUSMEILEN`, View
|
||
`views/sachbezuege_views.xml`; E2E tests test_sachbezuege2_private.py.
|
||
- **Abgabenlogik**: Wagen/Wohnung/Parkplatz sowie Handy-Mehrkosten
|
||
laufend voll abgabenpflichtig. Handy-Verkauf unter Buchwert: SV-
|
||
laufend + LSt-sonstig + LNK. Bonusmeilen: Drittlohn, nur SV-laufend
|
||
(Kategorie ATP_DG, also kein Auszahlungsnetto-Brutto), kein LSt-/LNK-
|
||
Brutto; darauf entfallende DN-SV mindert aber nach §62-Kette die LSt-
|
||
BG und damit die laufende LSt. Parkplatz als laufend: ⚠ Quelltext
|
||
lb-sac-18 nennt die Abgabenkategorie nicht ausdrücklich — vor
|
||
Produktivsetzung RIS/LStR prüfen.
|
||
- **Recht/MVP-Grenzen**: Wagen §4 SBWVO (CO₂ EZJ, E=0, voller/halber
|
||
Wert/Kostenbeitrag); Wohnung §2 Abs7a (m² BL, Norm/Besorger kombiniert
|
||
55,5 %, klein ≤35=0, >35–45 −35 % erste 12 Mon.); Parkplatz §4a
|
||
(14,53), Handy lb-sac-15, Bonusmeilen lb-sac-08. Nicht automatisiert:
|
||
Wagen Mini/Pool/Wechsel/Mehrfach, Wohnungs-12-Monats-Retro/Mehrnutzer,
|
||
Lohnkonto-Nachweise. Rechenfälle RF-SB-7…9 in
|
||
`docs/rechenfaelle/sachbezuege.md`.
|
||
- AP12 ist damit abgeschlossen; **AP13 Reisekosten & Pendlerförderung
|
||
(inkl. Jobticket)** als nächster AP. Commit **`8efea77`** (2026-09-14,
|
||
nach Nutzer-Freigabe) enthält AP12a+b.
|
||
|
||
**AP 12a steuerfreie Sachbezüge umgesetzt — 159/159 Tests grün**
|
||
(2026-09-13, Freigabe 1/2: Ja/„erst a dann b“):
|
||
|
||
- **Kern** `l10n_at_hr_payroll` (19.0.7.0.0): `hr.salary.rule` Flag
|
||
`l10n_at_st_frei` (mahlzeit/rabatt/betriebsveranstaltung/jubilaeum/
|
||
homeoffice), `_l10n_at_st_frei_ytd`/`_l10n_at_st_frei_freie_laufen`
|
||
(Spieglung der §-49-SV-Seite, YTD je validierter Lauf), Anbindung
|
||
`_l10n_at_bemessung_laufen` (−st_frei), Parameter `at_st_grenzen`
|
||
(8 €/AT · 1.000 €/J · 365 €/J · 186 €/J · 3 €/AT + 100 Tage);
|
||
Tests test_13…16 in test_lohnsteuer.py.
|
||
- **Privat** `l10n_at_hr_payroll_private` (19.0.9.6.0): Eingaben
|
||
`ATP_SB_MAHLZEIT`/`_BETRIEBSVERANSTALTUNG`/`_SACHZUWENDUNG`/`_RABATT`/
|
||
`_HOMEOFFICE` (Mahlzeit/HO is_quantity), Regeln `SB_*` (seq 41–44/48,
|
||
setzen SV- UND LSt-Flag), Parameter `at_sb_werte` (mahlzeit_wert 8.0 =
|
||
tatsächl. Bonwert, homeoffice_wert 3.0), `_at_lnk_basis` −st_frei
|
||
(lohnnebenkostenfrei); 6 E2E-Tests tests/test_sachbezuege_private.py
|
||
(RF-SB-1…6).
|
||
- **Zwei Bug-Funde (Testlauf)**: (a) Odoo-19-Engine: Zeilen-Total =
|
||
amount × qty × rate/100 — tagesbasierte Regeln MÜSSEN `result = wert`
|
||
(Tageswert) + `result_qty = tage` setzen (erste Version `result =
|
||
wert × tage` = Doppelzählung, Zeile 800 statt 80); (b) Test-Helfer
|
||
muss Zeilen nach REGEL-Code (SB_*) filtern, nicht nach Input-Code
|
||
(ATP_SB_*). (c) LSt-Bemessung: ΔLSt + ΔSVDN = Überhang (SV-DN
|
||
abzugsfähig) — nicht pauschal ΔLSt = Überhang.
|
||
- **Doku**: `docs/rechenfaelle/sachbezuege.md` (RF-SB-1…6;
|
||
Rechtsquellen lb-sac-17/07/02, lb-ges-02, lb-tel-04/05 — Homeoffice-
|
||
Anchor war in einem XML-Kommentar fälschlich lb-sac-15 = Handy,
|
||
korrigiert).
|
||
- **Vorbestehend (nicht AP12a)**: `salary_rules_bvg_private.xml` steht
|
||
ZWEIMAL in der Data-List des privaten Manifests (Log-Warnung
|
||
„imported twice“) — beim nächsten Touch bereinigen.
|
||
- **AP12b erledigt** in Commit `8efea77`: Dienstwagen, Kleinwohnung,
|
||
Parkplatz, Handy und Bonusmeilen mit Model B (`hr.version`-Felder)
|
||
für wertgebundene sowie Model A (Eingaben je Lauf) für
|
||
ereignisgesteuerte Werte. Jobticket → AP13.
|
||
|
||
**AP 11 Lohnpfändung umgesetzt — 103/103 Tests grün** (2026-09-13,
|
||
freigegeben 2026-09-12/13, Plan: `personalverrechnung/PLAN-Restluecken-AP11.md` §AP11):
|
||
|
||
- **Model** `l10n.at.payroll.pfaendung` (models/pfaendung.py):
|
||
Gläubiger, Vollstreckungsträger, Pfändungsart, Zustellungsdatum,
|
||
Forderungshöhe, Status aktiv/gesetzt/geloest, Verwalter § 301,
|
||
Zahlungssperre § 304, Kostenersatz-Variante § 292h, dse_frist/
|
||
auszahlung_frist, Rang (computed), Constraint Löse-/Zustelldatum;
|
||
`hr.version`: `l10n_at_unterhaltspflichten` (0–5), `l10n_at_sz_anspruch`;
|
||
`hr.salary.rule`: Flags `l10n_at_pfandung_unpfandbar` (AP12-Schnittstelle),
|
||
`l10n_at_pfandung_beendigung` (AP14/15-Schnittstelle).
|
||
- **Engine** (hr.payslip): Existenzminimum-Maschine § 291a EO je Topf
|
||
(laufend/sz13/sz14/beendigung), Pfändungsberechnungsgrundlage § 291 EO
|
||
(laufend = Bezüge − unpfändbar − SV-DN − LSt), Masse, Kostenersatz
|
||
§ 292h, Regeln `PFAENDUNG` (seq 75) / `PFAENDUNG_SZ` (seq 76),
|
||
Parameter `at_eo_azr` (2026: 1.308,39) + `at_eo_kostenersatz`,
|
||
DSE-Report (qweb-pdf), Views/Menu/Security (payroll-Groups +
|
||
Company-Rule), Rechenfälle `docs/rechenfaelle/pfaendung.md`
|
||
(RF-PFA-1…7; lb-pfa-03 exakt verifiziert: 33.840 → EX 16.684 /
|
||
pfändbar 17.156). Version **19.0.9.5.0**.
|
||
- **Fix im Testlauf:** `result_rules` enthält UNGERUNDETE Rule-Summen
|
||
(SVDN_KV 79.699167 vs. Zeile 79.70) — Pfändungsberechnungsgrundlage
|
||
muss die gerundeten Bezugsarten (Cents) verwenden → `round(..., 2)`
|
||
in `_at_pfa_rule_amount`/`_at_pfa_bruto` (result_rules-Pfad) + finales
|
||
`round` in `_at_pfaendung_basis` (alle Töpfe).
|
||
- **Offene Reste** (dokumentiert, nicht geblockt): Unterhaltsexekution
|
||
75 %/Koinzidenz, Vorschüsse § 290c, Sachbezugspfändung-Schnittstelle
|
||
(AP12 jetzt umgesetzt), Beendigungs-Regeldetails (AP14/15),
|
||
2027-AZR-Werte. **Commit `018554b`** (2026-09-13, nach Nutzer-
|
||
Freigabe „commit, dann ap12").
|
||
|
||
**AP 8 Arbeits-/Entgeltbestätigungen umgesetzt — 152/152 Tests
|
||
grün — damit ist der AP0–AP10-Nutzer-Katalog komplett** (2026-09-12,
|
||
AEB-Session; siehe auch Parallel-Session-Notiz unten):
|
||
|
||
- **Satzstrukturen PDF-verifiziert** (DM-ORG 42.7.0 lokal, ODL
|
||
Pages 493-505): **G.10** AEB-Krankengeld v12 (SART 70/71, BEST
|
||
AK, 111 Felder, Satzlänge 1392), **G.11** AEB-Wochengeld v10
|
||
(SART 75/76, BEST AW, 64 Felder, 1048) — Positionsketten
|
||
lückenlos geprüft; die .txt-Extraktion des DM-ORG ist
|
||
UNZUVERLÄSSIG (Feldversatz) — PDF-Extraktion verbindlich.
|
||
- **Model** `l10n.at.payroll.aeb` (models/aeb.py): art, Episode
|
||
(verhinderung_von/bis), KZKU, Storno via storno_id (E.10.2.1:
|
||
nur Fehler/BMGL-Änderung), REFN/Datei/Prüfprotokoll; ELDA-
|
||
Bestände AK/AW. Fachdaten: Ident/Wohnort (version.private_*),
|
||
Bank (primary_bank_account_id), EFZ-Anspruch AEFZ/JAGU=1/TAGU=2,
|
||
Teilentgelt TPR/TVO/TBI, Vorerkrankungen ANV/ANB, VENT,
|
||
Bezugsblöcke BVO/BBI/BBE+BSUM; Wochengeld: AVER (Ø-Netto
|
||
3 Referenzmonate § 162 Abs 3), AVON/ABIS, ANGV=K,
|
||
**AGRD-Validierung D.22** (SART 75/76 nur 02/03/04/05/06/10/22/24
|
||
— unzulässige geleert + Protokoll).
|
||
- **EFZ-Refaktur:** Phasen-Karte nach **hr.version** verschoben
|
||
(`_l10n_at_efz_arbeitsjahr_start`/`_l10n_at_efz_phasen`/
|
||
`_l10n_at_efz_stufe_am`) — Payslip-Status und AEB teilen die
|
||
Maschine; AP4-Tests unverändert grün. Fund: `setze(None)`
|
||
übernimmt Grundstellung NICHT — löschen nur über Leerstring.
|
||
- 4 Tests (SART 70 mit 76-Tage-Episode: AEFZ 06, TPR1 50,
|
||
TVO1 13.10., VENT 12.10.; SART 75 mit AVER; Storno 76;
|
||
AGRD-Validierung). Version **19.0.9.4.0**.
|
||
- **Offen (MVP-Reste):** Prüfkatalog-Verifikation (Parallellauf,
|
||
P7), KE/UE-Zeilen, EIN/APFT-Feiertage, VOAB/VOBI, Prämien-/
|
||
Provisionsausweis (seit-2025-Felder). **Abstimmung mit der
|
||
Parallel-Session: PLAN-Restluecken AP11+ unabhängig startbar,
|
||
AEB nicht mehr als Restlücke.**
|
||
|
||
**Gap-Reevaluierung + Restlücken-Plan AP11 ff. freigegeben und
|
||
versioniert** (2026-09-12): Cluster-Abgleich Wissensbasis (601
|
||
Einträge/69 Cluster) gegen den AP0–AP10-Stand neu aufgezogen —
|
||
die Vorphase hat die große Gap-Liste weitgehend geschlossen
|
||
(EFZG AP4, Wochengeld AP7, Wr. DAG AP3, BSGR/ERGB AP0, Reports
|
||
AP2, Abwesenheits-WETs AP5, VWGJ AP9, GemBG-Fixes AP10).
|
||
Verblieben: Pfändung, Sachbezüge, Reisekosten/Pendler, End-
|
||
abrechnungs-Zyklus (Urlaubsersatzleistung/Vergleich/Aufrechnung),
|
||
Abfertigung Alt, Karenz-Reste, L17/§ 109a, Schwerarbeitsmeldung,
|
||
Status-/Verhinderungs-Sonderfälle; Optionen ATZ/Kurzarbeit/
|
||
Beteiligung/Entsendung. Plan **freigegeben (Nutzer)** und persistiert:
|
||
`personalverrechnung/PLAN-Restluecken-AP11.md` — Pakete AP11
|
||
Pfändung · AP12 Sachbezüge · AP13 Reise/Pendler · AP14 End-
|
||
abrechnung · AP15 Abf Alt · AP16 Karenz-Reste (Scope-Gate 8.13) ·
|
||
AP17 Meldewesen-Reste · AP18 Schwerarbeit (Beschaffungsgate) ·
|
||
AP19 Status-Sonderfälle; Σ AP11–AP19 ≈ 90–142 PT; je Paket RIS-
|
||
Gate vor Bau (Werte nur aus Quelle). **AP8 (AEB) läuft parallel in
|
||
eigener Session** — Plan führt es nur als Restabgleich; keine
|
||
Doppelumsetzung, Paket-Starts mit der Parallel-Session abstimmen.
|
||
|
||
**AP 7 Mutterschutz/Wochengeld umgesetzt — 148/148 Tests grün**
|
||
(2026-09-12):
|
||
|
||
- **Rollenklärung (Plan-Korrektur):** Wochengeld = **KV-Leistung**
|
||
(§ 162 Abs 1 ASVG, lb-msf-03) — die **ÖGK zahlt**, NICHT der
|
||
Dienstgeber (die frühere Plan-Annahme „DG-Zahlung nach MSchG“
|
||
wäre das deutsche Mutterschaftsgeld-Modell gewesen). DG-Pflichten:
|
||
Entgelt-Stopp in den Verbotsfristen + Bemessungsdaten (AEB, AP8)
|
||
+ BV auf fiktiver Grundlage.
|
||
- **Umsetzung:** models/mutterschutz.py — `_at_msch_status()`
|
||
(Kalendertage/Arbeitstage/Episode aus der AT-Urlaubsart
|
||
„Mutterschutz-Frist“, WET ATP_MSCH); **volle Wochengeld-Rechnung**
|
||
`_at_wochengeld()` (§ 162 Abs 3: Ø-Netto 3 Referenzmonate +
|
||
satzungs-SZ-% 14/17/21 [Parameter at_msch_sz_prozentsatz,
|
||
⚠ Satzungsverifikation offen] ÷ Kalendertage); Regel
|
||
MSCH_ENTGELT (−Tagesatz × Arbeitstage, geteilter Helper
|
||
_at_efz_tagesatz); **fiktive BV § 7 Abs 4 BMSVG**
|
||
`_at_bv_fiktiv_wochengeld()` (Monatsentgelt-Ø der 3 Kalender-
|
||
monate vor Versicherungsfall inkl. anteiliger SZ × KT/30) im
|
||
_at_bv_basis_laufen-Hook neben der Krankengeld-Fiktion (AP4).
|
||
- **Verifikationen:** MSchG §§ 3/5 + BMSVG § 7 Abs 4 lokal verifiziert
|
||
(Quellen .firecrawl/ris/); lb-msf-03 bindend; **lb-krs-08-⚠Marke
|
||
(EFZG/AngG-Stufen) per ✅-Eintrag in der KB-Dokumentkuratierung
|
||
erledigt** (EFZG GesNr 10008308 + AngG § 8, Stand 2026-09).
|
||
- Rechenfälle docs/rechenfaelle/mutterschutz.md; 4 Tests
|
||
(Entgelt-Stopp + fiktive BV, §-162-Abs-3-Berechnung, Wirkungs-
|
||
losigkeit, kurzes-DV-Fallback). Version Privat **19.0.9.3.0**.
|
||
148/148 (64+110+18) frischer -i-Lauf, py/XML-Sweep.
|
||
- **Offen:** AP 8 (AEB SART 70/75/76 — Arbeits-/Entgeltbestätigungen
|
||
Kranken-/Wochengeld; EFZ- und Wochengeld-Berechnung liefern die
|
||
Daten). Optionen dokumentiert: Sonderwochengeld § 163 ASVG,
|
||
Ruhen § 166, SZ-%-Satzungsverifikation, Karenz-Referenzmonat
|
||
§ 7 Abs 4 Z 1-3.
|
||
|
||
**AP 4 EFZG/Teilentgelt umgesetzt — 144/144 Tests grün**
|
||
(2026-09-12):
|
||
|
||
- **Rechtsverifikation:** lb-krs-08-⚠Marke erledigt — EFZG von RIS
|
||
beschafft (Bundesnormen **GesNr 10008308**,
|
||
.firecrawl/ris/EFZG_*GeltendeFassung.html) und **§ 2 Abs 1/3/5
|
||
verifiziert**; § 8 Abs 1/2/2a AngG lokal verifiziert —
|
||
**Gleichlauf bestätigt** (6/8/10/12 Wochen bei 0/1/15/25
|
||
vollendeten DJ + je 4 Wochen halb). „56 Tage" = AU-Topf 8 Wochen
|
||
(lb-asc-15), KEINE eigene Regel. **KUG § 62 ASVG = Falsch-
|
||
Prämisse** (RECHTSQUELLEN-Privat 2026-09-10: § 62 regelt
|
||
Beitragsabrechnung; deutsches U1-Vorbild) — kein Baustein.
|
||
- **EFZ-Maschine** `models/efzg.py`: `_at_efz_status()` —
|
||
Kalendertage-Kontingente je Arbeitsjahr (Eintrittsdatum-Rhythmus),
|
||
Krank- und AU-Topf getrennt (AU nur voll), Stufe je Tag
|
||
(Stufensprung verlängert), Phasen je Arbeitstag aus den
|
||
ATP_KRANK/ATP_AU-Work Entries (neue Urlaubsart Arbeitsunfall);
|
||
Episode-Beginn für fiktive BV; Info-Feld am Payslip.
|
||
- **Regeln** TEIL_ENTGELT_HALB (−50 %/AT) + KRANKENTGELT_PHASE
|
||
(−100 %/AT) als negative Brutto-Zeilen (seq 45/46, Tagesatz =
|
||
unreduzierte laufende Basis ÷ Arbeitstage —
|
||
`_at_efz_tagesatz(result_rules)` rechnet die eigenen Reduktionen
|
||
heraus); SV/LSt/LNK folgen über die reduzierte laufende Basis
|
||
(lb-krs-07).
|
||
- **Fiktive BV § 7 Abs 3 BMSVG** in `_at_bv_basis_laufen`-Hook:
|
||
50 % Vormonatsentgelt (Episode-Beginn-Monat davor, SZ ausgenommen)
|
||
× Halb-/ÖGK-Kalendertage/30 — Halbphase zählt mit (Krankengeld
|
||
ruht zur Hälfte, Quellbeispiel lb-krs-07); fließt in BVG-Zeile
|
||
und mBGM-BV-Basis.
|
||
- Parameter `at_efz_stufen` (data/rule_parameters_efzg_private.xml);
|
||
Rechenfälle docs/rechenfaelle/efzg.md; 6 Tests (Übergang,
|
||
Kontingent, Stufe 8 Wo, AU-Topf, fiktive BV, Wirkungslos ohne
|
||
Stand). November-B13-SZ-Bezug in BV-Grundlage inklusive (§ 6
|
||
BMSVG) — Tests komponentenweise.
|
||
- Version: Privat **19.0.9.2.0**. 144/144 (64+106+18) frischer
|
||
-i-Lauf, py/XML-Sweep.
|
||
- **Offen:** AP 7 (Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75)
|
||
— EFZ-WETs sind verdrahtet; dokumentierte Reste: Kalenderjahr-
|
||
Umstellung § 8 Abs 9 AngG, ÜStd-/Provisionsdurchschnitte, SZ-
|
||
Kürzung „kann"-Regel.
|
||
|
||
**AP 9 Vordienstzeiten/Einstufung umgesetzt — 138/138 Tests grün**
|
||
(2026-09-12):
|
||
|
||
- **Rechtsbeschaffung:** Bgld. GemBG 2014 via RIS **LrB GesNr
|
||
20001002** (geltende Fassung, Quelle
|
||
`.firecrawl/ris/bgld/GemBG_2014_GeltendeFassung.html`) — **§ 67
|
||
verifiziert**: BDA = Dienstzeit + anrechenbare Vordienstzeiten
|
||
(Abs 1); Pflicht-Anrechnung EWR-ÖD/EU-Dienste (Abs 2 Z 1 f),
|
||
Grundwehr/Ausbildung max 6 M, Zivil/Ersatz max 9 M (Z 4),
|
||
einschlägige Berufstätigkeit/Verwaltungspraktikum **max 10 Jahre**
|
||
(Abs 3). Rahmen-KV § 17 (SI-2203 Volltext) verifiziert: Abs 4
|
||
Anzahl angerechneter VWGJ durch Firmenleitung + Dienstzettel,
|
||
Abs 5 Vorrückung am **Ersten des Erreichungsmonats**.
|
||
- **Privat (AP9b):** Stufen-Neu-Feld `vwgj_ab` (aus Labels "nach N
|
||
VWGJ", 0=ab Beginn, **-1=nicht gepflegt** — ORM liest Integer-
|
||
NULL als 0, deshalb -1-Konvention + Domain `> -1`); CSV-Seed um
|
||
vwgj_ab ergänzt (131 Zeilen); Gruppen-Methoden
|
||
`_get_stufe_fuer_vwgj`/`_get_naechste_vwgj` (kollektivvertrag.py);
|
||
Vertragsfeld `l10n_at_vordienstzeit_monate` + Compute
|
||
`l10n_at_vwgj_monate`/`l10n_at_vwgj_stufe_vorschlag`/
|
||
`l10n_at_naechste_vorrueckung` (§ 17 Abs 5) + Button
|
||
`action_einstufung_uebernehmen` (bewusst manueller
|
||
Verwaltungsakt); KV-Einstufungs-Gruppe im View erweitert.
|
||
Tests: test_einstufung_private 4 (freeze_time für Determinismus).
|
||
- **GemBG (AP9a):** `vordienstzeiten_monate` (Help dokumentiert den
|
||
kompletten §-67-Katalog) + Compute `bda_vorschlag` (= Beginn −
|
||
Monate) + Button `action_bda_uebernehmen`; View am
|
||
Besoldungs-Block. Test test_06 (BDA-Übernahme triggert
|
||
§-66-Abs-2-Vorrückungstermin).
|
||
- Versionen: Privat **19.0.9.1.0**, GemBG **19.0.1.6.0**.
|
||
Validierung: 138/138 frischer -i-Lauf, py/XML-Sweep, DB entfernt.
|
||
- **Offen:** AP 4 (EFZG/Teilentgelt + fiktive BV), AP 7
|
||
(Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75).
|
||
|
||
**AP 5 + AP 2a–d + AP 3 + AP 10 umgesetzt — 133/133 Tests grün**
|
||
(2026-09-12, Folgeturn nach AP0/AP1, Reihenfolge lt. Plan):
|
||
|
||
- **AP5 Abwesenheiten:** hr_holidays + hr_work_entry_holidays als
|
||
Pflicht-Dependence des Privatmoduls; AT-WETs ATP_URLAUB/ATP_KRANK/
|
||
ATP_KARENZ (is_leave) + country-gebundene AT-Urlaubsarten mit
|
||
WET-Verknüpfung (data/absence_private.xml, Odoo-Lokalisations-
|
||
muster); Karenz-Wochen erkennbar via Work Entries.
|
||
- **AP2a–d Reports:** Monatsjournal mit eigenem **Dienstgeberanteile-
|
||
Block** (ATP_DG-Kategorie, vorher still ausfiltert), neuer Report
|
||
**Dienstgeber-Gesamtkosten** (je AN Brutto + LNK aufgeschlüsselt/kumuliert
|
||
+ Laufsummen, Spalten FLAF/KommSt/DZ/BV/Wr. DAG), **Jahreslohnkonto
|
||
je DN** + **Betriebsjahreslohnkonto** (Wizard + Monatsmatrix,
|
||
models/monatsreports.py + report/jahresreports.xml), **Buchungsbeleg**
|
||
am Lohnlauf (private, models/buchungsbeleg.py).
|
||
**Latenz-Bug:** models/monatsreports.py war NIE in models/__init__.py
|
||
importiert — sämtliche GP7-Reportmodelle waren toter Code!
|
||
- **AP3 U-Bahn-Steuer:** Wr. DAG via RIS **verifiziert** (LrW GesNr
|
||
20000133, Fassung 12.09.2026, Quelle .firecrawl/ris/wien/WDGAG_*.html;
|
||
2 €/Woche § 5, Befreiungen § 3, 15./31.3. § 6, Rückerstattung § 7
|
||
218,02/2.180,19 €) — Implementierung: Company-Flag l10n_at_wien_dag
|
||
(Kern), Regel WIEN_DAG (models/wien_dag.py — Wochenlogik Montag-im-
|
||
Monat + Befreiungen Lehrling/55+/≤10WStd/Karenz-Woche), Fristenarten
|
||
wien_dag/wien_dag_jahres (cron-geflaggt), FI 6663 (3560 Referenz-
|
||
rest), DG-Kosten-Spalte. **Wochenlektüre „Montag beginnt im Monat" =
|
||
Praxis-Annahme, Parallellauf verifizieren.**
|
||
- **AP10 GemBG-Fixpaket:** Modul erstmals **installierbar** — 9
|
||
Latenzfehler behoben: regular_pay, is_paid+round_days* auf WETs,
|
||
falscher XML-ID-Präfix (payroll_structure_bgld.), amount_select
|
||
'python'→'code', safe_eval-Import, rules→result_rules (Odoo 19
|
||
befült rules NIE), categories['X'], work_time_rate-÷100 (Bruchteil
|
||
0..1), nie gelaufene Tests (Payslip-name, Stichtag vor Katalog-
|
||
gültigkeit, date_start ist Compute aus contract_date_start).
|
||
- Versionen: Kern **19.0.6.0.0**, Privat **19.0.9.0.0**, GemBG
|
||
**19.0.1.5.0**. Validierung: 133/133 (17 GemBG + 64 Kern + 92
|
||
Privat), frischer -i-Lauf aller 3 Module, py/XML-Sweep, DB entfernt.
|
||
- **Offen:** AP 9 (Vordienstzeiten — jetzt entblockt), AP 4 (EFZG/
|
||
Teilentgelt), AP 7 (Wochengeld/Mutterschutz), AP 8 (AEB SART 70/75).
|
||
|
||
**AP0 TASY-Katalog (Variante b) + AP1 AGRD umgesetzt und grün (109/109
|
||
Tests)** (2026-09-12, Nutzer-Freigabe des AP-Plans mit
|
||
Scope-Entscheidungen): — Kernmodul: neue Katalogmodelle
|
||
`models/tasy_katalog.py` (10 Modelle: tasy.bsgr/ergaenzung/
|
||
dienstgebergruppe/tarifgruppe/tarifset/tarif/tarifset.zuord/
|
||
zuabschlag/zuabschlag.steuerung [+ m2m]), Import-Wizard
|
||
`l10n.at.payroll.tasy.katalog.wizard` in `models/tasy.py`
|
||
(sektionsscharf — root.iter() fasste auch Referenz-Elemente!),
|
||
Sicherheit, Views/Menus `views/tasy_katalog_views.xml`;
|
||
Auflösungs-API `_l10n_at_find(bsgr, ergs, dgg, stichtag)` →
|
||
`_l10n_at_saetze(basis, stichtag)`. Privatmodul: mBGM liest Katalog
|
||
vor `at_mbgm_tarif` (quellen-Fallback), Company-Feld
|
||
`l10n_at_dienstgebergruppe` (Default NBALG), Vertrags-m2m
|
||
`l10n_at_ergaenzung_ids`, **ERGB wird real belegt** (15 Stellen im T1),
|
||
NSchAB-Flag nur noch Parameter-Fallback. **BSGR-Korrektur:**
|
||
Lehrlinge arbeiter→**B045**, angestellte→**B044** (TASY: B044 =
|
||
„Angestelltenlehrlinge"), geringf./fallweise→**B010/B030** je
|
||
Personalgruppe; **NSchAB-Feldumbenennung** Schlechtwetter→Nachtschwer-
|
||
arbeit (3,80 % = NB-Zweig DG ab 2020, verifiziert; SW-Zweig = 0,7/0,7).
|
||
**AP1** — `l10n_at_agrd` Char→Selection mit vollständiger D.22-Liste
|
||
(33 Codes, lokal verifiziert), Seed `data/hr_departure_reason_seed.xml`
|
||
(noupdate; hr-Defaults fired→01/resigned→02/retired→16 vorverbunden +
|
||
7 AT-Ursachen), View-Erbe auf Abgangsursachen-Form/Liste.
|
||
Nutzer-Entscheidungen: hr_holidays als **Pflicht-Dependence**;
|
||
Wochengeld **volle Berechnung**; TASY-Import **alle Träger**; AGRD
|
||
Migration OK; Buchungsbeleg **Lohnlauf-Ebene**; GemBG-Fix-Paket **ja**.
|
||
Validierung: 109/109 grün auf Wegwerf-DB (frischer -i-Lauf;
|
||
test_tasy_katalog 5 inkl. Realexport — Fund: altersgrenzeMinJahr
|
||
ist **Dezimal** (60.5) → Float-Felder), py/XML-Sweep ok, DB entfernt.
|
||
**Nächste APs:** AP 5 (holidays/WETs), AP 2a-d (Reports), AP 3
|
||
(U-Bahn nach RIS-Klärung), AP 4/7/8 (EFZG/Wochengeld/AEB), AP 10/9
|
||
(GemBG-Fix → Vordienstzeiten).
|
||
|
||
**GP9 UI/Security/Doku umgesetzt — GP1–GP9 komplett, AP9
|
||
abgeschlossen, Projekt M8 final** (2026-09-12): Kern 19.0.5.1.0 —
|
||
Company-Stammdaten-UI (BKNR/LStNr/Bundesland/WKO/WF-Wien — Reiter
|
||
am Company-Formular, vorher nur Entwicklermodus!), Multi-Company-
|
||
Record-Rules (ir.rule für L16/Kind/Frist). Privat 19.0.8.1.0 —
|
||
Mitarbeiter-UI (All-in § 2g + NSchAB), Multi-Company-Rules (mBGM/VR),
|
||
Demo-Datensatz (3 AN, noupdate, Demo-Modus), Benutzerhandbuch
|
||
(deutsch, Quick-Start). 100/100 grün; odoo_dev auf GP9. **General-AT
|
||
Projekt GP1–GP9 abgeschlossen (M8 final).** Optionen: AP10
|
||
(Testing/Parallellauf) als Folgeauftrag.
|
||
|
||
**GP8 Jahreswechsel/Fristen/Retro umgesetzt und grün (100/100
|
||
Tests) — General-AT GP1–GP8 komplett; optional GP9 (AP9:
|
||
UI/Security/Doku/Schulung) als Folgeauftrag** (2026-09-12): Kern
|
||
19.0.5.0.0 — Fristenkalender (`models/fristenkalender.py`:
|
||
`l10n.at.payroll.frist` mit ir.cron-Auto-Erzeugung monatlich +
|
||
jährlich; Fristarten SV 15./DB-DZ-KommSt 15./L16-Ende-Februar/
|
||
Arbeitsstätte/§-109a/KommSt-Jahreserklärung-Ende-März/Schwerarbeit;
|
||
Überfällig-Färbung; Sprungaktion zur GP7-Deklaration), Jahres-Retro
|
||
(`models/jahresretro.py`: Kontrollsechstel § 67 Abs 10 — Günstig-
|
||
Vergleich Fixsätze vs. Tarif je AN; §-77-Abs-3/4-Option; Handlungs-
|
||
empfehlung Odoo-Korrektur-Pipeline), Mitteilungsfile-Import
|
||
(`models/mitteilungsfile.py`: ELDA-Rückantwort-XML-Parser,
|
||
Fehler/Warnungen lesbar aufbereiten), 2027-Parameter-Rahmen
|
||
(`data/rule_parameters_2027.xml`: nur Struktur — WF-Vektor-Default +
|
||
AV-Staffel tiers=[], KEINE Trainingswerte; Wartungszyklus beschafft
|
||
die offiziellen Werte). Privat 19.0.8.0.0 — Vertragsstichtage-UI
|
||
(`views/vertragsfelder_views.xml`: GP4-Stichtage + Status-Flags),
|
||
All-in-Deckungsrechnung + DAG-Ausweis (`report/gp8_reports.xml`),
|
||
Frist-mBGM-Verlinkung (`models/fristen_private.py`: ref_mbgm_id nur
|
||
im Privatmodul — Kern kennt mBGM nicht). B14-Verifikation: aktuelle
|
||
Implementierung praktisch korrekt (erster Urlaubsmonat,
|
||
_at_sz_bereits_bezahlt gegen Doppelauszahlung — „längster Teil" nur
|
||
Randfall bei mehrmonatig gesplitteten Urlauben, dokumentiert ohne
|
||
Code-Fix). Tests 100/100 (test_gp8 6), Wegwerf-DB frisch;
|
||
`odoo_dev` auf GP8 aktualisiert. **GP1–GP8 komplett — M8 erreicht.**
|
||
|
||
**GP7 Meldewesen/Belege umgesetzt und grün (94/94 Tests)** (2026-09-12): Kern
|
||
19.0.4.0.0 — ELDA-Fixsatz-Framework (`models/elda.py`: Fixlängen,
|
||
a/n blank/n null, Cent kaufmännisch, Prozente ×1000, ISO-8859-15,
|
||
Dateiheader, Vorlauf SART 00/Schluss SART 99, SANR ab 1 lückenlos,
|
||
SANZ inkl. Rahmen; **CRLF-Satztrenner = Praxis-Annahme, DM-ORG
|
||
normiert keines — Parallellauf verifizieren**); L16 (`models/
|
||
lohnzettel_l16.py`: I1 1.100 + L1 **3.500**, Lohnzettelversion 28,
|
||
BEST LF/VSTR 94, ~210 Felder, Kinderblock 15×123 ab Pos. 1501;
|
||
**KZ 210 = § 25 GESAMTBrutto** — KZ-245-Formel = laufende Steuer-
|
||
bemessung, per Konstruktion GP3-konsistent, Ableitung aus Kern-Flags
|
||
ohne paralleles KZ-Feld) + Arbeitsstättenmeldung § 34 Abs 6 (SART 45,
|
||
BEST AD/VSTR ST, je AN am 31. 12., GKZ manuell am Dienstort-Partner);
|
||
Kind-Modell `l10n.at.payroll.kind` (FB+-Wartung; Nutzer: **FB+ rechnet
|
||
NICHT im Lohnsteuerkern** — Steuer < 0 → ANV); Stammdaten
|
||
(BKNR/Lohnsteuernummer Company, GKZ Partner, VSNR-Formatprüfung
|
||
hr.version.ssnid — Prüfziffer Rest, eSV-AGRD-Mapping
|
||
hr.departure.reason); Belege: Lohnzettel AT + Monatsdienstliste +
|
||
Monatsjournal (QWeb auf hr.payslip.run; account.report in keinem
|
||
HR-Modul). Privat 19.0.7.0.0 — mBGM/JASV (`models/mbgm.py`: PS/G1/
|
||
T1/BS/V1, T01/T02-Gesamtsatz aus `at_mbgm_tarif` **normativ laufend
|
||
39,05 %/SZ 37,55 %**; Abschläge **je Basis AB und SZ**: A03/A02/A01
|
||
§-2a-DN-AV, A09 UV-60, A10 AV+IE, A15 PV; BV-Basis GP5 + V01;
|
||
RSUM=Basis×Satz mit GP4-Konsistenzcheck ±0,10 €; Storno R1 REFU,
|
||
Fehlanzeige Null-Paket; geringfügig/fallweise OHNE Parametrisierung →
|
||
Abbruch, keine Tariferfindung) + Versichertenmeldung (`models/
|
||
versichertenmeldung.py`: M3/M4 deklarative Event-Erkennung über
|
||
Registry `l10n.at.payroll.vr.event` — idempotent, KEIN write-diff;
|
||
BBER 01–04, GERF Gehalt-vs-GFG, BVAB/BVJN aus GP5, VWAZ h×100, AGRD;
|
||
fallweise BEST MA/SART 32 MVP je Anmeldetag; NSchAB-Company-Flag
|
||
+3,80 B001). Tests 94/94 (test_elda_l16 4 + test_meldewesen_private
|
||
2), Wegwerf-DB frisch; Rechenfälle `docs/rechenfaelle/meldewesen.md`.
|
||
Out: Schwerarbeit (DM-ORG E.22-Struktur vorhanden, keine ASchV-
|
||
Basis), § 109a, L17, Mitteilungsfile-Import (5.2→GP8), FB+-LSt
|
||
(ANV), geringfügig-mBGM bis Param. Offen: odoo_dev-Update (GP4-
|
||
Stand!), Referenzbuchhaltungs-Endfixierung, Parallellauf-Verifikation
|
||
CRLF/Kanäle.
|
||
|
||
**GP6 FI-Buchung UGB umgesetzt und grün (88/88 Tests)** (2026-09-12):
|
||
privat 19.0.6.0.0 — Buchungsmatrix nach **KFS/BW 6** (Nutzer-
|
||
Referenz-Exemplar `.additional_docs/KFSBW6_13072017_RF.pdf`, extrah.
|
||
`/tmp/kfsbw6/` ad hoc): Hook `_configure_payroll_account_at`
|
||
(`models/account_chart_private.py`; BE-Muster; Chart-Load-Pfad
|
||
`_post_load_data` + `<function>`-Datendatei für Bestands-Companies —
|
||
der ERSTE `<value>` einer function ist die Record-ID-Liste,
|
||
convert.py!) ordnet Regelkonten (Matrix als Python-Dict), Journal
|
||
SLR (Default 6200, BE-Muster — Odoo-Constraint verbietet
|
||
Receivable/Payable als Journal-Default!) und NET-Konto **3850**
|
||
(Nutzer 5.1; Anlage+reconcile, l10n_at-Chart hat es nicht).
|
||
**EKR-Debit-Split:** `l10n_at_personalgruppe` am Vertrag +
|
||
`l10n_at_account_debit_arbeiter` je Regel, Option A minimal (Nutzer
|
||
5.2: 6000/6500/6600/6601/6602; Rest Fallback auf Angestellten-
|
||
Konten bis Referenzbuchhaltungs-Fixierung); `_prepare_slip_lines`-
|
||
Gesamtüberschreibung `models/account_posting_private.py` (Odoo hat
|
||
keinen Override-Punkt; Upstream-Kopie Odoo-Pin mit 1 Substitution,
|
||
testgepinnt). Nutzer-Vertauschung aufgeklärt: „6000 Gehälter/6200
|
||
Löhne“ → KFS/BW 6 sagt 600–619 Löhne, 620–639 Gehälten. **NET-
|
||
Umbenennung NETTO→NET** (Odoo filtert code 'NET' für Payment/
|
||
net_wage/Negativ-Netto) + **Odoo-19-Fund:** Structure-Anlegen kopiert
|
||
die default_structure-Regeln (BASIC/GROSS/NET/…) via Feld-Default
|
||
in rule_ids — kopierte NET-Regel kollidiert im result_rules-Dict
|
||
(Netto=0); Fix: `<function>` archiviert die Kopie (active=False;
|
||
KEIN Unlink — struct_id NOT NULL + historische Linien behalten
|
||
Regel-Ref; One2many blendet Archivierte aus). Konto-Suche exakt
|
||
vor Präfix-Fallback (Präfix max. +1 Stelle) — sonst matcht
|
||
'6000%' Odoo-Scaffold 600000 „Expenses“ chartloser Firmen!
|
||
BVG 6440 (EKR 644) vor 6400 (Odoo-Chart), Credit 3600 (Nutzer 5.3);
|
||
depends + l10n_at + hr_payroll_account_iso20022. Tests
|
||
`test_account_private` (4, Kontenplan-Mock ohne Chart-Install;
|
||
NET-Rundungscents = Odoo-„Adjustment Entry“ auf Journal-Default,
|
||
delta=0.02) + NETTO→NET in 4 Suiten — **88/88 grün** (frischer
|
||
`-i`-Lauf, Wegwerf-DB, aufgeräumt). Offen: Arbeiter-Sub-Konten-End-
|
||
codes mit Referenzbuchhaltung (GP0-Rest), Payment-/SEPA-Registrierung
|
||
nur strukturell getestet, `odoo_dev` Update nachholen (läuft auf
|
||
GP4-Stand).
|
||
|
||
**GP5 Abfertigung Neu (BMSVG) umgesetzt und grün (84/84 Tests)**
|
||
(2026-09-11): Kern 19.0.3.1.0
|
||
(`at_sv_bv_dg` 1,53 % in `rule_parameters_sv_2026.xml`); privat
|
||
19.0.5.0.0 — 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 —
|
||
bewusst KEIN Rückgriff auf die SV-SZ-Basis des Kerns, deren
|
||
Z-7-Ausschluss fehlt = GP4-Beobachtung, offen dokumentiert;
|
||
Nutzer-Entscheidung „eigene BV-Grundlage").
|
||
`models/abfertigung_private.py`: beitragsfreier erster Monat
|
||
**taggenau** — Fenster [Eintritt, Eintritt+1M), Pflicht ab
|
||
Monatsjubiläum (15. 06. → 15. 07.; Nutzer-Lesart „ab Folgetag
|
||
16. 04." = Off-by-one, verworfen gegen KB-Beispiel lb-vor-03:
|
||
4.500/30 × 17 = 2.550), 30-Tage-Aliquotierung via Lohnsteuertage
|
||
(Teilmonat-Doppelabzug-Schutz), Monatsende-Klippe (31. 01. → frei
|
||
bis Ultimo, Pflicht ab Folgemonatserstem), AV ≤ 1 Monat gänzlich
|
||
frei; **Wiederzulassung binnen 12 Monaten ab Tag 1** — Vor-AV
|
||
beliebiger Dauer (auch < 1 Monat), schlägt auch die Kurz-AV-Freiheit
|
||
(Nutzer-Klarstellung 2026-09-11; OGH 9 ObA 30/16a; Suche über frühere
|
||
`hr.version` mit contract_date_end); SZ ohne Fenster-Kürzung, frei
|
||
nur bei Beitragsmonat im Fenster (**voller Datumstag** — Monats-
|
||
anfangs-Kürzung wäre für Fälligkeit 20. 07. bei Fensterende 15. 07.
|
||
falsch); läuft auch für Geringfügige + Lehrlinge (§ 46, § 1 Abs 2
|
||
Z 1). Anwartschaft (§ 15: Beiträge + Erträge, KEINE Staffel)
|
||
on-the-fly aus validierten BVG-Linien (`_at_bv_anwartschaft`, je
|
||
Beitragsmonat/Jahr); Anwartschaftsreport QWeb auf `hr.employee`
|
||
(AbstractModel `bv_report.py`) + Endabrechnungs-Wizard
|
||
`l10n.at.bv.endabrechnung.wizard` (§§ 14-17: §-14-Abs-2-Matrix,
|
||
< 36 Beitragsmonate IMMER-Sperre, §-16-Fälligkeit Ende des
|
||
zweitfolgenden Monats, 6-Monats-Erklärungsfrist, 5 Optionen;
|
||
Auszahlung durch die MV-Kasse, kein Payslip). Stammdaten:
|
||
`l10n_at_abfertigung_neu` + `l10n.at.bv.kasse` (Leitzahl eSV/mBGM,
|
||
7er-Namen-Seed noupdate, lb-gsv-11 — Leitzahlen aus Mandats-Unter-
|
||
lagen, nie geraten) + `l10n_at_bv_ertraege`/`l10n_at_bv_monate_
|
||
extern` am Mitarbeiter (Kassen-Auszug). Bewusst nicht: §-7-Fiktiv-
|
||
fälle (Präsenzdienst/Kranken-/Wochengeld — dokumentierte Option,
|
||
Entgeltersatzleistungen fehlen im Modul), Geringfügigen-Jahres-
|
||
zahlung + 2,5 % (GP7), BV-Provider (Option). Tests: `test_bv_private`
|
||
(10) neu — **84/84 grün** auf Wegwerf-DB `gp5_test` (frischer
|
||
`-i`-Lauf; QWeb-Rendering selbst nur py/XML-validiert, kein
|
||
Render-Test); Rechenfälle `docs/rechenfaelle/abfertigung.md`.
|
||
Offen: GP6-BVG-FI-Konto, GP7 mBGM (Leitzahl, DG-Kontonummer, Jahres-
|
||
zahlung), GP8 Fristenkalender; SV-SZ-Z-7-Folgefix im Kern
|
||
(GP4-Beobachtung) separat entscheiden.
|
||
|
||
**GP4 SV/DB umgesetzt und grün (74/74 Tests)** (2026-09-11): Kern 19.0.3.0.0
|
||
(`models/sozialversicherung.py`: DG-Beiträge 20,98 %/Wien 21,23,
|
||
§-54-SZ 20,48 %, Geringfügigkeit § 5/§ 810-3 mit Hochrechnung +
|
||
§-53a-UV 6,50 €, §-49-Abs-3-Jahreskumulative, Altersstichtage als
|
||
Datumsfelder am Vertrag, ALV-DN-Staffel § 2a DN-seitig, WF-Vektor,
|
||
Beitragsmonats-Allokation mit 2025-HBG 6.450, DAG § 1 DAG) +
|
||
`rule_parameters_sv_2026.xml`; privat 19.0.4.0.0 (SVDN_SZ-Nachtrag
|
||
§ 67 Abs 12, DG-Block ATP_DG, FLAFDB/KOMMST/DZ flag-gated, LNK-Basis
|
||
§ 41/§ 5 mit Freibetragsstaffel 1.095/1.460). **P0-Rechtsfund GP4:**
|
||
GFG 2026 = 551,10 € — Aufwertung per **§ 810 Abs 3 ASVG ausgesetzt**
|
||
(A7-Rest gelöst; RIS-Anmerkungsreihe hat deshalb keinen 2026-
|
||
Eintrag); DAG-Grenze 826,65 = 1,5×GFG (TASY MINGRDAGP1, § 1 DAG als
|
||
Normzitat per ÖGK-Tarifsystem — lb-sva-12-⚠ erledigt); §-19a-
|
||
Selbstversicherung 2026 = 83,49 € (TASY KVPVBTG19A; Zahlung DIREKT
|
||
an den Träger — kein Lohnabzug, SV-Werte Fn. 9); aBG 591,29
|
||
abgeleitet → UV 6,50 €/Monat ⚠. **Rechtskorrektur § 2a AMPFG:**
|
||
Staffel ist DN-seitig (ÖGK „Mind. AV auf 0/1/2 %" = −2,95/−1,95/
|
||
−0,95) und gilt auch für SZ — DN-SV bei 2.059,41 € BG = 15,12 %
|
||
statt 18,07 % → GP3-Rechenfälle RF-L1/L3/L5 + betroffene Tests
|
||
nachgezogen („862,25“ des Nutzers war Zifferndreher; 1,5×551,10 =
|
||
826,65). Offen aus GP4: UI der Vertrags-/Company-Felder (GP8),
|
||
DAG-Ausweis/Veranlagung + UV-Pauschalen-Direktbeleg (GP8), DZ-
|
||
WKO-Satzverifikation (8.11) vor Wien-Mandanten, IESG-auf-SZ-§-5-
|
||
AMPFG-Volltext, mBGM-Nachtragslogik (GP7). Vor GP5: DZ-8.11-
|
||
Entscheidung gilt als erledigt (flag-gated umgesetzt); Formel-7 (A3)
|
||
bleibt Change-Request-Optimierung. **3. RIS-Runde integriert**
|
||
(11.09.2026, `.additional_docs/ris_normtexte/`) — A-Punkte gegen die
|
||
Tagesfassung textverifiziert; Integration in RQ/PLAN/RUNBOOK/KB-
|
||
KONFLIKTE + 5 Layer-2-Abgleichnotizen. **A1-Korrektur:**
|
||
§-124b-ÜStd-Maßnahme 2026 = **Z 440 lit c idF BGBl I 4/2026** (15 ÜStd/
|
||
170 € durchgehend 2026, Aufrollung 31.05.2026); „Z 476 lit c idgF
|
||
BGBl I 43/2026“ = Fehlzitat (Z 476 = Pendlerpauschale); Z 492/494 =
|
||
§ 68 Abs 1-Feiertagsarbeitsentgelt (30.09.2026 = Z 494 idF 43/2026);
|
||
lb-zus-07/wk-akt-01 rehabilitiert. **A4-Zitierstruktur:** ATZ = Art. 2
|
||
§ 27 AlVG, Quotenstaffel = Art. 7 § 82 Abs 7/8 (788–884 Wochen);
|
||
„§ 27 nicht in Kraft“ = Artikel-Abrufartefakt. **A6 ✅:** ALV-Entfall
|
||
ab 2027 = AlVG § 1 Abs 2 lit e idF BGBl I 62/2026 (NOR40280219; inkl.
|
||
Korridorpension/erfüllter Anwartschaft, Folgemonat; DN+DG+IESG entfallen;
|
||
AMPFG § 2a aus 31.12.2026); § 49 ASVG 2027 nur Telearbeitspauschale.
|
||
**A7-Fundstellen ✅** (GFG = ASVG § 5 Abs 2, AK-Umlage = AKG § 61,
|
||
§ 53a NOR40245133) — ⚠ **Rest neu: 2026-GFG offen** (551,10 € =
|
||
2025-Wert; Pauschale ≈ 77,80 €/DAG-Schwelle 826,65 € erst nach
|
||
Fixierung parametrisieren). **A9 ✅:** AZR 2025: 1.273,99 / 2026:
|
||
1.308,39 (§ 293 ASVG Anm. 2); Höchstberechnungsgrundlage 5.080/5.220.
|
||
**A10 ✅:** APG § 1 Abs 3 — Altrechtsgrenze 1.1.1955 („1954“ nur LZP-
|
||
Kohorte). **A3 unverändert ⚠** (Normtexte § 16 Abs 1 Z 4 lit f +
|
||
§ 20 Abs 2 Z 1 ✅; Praxis nicht dokumentierbar) — bleibt einziger
|
||
AP4-Blocker. B16-Bezugszeitraum ✅ (Z 492/494).
|
||
|
||
**GP2 Entgelt-Engine umgesetzt und grün (29/29) — GP3 Lohnsteuer
|
||
(Kern-Bau AP3, D3) ist der nächste Bauabschnitt**
|
||
(2026-09-11): GP2 nach Nutzer-Freigabe komplett: Structure
|
||
„AT Privatwirtschaft (KV)" + ATP_*-Kategorien, 10 AZG-Fenster-WETs,
|
||
Regeln KVGEO/NACHT_SV/UE_*/MEHR_*/URL_UE/PRAM/B13/B14/B14_RUECK/
|
||
NETTO, All-in-Felder + Deckungsrechnung; Kern-Parameter
|
||
at_statutory_naz_weekly (40) + at_mehrarbeit_teilzeit_zuschlag
|
||
(25). User-Konventionen: Prorate Arbeitstage (resource_calendar),
|
||
B13/B14-Aliquotierung kalendertage (KT/365), B14-Fallback Juni,
|
||
Teilzeit-Mehrarbeit KV vor Gesetz. Validierung: `test_entgelt_private`
|
||
(21 Fixtures aus docs/rechenfaelle/) + `test_kv_katalog` → **29/29
|
||
grün** auf odoo_dev. D4-Funde: hr.work.entry tageweise (date+
|
||
duration), date_start computed aus date_version, work_time_rate =
|
||
Bruchteil — **zwei weitere GemBG-Latenzfehler** (work_time_rate
|
||
÷ 100; categories.Attributzugriff) neben regular_pay → Bgld-Track.
|
||
Vor GP3/GP4 weiter offen: DZ 8.11 + 8.12-Restagenda (A3 = AP4-
|
||
Blocker; B3/B14/B18); Pilotmandant arbeitet der Nutzer.
|
||
Kernwerte: SBV-Kleinwohnung § 2 Abs 7a (35/45 m², 35 % Abschlag);
|
||
GF-Schwelle > 25 % (ASVG vs. GSVG-Zuständigkeit); IESG-HBG-Relationen
|
||
2026 (1× 6.930 · 1,5× 10.395 · 2× 13.860); EFZG 56 Tage ab 2. DJ;
|
||
§ 68 Abs 1 Feiertagsarbeitsentgelt im 400-€-Korridor ab LZP 2026.
|
||
KB-KONFLIKTE B (A-Runden-Format), RUNBOOK + MEMORY nachgezogen;
|
||
Layer-2 unberührt (Beleg-Prinzip) → `--registry`/`--check`
|
||
unverändert gültig.
|
||
(2026-09-11, A-Runde + 2. Verifikationsrunde): A1/A2/A5/A7/A8/A9
|
||
✅ gelöst, A10 ⚓ (Bonus ✅, Altrecht-Mikrorest), A6 ⚓ (BgBG
|
||
verkündet; Rest: ALV-Entfall-Wortlaut § 49 idF 2027), A4 ⚓ (Normbasis
|
||
✅; Rest: All-In), A3 ⚠ weiterhin AP4-Blocker; Nutzer-Primärquellen in `.additional_docs/` (ÖGK-
|
||
Beitragstarifsystem oegk/, AMS-Merkblatt, LStR 2002 Abschn. 19.3,
|
||
ASVG-§-108/BSVG-§-23/EO-§§-291a+292/§-617-Briefings) + `quellen/
|
||
TASY-LSWH-Export-20260324.xml`; verifiziert mit 5 parallelen
|
||
Quell-Agenten. RQ-Korrekturen: AK-Umlage 0,5 % **DN** (bisher
|
||
„nur DG" falsch), WF-Wien 1,5 % gesamt (0,75/0,75) ab 1.1.2026,
|
||
§ 67 Abs 3 Abfertigung Alt = Günstiger-Prinzip (Vervielfachung
|
||
vs. 6 %) + SV-frei § 49 Abs 3 Z 7 ASVG; `LOESUNG-KONFLIKTE.md`
|
||
integriert und gelöscht (Nutzer-Freigabe); Layer-2-Einträge
|
||
unberührt (Beleg-Prinzip) → `--registry`/`--check` unverändert
|
||
gültig. Protokollnotiz: WF-Wien-Zuschlag (+0,25/0,25) fehlt als
|
||
rule parameter (GP2–GP4-Designinput).
|
||
(2026-09-11, früher): Odoo-Umgebung lokal aufgesetzt (PostgreSQL 18.6,
|
||
Python-3.14-venv `.venv/`, gemergter Baum `odoo_19.0+e.20260910/…`
|
||
editable installiert; Dev-DB `odoo_dev`). GP1-Gate genommen:
|
||
`l10n_at_hr_payroll_private` installiert, `test_kv_katalog` 8 Tests,
|
||
0 Fehler. Alte Checkouts `odoo/` + `odoo_enterprise/` entfernt
|
||
(~21 GB), Doku auf den neuen Quellen-Pfad umgestellt. Befund aus
|
||
der Core/GemBG-Runtime-Validierung: `l10n_at_gemeinde_payroll`
|
||
failt beim Install (`regular_pay` existiert nicht auf
|
||
`hr.payroll.structure` — latenter Bug, Bgld-Track, offen).
|
||
Nutzer-seitig offen wie zuvor: Pilotmandant, D3, UGB-
|
||
Referenzbuchhaltung, ELDA-/FinOnl-Anmeldungen, Bgld-AP0-Abstimmung.
|
||
Nächste Gates: **GP2-Baubeginn** (General-AT); vor GP3/GP4:
|
||
DZ-Entscheidung 8.11 + 8.12-**Restagenda** (A3 „Formel 7“; A4-All-In;
|
||
A6-§-49-2027-Wortlaut; A10-Altrecht APG-seitig; B-Reste B3/B14/
|
||
B17-Inhalt/B18; Kleinverifikationen s. KB-KONFLIKTE „Nächste Schritte“).
|
||
|
||
## Completed
|
||
|
||
- **GP9 UI/Security/Doku umgesetzt (AP9 final, GP1–GP9 komplett)**
|
||
(2026-09-12): Kern 19.0.5.1.0 (Company-UI + Record-Rules),
|
||
privat 19.0.8.1.0 (Mitarbeiter-UI, NSchAB-View, Record-Rules,
|
||
Demo, Handbuch). 100/100 grün; odoo_dev auf GP9. **M8 final.**
|
||
|
||
- **GP8 Fristenkalender/Jahres-Retro/Mitteilungsfile umgesetzt
|
||
(100/100 grün)** (2026-09-12): Kern 19.0.5.0.0 +
|
||
privat 19.0.8.0.0; `odoo_dev` auf GP8 aktualisiert.
|
||
Fristenkalender mit Cron-Auto-Erzeugung + Sprungaktion;
|
||
Kontrollsechstel-Wizard; Mitteilungsfile-Parser;
|
||
Vertragsstichtage-UI; All-in + DAG Reports. B14 verifiziert.
|
||
**GP1–GP8 komplett (M8 erreicht).**
|
||
|
||
- **GP7 Meldewesen/Belege umgesetzt (94/94 grün)** (2026-09-12):
|
||
Kern 19.0.4.0.0: `models/elda.py` (Fixsatz-Framework),
|
||
`lohnzettel_l16.py` (L16 I1/L1 + Arbeitsstätte SART 45;
|
||
`l10n.at.payroll.l16` + `.line`), `kind.py` (`l10n.at.payroll.kind`),
|
||
`meldewesen.py` (BKNR/Lohnsteuernummer/GKZ/VSNR-Prüfung/AGRD),
|
||
`monatsreports.py` + `report/belege_reports.xml` (3 Belege),
|
||
`views/meldewesen_views.xml`. Privat 19.0.7.0.0: `mbgm.py`
|
||
(`l10n.at.payroll.mbgm[.line]`), `versichertenmeldung.py`
|
||
(`l10n.at.payroll.vr` + `.event`-Registry),
|
||
`data/rule_parameters_mbgm_private.xml` (at_mbgm_tarif B001/B002
|
||
39,05/37,55 ab 2026), `views/meldewesen_views.xml`, NSchAB-Flag.
|
||
DM-ORG-42.7.0-Satzstrukturen PDF-verifiziert extrahiert (mBGM
|
||
E.32, L16 E.13/E.14 mit vollständiger L1-Tabelle inkl. Kinderblock-
|
||
Offsets, VR E.29 mit Pflichtmatrix/AGRD/BBER, Arbeitsstätte E.20,
|
||
fallweise E.18; TXT-Fehler vs. PDF dokumentiert — PDF gewinnt).
|
||
Rechenfälle `docs/rechenfaelle/meldewesen.md`; README/CHANGELOG/
|
||
PLAN-10/MEMORY nachgezogen.
|
||
|
||
- **GP6 FI-Buchung UGB umgesetzt (88/88 grün)** (2026-09-12):
|
||
`l10n_at_hr_payroll_private` 19.0.6.0.0 — Buchungsmatrix KFS/BW 6:
|
||
`models/account_chart_private.py` (Matrix-Dict + Hook
|
||
`_configure_payroll_account_at`: exakte Konto-Suche mit
|
||
Längen-gebundenem Präfix-Fallback gegen Odoo-Scaffold-Konten
|
||
600000 „Expenses“; NET-Konto 3850 Anlage+reconcile; Journal SLR
|
||
Default 6200 — Odoo-Constraint gegen Receivable/Payable als
|
||
Journal-Default) + `data/hr_payroll_account_private.xml`
|
||
(`<function>`-Trigger; erster value = Record-IDs) +
|
||
`models/account_posting_private.py` (`_prepare_slip_lines`-
|
||
Upstream-Kopie mit Arbeiter-Debit-Substitution) +
|
||
`l10n_at_personalgruppe` (hr.version) /
|
||
`l10n_at_account_debit_arbeiter` (hr.salary.rule). NETTO→NET
|
||
(`action_register_payment`/net_wage/Negativ-Netto filtern
|
||
code 'NET') + `<function>`-Archivierung der automatisch
|
||
kopierten default_structure-NET-Regel (Kollision im
|
||
result_rules-Dict; active=False statt Unlink — struct_id NOT
|
||
NULL, historische Linien). Tests `test_account_private` (4:
|
||
Matrix+Move-Balance, Arbeiter-Split 6000/6500/660x, Gering-
|
||
führig, Fallback/Warnung) auf Kontenplan-Mock ohne Chart-
|
||
Install; NET-Rundungscents toleriert (Odoo bucht „Adjustment
|
||
Entry“ aufs Journal-Default). **88/88 grün** (frischer `-i`-
|
||
Lauf, Wegwerf-DB aufgeräumt); README/CHANGELOG/PLAN-10/MEMORY
|
||
nachgezogen; Rechenfälle `docs/rechenfaelle/buchhaltung.md`.
|
||
KFS/BW-6-Extraktion via opendataloader-pdf (Skill-Disziplin;
|
||
Output /tmp, unversioniert).
|
||
|
||
- **Zed-Threads Auto-Sync Workstation↔Laptop installiert** (2026-09-12):
|
||
beide DBs jetzt 831/831 identisch; systemd-User-Timer `zed-threads-sync.timer`
|
||
(10 min) + `~/.local/bin/zed-threads-sync.sh` via ssh-Alias `framework`
|
||
(Seed-Push 117 WS-Threads, danach idempotente Delta-Zyklen, End-to-End-
|
||
Test inkl. Timer-Pfad grün). Details siehe Entscheidung „Zed-Threads
|
||
maschinenlokal“.
|
||
|
||
- **Zed-Threads-DBs Workstation↔Laptop konsolidiert** (2026-09-12): 714
|
||
Laptop-Threads in die WS-`threads.db` gemerged (117→831, 0 ID-Kollisionen,
|
||
Integrity ok; Laptop-Remote-Sessions schreiben clientseitig, WS-Zed war
|
||
geschlossen; Backup `/tmp/threads.db.workstation-backup`). Verfahren +
|
||
Finale-Sync siehe Entscheidung „Zed-Threads maschinenlokal“.
|
||
|
||
- **Skill `opendataloader-pdf` erstellt und in den Agent-Workflow integriert**
|
||
(2026-09-12): Neues Skill `.agents/skills/opendataloader-pdf/` (SKILL.md +
|
||
vendored `scripts/verify-json.py`, `scripts/hybrid-health.sh` aus dem
|
||
Upstream-Repo, Apache-2.0) für PDF-Extraktion mit OpenDataLoader PDF;
|
||
`AGENTS.md` Skill-Selection ergänzt, `wissensbasis/SKILL.md` cross-ref
|
||
(ODL für schwierige PDFs + Spot-checks, Batch-Intake bleibt bei
|
||
`build_lexis_kb.py`). ODL 2.5.8 installiert im User-Venv `~/.local/lib/python`
|
||
(NICHT im Odoo-`.venv`), Java 26 ✓; Smoke-Test auf `.lexis360/`-PDFs:
|
||
Markdown/JSON sauber (Lesart, Listen, Fußnoten), `--to-stdout` nur mit `-q`
|
||
sauber; verify-json.py bestätigt Textextraktion. Skill-Disziplinen:
|
||
Optionen aus installiertem `--help`, Batch in EINEM Aufruf (JVM-Spawn),
|
||
Verifikation (Exit 0 ≠ Erfolg: Auto-Triage überspringt Enrichment,
|
||
Hybrid-Server-Health check, Empty-Pipe), Extrakt = untrusted, nie
|
||
lizenzierte Volltexte committen.
|
||
|
||
- **GP5 Abfertigung Neu (BMSVG) umgesetzt (84/84 grün)**
|
||
(2026-09-11): `l10n_at_hr_payroll` 19.0.3.1.0 — Parameter
|
||
`at_sv_bv_dg` (1,53 %, ab 2003-01-01) in `rule_parameters_sv_2026.xml`.
|
||
`l10n_at_hr_payroll_private` 19.0.5.0.0: Regel `BVG`
|
||
(`salary_rules_bvg_private.xml`, ATP_DG seq 95, 1-Zeilen-Bindung)
|
||
auf `models/abfertigung_private.py` — eigene, ungecappte
|
||
BV-Grundlage (§ 6 Abs 5 iVm § 49 ASVG; §-67-Abs-3/6-Zeilen aus-
|
||
geschlossen, § 49 Abs 3 Z 7 ASVG); Fenstermechanik taggenau
|
||
(Monatsjubiläum, 30-Tage-Aliquotierung über Lohnsteuertage,
|
||
Monatsende-Klippe via relativedelta+1 Tag, Kurz-AV < Jubiläum);
|
||
Wiederzulassung: hr.version-Suche contract_date_end ∈ [Start−12M,
|
||
Start) → Pflicht ab Tag 1 (Vor-AV beliebiger Dauer — Nutzer-
|
||
Klarstellung, schlägt auch Kurz-AV); SZ-Fensterfreiheit über vollen
|
||
Beitragsmonats-Datum der Regel (kein .replace(day=1)!); Gering-
|
||
führende + Lehrlinge erfasst (kein Geringfügig-Lehrling-Switch).
|
||
Anwartschaft `_at_bv_anwartschaft` (BVG-Linien validierter Läufe,
|
||
je Beitragsmonat/Jahr, Refund-nettend); `l10n.at.bv.kasse` (name,
|
||
leitzahl; 7er-Seed noupdate — Allianz/APK/BONUS/BUAK/NÖ/Valida
|
||
Plus/VBV, lb-gsv-11) + `l10n_at_bv_endabrechnung.wizard` (§-14-
|
||
Matrix + 36-IMMER-Sperre + §-16/§-17-Fristen + 5-Optionen-Info;
|
||
report_action auf Anwartschaftsreport) + QWeb-Report auf
|
||
hr.employee (`report/bv_report.xml` + AbstractModel `bv_report.py`;
|
||
binding hr.model_hr_employee). Views: Kasse list/form, Employee-
|
||
Form-Gruppe „Abfertigung Neu (BMSVG)" in payroll_group, Wizard,
|
||
Menüs seq 50/60. Security: Kasse user/manager + Wizard.
|
||
Tests `test_bv_private` (10: RF-BV1..10) + Rechenfälle
|
||
`docs/rechenfaelle/abfertigung.md` — **84/84 grün** auf Wegwerf-
|
||
DB `gp5_test` (frischer `-i`-Lauf); README/CHANGELOG/PLAN-10/
|
||
MEMORY nachgezogen. D4-Fund: hr.version.write setzt bei
|
||
Einzelversion `date_version` automatisch auf contract_date_start
|
||
mit; _get_version(date) = max(date_version ≤ date), Fallback
|
||
versions[0] — Fixture-Mechanik für Mehrversionen-Tests.
|
||
|
||
- **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)**
|
||
(2026-09-11): `l10n_at_hr_payroll_private` 19.0.2.0.0 —
|
||
`data/structure_private.xml` (Type/Structure/ATP-Kategorien,
|
||
country base.at wg. Regel-Länder-Konsistenz),
|
||
`work_entry_types_private.xml` (10 WETs: ATT_NACHT, UE_STD,
|
||
UE_NACHT 22–6, UE_NACHT_FRUEH 20–22, UE_SOFEI(_NACHT),
|
||
MEHR_VZ(_NACHT) § 4a, MEHR_TZ(_NACHT) § 19d; €-Flag
|
||
`l10n_at_nacht_sv` auf 22–6-Typen), `salary_rules_private.xml`
|
||
(16 Regeln, alle kv.wert-getrieben), `input_types_private.xml`,
|
||
`models/payslip_private.py` (Arbeitstage-Faktor, Grundstunden,
|
||
Nachtstunden, B13/B14-Fälligkeit/-Basis/-Aliquot (sz_aliquote_
|
||
methode 'kalendertage'), 7-von-12-Ø, All-in-Deckung), hr.version-
|
||
All-in-Felder. Kern: rule_parameters_2026.xml + 2 Parameter.
|
||
`test_entgelt_private.py`: 21 Tests aus den Rechenfällen
|
||
(KVGEO 4, Zuschläge/Nacht 5, Mehrarbeit 2, B13/B14 6 inkl.
|
||
Rückverrechnung + Mischberechnung, Urlaubs-Ø, Netto, All-in).
|
||
D4-Mechanik dokumentiert; GemBG-Latenzfehler (s. Open issues)
|
||
im Bgld-Track gemeldet, nicht fremd-editiert.
|
||
|
||
- **GP2-Daten-Vorlauf Referenz-KVs komplett** (2026-09-11):
|
||
Programmabgleich Seed ↔ `oegb/texts/` (Fassung 20260101): 18
|
||
Gehaltstafeln (2203 II–VI/M1/M2/M2FS/M3; 2748 I–VI/IV-M/V-OM/
|
||
MEISTER) wertestgleich — M2/M2FS = Fachschul-Teilüberschriften,
|
||
V-OM manuell (Tabelle ohne Kopf) — 0 Korrekturen; `kv.wert`-
|
||
Eckwerte mit §-Anker dokumentiert (RQ Abschnitt 2). Neue Codes:
|
||
`sz13_basis_monat` (auszahlung|november), `sz14_basis_monat`,
|
||
`sz14_no_urlaub_monat`, `ue_fenster_von/bis`, `nacht_sv_fenster_
|
||
von/bis`. AZG ✅ (RQ Abschnitt 3): § 6 ÜStd-Begriff, § 7/§ 9
|
||
Ausmaß, § 10 Vergütung (50 %-Minimum, KV-Deviation → Teilungs-
|
||
faktor), § 12a Nacht 22–5 vs. § 12b 22–6 (⚠ Norm-Divergenz),
|
||
§ 19d Teilzeit-Mehrarbeit 25 %. Plan-Korrektur 4.2/6: drei
|
||
Nachtfenster korrekt attribuiert (AZG/KV/LSt); §-124b-Historie
|
||
bereinigt (15 ÜStd/170 € 2026; keine „ab 2027 10/120"-Änderung).
|
||
Rechenfälle `addons/l10n_at_hr_payroll_private/docs/rechenfaelle/`
|
||
(4 Docs, GP2-Testfixtures). Validierung: `test_kv_katalog` 8/8
|
||
mit erweitertem Seed (`-u` statt `-i` bei installiertem Modul), `_wert`-
|
||
Lookups geprüft, Import-Wizard mit realem 2027er-Batch validiert
|
||
(Sprungwarnung > 10 % triggert + blockt Anwendung). 2748-2027er-
|
||
Tafeln (+2,0 %) dokumentiert → GP8-Seed. Plan 8.2/8.8 ✅, RQ-11
|
||
getickt.
|
||
|
||
- **KB-Konfliktfamilien A1–A10 gelöst (A-Runde 2026-09-11):** Nutzer-
|
||
Kommentare aus `LOESUNG-KONFLIKTE.md` gegen bereitgestellte
|
||
Primärquellen verifiziert (5 parallele Quell-Agenten; ÖGK-
|
||
Beitragstarifsystem `.additional_docs/oegk/` + TASY-LSWH-Export
|
||
2026-03-24; AMS-Merkblatt + AMS-Webseite Stand 03.02.2026; LStR
|
||
2002 Abschn. 19.3 Rz 1070–1079c Stand 19.12.2022; ASVG-§-108/BSVG-
|
||
§-23/EO-§§-291a+292-Briefings; §-617-ASVG-Kompendium + PVA +
|
||
BGBl I 2023/11). **A1** §-124b-Familie als Historie geschlossen
|
||
(Maßnahme bis 31.12.2025; 2026 via § 68 Abs 1/2 EStG). **A2**
|
||
DN-SV 17,07 % („17,57 %" = +AK 0,50 ohne WF); DN-Gesamt 18,07 %
|
||
(Wien 18,32), DG 20,98 % (Wien 21,23); WBF-Wien 1,5 % gesamt
|
||
(0,75/0,75) ab 1.1.2026 (Wiener WF-Zuschlag, TASY Tarif 1535).
|
||
**A4** ⚓ Blockzeit-Ersatzquote 2026 = 27,5 % („28,5 %" lb-atz-07 =
|
||
Quellenanomalie); ÜStd/Mehrleistung: kontinuierlich ab 2026 in
|
||
Ober-/Unterwert außen vor, Blockmodelle mit ÜStd im Oberwert
|
||
(AMS-Praxis); All-In offen. **A5** § 67 Abs 3 = zwingendes
|
||
Günstiger-Prinzip (LSt = günstigeres aus Vervielfachungsmethode
|
||
und Fixsatz 6 %; frühere RQ-Formel „mindestens 6 %" war
|
||
invertiert) + SV-frei § 49 Abs 3 Z 7 ASVG (lb-end-01 ✅).
|
||
**A6** ⚓ „Wegfall des ALV-Beitrages" während ATZ als AMS-
|
||
Praxisbeleg; Endfassung/§-Zitat RIS. **A7** AK-Umlage = 0,5 %
|
||
DN (RQ „nur DG" falsch; Kern-Parameter korrekt); § 53a-Beitrag
|
||
= € 14,12/Monat. **A8** HBGL zwei Stränge: ASVG § 108 Abs 3
|
||
Kalendertagwert (231 € 2026 → 6.930 €/Monat) vs. GSVG/BSVG
|
||
(§§ 48/53a GSVG) = 35× Tageswert (8.085 € 2026); lb-sva-08 =
|
||
22,8 % × 8.085 exakt. **A9** „allgemeiner" vs. „erhöhter
|
||
allgemeiner Grundbetrag" (§ 291a Abs 2 Z 1, ×7/6 ohne §-290b-
|
||
Leistungen); absolutes Minimum = halber allgemeiner Grundbetrag
|
||
(§ 292 Abs 4): 500 € (2021) vs. 515 € (2022) = Stand-Differenz.
|
||
**A10** ⚓ lb-pvs-02 bestätigt (§ 617 Abs 11 idF BGBl I 2023/11,
|
||
65 erst für nach 30.6.1968 Geborene), lb-swa-03 widerlegt;
|
||
Altrecht 1.1.1955 vs. LZP-Kohorte 1.1.1954 = zwei Institute;
|
||
Bonus-Maxima offen. **A3-Nachtrag (2026-09-11):** Formel-7-Mechanik
|
||
vertieft (Nutzer-Analyse + lb-son-04 Fn 3); **Rz 243 LStR idgF via
|
||
findok verifiziert** (26. Fassung 18.12.2025 — nicht obsolet;
|
||
Grenzgänger-Grundlage § 16 Abs 1 Z 4 lit f EStG: ausländische
|
||
Pflichtversicherung in voller Höhe ohne HBGL-Cap); offen bleibt
|
||
allein die Verwaltungspraxis-Änderung zur SV-DN-Verteilung auf
|
||
§-68-Bezüge. Umgesetzt: `KB-KONFLIKTE.md` (A-Lösungs-
|
||
blöcke + „Nächste Schritte"), `RECHTSQUELLEN-Privat.md` Ab-
|
||
schnitte 4+5 (AK-Zeile, WF-Wien-Zeile, DN-/DG-Gesamtsatz-Zeilen,
|
||
HBGL-Systematik, § 67 Abs 3, LStR-19.3-Vermerk), `RUNBOOK.md`
|
||
(A-Lösungsrunde-Eintrag + Batch-Marker), `MEMORY.md`;
|
||
`.gitignore` + `.additional_docs/`; `LOESUNG-KONFLIKTE.md` nach
|
||
Integration gelöscht (Nutzer-Freigabe); Layer-2-Einträge
|
||
unberührt (Beleg-Prinzip) → `--registry`/`--check` unverändert.
|
||
Engine-Protokollnotiz: WF-Wien-Zuschlag (+0,25/0,25 ab 1.1.2026)
|
||
fehlt als rule parameter (GP2–GP4-Designinput).
|
||
- **KB-Konflikte — 2. Verifikationsrunde (2026-09-11):** Nutzer-Quellen
|
||
`estg67.pdf`, `gsvg48.pdf`, `gsvg53a.pdf` (= **§ 53a ASVG**, nicht
|
||
GSVG — Dateiname täuscht), `alvg82.pdf`, `BGBLA_2023_I_11.pdfsig` +
|
||
RIS-Fetches via firecrawl (§§ 45/49 ASVG, AlVG §§ 4/25/27/82, AMPFG
|
||
§§ 1/2/3/25, APG § 5): **A5 ✅** 6 %-Fixsatz im Gesetzestext (§ 67
|
||
Abs 3 idgF, BGBl I 144/2024; Günstiger-Prinzip als Normtext).
|
||
**A7-Korrektur** — Geringfügigen-Beitrag = **14,12 % der allgemeinen
|
||
Beitragsgrundlage** (§ 53a Abs 3 ASVG: KV 3,87 + PV 9,25 + 1,00
|
||
Zusatz; DG-UV 1,1 % § 53a Abs 1): lb-sva-06-%-Spalte war richtig,
|
||
die 1.-Runde-Lesung „14,12 €/Monat" falsch — RQ korrigiert; Euro
|
||
2026 ≈ 77,80 €/Monat (14,12 % × GFG 551,10 €; GFG-Basis-Fundstelle
|
||
offen). **A8 ✅** § 48 GSVG: HBGL = 35facher Betrag der HBGL gemäß
|
||
§ 108 Abs 3 ASVG; § 45 Abs 1 ASVG = Anwendungsnorm („gemäß § 108
|
||
Abs 1 und 3 festgestellt") — Zitierfrage = Normenkette, TASY-Label
|
||
ungenau. **A4 ✅ Normbasis** § 82 Abs 7/8 AlVG (Ersatzquoten-
|
||
Staffel 42,5/35,0/27,5/20,0/10,0 vH, ab 2029 keine Abgeltung;
|
||
Ober-/Unterwert via § 27 Abs 2 Z 3 + Abs 5 AlVG — Fassung BGBl I
|
||
118/2023, ab 1.11.2026 BgBG I 62/2026; § 27 AlVG am 11.09.2026
|
||
nicht in Kraft). **A6 weitgehend ✅** „BgBG" = Budgetbegleitgesetz
|
||
2027–2028, **BGBl I 62/2026 verkündet** (ASVG § 49-Fassung gültig
|
||
ab 1.1.2027, NOR40279632); §-25-Zitierdivergenz = Doppelfehlzitat
|
||
(AlVG § 25/AMPFG § 25 nicht in Kraft); AMPFG-Kurztitel-Falle
|
||
„-Finanzierungsgesetz" (10008903; ALV-Finanzierung § 1 Abs 2 Z 3).
|
||
**A10 ✅ Bonus** § 5 Abs 4 APG idgF (BGBl I 47/2025): Aufschubbonus
|
||
+0,425 %/Monat, **Cap 15,3 % der Leistung** — kein €-Fixwert im
|
||
Gesetz (Briefing-€-Werte = Rechenbeispiele); § 299a ASVG historisch
|
||
(§ 617 Abs 2); BGBl I 11/2023 ohne Bonus-Änderungen. Offen: A3
|
||
(Verwaltungspraxis vs. Rz 243 idgF), A4-All-In, A6-Entfall-Wortlaut,
|
||
AZR-VO-Werte (A9), AK-Umlage-§-Fundstelle (Arbeiterkammergesetz).
|
||
- **KB-Konflikte B1–B18 gelöst (B-Runde 2026-09-11):** Auflösungsvorlage
|
||
`B_KONFLIKTE_AUFLOESUNG.md` des Nutzers gegen die bereitgestellten
|
||
RIS-Normtexte (`.additional_docs/ris_normtexte/`, tagesaktuell
|
||
11.09.2026, Manifest `README_RIS_DOWNLOAD.md`) verifiziert — 18/18
|
||
geprüft, 14 × ✅, B17 🔧, 3 × ⚠ (B3/B14/B18 als genuine Divergenzen
|
||
dokumentiert). Kernwerte: SBV § 2 Abs 7a Kleinwohnung 35/45 m²/
|
||
35 % Abschlag (30,1–40 = alte Fassung vor BGBl II 290/2024); APflG
|
||
§ 4 Abs 4 3-Monats-Schwelle (kein 4-Monats-Band); GlBG § 12 Abs 5 Z 1/
|
||
BehG § 7e Abs 2 Z 1 Entgeltdifferenz ≥ 3 Monate, € 1.000 = Belästigung
|
||
(§ 12 Abs 11/§ 7i Abs 1); ArbVG § 97 Abs 1 bis Z 27 (Telearbeit);
|
||
GF-Schwelle > 25 % (EStG § 22 Z 2 iVm § 47 Abs 2 → ASVG, sonst GSVG
|
||
§ 2 Abs 1 Z 3); GKV 2025; AZG § 7 Abs 6; EuGH C-55/18 (Zeiterfassung)
|
||
vs. C-254/18 (17-Wochen-Durchrechnung); IESG § 1 Abs 4/4a HBG-
|
||
Relationen 2026 (1× 6.930 · 1,5× 10.395 · 2× 13.860); DSB 6 Monate;
|
||
EFZG § 2 56 Tage ab 2. DJ; BSVG § 23 Abs 2 Versicherungswert
|
||
4.610,29 € = Stand 2026 (jährlich × Aufwertungszahl § 45); EStG
|
||
§ 68 Abs 1 idF BGBl I 43/2026 Feiertagsarbeitsentgelt im 400-€-
|
||
Korridor ab LZP 2026; EStG § 67 Abs 6 (Zitat-Fix; Zwölftel-Deckel
|
||
3× monatliche HBG = 20.790 €). Umgesetzt: `KB-KONFLIKTE.md`
|
||
Abschnitt B (A-Runden-Format) + C1-Verweis + „Nächste Schritte“,
|
||
`RUNBOOK.md` (B-Lösungsrunde-Block + Batch-Marker + A6-Kennzeichnung),
|
||
`MEMORY.md`; Layer-2 unberührt (Beleg-Prinzip) → `--registry`/
|
||
`--check` unverändert. Engine-Designnotizen in KB-KONFLIKTE
|
||
„Nächste Schritte“ Punkt 8 (IESG-HBG-Relationen, EFZG-Stufen,
|
||
§-67-Abs-6-Deckel, §-68-Abs-1-Korridor, GF-Schwelle, SBV-Werte,
|
||
BSVG-Versicherungswert).
|
||
- **WIKU-Intake Batch 1 komplett — Wissensbasis jetzt Zwei-Quellen-
|
||
Korpus mit 601 Einträgen** (2026-09-11): Multi-Source-Erweiterung
|
||
von `personalverrechnung/tools/build_lexis_kb.py` fertig (`--source
|
||
lexis|wiku|all` für `--extract`/`--check`, `--registry` über beide
|
||
Quellen; `WIKU_PINS`-Tabelle für alle 30 Publikationen statt
|
||
Lexis-Breadcrumbs; `WIKU_PAGE_RE` entfernt Seitenzähler-Footer;
|
||
wk-ID-Raum `wk-<prefix>-<nn>` mit eigenem Katalog + ID-Freeze).
|
||
Layer 1: 30/30 extrahiert (`.wiku/md/`, Katalog ohne Warnungen;
|
||
„Personal aktuell“-Stand = Heft-Monat). Layer 2: 30 kuratierte
|
||
Einträge `wiku_<slug>.md` (18 Broschüren/Unterlagen/Casebooks +
|
||
12 Hefte „WIKU Personal aktuell“ 2026, wk-akt-01…12; Heft-
|
||
Kuration via 6 parallele Agenten mit je Selbstprüfung, zentrale
|
||
Prüfung 30/30 grün). Registry/Check: **601 Einträge, 69 Cluster,
|
||
lexis 571/571 + wiku 30/30, 0 Probleme** — inkl. Fix eines
|
||
Slug-Bugs in `curated_slugs_for()` (`.md`-Suffix wurde nicht
|
||
gestrippt, wiku-`--check` wäre immer rot gelaufen). README/
|
||
RUNBOOK auf Zwei-Quellen-Korpus umgestellt (Cluster-Tabelle akt/gwe,
|
||
Update-Zyklus je Quelle, WIKU-Batch-1-Konfliktliste im RUNBOOK).
|
||
Wichtige WIKU-Konfliktfamilien (alle ⚠ in den Einträgen + RUNBOOK):
|
||
§-124b-Zitier-Varianten wachsen (wk-akt-01 „Z 440/492“,
|
||
wk-akt-07 Mitarbeiterprämie „Z 478 vs Z 477“ — Auflösung ÜStd/
|
||
Feiertagsentgelt via BGBl I 43/2026 = wk-akt-04 ✅ deckungsgleich
|
||
mit verbindlicher Rechtslage); SV-DN-Anteile auf §-68-Bezügen vom
|
||
Abzugsverbot § 20 Abs 2 Z 1 EStG erfasst (wk-akt-11, „Formel 7“
|
||
gefährdet — neue RIS-Klärungsfamilie); DN-Satz freie DN 17,57 vs
|
||
17,07 % (wk-akt-10); WF-Wien 1,5 % (wk-akt-07 → lb-lnk-05-Familie);
|
||
ALV-Entfall RV vs Endfassung (wk-akt-03/04); SV-Werte 2027
|
||
voraussichtlich (wk-akt-05/06); AMS-All-In/ATZ-Oberwert-Auslegung
|
||
(wk-akt-09). Temporäres Selbstprüfungsskript entfernt (dauerhafte
|
||
Gates = --registry/--check).
|
||
|
||
- **Dev-Host aufgesetzt; GP1-Runtime-Abnahme grün** (2026-09-11):
|
||
PostgreSQL 18.6 (Arch-Paket; Cluster `/var/lib/postgres/data`,
|
||
systemd-Service, Superuser-Rolle `fegger`), Python-3.14.7-venv
|
||
`.venv/` (editable install des gemergten Baums; requirements
|
||
inkl. py3.14-Pins bauen: psycopg2/gevent/python-ldap aus Source),
|
||
Dev-DB `odoo_dev`. GP1: `l10n_at_hr_payroll_private` installiert
|
||
+ `test_kv_katalog` **0 failed, 0 errors (8 Tests)**.
|
||
Core/GemBG-Suiten auf Wegwerf-DB `odoo_test` (danach gedroppt):
|
||
**Install-Abbruch** — `payroll_structure_bgld.xml` L19 setzt
|
||
`regular_pay` auf `hr.payroll.structure`; Feld existiert weder
|
||
im neuen (e.20260910) noch im alten (19.0.0) Baum — latenter
|
||
Bug, nur runtime sichtbar (Fix = Bgld-Track-Aufgabe). Alte
|
||
Checkouts `odoo/` (19 GB) + `odoo_enterprise/` (2,1 GB)
|
||
gelöscht; `.gitignore` jetzt `odoo_19.0+e.20260910/` + `.venv/`.
|
||
Doku-Updates: README (Entwicklung/Tests), privater Modul-README,
|
||
IMPLEMENTIERUNGSPLAN-Privat (Quellen-Referenz-Update 2026-09-11
|
||
in Abschnitt 2).
|
||
|
||
- **General-AT: Beschaffungsliste abgearbeitet (Primärquellen lokal)**
|
||
(2026-09-10): 19 RIS-Gesetzestexte (Fassung 10. 09. 2026) via
|
||
firecrawl nach `.firecrawl/ris/` — Gesetzesnummern ausnahmslos per
|
||
RIS-Titelsuche ermittelt (Kurztitel-Fallen entdeckt: AVRAG
|
||
„Arbeitsvertragsrechts-Anpassungsgesetz" 10008872, BMSVG
|
||
„Betriebliches Mitarbeiter- und Selbständigenvorsorgegesetz"
|
||
20002088, IESG „Insolvenz-Entgeltsicherungsgesetz" 10008418, APSG
|
||
„Arbeitsplatz-Sicherungsgesetz 1991" 10008788; weitere: AZG
|
||
10008238, AngG 10008069, ArbVG 10008329, ASVG 10008147, EStG
|
||
10004570, BAO 10003940, AÜG 10008655, UrlG 10008376, LKV 20004237,
|
||
MSchG 10008464, MSchV 20010035, VKG 10008674, KBGG 20001474,
|
||
FamZeitbG 20009586, KommStG 10004841); LStR 2002 findok-XML
|
||
(RZ_N-Markup beachten); DM-ORG 42.7.0 + Änderungsprotokoll (07/2026)
|
||
+ Prüfkataloge L16 12/2025/L17/§ 109a/§ 109b + Mitteilungsfiles-XSDs
|
||
(elda_mitteilung 1.2/2.1/3.0); SV-Werte 2026 (HBGL 6.930/GFG
|
||
551,10 ✅ deckungsgleich; GFG-Aufwertungsaussetzung § 810 Abs 3
|
||
ASVG); BMF-L16-Formularseite. RQ-11 auf [x]-Beschaffungsstände
|
||
umgestellt; RUNBOOK-Sektion „Primärquellen-Downloads" neu;
|
||
`.firecrawl/ris/_README.md` als lokales Verzeichnis.
|
||
**Befund:** „Krankengeldumlage § 62 ASVG" = Falsch-Prämisse (RIS-
|
||
Gesamtabfrage 0 Treffer; § 62 = Beitragsabrechnung) — als
|
||
Auflösung in RQ-Privat (4/11/13) + Plan (2.1/4.6/4.7/8.10)
|
||
dokumentiert; Bgld-Dokumente (RECHTSQUELLEN-Bgld 9, PLAN-
|
||
payroll-bgld) führen denselben Prüfpunkt und sind analog zu
|
||
verifizieren — bewusst nicht fremd-editiert.
|
||
|
||
- **General-AT: KB-Rechtsquellen-Abgleich dokumentiert** (2026-09-10):
|
||
alle 571 KB-`legal_bases` (2.767 Strings, ~130 Normwerke) gegen
|
||
`RECHTSQUELLEN-Privat.md` geprüft (Skript über kb.json; §-Ebenen
|
||
kontextverifiziert gegen False Positives wie EOSB→EO,
|
||
UrlG § 10→KommStG § 10). Befund: 15 Gesetze im RQ (EStG, ASVG,
|
||
AZG, UrlG, AngG, ArbVG, BMSVG, FLAG, KommStG, AMPFG, IESG, LStR,
|
||
BAG, BUAG/BFAK, ARG) + UGB als Matrix-Beschaffungspunkt; ~85
|
||
Normwerke bewusst außerhalb R1; 12 echte Lücken. Umgesetzt nach
|
||
Nutzer-Freigabe: RQ **Abschnitt 13** (Abgleichsmatrix + Zuordnung
|
||
+ Outside-Scope-Abgrenzung) + **Beschaffungslisten-Erweiterung**
|
||
Abschnitt 11 (AVRAG § 2g/§ 11a Abs 4, ASVG-Block §§ 11/33/34/41/
|
||
471a/49/44/51/53b/60/143, EStG §§ 3/63/67a/69/109a/124b Z 478,
|
||
KommStG § 10 + BAO §§ 4/29/30, AÜG, UrlG §§ 7/10a, BMSVG §§ 7/
|
||
9–12/27a/47, IESG § 12, Lohnkontenverordnung, Mutterschutz-/
|
||
Karenz-Block) + Plan 4.2 AVRAG-Feinmechanik + 8.13 Karenz-Block-
|
||
Kandidat + Abschnitt-10-Nachtrag; CHANGELOG-Eintrag. BMSVG § 12
|
||
korrekt als Zukunftssicherungsmaßnahme (§§ 9–12) identifiziert
|
||
(nicht Meldung).
|
||
|
||
- **General-AT: Implementierungsplan an Wissensbasis angebunden**
|
||
(2026-09-10): `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md`
|
||
aktualisiert (Stand 2026-09-10) — neuer **Abschnitt 2.1**
|
||
(Verbindlichkeits-Regime: RECHTSQUELLEN-Privat verbindlich, KB
|
||
Sekundärquelle mit ID+Stand; Cluster→GP-Anker-Tabelle;
|
||
Nicht-enthalten-Liste: Krankengeldumlage § 62, JASV, LStR 2002);
|
||
4.2 Regelinventar um KB-Anker-Spalte + GP2-Feinmechanik erweitert
|
||
(Mehrarbeit § 19d vs. ÜStd inkl. Differenzstunden LStR Rz 1146,
|
||
zwei Nachtfenster 22–5/19–7, Feiertagsarbeitsentgelt 2026 wieder
|
||
§-68-begünstigt); 4.3 GP3-Feinmechanik (Sechstelformel × 60 ÷
|
||
Lohnsteuertage, Nachzahlungsmodi Rollung/15.2./Fünftel/Tarif,
|
||
SV-Anspruchsprinzip) + GP4-Neuheiten (DZ §§ 122/126 WKG — bisher
|
||
fehlende DG-Abgabe, Satzvektor BL × Jahr, ⚠ RIS; DAG 19,4 %;
|
||
beitragsfreie §-49-Abs-3-Kumulative; AK-Umlage/WF als DN-Lohnabzüge;
|
||
altersabhängige Satzausschaltungen); 4.4 BMSVG-Feinmechanik (freier
|
||
Monat taggenau, § 7-Fiktionen, Abfuhr KV-Träger); 4.6 L16-KZ/
|
||
mBGM/Schwerarbeitsmeldung; 4.7 Aufrollungslauf + Fristenkalender;
|
||
Abschnitt 8 um 8.11 (DZ-Grundsatzentscheidung), 8.12 (KB-
|
||
Konfliktfamilien RIS-klar), 8.13 (Scope-Kandidaten ohne stille
|
||
Erweiterung) erweitert; Abschnitt 10 dokumentiert das Update;
|
||
`docs/CHANGELOG.md` Eintrag. Werte ausschließlich aus KB-Einträgen
|
||
(Recherche über 4 parallele Subagents über sva/lnk/bes, azg/ues/
|
||
zus/url/efz, son/naz/lvr/prm, lvr/mel/vor/end/pfa/krs/nsc-Cluster).
|
||
|
||
- **Lexis360-Wissensbasis Batch 9** (2026-09-10): 67 gelieferte PDFs
|
||
(im Unterordner .lexis360/batch9/) → Intake-Bereinigung: 4 text-
|
||
identische Duplikate entfernt, 5-fach trunkierter Exportname der
|
||
BSVG-Freiwilligen-Versicherungs-Briefings explizit umbenannt,
|
||
Mehrfachversicherung KV/PV disambiguiert, ß-URL-Kodierung
|
||
normalisiert → 63 Briefings (Stände 2025-01 bis 2026-08) in 5 neuen
|
||
Clustern (bsv 18 · sva 16 · gsv 12 · pvs 13 · kvs 4), neues Kapitel
|
||
„Sozialversicherung“ → gesamt **571 Einträge/67 Cluster**. Tool:
|
||
BATCH 9, TOPIC_MAP-Pins für alle 8 SV-Topic-Gruppen (inkl.
|
||
„abfertigung-fur-selbststandige“ → gsv, bevor der „abfertigung“-
|
||
Keyword-Fallback es dem end-Cluster stiehlt), KEYWORDS-Block 9 vor
|
||
Block 8, 5 neue CLUSTERS/TOPIC_TO_PREFIX-Einträge. Curation in 7
|
||
parallelen Gruppen mit je Self-Check (/tmp/check_batch9.py),
|
||
zentrale Prüfung 63/63 grün; DN-Beitragssätze 2026 ✅ deckungsgleich
|
||
mit RECHTSQUELLEN. Querverweis-Nachtrag lb-swa-03 → lb-pvs-02/12/13.
|
||
Katalog/Registry/Check 571/571 grün; Konflikte im RUNBOOK
|
||
(Wissensbasis, Batch-9-Abschnitt).
|
||
|
||
- **Lexis360-Wissensbasis Batch 8** (2026-09-10): 134 Briefings (Stände
|
||
2025-06 bis 2026-08) → 134 kuratierte Einträge in 6 neuen Clustern
|
||
(bnd 44 · brt 35 · end 25 · bso 10 · mel 8 · ins 8) plus
|
||
Erweiterungen (url 14→16, son 4→5, prm 6→7); sechs neue Kapitel
|
||
(Beendigungsarten; Betriebsrat & Betriebsvereinbarungen;
|
||
Beendigungsansprüche & Endabrechnung; Beendigungsphase - Sonstiges;
|
||
Meldungen & Verpflichtungen; Unternehmensauflösung & Betriebsübergang)
|
||
→ gesamt **508 Einträge/62 Cluster**. Curation in 12 Gruppen (g1/g2
|
||
vorab, Rest via 10 parallele Subagents mit je Self-Check — Frontmatter
|
||
katalogexakt, auflösbare cross_refs, ASCII-Tags, Struktur);
|
||
Orchestrator-Korrekturen: lb-brt-01 falsch gelabelter cross_ref
|
||
lb-ent-01 → lb-aug-01 (SV-Meldepflicht-Verweis → lb-mel-08);
|
||
9 Lückenschluss-Nachträge in Alteinträgen (ent-02→brt-19/22/28/29,
|
||
ent-11→end-26, prd-04→brt-13, rhz-04→bnd-43, vor-10→end-01/02/03/16,
|
||
kar-01→end-01/02, lvr-02→end-06/25, prm-03→end-18,
|
||
sac-06→bso-03+prd-03). ID-Lücken by design (lb-brt-24, lb-end-07,
|
||
lb-bso-08 — Fossil-Korrektur-Nummern, nie wiederverwendet).
|
||
Katalog/Registry/Check 508/508 grün; Kernwerte-Spotchecks (bnd-41
|
||
Staffel, mel-03 DSB-Frist, end-21 SV-Sätze) gegen Layer 1 bestätigt.
|
||
Batch-8-Konflikte im RUNBOOK (Wissensbasis-Abschnitt).
|
||
|
||
- **Lexis360-Wissensbasis Batch 7** (2026-09-10): 97 Briefings
|
||
(Stände 2026-06 bis 2026-08) → 97 kuratierte Einträge; 16 neue
|
||
Cluster (url 14, krs 9, grz 8, kzs 7, elt 6, kar 6, kbg 6,
|
||
prd 6, tel 6, msf 5, dvh 4, aug 2, efz 2, pap 2, pfl 2,
|
||
wie 2), bestehende erweitert (asc 12→16, sch 1→7); fünf neue
|
||
Kapitel (Urlaub & Karenzierung, Schwangerschaft & Elternkarenz,
|
||
Krankenstand & Arbeitsunfall, Dienstverhinderung, Außerhalb
|
||
des Betriebsstandortes) → gesamt **374 Einträge/56 Cluster**.
|
||
Drei truncated Export-Duplikat-Dateinamen
|
||
(auslandstatigkeit_sv_tatigkeit_in ×3) vor der Extraktion
|
||
explizit umbenannt. Ein Agentendurchlauf stalled bei 82/97
|
||
(ab 14:43 Stillstand, durch Nutzer abgebrochen) — Restarbeit
|
||
(asc-13…16 Arbeitsunfall; dvh/efz/pfl Dienstverhinderung;
|
||
grz-08/aug Standortverlegung + AÜG) via drei paralleler
|
||
Subagents; sieben Frontmatter-topic-Werte des früheren
|
||
Durchlaufs auf Schema-Werte korrigiert
|
||
(papamonat-und-familienzeitbonus→familienzeit ×2,
|
||
geburt-schutzfrist→schutzfrist ×4, wochengeld→schutzfrist).
|
||
Katalog/Registry/Check 374/374 grün.
|
||
|
||
- **Wissensbasis-Skill + WIKU-Quelle** (2026-09-10):
|
||
`.agents/skills/wissensbasis/SKILL.md` neu — verbindliche Regeln für
|
||
den Wissensbasis-Bau (Schichten/Lizenz D1, ID-Freeze, D2-Frontmatter,
|
||
Kurationskonventionen, Batch-Workflow, Validierungsgates, Intake-
|
||
Pitfalls) konsolidiert aus README/RUNBOOK/MEMORY; neu: WIKU-Quelle
|
||
`.wiku/` (31 lizenzierte PDFs: Fachbroschüren, Arbeitsunterlagen,
|
||
Casebooks, „WIKU Personal aktuell“) mit Integrationsmodell siehe
|
||
Entscheidung unten. `.wiku/` in `.gitignore` (D1); `AGENTS.md`
|
||
Skill-Auswahl ergänzt.
|
||
|
||
- **Lexis360-Wissensbasis Batch 6** (2026-09-10): 41 Briefings (Stände
|
||
2025-06 bis 2026-08) über zwei neue Kapitel (Arbeitnehmerschutz,
|
||
Verhaltenspflichten) + Schwerarbeit (Arbeitszeit-Kapitel) → 41
|
||
kuratierte Einträge in 7 Clustern (asc 12, dnh 7, glb 7, fir 6,
|
||
wei 3, swa 5, mob 1); ein ß-Dateiname normalisiert; ein Fossil-ID
|
||
(lb-mip-05 → lb-swa-05) bereinigt; Parser-Härtung: Breadcrumb-Wrap
|
||
auch nach erstem „·“ (neue Wrap-Variante). Zwei Agenten zwischen-
|
||
durch abgebrochen — Restarbeit (asc-04…12, glb/mob) nachgeholt.
|
||
Querverweis-Nachträge lb-beh-04→lb-glb-*, lb-sch-01→lb-asc-01.
|
||
Katalog/Registry/Check 277/277 grün.
|
||
|
||
- **Lexis360-Wissensbasis Batch 5** (2026-09-10): 31 Briefings (Stände
|
||
2025-12 bis 2026-07, Kapitel „Arbeitszeit“ — drittes Kapitel) → 31
|
||
kuratierte Einträge in 8 neuen Clustern (azg 4, azm 7, mip 4, nsc 3,
|
||
rhz 4, sch 1, ues 4, zer 3) + lb-jug-08; ein ß-URL-kodierter Dateiname
|
||
normalisiert. Keine Fossil-IDs (spezifisch-vor-generisch-KEYWORDS
|
||
wirkten). RECHTSQUELLEN-Abgleiche: §-68-ÜStd-Freigrenzen 2026
|
||
(15/170 €) ✅ via lb-zus-07; Kurzarbeit-Lehrlinge trianguliert
|
||
(lb-azm-05 → lb-leh-07). Drei Beschaffungslücken geschlossen
|
||
(lb-jug-04/05 → lb-jug-08, lb-zer-01/02). Katalog/Registry/Check
|
||
236/236 grün.
|
||
|
||
- **Lexis360-Wissensbasis Batch 4** (2026-09-10): 54 Briefings (Stände
|
||
2026-06 bis 2026-08) → 54 kuratierte Einträge in 6 neuen Clustern
|
||
(lsd 13, pfa 14, gpl 7, lnk 7, lvr 9, naz 4); Dubletten-Export entfernt
|
||
(identischer Text). RECHTSQUELLEN-Abgleiche: FLAF-DB 3,7 %/KommSt 3 %/
|
||
IESG 0,10 %/WBF (übrige BL 1 %) ✅; Freibetragsstaffel ✅ via lb-lnk-03
|
||
(Quellformulierung in lb-lnk-02 invertiert — dokumentiert); WBF-Wien
|
||
1,5 % vs 1,0 % ⚓ dokumentiert. Querverweis-Nachträge lb-sac-13→lb-lvr-02,
|
||
lb-sac-21→lb-lvr-05. Tool-Fixes: assign_ids-Rückgabe-Warnungen
|
||
(NameError beseitigt), KEYWORDS-Reihenfolge spezifisch-vor-generisch,
|
||
7 Fossil-IDs (Pass-1-Keyword-Fehlgriffe) bereinigt. Katalog/Registry/
|
||
Check 205/205 grün.
|
||
|
||
- **Lexis360-Wissensbasis Batch 3** (2026-09-10): 44 Briefings (Stände
|
||
2025-06 bis 2026-08, Kapitel „Entgelt: Anspruch & Abrechnung“) → 44
|
||
kuratierte Einträge in 6 neuen Clustern (rei 9, vor 11, son 4,
|
||
zus 8, pen 9, ges 2) + lb-ent-11; zwei URL-kodierte Export-Dateinamen
|
||
(%c3%9f = ß) normalisiert. RECHTSQUELLEN-Abgleiche durchgeführt
|
||
(§-67-Staffel, §-68-Freigrenzen, BMSVG-Kernwerte, ALV-Staffel —
|
||
deckungsgleich bis auf dokumentierte ⚠-Punkte); lb-prm-04-Querverweis
|
||
auf lb-son-03/04 nachgetragen. Katalog/Registry/Check 151/151 grün.
|
||
|
||
- **Lexis360-Wissensbasis Batch 2** (2026-09-10): 52 neue Briefings
|
||
(Stände 2025-06 bis 2026-08, Kapitel „Entgelt: Anspruch & Abrechnung“
|
||
+ „Beschäftigungsverhältnisse“) → 52 kuratierte Einträge in 7 neuen
|
||
Clustern (beh, ent, gsf, lei, prm, sac, vst) + lb-leh-16; Katalog
|
||
107/107, Registry/Check grün. Tool-Härtung: Multi-Batch-batch-Validierung
|
||
(1..N), dynamische Batch-Anzeige (kb.json `batches`, INDEX-Header),
|
||
--extract-Warnung bei eingefrorener ID mit abweichendem Cluster-Präfix
|
||
(fing lb-jug-08-Fossil aus Pass 1, korrigiert zu lb-sac-21 vor Kuratierung);
|
||
Duplikat-Export (`geschaftsfuhrer_arbeitsrecht (1).pdf`, identischer Text)
|
||
entfernt. Batch-1-Dokumentation in README/RUNBOOK auf Batches 1–2
|
||
umgestellt.
|
||
- **Lexis360-Wissensbasis Batch 1** (2026-09-10): 55 PDF-Exporte aus
|
||
Lexis 360 („Lexis Briefings Personalrecht“; Stände 2024-03 bis 2026-09)
|
||
→ 55 kuratierte Einträge in `personalverrechnung/wissensbasis/dokumente/`
|
||
(Zusammenfassung/Kernwerte/Rechtsgrundlagen/Payroll-Relevanz/Verweise,
|
||
Stand-Marks, ✅/⚠/❓), `README.md` (Schema/Konventionen), generiert
|
||
`kb.json` + `INDEX.md`, Tool `personalverrechnung/tools/build_lexis_kb.py`
|
||
(--extract pdftotext-Pipeline; --registry Frontmatter-Validierung ohne
|
||
PyYAML inkl. cross_refs/topic↔ID-Präfix; --check Layer-1↔Layer-2-
|
||
Vollständigkeit; ID-Freeze über `_catalog.json`). RUNBOOK um
|
||
Wissensbasis-Workflow (Batches, Validierung, Limitierungen) erweitert.
|
||
- **GP1 KV-Framework General-AT** (2026-09-09): `l10n_at_hr_payroll_private`
|
||
19.0.1.0.0 implementiert — Modelle `kollektivvertrag.py` (kv/kv.wert/
|
||
kv.gruppe/kv.gruppe.stufe) + `hr_version_private.py` (Vertragsfelder,
|
||
Muster `hr_version_bgld.py`), Wizard `kv_katalog_import.py` (Vorschau,
|
||
Sprungwarnung, Versionierung), Views/Menus/Security, Seed D2 mit
|
||
SI-2203/SI-2748-Tabellen 2026 (inkl. Sonder-Vorrückungsverläufe
|
||
IV-M/V-OM im SI-2748, aufgelassene VG I im SI-2203, Nacht-€-Satz
|
||
als Jahresversionen 2,71/2,76 €). Test-Suite `test_kv_katalog`:
|
||
Seed-Lookups, Stichtags-Lookup, Versionierung, Eckwerte, Wizard
|
||
(Sprungwarnung/Aktualisierung/Neuaufnahme), Vertragsfelder.
|
||
- **GP0-Rechtsverifikationen General-AT** (2026-09-09):
|
||
`RECHTSQUELLEN-Privat.md` erstellt: FLAF § 41 FLAG (RIS GesNr
|
||
10008220 — 3,7 % ab 2025, 2,7 % ab 2028; Basis Arbeitslöhne;
|
||
1.095-€-Freibetrag bei ≤ 1.460 €), KommStG 1993 (GesNr 10004841 —
|
||
3 %; § 3 Abs 3 Gemeindefreiheit; § 11 Verfahren), BMSVG (1,53 % auf
|
||
Entgelt + SZ, kein HBG-Cap; § 14 Abs 2 Verfügungsausschluss; § 15
|
||
Anwartschaft statt Staffel; § 17 Verfügungsoptionen), UrlG (§ 2
|
||
30/36 Werktage; § 6 Urlaubsentgelt; § 10 Ersatzleistung), EStG 1988
|
||
(§ 33/66 Tarif 2026; § 67 sonstige Bezüge 0/6/27/35,75 % im
|
||
Jahressechstel, Freigrenze 2.615 €, Kontrollsechstel § 77 Abs 4a,
|
||
§ 67 Abs 3/6/8 Abfertigungen; § 68 SZFN 400 €, ÜStd 10/120 €,
|
||
2026: 15/170 €, Nachtarbeit 600 €). Plan (Abschnitte 1, 4.2–4.4,
|
||
6, 8) auf Verifizierungsstand gebracht; payroll-Skill §-Zitat
|
||
korrigiert.
|
||
- **D4-Neuverifikation komplett** (2026-09-09): verifiziert gegen beide
|
||
in-repo Checkouts — `odoo/` (Community) und `odoo_enterprise/odoo`
|
||
(Odoo 19.0.0; gemergter Baum: odoo-Paket + 1.452 Addons, Community +
|
||
Enterprise in einem Addons-Verzeichnis, u. a. Referenz-Lokalisierungen
|
||
`l10n_be_hr_payroll`/`l10n_ch_hr_payroll`; `l10n_at_payroll` existiert
|
||
erwartungsgemäß nicht); beide in `.gitignore`. Community-Teil:
|
||
`hr.version` (`hr/models/hr_version.py` L35; `wage`/
|
||
`structure_type_id`/`resource_calendar_id` versioniert),
|
||
kalenderbasierte Work-Entry-Erzeugung
|
||
(`hr_work_entry/models/hr_version.py` L420 `_generate_work_entries`
|
||
+ Postprocess-Hooks L500/L506), `hr.work.entry.type` + Entry-States
|
||
(`hr_work_entry.py` L39). Enterprise-Teil:
|
||
`work_time_rate`/`hours_per_week` auf Version
|
||
(`hr_payroll/models/hr_version.py` L48/L39), `work_entry_source`
|
||
(L30; Attendance-Integration `hr_payroll_attendance/models/
|
||
hr_payslip.py` L29), `hr.payslip.run` (`hr_payslip_run.py` L23;
|
||
state L31, `date_start` L41, `date_end` L45), EOSB-Muster
|
||
`l10n_ae_hr_payroll` (`_inherit = "hr.payslip"` L10,
|
||
`_l10n_ae_get_eos_daily_salary` L95, je-Version-Feld
|
||
`l10n_ae_eos_daily_salary` L102, Structure-Type-Inherit),
|
||
Engine-Mechanismen an den Bgld-Plan-Zeilenreferenzen bestätigt
|
||
(`payslip._rule_parameter` `hr_payslip.py` L951, localdict,
|
||
`hr.salary.rule.account_debit`/`account_credit` L11/L15,
|
||
Posting-Hooks `_action_create_account_move` L54 /
|
||
`_prepare_line_values` L125 / `_prepare_slip_lines` L166,
|
||
`journal_id` auf Structure via
|
||
`hr_payroll_account/models/hr_payroll_structure.py` L15,
|
||
`hr.payslip.input.type` `hr_payslip_input_type.py` L9,
|
||
`hr.payroll.structure.type.country_id` L46);
|
||
`hr_payroll_account_iso20022` vorhanden. `l10n_at`-Konten
|
||
(`l10n_at/data/template/account.account-at.csv`, XML-ID-Muster
|
||
`l10n_at.chart_at_template_<code>`): Sonderzahlungen 6240, Verrechnung
|
||
Lohnsteuer 3540 / Finanzamt 3530 / SV 3600, Abfertigungsrückstellungen
|
||
3000, KommSt 6660, FLAF-DB 6661, DZ 6662, Wien-Abgabe 6663 —
|
||
**Matrix-Lücken (GP0):** Löhne-/Arbeiter-Konto und SV-DG-Aufwandskonto
|
||
fehlen im Standard-Template. Hinweis: Build mit eigenem
|
||
Versionsschema (Manifests teils ohne `version`-Key, z. B. `l10n_at`
|
||
„3.2.1"); maßgeblich ist `release.py` `version_info` (19, 0, 0).
|
||
- **General-AT-Plan M0** (2026-09-09): `IMPLEMENTIERUNGSPLAN-Privat.md`
|
||
erstellt und freigegeben — Entscheidungen D1 (Pfad), D2 (Referenz-KVs
|
||
SI-2203 Handwerk/Gewerbe + SI-2748 Metallgewerbe), D3 (Kern-
|
||
Vorfinanzierung durch General-AT), D4 (Odoo-19-Source kurzfristig;
|
||
API-Neuverifikation in M1). Umfang: General-AT-Anteil ≈ 120–172 PT,
|
||
inkl. D3-Vorfinanzung ≈ 180–258 PT (M1–M9, ~7–9 Monate).
|
||
README-Modultabelle, Gerüst-README `l10n_at_hr_payroll_private` und
|
||
CHANGELOG auf Planstand gebracht.
|
||
- **KV-Library** (2026-09-09): `tools/fetch_kv_portal.py` (ÖGB-Portal:
|
||
Sitemap/Dashboard/Structure/Slices/Topics-JSON-APIs, 593 Varianten,
|
||
Catalog+Texte JSON/MD), `tools/fetch_wko_kv.py` (WKO-DB: 1.820
|
||
Übersichtsseiten, 614 aktuelle Dokumente, Match gegen Baseline),
|
||
`tools/build_kv_catalog.py` (Merge, Kammer-Klassifikation, Crosscheck,
|
||
manual-review-Listen), `quellen/kv/chambers/chambers.json` (Kammer-Quellen
|
||
kuratiert, inkl. Lücken: GÖD member-only, RA/Notariat nicht öffentlich),
|
||
`personalverrechnung/RUNBOOK.md` (Update-Zyklus). 407 WKO↔ÖGB-Paare,
|
||
30 Datumsdifferenzen geflaggt, 195 unklassifizierte (Einzenträger-KVs)
|
||
zur manuellen Sichtung.
|
||
- **Migration gem360 → odoo-at-payroll** (2026-09-09): dev-payroll nach
|
||
origin gepusht (Backup), History-Import per `git filter-repo`
|
||
(Branch hier: `main`), Modul-Split (TASY/SV-Layer in den Kern),
|
||
Model-Rename `l10n.at.payroll.tasy.*`, Skills/AGENTS/MEMORY neu
|
||
aufgesetzt, Manifest-Beschreibung auf AP1+AP2-Stand korrigiert.
|
||
- Vorher (aus gem360-Historie): AP1 Katalogmodell (35 Gruppen/433 Werte
|
||
2026), AP2 Entgelt-Engine (13 Regeln, Structure GEMBG.BGLD), SV-Werte
|
||
aus ÖGK TASY-LSWH; 3 Testsuiten (Katalog, Entgelt, TASY-Import).
|
||
|
||
## Open issues / blockers
|
||
|
||
- **Lexis360-KB offene Punkte** (2026-09-10): Korpus-Widersprüche ⚠ vor
|
||
Implementierung klären — AMS-Ersatzquote geblockte ATZ 2026 **gelöst
|
||
2026-09-11: 27,5 %** (lb-atz-07 „28,5 %“ = Quellenanomalie; s.
|
||
KB-KONFLIKTE A4), DAG-Grenze 2023 (lb-bes-02 751,36 € vs.
|
||
lb-bes-06 751,37 €), Lehrlinge-Kurzarbeit **gelöst 2026-09-11 (B1:
|
||
lb-leh-07/azm-05 maßgeblich)**, Kleinwohnungsgrenzen **gelöst (B2:
|
||
§ 2 Abs 7a SBV, 35/45 m² gültig)**, Pensionisten-Begünstigung
|
||
**⚠ dokumentiert — BFG RV/3100422/2024, VwGH-Revision anhängig (B3)**, **§ 124b-ÜStd-Maßnahme 2026 — RIS-geklärt 11.09.2026
|
||
(3. Runde): verbindlich Z 440 lit c idF BGBl I 4/2026, Aufrollung
|
||
bis 31. 5. 2026; lb-zus-07 war richtig, „Z 476 lit c idgF BGBl I
|
||
43/2026“ = Fehlzitat (Z 476 = Pendlerpauschale)** — Familie A1
|
||
gelöst (s. KB-KONFLIKTE A1), lb-pen-09 Tabellenfehler
|
||
(3.672 vs. rechnerisch 2.448 €), 183-Tage-Regel Finanz vs. UFS
|
||
(lb-rei-01/02/08), Teleworker-Fahrten Finanz vs. BFG/VwGH (lb-rei-07);
|
||
Alte Stände (leh 2024-03/2025-08, gsf/vst/lei 2025-06, son-01–03
|
||
2025-06) nur mit Kennzeichnung; Copilot-Deployment braucht
|
||
lizenkonformen Layer-1-Bereitstellungspfad (Volltexte nicht im Repo);
|
||
**Batch-4-Konflikte**: lb-lnk-02 DB-Freibetragsbedingung invertiert
|
||
(RECHTSQUELLEN verbindlich), lb-lnk-05 WBF-Wien **gelöst 2026-09-11**
|
||
(1,5 % gesamt 0,75/0,75 ab 1.1.2026; A2), lb-pfa-03/05 Grundbetrag-
|
||
Bezeichnungen **gelöst** (A9), lb-pfa-12/14 Existenzminimum **gelöst**
|
||
(Stand-Differenz 2021/2022; A9; AZR-Werte RIS-belegt 11.09.2026:
|
||
1.273,99/1.308,39), lb-lsd-13
|
||
Gesetzeszitat verstümmelt (❓ RIS), §-124b-Zitier-Varianten —
|
||
**RIS-geklärt 11.09.2026: verbindlich Z 440 lit c idF BGBl I
|
||
4/2026** (lb-zus-07/lb-naz-03 „Z 440“ richtig, lb-lvr-07 „Z 449“
|
||
falsch; „Z 476“ = Pendlerpauschale-Fehlzitat) — Familie A1 gelöst
|
||
(s. KB-KONFLIKTE A1);
|
||
**Batch-5**: NSchG-Beitrag 2026 (3,8 %) ohne BGBl-Beleg (lb-nsc-01),
|
||
§ 7-AZG-Fundstelle Abs 1 vs Abs 6 (lb-ues-01/04) **gelöst 2026-09-11:
|
||
Abs 6 (B9)**, MAV-START-EU-Konflikt
|
||
(lb-rhz-03), KAB-Richtlinie mit alten SV-Beitragswerten (lb-azm-06);
|
||
**Batch-6-Kandidaten**: Bildungskarenz, Personalrabatte bis 2015,
|
||
Telearbeitspauschale, Begünstigt behinderte, Belästigung, Prämien
|
||
bei Beendigung, Abfertigung Alt/Verfügungsmöglichkeiten AbfN,
|
||
Corona-Kurzarbeit, Leitende Angestellte in der Rechtsprechung,
|
||
pfändungsrechtliche Behandlung von Sonderzahlungen, Rückzahlung von
|
||
Darlehen/Mustervereinbarung, Entgeltfortzahlung an Feiertagen,
|
||
Motivkündigung, Gefahrenevaluierung und Arbeitsverbote
|
||
(vollständige Liste im RUNBOOK). *Mit Batch 7 geschlossen:*
|
||
Bildungskarenz (kzs), Abfertigung Alt (lb-kar-01),
|
||
Entgeltfortzahlung an Feiertagen (lb-efz-01/02),
|
||
Gefahrenevaluierung/Arbeitsverbote (lb-sch-04), Telearbeit
|
||
(tel) — offen bleiben u. a. Personalrabatte bis 2015,
|
||
Telearbeitspauschale, Begünstigt behinderte, Prämien bei
|
||
Beendigung, Corona-Kurzarbeit, Leitende Angestellte in der
|
||
Rechtsprechung, pfändungsrechtliche Behandlung von
|
||
Sonderzahlungen, Rückzahlung von Darlehen, Motivkündigung.
|
||
**Batch-7-Konflikte**: lb-asc-15 Rechenbeispiel-Kontingent **gelöst
|
||
2026-09-11: 56 Kalendertage ab 2. DJ, EFZG § 2 (B13)**; lb-aug-01/02 §-Garbel
|
||
„§ 11503/§ 1503 Abs 30 ABGB“ (❓ vermutlich § 1153 Abs 30
|
||
ABGB); lb-grz-08 OGH-Folgepflicht-Judikatur vs.
|
||
Quellenkritik (Reissner) — **⚠ dokumentiert, Umsetzungsentscheidung
|
||
zurückgestellt (B14)**; lb-efz-01 Zeitausgleich „mind. 1
|
||
Kalendertag oder 36 Stunden“ ⚠; lb-dvh-04 Streik: Entgeltanspruch
|
||
streikferner AN bei AG-zurechenbarem Streik ❓.
|
||
**Batch-8-Konflikte**: lb-end-01 Abfertigung-Alt-Lohnsteuer **gelöst
|
||
2026-09-11** (Günstiger-Prinzip; RQ korrigiert; A5); lb-end-09 § 68
|
||
Abs 2 „10 ÜStd/120 €“ — A1-Familie: § 68 Abs 2 bleibt 10/120; 2026
|
||
verbindlich 15/170 € via **§ 124b Z 440 lit c** (RIS 11.09.2026);
|
||
lb-end-21 Beispiel-DN-SV 18,07 % **gelöst,
|
||
korrekt** (A2; die Gegenposition „17,57 %" beruhte auf der falschen
|
||
DG-Zuordnung der AK-Umlage; vgl. lb-naz-04); lb-end-01/04 SV-Freiheit
|
||
**gelöst: § 49 Abs 3 Z 7 ASVG** (A5);
|
||
lb-brt-20/22 fakultative BV Z 7–26 vs. Z 7–27 **gelöst 2026-09-11:
|
||
Z 7–Z 27 (B6)**;
|
||
lb-brt-15 „§ 40 BRWO“ vermutlich § 40 ArbVG ❓; lb-bnd-37
|
||
verstümmeltes GlBG-Zitat ⚠; lb-bnd-38 § 15a/15b AVRAG-FN-Verschiebung
|
||
⚠; lb-mel-03 DSB-Frist 6 vs. 7 Monate **gelöst 2026-09-11: 6 Monate,
|
||
„sieben“ = Tippfehler (B12)**;
|
||
lb-ins-06 HBG-Jahresangaben **gelöst 2026-09-11: HBG-Relationen 2026,
|
||
1× 6.930/1,5× 10.395/2× 13.860, „2025“-Label falsch (B11)**; lb-bso-02 ALV-
|
||
Ersatzquoten fehlen in der Quelle ❓ (bewusst offen) —
|
||
vollständige Liste im RUNBOOK (Wissensbasis, Batch-8-Abschnitt).
|
||
**Batch-9-Konflikte**: lb-sva-06 **gelöst 2026-09-11** — AK-Umlage
|
||
0,50 % DN + § 53a-Beitrag € 14,12/Monat (A7; RQ korrigiert);
|
||
lb-sva-08 Weiterversicherung **gelöst** — freie-DN-Deckel € 8.085
|
||
(22,8 % × 8.085 = 1.843,38 exakt; A8); lb-bsv-12/13 BSVG-HBGL
|
||
**gelöst** — GSVG/BSVG = 35 × Kalendertag-HBGL (2022: 6.615 · 2026:
|
||
8.085), „einheitlich“ falsch, ASVG separat § 108 Abs 3 (A8);
|
||
lb-gsv-11 vs gsv-06
|
||
GF-Beteiligungsschwellen „50 %“ (2025-07) vs „>25 %/<25 %“
|
||
(2026-07) **gelöst 2026-09-11: 25 %-Schwelle gesetzlich (B7)**; lb-pvs-02 vs lb-swa-03 Regelpensionsalter-Stichtage
|
||
**gelöst 2026-09-11** (lb-pvs-02 bestätigt § 617 Abs 11 idF BGBl I
|
||
2023/11; lb-swa-03 widerlegt; A10); lb-pvs-03/04/05 vs pvs-02
|
||
Altrecht-Grenzdatum **geklärt 2026-09-11** (1955 = Altrecht, 1954 =
|
||
LZP-Kohorte; A10); lb-pvs-08 Bonus-Maximum € 481 vs € 493,99 ⚠
|
||
(A10-Rest, RIS);
|
||
lb-kvs-03 „§ 120 Z 3 ASVG“ vermutlich Z 4 ⚠ — vollständige Liste im
|
||
RUNBOOK (Wissensbasis, Batch-9-Abschnitt). DN-Beitragssätze 2026
|
||
und GFG/HBGL-Werte sind ✅ deckungsgleich mit RECHTSQUELLEN.
|
||
- **General-AT GP0-Rest offen** (2026-09-10 nach Beschaffung): Pilotmandant/Golden-Master
|
||
fehlt; D3-Anrechnungsmechanik vertraglich regeln (Bgld.-
|
||
Auftragserteilung); Referenz-KV-Kuratierung (SI-2203/SI-2748, GP1,
|
||
aus in-repo KV-Library); UGB-Buchungsmatrix (erste Referenz-
|
||
buchhaltung); ELDA-/FinOnl-**Anmeldungen/Zertifikate** = Nutzer-
|
||
seite; Abstimmung ELDA-Specs mit Bgld-AP0 (Doppelverwendung).
|
||
Erledigt 2026-09-10: Volltexte AZG/AngG/ArbVG/LStR/alle KB-Abgleich-
|
||
Normen beschafft; ELDA/eSV-Spec = DM-ORG 42.7.0 (JASV belegt);
|
||
Krankengeldumlage als Falsch-Prämisse aufgelöst. Neu aus Plan-
|
||
Neu aus Plan-
|
||
Update: DZ/WKG-Grundsatzentscheidung (8.11) + WKG-Tarife
|
||
RIS-verifizieren; KB-Konfliktfamilien vor GP3/GP4 — **A-Runde
|
||
2026-09-11 erledigt** (A1/A2/A5/A7/A8/A9 ✅; A4/A6/A10 ⚓; Details
|
||
KB-KONFLIKTE A); **3. RIS-Runde 11.09.2026**: A6-Wortlaut ✅
|
||
(ALV-Entfall = **AlVG § 1 Abs 2 lit e** idF BGBl I 62/2026,
|
||
NOR40280219, inkl. Korridorpension/Anwartschaft ab 2027; § 49
|
||
ASVG 2027 nur Telearbeitspauschale), A9-AZR ✅ (2025: 1.273,99 /
|
||
2026: 1.308,39, § 293 ASVG Anm. 2), A10-Altrecht ✅ (APG § 1
|
||
Abs 3: vor 1.1.1955), A4-Zitierstruktur ✅ (Art. 2 § 27 AlVG +
|
||
Art. 7 § 82 Abs 7/8; 788–884 Wochen), A1-Zitierkorrektur ✅
|
||
(**Z 440 lit c** idF BGBl I 4/2026; „Z 476“ = Pendlerpauschale;
|
||
Z 492/494 = § 68 Abs 1-Feiertagsregel), B16-Bezugszeitraum ✅;
|
||
8.12-**Restagenda**: A3 „Formel 7“ (wk-akt-11,
|
||
blockiert AP4), A4-All-In (wk-akt-09), **A7-2026-GFG** (551,10 =
|
||
2025-Wert — Pauschale/DAG-Schwelle erst nach Fixierung; NSchAB-
|
||
Beleg + DAG-Normzitat unverändert
|
||
offen); KB-Scope-Kandidaten mit
|
||
Pilotmandant entscheiden (8.13 inkl. Mutterschutz-/Karenz-Block).
|
||
**Bgld-Schiene (fremdes Track, Nutzer-Review):** dortiger
|
||
Prüfpunkt „Krankengeldumlage § 62" ist nach dem
|
||
Privat-Track-Befund gegen denselben RIS-Stand zu verifizieren.
|
||
- **KV-Library, manuell offen** (2026-09-09): manual_review-Listen im
|
||
`kv-catalog.json` (Match-Heuristik-Flüchtigungen, 30 Datumsdifferenzen,
|
||
195 unklassifizierte Einzelträger-KVs); Kammer-Scan-PDFs (RA Vbg,
|
||
LÄK NÖ/OÖ/Bgld) ohne OCR nicht maschinenlesbar; Angestelltenärzte-KV
|
||
nirgends öffentlich. Bibliothek inkl. Texte committed als `5b629a5`
|
||
(lokaler main, noch nicht gepusht).
|
||
- **RQ-Privat ↔ Wissensbasis-Rechtsquellen-Abgleich (2026-09-10):** alle
|
||
571 KB-`legal_bases` (2.767 Zitat-Strings, ~130 Normwerke) gegen
|
||
`RECHTSQUELLEN-Privat.md` geprüft. Gesetzesebene im RQ: 15 (EStG,
|
||
ASVG, AZG, UrlG, AngG, ArbVG, BMSVG, FLAG, KommStG, AMPFG, IESG,
|
||
LStR, BAG, BUAG/BFAK, ARG) + UGB nur als Matrix-Beschaffungspunkt;
|
||
Rest bewusst außerhalb des sektoralen RQ-Scopes (SV-Parallelrechte,
|
||
Arbeitnehmerschutz, Gesellschafts-/Verfahrensrecht …).
|
||
**Echte, nirgends erfasste Lücken** (weder RQ noch RQ-Beschaffungs-
|
||
liste noch Plan): **AVRAG** (§ 2g All-in-Grundlohn, § 11a Abs 4
|
||
Bildungsteilzeit-Aliquotierung — 124 KB-Zitate), **Mutterschutz-/
|
||
Karenz-Block** MSchG/MSchV/VKG/KBGG/APSG/FamZeitbG (Wochengeld =
|
||
DG-Payroll-Berechnung — fehlende Scope-Entscheidung, auch Plan 8.13
|
||
nicht), **KommStG § 10** (Zerlegung mehrere Betriebsstätten),
|
||
**EStG §§ 3/63/67a/69 + 124b Z 478 lit f** (§ 109a nur im Plan),
|
||
**ASVG-Detailnormen-Block** §§ 11/33/34/41/471a/49 Abs 2–3/44 Abs 7/
|
||
60/143/51/53b (im Plan punktuell via KB, RQ fehlt), **BAO §§ 4/29/30**
|
||
(Betriebsstätte), **AÜG** (KommSt-Betriebsstätte Überlasser nach
|
||
**UrlG § 7/§ 10a**, **BMSVG §§ 7/12/47**, **IESG § 12**,
|
||
Lohnkontenverordnung 2006. **Erledigt 2026-09-10 (Nutzer-Freigabe):**
|
||
RQ-Abschnitt 13 (Abgleichsmatrix) + Beschaffungslisten-Erweiterung
|
||
+ Plan-8.13-Ergänzung (Karenz-Block) umgesetzt — offen bleiben die
|
||
RIS-Verifikationen der neuen Beschaffungspunkte (mit GP2/GP3/
|
||
GP4/GP7-Baubeginn) und die Scope-Entscheidungen (Mutterschutz-/
|
||
Karenz, Krankenstand-EFZ, Pfändung, DZ) mit dem Pilotmandanten.
|
||
- gem360-seitig gilt: Branch `dev-payroll` dort vorerst erhalten, aber
|
||
**keine Payroll-Implementierung mehr in gem360** und kein Merge nach
|
||
dev/va_module (Guardrails im gem360-Handoff). Die Brücke
|
||
`l10n_at_gemeinde_payroll_vrv` (AP7) wird in gem360 gegen getaggte
|
||
Releases dieses Repos gebaut.
|
||
- **Runtime-Validierung: GP1+GP2 grün; Core/GemBG blockiert** (2026-09-11):
|
||
GP1-Abnahme erledigt — `test_kv_katalog` 8/8 grün auf `odoo_dev`;
|
||
GP2 — `test_entgelt_private` 21/21 grün (29/29 gesamt).
|
||
Kern/GemBG-Suiten nicht lauffähig: (a) `l10n_at_gemeinde_payroll`
|
||
bricht beim Install ab — `payroll_structure_bgld.xml` L19 setzt
|
||
`regular_pay` auf `hr.payroll.structure` (existiert in keinem
|
||
Snapshot); (b) **zwei weitere Latenzfehler in den GemBG-Regeln**
|
||
(erst runtime sichtbar, GP2-D4-Funde): ME/UEZ-Regeln teilen
|
||
`work_time_rate` (Bruchteil 0..1!) durch 100 → Entgelt faktor
|
||
100 zu klein; NETTO-Regel nutzt `categories.X` statt
|
||
`categories['X']` (DefaultDictPayroll ohne Attributzugriff) →
|
||
safe_eval-Fehler. Fix-Paket im Bgld-Track nötig (regular_pay-
|
||
Zeile entfernen, work_time_rate direkt multiplizieren,
|
||
categories-Item-Zugriff), danach
|
||
`createdb <testdb>` + `-i l10n_at_hr_payroll,l10n_at_gemeinde_payroll
|
||
--test-tags /l10n_at_hr_payroll,/l10n_at_gemeinde_payroll`
|
||
nachholen (Aufrufmuster README „Tests").
|
||
- Bgld.-Auftrag: AP0 offen (Bestandsaufnahme Pilotmandant, ELDA/FinOnl-
|
||
Specs, VRV-Buchungsmatrix, offene RIS-Verifikationen) —
|
||
`IMPLEMENTIERUNGSPLAN-Bgld.md` Abschnitt 8.
|
||
- Odoo-Upgrades künftig in beiden Repos (gem360 + dieses) gegen denselben
|
||
Odoo-Pin validieren.
|
||
- **Audit ÖGK-Tarifgruppensystem (2026-09-12, Nutzer-Audit-Frage):** Um-
|
||
fang nur „Normalbetriebe Allgemeiner Teil": mBGM-BSGR B001/B002 mit
|
||
normativ korrekten T01 39,05 %/T02 37,55 % (gegen TASY-LSWH-Export
|
||
2026-07-01 verifiziert: KV 3,87/3,78, PV 10,25/12,55, AK 0,5 DN gilt
|
||
für B001 **und** B002, Kern-Splitting stimmt); ERGB (E01 NSch, E02 SW,
|
||
E03 Schulpflicht …) nie belegt — NSchAB läuft stattdessen über Company-
|
||
Flag +3,80 % auf B001; nur 6 Abschläge (A01–A03/A09/A10/A15) von ~30
|
||
ÖGK-Handbuch-Abschlägen; keine Dienstgebergruppen-Konzept. **Zwei
|
||
BSGR-Befunde vor Parametrisierung fixen:** (1) `_l10n_at_bsgr` mappt
|
||
Lehrling+`arbeiter` auf **B044** — TASY: B044=Angestelltenlehrlinge,
|
||
B045=Arbeiterlehrlinge → **invertiert** (BBER-Mapping in versicher-
|
||
tenmeldung.py ist korrekt, D.39: 03=Arbeiterlehrling); (2) gering-
|
||
fügig/fallweise immer **B030** (Gfg. Ang.), B010 (Gfg. Arb.) wird nie
|
||
emittiert. Beide heute folgenlos (Lauf bricht ohne B044/B045/B010/
|
||
B030-Parameter listenweise ab), falsch sobald parametrisiert. TASY-
|
||
Import mappt nur 3 BBB + 8 Tarifzweige (erweiterbares Mapping-Modell,
|
||
kein BSGR/ERGB/Tarifgruppen-Import). Kein Code-Fix ohne Nutzer-
|
||
Freigabe (Audit-only).
|
||
|
||
## Decisions & conventions
|
||
|
||
- **RIS-Referenzquelle `.ris/`** (2026-09-13, Nutzer): der neue lokale
|
||
Ordner `.ris/` ist ZUKUNFT die verbindliche Referenzquelle für
|
||
Gesetzestexte und übernimmt die Rolle von `.additional_docs/ris_normtexte/`
|
||
(2026-09-11) bzw. `.firecrawl/ris/` als Norm-Verifikationsbasis. Format:
|
||
je Norm ein Markdown-Auszug mit den in der Lexis360-WKB zitierten
|
||
Paragraphen (Kopf mit RIS-GesNr + GeltendeFassung-URL, je § Fundstelle +
|
||
Inkrafttretensdatum + NormDokument-URL), tagesaktuelle Fassung, Abruf
|
||
2026-09-13; Bestand: ABGB, APSG, APflG, BMSVG, BS-V, BauV, DHG, FLAG,
|
||
GmbHG, MSchG, MSchV, RStDG, Sachbezugswerteverordnung, StPO.
|
||
**Auszug ≠ Volltext:** fehlt ein benötigter §, NICHT aus Trainingswerten
|
||
ergänzen — Beschaffung (firecrawl-RIS-Download, findok-Regel) oder
|
||
Nutzer-Beleg, Ablage in `.ris/`; gitignored wie die anderen
|
||
D1-Quellordner.
|
||
|
||
- **GP4-Konventionen (2026-09-11, Nutzer-freigegebener Bauplan +**
|
||
**Quellenverifikation):** (1) **§ 2a AMPFG wirkt nur DN-seitig**
|
||
(tiers+dn_voll im Parameter; Grenzen nicht aliquotieren; gilt auch
|
||
für SZ-Beiträge; ab 2027 tiers=[] = voller Satz); (2) Gering-
|
||
führigkeitsprüfung auf §-49-bereinigter laufender BG mit Hoch-
|
||
rechnung ×30/Kalendertage bei untermonatiger Beschäftigung, ohne
|
||
SZ, Lehrlinge nie geringfügig; (3) §-19a-Selbstversicherung ist
|
||
KEIN Lohnabzug (Direct-Zahlung an den Träger) — Engine zeigt nur
|
||
§-53a-Abs-1-UV (6,50 €) als DG-Zeile; (4) SVDN_SZ = eigene
|
||
Abzugszeile (§ 67 Abs 12, Netto-Korrektur); (5) DG-/LNK-Zeilen in
|
||
Kategorie ATP_DG ohne Nettoeffekt; (6) DZ nur bei Company-Flag
|
||
`l10n_at_wk_mitglied`, Satzvektor je `l10n_at_bundesland` (WKO-
|
||
Verifikation 8.11 offen); (7) Altersstichtage als DATUMS-Felder
|
||
`l10n_at_*_ab` am Vertrag, Wirken je Beitragsmonat (Anspruchs-
|
||
prinzip), UI GP8; (8) Beitragsmonat je Regel (`l10n_at_beitrags-
|
||
monat`) + Lohnkontolinie (stored compute), historische Sätze/HBG
|
||
je Gruppe; (9) §-49-Mengen = Arbeitstage über quantity; (10) DAG
|
||
als Company-Bewertung `_l10n_at_dag(monat)` ohne Lohnzettelzeile
|
||
(Ausweis GP8); (11) LNK-Freibetragsstaffel zentral `_at_lnk_basis`
|
||
(Zufluss; §-67-Abs-3/6 über Kern-Flag `l10n_at_s67_abs`; lit f nur
|
||
FLAF/DZ — KommSt ohne Befreiung).
|
||
|
||
- **D4-Runtime-Mechanik Odoo 19 (GP2-Verifikationen 2026-09-11):**
|
||
`hr.work.entry` ist **tageweise** (`date` + `duration` ≤ 24 h,
|
||
kein datetime-Bereich; create braucht explizites `employee_id`);
|
||
worked-days zählen **draft und validated** Entries; `hr.version`:
|
||
`date_start/date_end` **computed** (aus `date_version` =
|
||
max(date_version, contract_date_start); Versionen partitionieren
|
||
die Zeit über `date_version`-Sequenz — create erzwingt heute,
|
||
Änderung nur via `date_version`-Schreiben), Beschäftigungsspanne
|
||
= `contract_date_start/end` (Payslip-Validierung „No running
|
||
contract" prüft die); `work_time_rate` = **Bruchteil** (Version-
|
||
kalender ÷ Firmenzalender, readonly — Teilzeit über kürzeren
|
||
Kalender); Regel-localdict: `categories['CODE']` (DefaultDict,
|
||
**kein** Attributzugriff), `rules['CODE'].total`, WET-Codes ≠
|
||
Regel-Codes (Payslip-Lines tragen Regel-Codes); `hr.payslip.name`
|
||
required; WET/Regel-Kategorien brauchen `country_id` konsistent
|
||
zur Structure.
|
||
|
||
- **Primärquellen-Entscheidung SV-Beiträge** (2026-09-11, Nutzer):
|
||
ÖGK-Beitragstarifsystem (`.additional_docs/oegk/`, lokal
|
||
unversioniert, D1 analog `.lexis360/`) und der TASY-LSWH-Export
|
||
(`personalverrechnung/quellen/TASY-LSWH-Export-20260324.xml`)
|
||
sind verbindliche Primärquellen für Beitragssätze/Nebenbeiträge;
|
||
bei Widerspruch zu Sekundärquellen (Briefings/WIKU) gelten sie.
|
||
A1–A10-Lösungen in `KB-KONFLIKTE.md` Abschnitt A verankert;
|
||
Layer-2-Einträge bleiben Beleg ohne Auflösungsvermerke (Nutzer-
|
||
Entscheidung). RQ korrigiert: AK-Umlage 0,5 % DN, WF-Wien 1,5 %
|
||
gesamt ab 1.1.2026, § 67 Abs 3 Günstiger-Prinzip.
|
||
|
||
- **RIS-Normtexte als B-Runden-Primärquellen** (2026-09-11, Nutzer):
|
||
`.additional_docs/ris_normtexte/` (Bundesrecht konsolidiert,
|
||
tagesaktuelle Fassungen abgerufen 11.09.2026; Manifest
|
||
`README_RIS_DOWNLOAD.md`, Auflösungsvorlage `B_KONFLIKTE_AUFLOESUNG.md`)
|
||
sind die verbindliche Verifikationsbasis der B-Konfliktfamilien;
|
||
lokale, unversionierte Ablage (`.additional_docs/` gitignored, Muster
|
||
D1). B1–B18-Lösungen in `KB-KONFLIKTE.md` Abschnitt B verankert;
|
||
Layer-2-Einträge bleiben Beleg ohne Auflösungsvermerke (wie A-Runde).
|
||
Bei fehlenden Normtexten NICHT aus Trainingswerten ergänzen —
|
||
Nutzer-Beleg anfordern (Ausnahme: EuGH-/BFG-Befunde via Webquellen
|
||
dokumentiert). Volltexte zu § 8 Abs 12 EuroStUV und § 124b Z 494 EStG
|
||
bewusst nicht geladen → LZP-/Bezugszeitraum-Details als
|
||
Kleinverifikationen geführt (KB-KONFLIKTE „Nächste Schritte“).
|
||
|
||
- **firecrawl-CLI + findok-Fassungsregel** (2026-09-11): CLI v1.23.3
|
||
als User-Prefix `~/.npm-global` (systemweiter npm-Install ohne Root
|
||
nicht möglich; binary `~/.npm-global/bin/firecrawl`; keyless auth
|
||
genügt für scrape). findok-Segment-URLs ohne Datumsparameter zeigen
|
||
**Altfassungen** — aktuelle Fassung via `ilink`-URL mit
|
||
`gueltig=<JJJJMMTT>` (Beweis Rz 243: 26. Fassung 18.12.2025);
|
||
Details im RUNBOOK „Primärquellen-Downloads“.
|
||
|
||
- **Lexis360-Wissensbasis-Architektur** (2026-09-10): D1 — Volltexte/
|
||
PDFs lokal unversioniert (`.lexis360/` gitignored, Muster `.firecrawl/`),
|
||
nur Kuratierung versioniert (Lizenz LexisNexis). D2 — strukturelle
|
||
Frontmatter-Keys englisch (wie kv-catalog/chambers), Werte deutsch
|
||
(UTF-8); `stand` als Fachbegriff ISO `YYYY-MM`; `topic`/`tags` ASCII-
|
||
Slugs; `topic` = beschreibender Cluster-Slug (`altersteilzeit`,
|
||
`lehrlinge`, …), ID-Präfix (`atz`, …) nur im `id`. IDs `lb-<prefix>-<nn>`
|
||
eingefroren (nie renummerieren/wiederverwenden); Frontmatter = Source
|
||
of Truth, `kb.json`/`INDEX.md` generiert via `--registry`; Werte niemals
|
||
aus Trainingswerten, nur aus Quelltext mit Stand-Kennzeichnung.
|
||
Ablageort `.lexis360/` (dot-dir, lokal, unversioniert): vom Nutzer
|
||
manuell exportierte lizenzierte Belege — bei Fehlen **NICHT** neu
|
||
beschaffen (anders als `.firecrawl/` = agenten-rekonstruierbare
|
||
Web-Fetches), sondern beim Nutzer nachfragen.
|
||
|
||
- **WIKU-Quelle `.wiku/`** (2026-09-10): D1 analog (lokal, unversioniert,
|
||
bei Fehlen NICHT beschaffen — Nutzer fragen). Integrationsmodell:
|
||
**gemeinsamer Korpus** `personalverrechnung/wissensbasis/` (eine
|
||
`kb.json`), `work`-Feld unterscheidet die Quellen; eigener ID-Raum
|
||
`wk-<prefix>-<nn>` auf der bestehenden Cluster-Map (`wk-pfa-01`
|
||
neben `lb-pfa-*`); Layer 1 `.wiku/md/` + eigener Katalog;
|
||
Layer-2-Dateinamen mit Präfix `wiku_<slug>.md`; Stand aus
|
||
„Stand YYYY-MM“/Heft-Monat, sonst Impressum; keine Lexis-Breadcrumbs —
|
||
Metadaten aus Dateiname + Titelei. Granularität: 1 Publikation =
|
||
1 Eintrag (Casebook-/Artikel-Ebene optional später); cross_refs lb↔wk
|
||
erwünscht. Pipeline = Multi-Source-**Erweiterung** von
|
||
`build_lexis_kb.py`, kein Fork — Folgeaufgabe **nach Batch 7**
|
||
(Lexis hat Priorität).
|
||
|
||
- **General-AT D1–D4** (2026-09-09): Plan geführt als
|
||
`personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md`; Referenz-KVs R1
|
||
= SI-2203 + SI-2748 (Feinjustierung je Pilotmandant in GP0);
|
||
**D3-Vorfinanzierung** — General-AT baut die sektor-neutralen
|
||
Kern-Blöcke AP3/AP4 (und nötigenfalls AP5/AP6) in `l10n_at_hr_payroll`
|
||
vor (Symmetrie zur Bgld-Planungsentscheidung „AP3 im Kern, damit das
|
||
General-Produkt ihn erbt"); Anrechnung/Umlegung bei Bgld.-
|
||
Auftragserteilung per Change-Request; D4 — Odoo-19-Source in-repo:
|
||
seit 2026-09-11 `odoo_19.0+e.20260910/odoo-19.0+e.20260910/`
|
||
(gemergter Community+Enterprise-Baum 19.0+e.20260910, 1.481
|
||
Addons, `.gitignore`; ersatzlos für `odoo/` + `odoo_enterprise/`);
|
||
D4-Verifikation komplett erledigt (gegen 19.0.0 — gleiche relative
|
||
Pfade; Neuzugänge gegen den neueren Snapshot zu Baubeginn
|
||
verifizieren).
|
||
- **GP0-Rechtskorrekturen General-AT (verbindlich)** (2026-09-09):
|
||
13./14. Bezüge = sonstige Bezüge iSd **§ 67 EStG** (§ 68 nur
|
||
Zulagen/Zuschläge — „§ 68 Abs 5/6" war falsch); Urlaubsentgelt =
|
||
**§ 6 UrlG** (§ 9 seit 2001 aufgehoben); EOSB = BMSVG-**Anwartschaft
|
||
ohne Monatsentgelt-Staffel** (§ 14 Abs 2 Ausschlussmatrix, § 15
|
||
Auszahlung Beiträge + Erträge); Bgld-P9-Rechtsbasis damit § 67
|
||
(Detailauslegung LStR 2002 bleibt offen).
|
||
- **KV-Quellen-Architektur** (2026-09-09): Main source je KV = die
|
||
verantwortliche Arbeitgeberkammer; kollektivvertrag.at (ÖGB) immer als
|
||
Crosscheck-Baseline (einziger vollständiger Korpus). WKO-DB deckt nur
|
||
WKO-KVs ab (keine Arzt/Apotheke/RA/Notar/Land-Zweige). Lohntafel-PDFs
|
||
nur verlinken, nicht downladen; im Text enthaltene Tabellen konvertieren.
|
||
Historische Slices nur bei Bedarf (Default: aktuelle Version).
|
||
- SKILL.md braucht YAML-Frontmatter (name = Verzeichnisname, description,
|
||
disable-model-invocation).
|
||
- Abhängigkeitsrichtung: gem360 → dieses Repo (nur die Brücke hängt an
|
||
beiden), nie umgekehrt.
|
||
- Tests nur auf Wegwerf-DB (nie `gem360_dev`); je Änderung py_compile +
|
||
XML-Well-formedness-Check.
|
||
- `.firecrawl/` bleibt lokal unversioniert (Rechts-Rohquellen); bei Fehlen
|
||
neu beschaffen — niemals aus Trainingswerten arbeiten.
|
||
- **Zed-Threads maschinenlokal** (2026-09-12): Threads liegen je Maschine in
|
||
`~/.local/share/zed/threads/threads.db` (SQLite, journal=delete,
|
||
`data_type='zstd'`); Remote-Sessions (Laptop→WS) schreiben nur clientseitig
|
||
(verifiziert: Remote-Server hält DB nicht offen, laufender Laptop-Thread
|
||
fehlt in WS-DB); kein Zed-Sync, kein `threads_path`-Setting in Zed 1.20.
|
||
Laptop-Schema hat zusätzlich `worktree_branch` — Merge nutzt Spalten-
|
||
Schnittmenge, der Wert wird auf WS-Seite verworfen. Konsolidierung =
|
||
Stich-Sync, driftet sofort wieder. Merge Laptop→WS: scp der Laptop-DB →
|
||
`/tmp/laptop-threads.db`, Backup `cp -a` der WS-DB, dann
|
||
`sqlite3 ~/.local/share/zed/threads/threads.db "ATTACH '/tmp/laptop-threads.db' AS lp;" "INSERT OR REPLACE INTO main.threads (id, summary, updated_at, data_type, data, parent_id, folder_paths, folder_paths_order, created_at) SELECT l.id, l.summary, l.updated_at, l.data_type, l.data, l.parent_id, l.folder_paths, l.folder_paths_order, l.created_at FROM lp.threads l WHERE NOT EXISTS (SELECT 1 FROM main.threads t WHERE t.id = l.id AND t.updated_at > l.updated_at);" "DETACH lp;"`
|
||
— WS-Zeile bleibt, wenn strikt neuer. Rückübertrag zur Laptop-DB per scp
|
||
nur bei geschlossenem Laptop-Zed und vorherigem Re-Merge des finalen
|
||
Laptop-Stands (sonst Verlust der Session-Enden). Neue Threads erscheinen
|
||
im Agent-Panel erst nach Zed-Restart.
|
||
**Auto-Sync installiert** (2026-09-12, Workstation-koordiniert): systemd-
|
||
User-Timer `zed-threads-sync.timer` (10 min) →
|
||
`~/.local/bin/zed-threads-sync.sh` (ssh-Alias `framework`): Wasserzeichen-
|
||
Deltas je Richtung (1-h-Sicherheitsfenster), Guard `>=` (Zeile ersetzt nur
|
||
bei strikt neuerem `updated_at` — idempotent, schont Laptop-
|
||
`worktree_branch`), `busy_timeout=5000`, Integritätscheck je Delta,
|
||
State/Log `~/.local/state/zed-threads-sync/`. Wartungshinweis:
|
||
`strftime('%s', updated_at)` liefert TEXT — CAST AS INTEGER nötig, sonst
|
||
matcht der Delta-Filter alle Zeilen (in Zyklus 1 passiert, harmlos dank
|
||
Guard, behoben). Grenzen: Löschungen propagieren nicht, fremde Threads
|
||
erst nach Zed-Restart sichtbar, Sync läuft nur bei bestehender WS-User-
|
||
Session (Linger optional), Laptop offline = harmloser Skip. Die manuelle
|
||
Finale-Sync-Checkliste ist damit obsolet.
|
||
|
||
## Files that matter right now
|
||
|
||
- `personalverrechnung/PLAN-Restluecken-AP11.md` — **freigegebener**
|
||
Ausbauplan Restlücken Wissensbasis↔Modul (AP11 Pfändung, AP12
|
||
Sachbezüge, AP13 Reise/Pendler, AP14 Endabrechnung, AP15 Abf Alt,
|
||
AP16 Karenz-Reste, AP17 L17/§ 109a, AP18 Schwerarbeit, AP19
|
||
Status-Sonderfälle, AP20+ Optionen; AP8 parallel; Reihenfolge,
|
||
Gates, PT-Summen; Status je Paket nachziehen)
|
||
- `.firecrawl/ris/` — Primärquellen-Downloads (19 RIS-Gesetzestexte,
|
||
LStR-2002-XML, DM-ORG 42.7.0 + Prüfkataloge + XSDs, SV-Werte 2026;
|
||
Verzeichnis `_README.md` mit GesNr und Kurztitel-Fallen; lokal,
|
||
unversioniert) — Beschaffungsstand RQ-Privat Abschn. 11; 2026-09-11
|
||
ergänzt: ASVG §§ 45/49, AlVG §§ 4/25/27/82, AMPFG §§ 1/2/3/25,
|
||
APG § 5, findok-LStR Rz 243 aktuell (ilink-Methode)
|
||
- `personalverrechnung/wissensbasis/` — Zwei-Quellen-Korpus (README,
|
||
dokumente/ 601 Einträge = 571 Lexis + 30 WIKU, kb.json, INDEX.md;
|
||
Batch-Workflow im RUNBOOK)
|
||
- `personalverrechnung/KB-KONFLIKTE.md` — konsolidierte Übersicht der
|
||
KB-Konflikte/offenen Punkte (A-Runde + 2. Verifikationsrunde in
|
||
Abschnitt A: A1/A2/A5/A7/A8/A9 ✅, A4/A6/A10 ⚓, A3 ⚠ AP4-Blocker;
|
||
B-Runde 2026-09-11 in Abschnitt B: 14 × ✅, B17 🔧, B3/B14/B18 ⚠
|
||
offen; C = Einzeloffenpunkte, D = Scope-Lücken,
|
||
E = Prozess)
|
||
- `.additional_docs/ris_normtexte/` — RIS-Normtexte der B-Lösungsrunde
|
||
(SBV § 2/APflG §§ 4–6/GlBG § 12/BehG §§ 7e+7i/ArbVG § 97/EStG
|
||
§§ 22/47/67/68/ASVG § 4/GSVG § 2/GKV § 0/AZG § 7/IESG § 1/EFZG § 2/
|
||
BSVG § 23/ABGB § 905, tagesaktuell 11.09.2026; lokal, unversioniert)
|
||
+ Auflösungsvorlage `B_KONFLIKTE_AUFLOESUNG.md` — Basis von
|
||
KB-KONFLIKTE Abschnitt B
|
||
- `.lexis360/` — lizenzierte PDF-Exporte + Layer-1-Volltexte `md/` +
|
||
`_catalog.json` (lokal, unversioniert)
|
||
- `personalverrechnung/tools/build_lexis_kb.py` — KB-Pipeline
|
||
(Multi-Source: `--source lexis|wiku|all` für --extract/--check;
|
||
--registry über beide Quellen; WIKU_PINS für neue WIKU-PDFs
|
||
ergänzen)
|
||
- `.agents/skills/wissensbasis/SKILL.md` — verbindliche Regeln für
|
||
Wissensbasis-Arbeit (inkl. `.wiku/`-Integrationsmodell)
|
||
- `.wiku/` — lizenzierte WIKU-Publikationen (lokal, unversioniert,
|
||
gitignored; Batch 1 eingespielt — 30 Layer-2-Einträge wk-*)
|
||
- `.additional_docs/` — Nutzer-Primärquellen der A-Lösungsrunde
|
||
2026-09-11 (ÖGK-Beitragstarifsystem `oegk/`, AMS-Merkblatt
|
||
Altersteilzeitgeld, LStR-2002-Abschn. 19.3, ASVG-§-108/BSVG-§-23/
|
||
EO-§§-291a+292-Briefings, §-617-ASVG-Kompendium, PVA; lokal,
|
||
unversioniert, gitignored)
|
||
|
||
- `personalverrechnung/IMPLEMENTIERUNGSPLAN-Privat.md` — General-AT
|
||
(freigegeben; GP0-Rechtsverifikationen erledigt, GP0-Rest offen;
|
||
2026-09-10 Wissensbasis-Anbindung in Abschnitt 2.1, neue Offenpunkte
|
||
8.11 DZ / 8.12 KB-Konflikte / 8.13 Scope-Kandidaten; D4-Protokoll in
|
||
Abschnitt 2)
|
||
- `personalverrechnung/RECHTSQUELLEN-Privat.md` — verbindliche
|
||
Rechtslage General-AT (GP0-Inventar; Statusmarks ✅/⚠/❓)
|
||
- `personalverrechnung/RUNBOOK.md` — KV-Library pflegen (Update-Zyklus)
|
||
- `personalverrechnung/quellen/kv/kv-catalog.json|.csv` — der Crosscheck-Katalog
|
||
- `personalverrechnung/quellen/kv/chambers/chambers.json` — Kammer-Quellen-Registry
|
||
- `personalverrechnung/tools/fetch_kv_portal.py` / `fetch_wko_kv.py` /
|
||
`build_kv_catalog.py` — Fetcher + Merge
|
||
- `personalverrechnung/IMPLEMENTIERUNGSPLAN-Bgld.md` — AP3+ (Freigabe-Gate)
|
||
- `personalverrechnung/RECHTSQUELLEN-Bgld.md` — verbindliche Rechtslage
|
||
- `personalverrechnung/ANGEBOTS-KALKULATION-Bgld-Personalverrechnung.md` —
|
||
AP-Rahmen, Prämissen P1–P10
|
||
- `odoo_19.0+e.20260910/odoo-19.0+e.20260910/` — Odoo-19-Quellen-
|
||
Referenz (gemergter Community+Enterprise-Baum, 1.481 Addons; lokal,
|
||
unversioniert; Aufruf `.venv/bin/python -m odoo`, Addons-Path
|
||
`<baum>/odoo/addons,addons`)
|
||
- `.venv/` — Python-3.14-venv mit editable install (lokal,
|
||
unversioniert); Dev-DB `odoo_dev` (PostgreSQL lokal)
|
||
- `addons/l10n_at_hr_payroll_private/` — General-AT (GP1 KV-Framework
|
||
+ Seed D2; GP2 Entgelt-Engine; GP3 LSt-Anbindung; GP4 SV/DB;
|
||
GP5 Abfertigung Neu; **GP6 FI-Buchung UGB umgesetzt 2026-09-12** —
|
||
`test_kv_katalog` 8 + `test_entgelt_private` 21 + `test_lst_private`
|
||
6 + `test_sv_private` 8 + `test_bv_private` 10 + `test_account_private`
|
||
4 + `test_meldewesen_private` 2 grün auf Wegwerf-DB (**94/94**
|
||
gesamt mit Kern; `odoo_dev` noch auf GP4-Stand, Update nachholen);
|
||
Rechenfall-Fixtures unter `docs/rechenfaelle/` inkl. buchhaltung.md
|
||
+ meldewesen.md;
|
||
GP7 umgesetzt: mBGM/Versichertenmeldung/fallweise auf dem Kern-Framework;
|
||
GP8 Jahreswechsel/UI/Fristen als Nächstes)
|
||
- `addons/l10n_at_hr_payroll/` — Bundes-Kern (SV/TASY + GP3 Lohnsteuer
|
||
+ GP4 SV/DB + **GP7 ELDA/L16/Arbeitsstätte/Belege** 19.0.4.0.0 —
|
||
`models/elda.py`, `lohnzettel_l16.py`, `kind.py`, `meldewesen.py`,
|
||
`monatsreports.py`, `report/belege_reports.xml`;
|
||
`test_elda_l16` 4)
|
||
(DG/Geringfügigkeit/§ 49/Altersstichtage/§ 2a-Staffel/WF-Vektor/
|
||
Beitragsmonat/DAG), `rule_parameters_lst_2026.xml` +
|
||
`rule_parameters_sv_2026.xml`; **74/74 grün**)
|
||
- `addons/l10n_at_gemeinde_payroll/` — GemBG (AP1+AP2) |