Complete the termination sequence with the settlement-sum path: comparison sums from court or out-of-court settlements, judgment/decision arrears and dismissal-objection payments are split between the statutory-severance and voluntary-severance rules and the settlement remainder. The remainder (VERGLEICH, bemessung neutral, sv_art laufend) reuses the lit-a/b fifth rule: after deducting the § 62 employee-rate contributions, one fifth stays tax-free capped at one fifth of nine times the monthly HBG (12 474 EUR 2026), and the remaining four fifths run with the payment-month tariff without touching the annual sixth. A new rule flag l10n_at_vergleich_bv marks the part paid for periods with a BV-Kasse entitlement: up to the parameterised cap at_lst_67_abs8_vergleich_bv (7 500 EUR 2026; § 67 Abs 8 is § 33a/§ 124b indexed) it is taxed at the flat 6 % rate with the contributions allocated pro rata (LStR Rz 1102b), while the excess falls back into the fifth rule. Both settlement rules stay payroll-levy liable (§ 41 Abs 4 lit b FLAG exempts only § 67 Abs 3 and 6) and SV-liable in the payment month, with per-Beitragsmonat roll-forward and insurance-period extension remaining documented manual options (lb-end-22, E-MVB 011-02-00-001). Identifiable severance components keep running through the existing statutory and voluntary severance machinery; a settlement expressly agreed as statutory severance is taxed in full under § 67 Abs 3 (VwGH 2013/13/0001 = ARD 6490/20/2016), and pension buy-outs (lit e) and social-plan payments (lit f) are out of scope. The wizard section requires confirmation of the settlement's itemisation and contested-claim status plus the BV entitlement, enforces the BV cap with the excess captured as remainder, and previews the free fifth, tariff basis and 6 % tax; the settlement memo lands on the payslip for the separate Lohnzettel workflow (LStR Rz 911a). The account matrix posts both settlement rules to the provisional 6200/6000 (workers 6000) and the new tax rule to 3540. Verified against the original statute text in .ris/ (EStG § 67 Abs 8 lit a) and the knowledge-base sources lb-end-21/22; KZ positioning of the lit-a tariff parts and their § 291d pot allocation remain documented verification points against LStR Rz 1087 ff. Version 19.0.15.0.0 (private)
120 KiB
Agent Memory — odoo-at-payroll
Current focus
AP15-C Vergleichssummen (§ 67 Abs 8 lit a) umgesetzt — Kern 73/73, Privat 188/188 Tests grün (2026-09-15, uncommittet bis Nutzerfreigabe; Privat 19.0.15.0.0):
- Recht (RIS-Wortlaut § 67 Abs 8 lit a verifiziert, lb-end-21/22):
Vergleichssummen (gerichtl./außergerichtl. Vergleiche, Nachzahlungen aus
Urteilen/Bescheiden, Kündigungsanfechtung) — soweit nicht Abs 3/6: Abs-10-
Tarif im Zuflussmonat; nach §-62-Z-3/4/5-Abzug ist 1/5 steuerfrei (Deckel
1/5 × 9 × mHBG = 12.474), Abs 2 (Sechstel) nicht anzuwenden;
BV-Anwartschafts-Teil bis 7.500 € mit 6 % (parametrisiert
at_lst_67_abs8_vergleich_bv— § 67 Abs 8 ist §-33a/§-124b-indexiert), Überhang fällt zurück ins Fünftel; LNK-PFLICHTIG (§ 41 Abs 4 lit b FLAG nennt nur Abs 3/6); SV-PFLICHTIG (Zuflussmonat; Aufrollung je Beitragsmonat via Kern-l10n_at_beitragsmonatbzw. PV-Verlängerung, lb-end-22/E-MVB 011-02-00-001); Widmungen nur bei Strittigkeit anerkannt (VwGH); ausdrücklich vereinbarte gesetzl. Abfertigung → gesamt Abs 3 (VwGH 2013/13/0001 = ARD 6490/20/2016); lit e (Pensionsabfindung)/lit f (Sozialplan) gehören NICHT zu lit a. Deckel-Reihenfolge: §-62-Abzug ERST, dann Fünftel — das 70.000-€-Quellenbeispiel meint die Bemessungsgrundlage, der Cap greift brutto-abhängig erst ab ~76.200 €. - Privat (19.0.15.0.0): Regeln
VERGLEICH(seq 33, neutral/lauend,l10n_at_s67_fuenftel) +VERGLEICH_BV(seq 34, neutral/lauend, neues Regel-Flagl10n_at_vergleich_bv, KEINs67_abs— sonst fälschlich LNK-frei),LST_VERGLEICH_BV(seq 74, 6 %); Eingaben ATP_VERGLEICH/ATP_VERGLEICH_BV; Helfer in endabrechnung.py:_at_vergleich_bv_total/_beguenstigt/_ueberhang/_lst_6,_at_fuenftel_frei_betr;_at_fuenftel_totalzieht den BV-Überhang ins Fünftel,_at_lnk_basis+ BV-begünstigter Teil (Pin-Kommentar aktualisiert); Konten 6200/6000 bzw. 3540 (vorläufig wie Abf); Wizard-Abschnitt (Bestätigungspflichten Aufgliederung/Strittigkeit + BV-Anwartschaft, BV ≤ Deckel erzwungen, Vorschau Fünftel/Tarif/BV-LSt); Payslip-Feldl10n_at_vergleich_nachweis+ Tab. - Tests: endabrechnung 21 (RF-VGL-1..4: Rest-Fünftel 9.000 €, BV 9.000 €
mit 7.500/1.500-Split und anteiliger Beitragszuordnung Rz 1102b, Deckel
100.000 € brutto, Wizard-E2E + 3 UserError-Fälle); Suite 205/205 (73
Kern + 188 Privat) auf Wegwerf-DB
ap15c_test5. - Verifikationsreste (dokumentiert, nicht geblockt): KZ-Positionierung
der lit-a-Tarif-Teile (laufend über LST_LFD) + §-291d-Zuordnung von
VERGLEICH/VERGLEICH_BV(wie ABGANG ohne Pfändungs-Flag) gegen LStR Rz 1087 ff/§ 291d EO; Fünftel-Deckel-Pooling über ALLE Fünftel-Regeln (ABGANG + VERGLEICH im selben Lauf minimal konservativ); SV-Aufrollung aktiver Ansprüche nicht automatisiert; gesonderter Lohnzettel bei Zahlung nach dem Beendigungsmonat (LStR Rz 911a, GP7-Rest). - Umgebung (wichtig für künftige Läufe): nach dem Repo-Umzug war
.venvtot (editable-Pfade ohneodoo-projects-Komponente, Shebangs auf alten python3.14-Pfad); repariert via sed über__editable___odoo_19_0_e_20260910_finder.py,direct_url.jsonund.venv/bin/*-Skripte. Aufruf.venv/bin/python -m odoo— im Baum fehltodoo/cli/main.py,-m odoogeht über__main__.py→cli.command; setuptools fehlt im venv (pip install -e nicht möglich). - Offen: AP14-B (Prämien-Beendigung Feinschliff), AP16 Karenz-Reste (Gate 8.13). Nicht committen ohne Nutzeranforderung.
AP15-B freiwillige Abfertigung (§ 67 Abs 6) umgesetzt — Kern 55/55, Privat 146/146 Tests grün (2026-09-15, uncommittet bis Nutzerfreigabe; Privat 19.0.14.0.0, Kern 19.0.10.0.0):
- Recht (RIS-Wortlaut § 67 Abs 6 verifiziert, lb-end-12/13/15):
Z 1 Viertelregelung (¼ der letzten-12-Monats-Bezüge, Deckel 9×HBG)
- Z 2 Zwölftelregelung (Staffel 3→2/12 … 25→12/12 = §-23-Grenzen, Deckel n × 3 × HBG), Z 3 Kürzung um erhaltene Abfertigungen (Abs 3 ODER 6) und bestehenden gesetzlichen Anspruch am aktuellen Ende, Z 5 Sechstel-Exklusion nur für die 6 %-Beträge, Z 6 Überhang „wie ein laufender Bezug“ zum Zuflussmonat-Tarif, Z 7 (BV-Ausschluss) seit BGBl I 118/2015 AUFGEHOBEN. SV-frei § 49 Abs 3 Z 7, LNK-frei (§ 41 Abs 4 lit b FLAG, § 122 Abs 8 WKG, § 5 Abs 2 lit b KommStG) UNABHÄNGIG von 6 % vs Tarif, BV-frei (§ 6 Abs 5 BMSVG).
- Kern (19.0.10.0.0): neuer Regel-Flag
l10n_at_s67_abs6_ueberhang(lohnsteuer.py);_l10n_at_brutto_laufen_ytdzieht Flag-Regeln aus der Sechstel-Basis ab (Helfer_l10n_at_abs6_ueberhang_total, auch je YTD-Lauf) — der Überhang läuft über bemessung='laufend' in die laufende LSt-Bemessung und KZ 210, aber NICHT ins Sechstel;LST_ABF_FREIin KZ-260-Salden. Test test_20 + L16-Test erweitert. - Privat: Regeln
ABF_FREI(seq 31, neutral/keine/abs6/ pfandung_beendigung — begünstigter Teil),ABF_FREI_TARIF(seq 32, laufend/keine/abs6 + Überhang-Flag — Tarifrest),LST_ABF_FREI(seq 73, 6 %); Eingabe ATP_ABF_FREI; Helfer in endabrechnung.py:_at_bezuege_12_monate(validierte Vormonats-Läufe + eigene Zeilen, ohne Überhang-/§-26-Z-4-Regeln — neues privates Regel-Flagl10n_at_s26_z4_reisean REISE_STEUERPFLICHTIG),_at_abf_frei_split(Z 1/Z 2/Deckel aus at_sv_hbg_monatlich/Z-3-Kürzung),_at_abf_frei_lst_6. Wizard-Abschnitt mit auto 12-Monats-Basis + gesetzlicher Anspruch aus ABF_ALT, Vorschau Z 1/Z 2/Kürzung/ begünstigt/Überhang/6 %/Netto, Bestätigungspflicht (Anspruchs- umwandlungs-Hinweis lb-end-15). Pfändungs-Beendigungstopf zieht LST_ABF + LST_ABF_FREI ab (test_09c). Konten: rule_abf_frei(_tarif) 6200/6000 vorläufig, rule_lst_abf_frei 3540. RF-ABF-4…6 + offene Punkte in docs/rechenfaelle/endabrechnung.md. - Tests: endabrechnung 17 (Z 1/Z 2, Überhang ohne Sechstel mit
SV/LNK/BV/LST_LFD-Asserts, Kürzung+Deckel, Wizard-E2E), pfändung 13,
Kern-Suite 55/55, Privat-Suite 146/146 (ap13a_test); ein Testfehler
(zweite
_input-Eingabezeile statt Update) korrigiert. - Verifikationsreste (dokumentiert, nicht geblockt): KZ-Positionierung der Abs-6-Bezüge und §-291d-Zuordnung des Überhangs gegen LStR Rz 1087 ff; geminderte Bezüge in der 12-Monats-Basis (LStR vs VwGH) bewusst ohne Automatik.
- Offen: AP15-C (§ 67 Abs 8 lit a Vergleichssummen). Nicht committen ohne Nutzeranforderung.
AP15-A gesetzliche Abfertigung Alt umgesetzt — Privat 141/141, Kern 54/54 Tests grün
(2026-09-15, Commit 9add58f nach Nutzerfreigabe):
- Recht am Originalwortlaut verifiziert (.ris/): § 23a Abs 3 AngG
verlangt für den Elternaustritt ein ununterbrochen fünfjähriges
DV (Hälfte des §-23-Betrags, Deckel 3 Monatsentgelte) — Vorschlag
bei < 60 Monaten korrigiert (0-Faktor + Wizard-UserError). § 67
Abs 3 EStG (RIS-Wortlaut): Tarif-LSt auf den laufenden
Arbeitslohn × Mehrfaches, zwingend günstiger als 6 %. Neu:
getrenntes, bestätigtes Feld
abf_alt_monatslohnsteuer/l10n_at_abf_alt_monatslohnsteuer(Tarif-LSt des laufenden Monats nach persönlichen Verhältnissen) — Bruttolohn wird NICHT über die §-62-Engine tarifiert. Rechenfall lb-end-01 exakt: 101,96 × 10,5 = 1.070,58 (< 1.134 = 6 %). - Privat:
models/endabrechnung.pyABF_ALT-Helfer (Staffel, Mehrfach-Vorschlag eltern/tod, 6 %, Vervielfachung, günstige LSt), RegelABF_ALT(neutral/keine/abs3/pfandung_beendigung),LST_ABFseq 72,PFAENDUNG_ENDseq 77 (Beendigungstopf − LST_ABF, Gesamttopf + beendigung), LNK-Fix in beiden Kopien (_at_lnk_basiszieht Abs-3/6-Regeln nur mit bemessung laufend/sonstig ab), Wizard-Felder + Validierungen (BMSVG-Neu- Sperre außer eingefroren, AGRD 02/06-Regeln, Eltern < 5 J), Payslip-Tab, Kontenrule_abf_alt6200/6000 (vorläufig),rule_lst_abf→ 3540..get()-Zugriffe aufresult_rulesinmodels/pfaendung.pydurch Membership-Prüfung ersetzt. - Kern: LST_ABF in KZ-260-Salden (Lohnsteuer), außerhalb
KZ 210/220 (test_01b). Kern-Hilfer
_l10n_at_monatslohnsteuerdes Subagenten wieder ENTFERNT (ungenutzt, semantisch irreführend) samt test_02b. - Tests: endabrechnung 13 (inkl. Arbeitnehmerkündigung-
UserError, Eltern < 5 J, Wizard-E2E, Pfändungsbasis), pfändung
12 (test_09b Beendigungstopf), Privat-Suite 141/141 (
ap13a_test), Kern-Suite 54/54 (aufap13a_testmit Privatmodul — Achtung: L16-Tests referenzierenl10n_at_hr_payroll_private.structure_at_privat, Kern-Rein-DB scheitert an setUp, ist Bestandsverhalten). Python/XML/git diff --checkgrün. - Offen: AP15-B (freiwillige Abfertigung § 67 Abs 6, 6 %-Bänder
- rollierende 12-Monats-Basis), AP15-C (§ 67 Abs 8 lit a
Vergleichssummen). Wizard-Transient NOT-NULL-Warnung für
departure_reason_idist kosmetisch (Alt-Zeilen). Nicht committen ohne Nutzeranforderung.
- rollierende 12-Monats-Basis), AP15-C (§ 67 Abs 8 lit a
Vergleichssummen). Wizard-Transient NOT-NULL-Warnung für
AP14-A Endabrechnungs-Zyklus umgesetzt — 133 Tests grün
(2026-09-14, Commit ee94f46 nach Nutzerfreigabe):
- Rechtskorrektur gegen Originalwortlaut (.ris/, RIS-Gate erledigt): § 67 Abs 6 (freiwillige Abfertigung/Abfindung) = 6 %-Bänder (Z 1 ¼ der letzten-12-Monate-Bezüge, Deckel 9×HBG; Z 2 Dienstzeit- bänder), NICHT Fünftel → nach AP15 verschoben. Fünftelregelung gilt § 67 Abs 8 lit b (Kündigungs-/Abgangsentschädigung) — diese sind SV-PFLICHTIG (Umlegung auf Kündigungsfrist, § 11 Abs 2 ASVG) und LNK-PFLICHTIG (FLAG § 41 Abs 4 lit b nennt nur Abs 3 und 6). § 11 Abs 2 ASVG verifiziert: PV-Verlängerung für UEL-Bezug UND Kündigungsentschädigung, bei beiden ZUERST Kündigungsentschädigung, dann UEL (sequentielle Fenster); 6-WT/5-AT-Tage-Umrechnung ist Verwaltungspraxis (lb-url-15), nicht Gesetzeswortlaut. § 67 Abs 8 lit d (UEL-Zweikomponenten) wortwörtlich bestätigt. § 19e Abs 2 AZG (+50 % auf NAZ-Guthaben) verifiziert.
- Umsetzung (Privat 19.0.12.0.0):
models/endabrechnung.pymit Regel-Flagsl10n_at_sv_verlaengerung(urlaubsersatz/abgang) undl10n_at_s67_fuenftel; UEL-Helfer (Divisor 26/22, SZ-Tageswert 2×SZ-Basis/12); Upstream-Replicas mit Pin-Kommentar für_at_lnk_basis(Abgang VOR der Freibetragsstaffel) und_l10n_at_sv_basis_laufen_monate(Verlängerungsanteile mit Tageswert-Deckel HBG×Tage/30, Standardanteile volle Monats-HBG);_l10n_at_bemessung_laufen+= Fünftel-Tarifteil (4/5, Deckel 12.474 = 9×HBG/5) ohne Sechstel-Effekt. - Regeln: URL_ERSATZ_LFD (laufend, verlaengerung=urlaubsersatz), URL_ERSATZ_SZ (sonstig), ABGANG (neutral, sv_art=laufend, verlaengerung=abgang, fuenftel), ZEIT_GUTHABEN (laufend ×1,5, KEIN §-68), ZEIT_SCHULDEN (negativ), END_ABRECHNUNG_VORSCHUSS (neutral/keine — Netto-Abzug § 293 Abs 3 EO). Eingaben ATP_UEL_TAGE/ABGANG/ABGANG_FFRIST_TAGE/ZEIT_GUTHABEN/ZEIT_SCHULDEN/ ABRECHNUNG_VORSCHUSS; Parameter at_endabrechnung (Divisoren).
- Wizard
l10n.at.payroll.endabrechnung.wizard(ACL, Views, Menü seq 42): sammelt UEL-Tage/Abgang/Frist/Zeit/Vorschuss, Vorschau über flüchtigen new()-Payslip, Button legt Endabrechnungs-Lauf im Austrittsmonat mit vorbefüllten Eingaben an. Achtung: hr.version- Strukturfeld heißtstructure_id(nicht struct_id). - Fund beim Testlauf: Eingabetypen-Datei fehlte zunächst in der Manifest-Datenliste → NOT-NULL input_type_id; zwei Testassertionen mussten SV-DN-Differenzen bzw. den KVGEO-Standardanteil im März berücksichtigen.
- Tests test_endabrechnung_private.py (6): UEL-Zweikomponenten (1.320/220 €, Sechstel +5.280), SV-Tage-Schema (23→31, 12→14, 6→21) + Monatsverteilung, Abgang-Fünftel (Sechstel unverändert, LNK +9.000, Umlegung 16/26 Tage), Vorschuss-Netto (Abgaben neutral), Zeitguthaben ±, Wizard E2E. Suite 133/133 in ap13a_test.
- Offen AP14-B/AP15: Vergleich § 67 Abs 8 lit a + freiwillige Abfertigung § 67 Abs 6 (beides mit Abf-Alt-Günstiger-Maschine, rollierende 12-Monats-Basis), Prämien-Beendigungs-Rollung, Meldewesen-Schnittstellen („Ende des Entgeltanspruchs“ in mBGM, gesonderter Lohnzettel LStR Rz 911a).
AP13-B Pendlerförderung umgesetzt — 127 Tests grün
(2026-09-14, Commit 9ff977e nach Nutzerfreigabe):
- Neu
models/pendler.py: Modelll10n.at.payroll.pendler.erklaerung(effektiv datiert, L-34-/Pendlerrechner-Nachweis als Attachment, pauschale_art klein/gross, fahrten_stufe drittel/zwei_drittel/voll, arbeitgeber_kfz, ticket_art keines/werkverkehr/oeffi, ticket_kosten_monatlich, bezugsumwandlung). Company-Related OHNE store=True (Muster pfaendung — store+required bricht den Insert mit NotNullViolation), ACL + Company-Record-Rule + Views/Menu. - Parameter
at_pendler2026: klein 20,696],[41,1356],[61,2016, gross 2,372],[21,1476],[41,2568],[61,3672, pendlereuro_km_jahr 6.0. Staffel „nächst-höhere Stufe erst bei MEHR als dem unteren km-Wert“ → ganzzahlige Grenzen 20/41/61 bzw. 2/21/41/61. - Engine-Anbindung (Privat-Overrides):
_l10n_at_bemessung_laufen− PP (LZP = Jahreswert × Stufe/360 × Lohnsteuertage, lb-pen-09);_l10n_at_absetzbetraege+ PE als Jahreswert × Stufe (km × 6 € × Stufe) — kumulative Engine verbraucht Absetzbeträge über die Rollung, NICHT pe × 12. PP/PE ohne SV-/LNK- Wirkung (getestet). - §-26-Z5-Regeln: oeffi-Ticketkosten mindern PP (§ 16 Abs 1 Z 6 lit i); PP → 0 ⇒ PE = 0 (Fixkopplung lb-pen-04). Werkverkehr datengetrieben über die L-34-Reststrecke. Bezugsumwandlung sperrt PP/PE NICHT (Ticket = steuerpflichtiger laufender Bezug). Kfz sperrt beide.
- Tests test_pendler_private.py (10): voller Monat 58/150 €, Staffeln,
1/3-Stufe, untermonatig 3,87 € (lb-pen-09-Beispiel), Kfz-Sperre,
Ticket-Reduktion/PE-Entfall, Bezugsumwandlung, effektiv datierte
Auswahl, E2E-LSt-Wirkung. Zwei Testfixes beim ersten echten Lauf:
unit_amountexistiert nicht auf hr.expense (→ quantity), PE-Erwartungswert 40 € (20 km × 6 × 1/3) statt 50 €. - Fund: die AP13-A-Tests waren im AP13-A-Commit NICHT registriert
(tests/__init__.py fehlte) — die „114 Tests grün“ liefen ohne die
Reisekosten-Tests. Jetzt registriert; Suite 127/127 grün. Beim ersten
echten Reisekosten-Testlauf:
hr.expensehat keinunit_amount-Feld (Odoo 19: quantity/price_unit/total_amount) — Test-Helfer korrigiert. - Doku docs/rechenfaelle/pendler.md (RF-PEN-1…5 + offene Punkte: erhöhter VAB 853 €/Zuschlag 804 € als Quer-LSt-Rest, L-34-1-Monats-Meldeprozess).
- Version 19.0.11.0.0.
AP13-A Reisekosten Inland committed — 127-er Suite grün
(2026-09-14, Commit 3f307a0):
- Privatmodul 19.0.10.0.0 verwendet das Odoo-19-Standardmodul
hr_payroll_expense: genehmigte, eigenfinanzierte Spesen werden überEXPENSESmit dem Payslip verbunden und gegen das Verbindlichkeitskonto abgestimmt.rule_expensesbucht auf 3850; die AT-Buchungsmatrix ergänzt diese Zuordnung. - Neu
models/reisekosten.py, Parameterat_reise_inland/at_km_geld, RegelnEXPENSES/REISE_STEUERPFLICHTIG/REISE_NETTOAUSGLEICH, Spesen-View und Rechenfälledocs/rechenfaelle/reisekosten.md. Abgedeckt: dokumentiertes Inland-Taggeld, Nächtigung (belegt oder Pauschale), Kilometergeld, ÖV-Dienstreise und Familienheimfahrten. Kilometergrenzen: 30.000 km über Dienst-/Heimfahrten sowie 12.600 € bei niedrigem Satz; Familienheimfahrt: eine je Woche und keine Kumulation mit steuerfreiem Taggeld. - Der vollständige Spesenbetrag wird genau einmal über
EXPENSESersetzt. Nur der §-26-Überhang wird als laufender Bezug mit LSt/SV/LNK behandelt; die neutrale Nettoausgleichsregel verhindert eine Doppelersetzung. - Tests
test_reisekosten_private.py: Taggeld-Cap, Kilometergrenze, abgabenpflichtiger Überhang/Nettoausgleich. Vollständiger Odoo-Lauf inap13a_test: 114 Tests, 0 Fehler; Python/XML-Checks grün. - Ausdrücklich noch offen in AP13-B: Pendlerpauschale, Pendlereuro und Jobticket. Nicht im AP13-A-Scope: Auslandssätze, §3 Abs1 Z16b-KV-Sätze und die detaillierte Einsatzortdauer-Verfolgung.
- Vorheriger Dokumentations-/Ignore-Commit:
91ac9e5. AP13-A ist derzeit noch uncommittet.
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): neueshr.salary.rule.l10n_at_sv_art(folgtDefault = rückwärtskompatibel,laufend/sonstig/keine) trennt die SV- von der LSt-Zuordnung;_l10n_at_sv_art/_l10n_at_sv_bruttound 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 OdooDefaultDictPayrollnur nachcode in result_ruleslesen —.get()materialisiert eine leere künftige Regel und brach die LSt- Engine mitKeyError('total'). Tests test_17/18 in test_lohnsteuer. - Privat
l10n_at_hr_payroll_private(19.0.9.7.0): neuesmodels/sachbezuege_private.py— Model Bhr.version-Stammdaten- Mitarbeiter-Relateds für Wagen, Wohnung, Parkplatz, Handyprofil;
Werte
at_sb_wagen/_co2/_wohnung/_parkplatz; RegelnSB_PARKPLATZ/_WOHNUNG/_WAGEN/_GEBRAUCHT/_BONUSMEILEN/_HANDY, EingabenATP_SB_HANDY/_GEBRAUCHT/_BONUSMEILEN, Viewviews/sachbezuege_views.xml; E2E tests test_sachbezuege2_private.py.
- Mitarbeiter-Relateds für Wagen, Wohnung, Parkplatz, Handyprofil;
Werte
- 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.ruleFlagl10n_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), Parameterat_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): EingabenATP_SB_MAHLZEIT/_BETRIEBSVERANSTALTUNG/_SACHZUWENDUNG/_RABATT/_HOMEOFFICE(Mahlzeit/HO is_quantity), RegelnSB_*(seq 41–44/48, setzen SV- UND LSt-Flag), Parameterat_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 = tagesetzen (erste Versionresult = 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.xmlsteht 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: Flagsl10n_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), Parameterat_eo_azr(2026: 1.308,39) +at_eo_kostenersatz, DSE-Report (qweb-pdf), Views/Menu/Security (payroll-Groups + Company-Rule), Rechenfälledocs/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_rulesenthä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) + finalesroundin_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); Vertragsfeldl10n_at_vordienstzeit_monate+ Computel10n_at_vwgj_monate/l10n_at_vwgj_stufe_vorschlag/l10n_at_naechste_vorrueckung(§ 17 Abs 5) + Buttonaction_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) + Computebda_vorschlag(= Beginn − Monate) + Buttonaction_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_devauf 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älledocs/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_private19.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). Teststest_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älledocs/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.shvia ssh-Aliasframework(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.dbgemerged (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-pdferstellt und in den Agent-Workflow integriert (2026-09-12): Neues Skill.agents/skills/opendataloader-pdf/(SKILL.md + vendoredscripts/verify-json.py,scripts/hybrid-health.shaus dem Upstream-Repo, Apache-2.0) für PDF-Extraktion mit OpenDataLoader PDF;AGENTS.mdSkill-Selection ergänzt,wissensbasis/SKILL.mdcross-ref (ODL für schwierige PDFs + Spot-checks, Batch-Intake bleibt beibuild_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-stdoutnur mit-qsauber; 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_payroll19.0.3.1.0 — Parameterat_sv_bv_dg(1,53 %, ab 2003-01-01) inrule_parameters_sv_2026.xml.l10n_at_hr_payroll_private19.0.5.0.0: RegelBVG(salary_rules_bvg_private.xml, ATP_DG seq 95, 1-Zeilen-Bindung) aufmodels/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+ AbstractModelbv_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. Teststest_bv_private(10: RF-BV1..10) + Rechenfälledocs/rechenfaelle/abfertigung.md— 84/84 grün auf Wegwerf- DBgp5_test(frischer-i-Lauf); README/CHANGELOG/PLAN-10/ MEMORY nachgezogen. D4-Fund: hr.version.write setzt bei Einzelversiondate_versionautomatisch 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_payroll19.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 reichenresult_rules(localdict) an die Kern-Computes — compute_sheet legt Zeilen erst NACH der Regelschleife an; Code-Regeln: Menge überresult_qty(quantity-Feld nur fix/%). TASY-Wizard: 2 Latenzfehler behoben (Binary-b64-Dekode in_tasy_root;_get_parameter_from_codeliefert 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älledocs/rechenfaelle/lohnsteuer.md(RF-L1–L8). -
GP2 Entgelt-Engine General-AT umgesetzt (29/29 grün) (2026-09-11):
l10n_at_hr_payroll_private19.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; €-Flagl10n_at_nacht_svauf 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älleaddons/l10n_at_hr_payroll_private/docs/rechenfaelle/(4 Docs, GP2-Testfixtures). Validierung:test_kv_katalog8/8 mit erweitertem Seed (-ustatt-ibei 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.mdgegen 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.mdAb- 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.mdnach Integration gelöscht (Nutzer-Freigabe); Layer-2-Einträge unberührt (Beleg-Prinzip) →--registry/--checkunverä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.mddes Nutzers gegen die bereitgestellten RIS-Normtexte (.additional_docs/ris_normtexte/, tagesaktuell 11.09.2026, ManifestREADME_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.mdAbschnitt 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/--checkunverä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.pyfertig (--source lexis|wiku|allfür--extract/--check,--registryüber beide Quellen;WIKU_PINS-Tabelle für alle 30 Publikationen statt Lexis-Breadcrumbs;WIKU_PAGE_REentfernt Seitenzähler-Footer; wk-ID-Raumwk-<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ägewiku_<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 incurated_slugs_for()(.md-Suffix wurde nicht gestrippt, wiku---checkwä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-Rollefegger), Python-3.14.7-venv.venv/(editable install des gemergten Baums; requirements inkl. py3.14-Pins bauen: psycopg2/gevent/python-ldap aus Source), Dev-DBodoo_dev. GP1:l10n_at_hr_payroll_privateinstallierttest_kv_katalog0 failed, 0 errors (8 Tests). Core/GemBG-Suiten auf Wegwerf-DBodoo_test(danach gedroppt): Install-Abbruch —payroll_structure_bgld.xmlL19 setztregular_payaufhr.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 Checkoutsodoo/(19 GB) +odoo_enterprise/(2,1 GB) gelöscht;.gitignorejetztodoo_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.mdals 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.
- 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;
-
General-AT: KB-Rechtsquellen-Abgleich dokumentiert (2026-09-10): alle 571 KB-
legal_bases(2.767 Strings, ~130 Normwerke) gegenRECHTSQUELLEN-Privat.mdgeprü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.mdaktualisiert (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.mdEintrag. 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.mdneu — 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.mdSkill-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.
- „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
-
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), generiertkb.json+INDEX.md, Toolpersonalverrechnung/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_private19.0.1.0.0 implementiert — Modellekollektivvertrag.py(kv/kv.wert/ kv.gruppe/kv.gruppe.stufe) +hr_version_private.py(Vertragsfelder, Musterhr_version_bgld.py), Wizardkv_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-Suitetest_kv_katalog: Seed-Lookups, Stichtags-Lookup, Versionierung, Eckwerte, Wizard (Sprungwarnung/Aktualisierung/Neuaufnahme), Vertragsfelder. -
GP0-Rechtsverifikationen General-AT (2026-09-09):
RECHTSQUELLEN-Privat.mderstellt: 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) undodoo_enterprise/odoo(Odoo 19.0.0; gemergter Baum: odoo-Paket + 1.452 Addons, Community + Enterprise in einem Addons-Verzeichnis, u. a. Referenz-Lokalisierungenl10n_be_hr_payroll/l10n_ch_hr_payroll;l10n_at_payrollexistiert erwartungsgemäß nicht); beide in.gitignore. Community-Teil:hr.version(hr/models/hr_version.pyL35;wage/structure_type_id/resource_calendar_idversioniert), kalenderbasierte Work-Entry-Erzeugung (hr_work_entry/models/hr_version.pyL420_generate_work_entries- Postprocess-Hooks L500/L506),
hr.work.entry.type+ Entry-States (hr_work_entry.pyL39). Enterprise-Teil:work_time_rate/hours_per_weekauf Version (hr_payroll/models/hr_version.pyL48/L39),work_entry_source(L30; Attendance-Integrationhr_payroll_attendance/models/ hr_payslip.pyL29),hr.payslip.run(hr_payslip_run.pyL23; state L31,date_startL41,date_endL45), EOSB-Musterl10n_ae_hr_payroll(_inherit = "hr.payslip"L10,_l10n_ae_get_eos_daily_salaryL95, je-Version-Feldl10n_ae_eos_daily_salaryL102, Structure-Type-Inherit), Engine-Mechanismen an den Bgld-Plan-Zeilenreferenzen bestätigt (payslip._rule_parameterhr_payslip.pyL951, localdict,hr.salary.rule.account_debit/account_creditL11/L15, Posting-Hooks_action_create_account_moveL54 /_prepare_line_valuesL125 /_prepare_slip_linesL166,journal_idauf Structure viahr_payroll_account/models/hr_payroll_structure.pyL15,hr.payslip.input.typehr_payslip_input_type.pyL9,hr.payroll.structure.type.country_idL46);hr_payroll_account_iso20022vorhanden.l10n_at-Konten (l10n_at/data/template/account.account-at.csv, XML-ID-Musterl10n_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 ohneversion-Key, z. B.l10n_at„3.2.1"); maßgeblich istrelease.pyversion_info(19, 0, 0).
- Postprocess-Hooks L500/L506),
-
General-AT-Plan M0 (2026-09-09):
IMPLEMENTIERUNGSPLAN-Privat.mderstellt 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-READMEl10n_at_hr_payroll_privateund 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-Renamel10n.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 als5b629a5(lokaler main, noch nicht gepusht). - RQ-Privat ↔ Wissensbasis-Rechtsquellen-Abgleich (2026-09-10): alle
571 KB-
legal_bases(2.767 Zitat-Strings, ~130 Normwerke) gegenRECHTSQUELLEN-Privat.mdgeprü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-payrolldort vorerst erhalten, aber keine Payroll-Implementierung mehr in gem360 und kein Merge nach dev/va_module (Guardrails im gem360-Handoff). Die Brückel10n_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_katalog8/8 grün aufodoo_dev; GP2 —test_entgelt_private21/21 grün (29/29 gesamt). Kern/GemBG-Suiten nicht lauffähig: (a)l10n_at_gemeinde_payrollbricht beim Install ab —payroll_structure_bgld.xmlL19 setztregular_payaufhr.payroll.structure(existiert in keinem Snapshot); (b) zwei weitere Latenzfehler in den GemBG-Regeln (erst runtime sichtbar, GP2-D4-Funde): ME/UEZ-Regeln teilenwork_time_rate(Bruchteil 0..1!) durch 100 → Entgelt faktor 100 zu klein; NETTO-Regel nutztcategories.Xstattcategories['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), danachcreatedb <testdb>+-i l10n_at_hr_payroll,l10n_at_gemeinde_payroll --test-tags /l10n_at_hr_payroll,/l10n_at_gemeinde_payrollnachholen (Aufrufmuster README „Tests"). - Bgld.-Auftrag: AP0 offen (Bestandsaufnahme Pilotmandant, ELDA/FinOnl-
Specs, VRV-Buchungsmatrix, offene RIS-Verifikationen) —
IMPLEMENTIERUNGSPLAN-Bgld.mdAbschnitt 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_bsgrmappt Lehrling+arbeiterauf 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 jel10n_at_bundesland(WKO- Verifikation 8.11 offen); (7) Altersstichtage als DATUMS-Felderl10n_at_*_abam 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-Flagl10n_at_s67_abs; lit f nur FLAF/DZ — KommSt ohne Befreiung). -
D4-Runtime-Mechanik Odoo 19 (GP2-Verifikationen 2026-09-11):
hr.work.entryist tageweise (date+duration≤ 24 h, kein datetime-Bereich; create braucht explizitesemployee_id); worked-days zählen draft und validated Entries;hr.version:date_start/date_endcomputed (ausdate_version= max(date_version, contract_date_start); Versionen partitionieren die Zeit überdate_version-Sequenz — create erzwingt heute, Änderung nur viadate_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.namerequired; WET/Regel-Kategorien brauchencountry_idkonsistent 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 inKB-KONFLIKTE.mdAbschnitt 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; ManifestREADME_RIS_DOWNLOAD.md, AuflösungsvorlageB_KONFLIKTE_AUFLOESUNG.md) sind die verbindliche Verifikationsbasis der B-Konfliktfamilien; lokale, unversionierte Ablage (.additional_docs/gitignored, Muster D1). B1–B18-Lösungen inKB-KONFLIKTE.mdAbschnitt 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 viailink-URL mitgueltig=<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);standals Fachbegriff ISOYYYY-MM;topic/tagsASCII- Slugs;topic= beschreibender Cluster-Slug (altersteilzeit,lehrlinge, …), ID-Präfix (atz, …) nur imid. IDslb-<prefix>-<nn>eingefroren (nie renummerieren/wiederverwenden); Frontmatter = Source of Truth,kb.json/INDEX.mdgeneriert 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 Korpuspersonalverrechnung/wissensbasis/(einekb.json),work-Feld unterscheidet die Quellen; eigener ID-Raumwk-<prefix>-<nn>auf der bestehenden Cluster-Map (wk-pfa-01nebenlb-pfa-*); Layer 1.wiku/md/+ eigener Katalog; Layer-2-Dateinamen mit Präfixwiku_<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 vonbuild_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) inl10n_at_hr_payrollvor (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-11odoo_19.0+e.20260910/odoo-19.0+e.20260910/(gemergter Community+Enterprise-Baum 19.0+e.20260910, 1.481 Addons,.gitignore; ersatzlos fürodoo/+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, keinthreads_path-Setting in Zed 1.20. Laptop-Schema hat zusätzlichworktree_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, Backupcp -ader WS-DB, dannsqlite3 ~/.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-Timerzed-threads-sync.timer(10 min) →~/.local/bin/zed-threads-sync.sh(ssh-Aliasframework): Wasserzeichen- Deltas je Richtung (1-h-Sicherheitsfenster), Guard>=(Zeile ersetzt nur bei strikt neueremupdated_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.mdmit 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
- Auflösungsvorlage
-
.lexis360/— lizenzierte PDF-Exporte + Layer-1-Volltextemd/+_catalog.json(lokal, unversioniert) -
personalverrechnung/tools/build_lexis_kb.py— KB-Pipeline (Multi-Source:--source lexis|wiku|allfü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-Beitragstarifsystemoegk/, 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-DBodoo_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_katalog8 +test_entgelt_private21 +test_lst_private6 +test_sv_private8 +test_bv_private10 +test_account_private4 +test_meldewesen_private2 grün auf Wegwerf-DB (94/94 gesamt mit Kern;odoo_devnoch auf GP4-Stand, Update nachholen); Rechenfall-Fixtures unterdocs/rechenfaelle/inkl. buchhaltung.md - meldewesen.md; GP7 umgesetzt: mBGM/Versichertenmeldung/fallweise auf dem Kern-Framework; GP8 Jahreswechsel/UI/Fristen als Nächstes)
- Seed D2; GP2 Entgelt-Engine; GP3 LSt-Anbindung; GP4 SV/DB;
GP5 Abfertigung Neu; GP6 FI-Buchung UGB umgesetzt 2026-09-12 —
-
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_l164) (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)
- GP4 SV/DB + GP7 ELDA/L16/Arbeitsstätte/Belege 19.0.4.0.0 —
-
addons/l10n_at_gemeinde_payroll/— GemBG (AP1+AP2)