mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 08:52:45 +00:00
[IMP] l10n_at_hr_payroll(_private): Meldewesen-Reste (AP17) und Status-Sonderfälle (AP18/AP19)
AP17 — Lohnnachweis L17, Finanz-Mitteilungen § 109a/§ 109b, GfB-Jahreszahlung:
- L17 (DM-ORG E.24, BEST LF, SART A1/1100, Version 28): je
Lohnzahlungszeitraum je DN aus den GP3-Kennzahlen-Flags; Prüfkatalog-
Semantik (KZ 350 = Brutto gesamt, 351/352/354 Teilbeträge) und formale
Prüfungen (350-Formel, 357/347-Caps, aliquotierte 354/HOPA-Caps);
ODL-PDF-Extraktion der Kapitel E.24/E.16/E.26 (txt feldversetzt)
- Finanz-Mitteilungen § 109a (W1, E.16) und § 109b (B1, E.26): Modelle
je Leistungserbringer/Auftragnehmer, Schwellen als hr.rule.parameter
(450/900 — § 109a-VO; 100.000 — § 109b Abs 4 lit a, RIS NOR40263383),
AL31/32/33, LKZ1-7, UID, bis 3 maßgebliche natürliche Personen,
KORR K/S; Unter-Schwellen-Zeilen entfallen mit Protokollhinweis
- mBGM: geringfügig Beschäftigte (BSGR B010/B030) — T01 § 53a-UV-
Pauschale + V01 BMSVG 1,53 %, kein T02 (GfB-SZ beitragsfrei,
§ 49 Abs 3); JAGB-Pakettrennung für die jährliche Abrechnung
(§ 58 Abs 8 ASVG iVm § 6 Abs 2a BMSVG, DM-ORG D.52) mit
2,5 vH-Zuschlag (Z04) in der GfB-Jahresabrechnung (Fälligkeit
15. 1. Folgejahr)
- Fristenkalender: L17- und § 109b-Fristarten (Ende Februar;
§ 109a/§ 109b EStG und § 58 Abs 8 ASVG RIS-verifiziert)
AP18 — Schwerarbeit/NSchG (Beschaffungsgate erledigt, RIS):
- NSchG (RIS 10008502, BGBl 1981/354) Art XI Abs 3 (2 vH Stammnorm,
3,80 % via Sistierung) und Abs 6 (Nachtschwerarbeitsmonat: 6-Tage-
Kriterium, Rückblick-Fenster 12/18, Randmonat); ASchV (20004642)
§ 1/§ 4/§ 5; DM-ORG E.22.2-Erstellvorschriften (Z 1 analog NSchG,
Z 2/4/5 ≥ 15 Tage, Z 3/GfB nicht melden)
- Kern: Schwerarbeitsmeldung (BEST SM, SART 65/66, Länge 800,
Tätigkeitsblöcke 26 × 10) mit Altersfilter- und Erstellvorschrift-
Prüfungen
- Privat: Nachtschwerarbeitsmonat-Zähler (WET ATP_NACHTSCHWER,
Art-XI-Abs-6-Fenster inkl. Randmonat-Proxy) als stored Flag am Lauf
AP19 — Status- und Verhinderungs-Sonderfälle:
- hr.version-Status (Organ ≤/≥ 25 %, lb-vst-03): Organ ≥ 25 % — kein
SV-Verhältnis (SVDN/SVDG 0 via SV-Satz-Override, mBGM-Ausschluss,
LSt läuft weiter); Ferialpraktikanten-Flag (dokumentativ — BMSVG § 6
nennt keinen Ausschluss, Entgelt-/SV-Logik bleibt normal)
- Präsenz-/Ausbildungs-/Zivildienst-Fiktion (§ 7 Abs 1/2 BMSVG):
fiktive BV-Bemessungsgrundlage 435,90 € (KBGG § 3 Abs 1 idF vor
BGBl I 53/2016, lb-vor-04) aliquotiert auf ATP_PRD_TAGE
- Dienstverhinderungs-Sonderfälle bleiben dokumentiert offen
(lb-dvh-01/04, KB-❓); Feiertags-EFZ ist durch das AP4-WET-Modell
abgedeckt
Tests: 21 neue (L17-Positionen/Prüfkatalog, W1/B1-Schwellen, GfB-mBGM/
JAGB/Jahresabrechnung, NSchM-Fenster/Randmonat, SM-Fixsatz, Organ-Sperre,
PRD-Fiktion); Suite 252/252 grün auf frischer -i-DB (85 Kern, 18 GemBG,
213 Privat, 10 Dokumente). Dokumentierte Reste: DZR-36-Fenster,
Randmonat-Proxy und UV-Pauschale-vs-mBGM im Parallellauf (GP8),
fallweise mBGM (G3/G4), 2027er-Schwellen (C7).
This commit is contained in:
@@ -2,6 +2,93 @@
|
||||
|
||||
## Current focus
|
||||
|
||||
**AP18 + AP19 umgesetzt — 252/252 Tests grün** (2026-09-16, uncommittet):
|
||||
|
||||
- **AP18 Schwerarbeit/NSchG:** Beschaffungsgate erledigt — RIS: NSchG
|
||||
(GesNr 10008502, BGBl 1981/354 — ⚠ BGBl 1980/467 falsch), Art XI
|
||||
Abs 3 (2 vH Stammnorm, 3,80 % via Sistierung), **Art XI Abs 6
|
||||
NSchM-Regelkatalog** (6/12/18-Fenster, Randmonat, DZR-36 dokument.
|
||||
Rest); ASchV GesNr 20004642, § 4 NOR40272279 (idF 2025: Versicherungs-
|
||||
monat § 231 Z 1 lit a; KB lb-swa-05 nennt 15 Tage — RIS-§ 4-Fassung
|
||||
verweist auf 231 — beides dokumentiert), § 5 (M ≥ 40 / F ≥ 35, Ende
|
||||
Februar); **E.22.2-Erstellvorschriften** (Z 1 ≥ 6 Nachtarbeitstage
|
||||
analog NSchG; Z 2/4/5 ≥ 15 Tage; Z 3/GfB nicht melden; Z 6 bei
|
||||
Pflegegeld-Stufe 3). BEST = **SM**, SART 65/66, Länge 800, Tätigkeits-
|
||||
blöcke 26 × 10 (TART/TVON/TBIS).
|
||||
- **AP18-Umsetzung:** Kern `schwerarbeitsmeldung.py` (Modell + Fixsatz
|
||||
BEST SM + Erstellvorschrift-Warnungen: Altersfilter, Z 3/Z 6-Hinweise);
|
||||
Zeilen = mandantenseitig erfasste Fakten (kein unlink im Lauf!). Privat
|
||||
`nachtschwerarbeit.py`: WET `ATP_NACHTSCHWER` + Payslip-Compute
|
||||
`_l10n_at_nachtschwerarbeitsmonat` (6/12/18-Fenster + Randmonat-Proxy ⚠
|
||||
Pro-rata; DZR-36 dokument. Rest), `l10n_at_nachtschwerarbeitsmonat`
|
||||
stored am Payslip.
|
||||
- **AP19 Umsetzung:** hr.version-Status-Flag `l10n_at_status` (an/
|
||||
organ_minder/organ_mehr — lb-vst-03: Organ ≥ 25 % kein SV) +
|
||||
`l10n_at_ferialpraktikant` (dokumentativ — BMSVG § 6 nennt keinen
|
||||
Ausschluss, Engine bleibt normal); SV-Hook `payslip_private
|
||||
._l10n_at_sv_satz` (organ_mehr → 0); mBGM organ_mehr → Ausschluss mit
|
||||
Protokoll-Hinweis + leerer mBGM-Datei-Guard (`if datensaetze:`);
|
||||
**Präsenzdienst-Fiktion** § 7 Abs 1/2 BMSVG: Input `ATP_PRD_TAGE` +
|
||||
Parameter `at_bv_fiktiv_kbg` (435,90 € 2026 = KBGG § 3 Abs 1 idF vor
|
||||
BGBl I 53/2016, lb-vor-04) → `_at_bv_fiktiv_prasenzenzdienst()` im
|
||||
`_at_bv_basis_laufen`-Hook (aliquot Tage/Monatstage; >12 Monate
|
||||
Zeitsoldat → Bund — mandantenseitig). DVH-Sonderfälle: dokumentiert
|
||||
offen (lb-dvh-01/04 ❓) — bewusst nicht gebaut. Feiertags-EFZ: AP4-
|
||||
WET-Modell deckt ab.
|
||||
- **⚠ Regression abgefangen:** mein PRD-Insert hatte `_at_bv_basis_laufen`
|
||||
zerschnitten (Teilmonat-Branches hinter der neuen Methode) — BV-Regel
|
||||
NoneType-Crash in 3 bestehenden Tests; repariert (Branches vor die
|
||||
Fiktion-Methode zurück). Lehre: method-in-Middle-Inserts nie —
|
||||
Anhängen am Methodenende.
|
||||
- **Tests:** 9 neue (Fenster 6/12/18, Randmonat-Proxy, SM-Fixsatz/
|
||||
Altersfilter/Blöcke, organ_mehr-SV-Sperre + mBGM-Ausschluss + LSt-
|
||||
Weiterlauf, PRD-Fiktion). Suite **252/252** (85 Kern + 18 GemBG +
|
||||
213 Privat + 10 Dokumente) frischer -i-Lauf. O2M-Zuweisung hängt an
|
||||
(kein Replace) — auch im SM-Test bestätigt.
|
||||
- **Uncommittet:** AP17 + AP18/AP19 — Commit nach Nutzerfreigabe.
|
||||
|
||||
**AP17 Meldewesen-Reste umgesetzt (L17 · § 109a/§ 109b · GfB-Jahreszahlung) — 247/247 Tests grün**
|
||||
(2026-09-16, uncommittet bis Nutzerfreigabe):
|
||||
|
||||
- **Gates erledigt:** ODL-PDF-Extraktion der DM-ORG-Kapitel E.24 (L17 A1),
|
||||
E.16 (W1/§ 109a), E.26 (B1/§ 109b) → /tmp/odl_dmorg (PDF-verbindlich, txt
|
||||
feldversetzt); RIS-Normtexte: § 109a EStG NOR40263382, § 109b EStG
|
||||
NOR40263383 (100.000-€-Schwelle, AL31/32/33 = Abs 2 Z 1–3, Frist Ende
|
||||
Februar elektronisch/Jänner Papier), § 58 Abs 8 ASVG NOR40211781
|
||||
(jährliche GfB-Vereinbarung, Fälligkeit 15. Jänner), § 6 Abs 2a BMSVG
|
||||
(2,5 vH Zuschlag, Wechsel nur Jahresende).
|
||||
- **Kern:** `lohnzettel_l17.py` (Satzstruktur A1, 102 Felder/1100, je LZP
|
||||
je DN; KZ-Mapping aus GP3-Flags — **Prüfkatalog-Semantik: KZ 350 =
|
||||
Brutto GESAMT, 351/352/354 Teilbeträge**; 351 = sonstig ohne Abs-3/6,
|
||||
352 = abs3/abs6, 354 = §-68-ÜStd-Freibetrag, 357 = SVDN laufend, 347 =
|
||||
SVDN_SZ; formale Prüfungen: 350-Formel, 357 ≤ 40 %, 347 ≤ 25 %,
|
||||
354/300-HOPA-Caps aliquotiert); Info-Satz I1 (ARTD „LZ“) wiederverwendet.
|
||||
`mitteilung_109.py` (W1/B1-Modelle + LF-Datei; Schwellen
|
||||
`at_m109_schwellen` 450/900/100.000 als hr.rule.parameter; B1:
|
||||
AL31/32/33, LKZ1–7, UID, 3 NP-Blöcke, Ausnahmen § 99/KSt als Fallauswahl).
|
||||
Fristenkalender: `l17` + `mitteilung_109b` Fristarten (Ende Februar).
|
||||
- **⚠ §-Korrekturen:** L17-KZ 350 = gesamt (Prüfkatalog-Formel 28 ≥
|
||||
30+32+34+…); B738/739 nur ≤ 2017; § 34 AngG = Verjährung (nicht
|
||||
Auflösung — Dokumente-Thread); Plan-Anker „§ 51 Abs 4 Z 2 ASVG“
|
||||
korrigiert auf § 6 Abs 2a BMSVG.
|
||||
- **Privat:** mBGM jetzt mit **GfB (B010/B030)** — T01 = § 53a-UV-Pauschale
|
||||
(6,50 € 2026, VPTA 0) + V01 BMSVG 1,53 %; kein T02/A-Abschläge (§ 49
|
||||
Abs 3). **JAGB-Trennung:** Company-Flag `l10n_at_gfb_jaehrliche_abrechnung`
|
||||
→ eigenes PS-Paket mit JAGB=„J“ je Kalendermonat (D.52), REFP-Suffix
|
||||
„-JAGB“; ohne Flag im normalen Paket. **GfB-Jahresabrechnung:**
|
||||
`_l10n_at_bv_jahresabrechnung_gfb(jahr)` — Summe JAGB-Beiträge + 2,5 %
|
||||
Zuschlag (Z04 „BV-Zuschlag bei jährlicher Zahlung“, D.60) im Protokoll
|
||||
der Dezember-Abrechnung, Fälligkeit 15. 1. Folgejahr. Fallweise (G3/G4)
|
||||
bleibt dokumentierter Rest.
|
||||
- **Tests:** kern +12 (A1-Positionen, KZ-Mapping, Prüfkatalog-Logik,
|
||||
W1/B1-Positionen, Schwellen-Skip, kumulative Grenze, Fristen);
|
||||
privat 5 (GfB-mBGM B030/T01-Pauschale, JAGB-Trennung,
|
||||
Jahresabrechnung-Zuschlag). Suite **247/247** (85 Kern + 18 GemBG +
|
||||
204 Privat + 10 Dokumente) frischer -i-Lauf.
|
||||
- **OdmBGM-Fund:** O2M-Zuweisung `line_ids = [(0,0,…)]` HÄNGT AN (kein
|
||||
Replace) — im Testschrieb berücksichtigt; `gemeldet`-Feld readonly,
|
||||
Lauf setzt es per Write.
|
||||
|
||||
**Modul l10n_at_payroll_dokumente (Dokumentgenerierung) umgesetzt — 236/236 Tests grün**
|
||||
(2026-09-16, uncommittet bis Nutzerfreigabe; Modul **19.0.1.0.0**):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user