mirror of
http://100.103.83.12:3003/fegger/odoo-at-payroll.git
synced 2026-09-17 08:52:45 +00:00
[ADD] l10n_at_payroll_dokumente: generate documents from templates
Document generation module: templates with own text (structure reference and source stand documented per template, no licensed full text in the repo), fill fields resolved from hr data (company, employee, hr.version stand) plus wizard input, preview rendering and PDF/HTML attachment via the generic report layout. - templates: pilot set for the general-AT track formulated as own text after the KB muster structure (lb-bes-09, lb-bnd-55, lb-bnd-52/62, lb-end-35), legal status per template marked as draft - rendering via convert_inline_template_to_qweb + ir.qweb (t-out auto-escapes values) — deliberately not mail.render.mixin inline engine, whose expression whitelist blocks werte[...] placeholders for non-template-editors - wizard resolves hr.version by date_version at the reference date; PDF falls back to HTML attachment without wkhtmltopdf - security: ir.model.access (hr user read / manager write) + company rule; 8 tests, suite 236/236 green on a fresh -i database run
This commit is contained in:
@@ -2,6 +2,77 @@
|
||||
|
||||
## Current focus
|
||||
|
||||
**Modul l10n_at_payroll_dokumente (Dokumentgenerierung) umgesetzt — 236/236 Tests grün**
|
||||
(2026-09-16, uncommittet bis Nutzerfreigabe; Modul **19.0.1.0.0**):
|
||||
|
||||
- **Anforderung (Nutzer):** Muster → Dokumente aus Stammdaten (Dienstvertrag,
|
||||
Kündigung, DSE …). Nutzer-Entscheidungen: neues Modul; DSE = vorhandene
|
||||
Pfändungs-DSE (kein Neubau); **eigene Texte nach Muster-Struktur** (kb_ref/
|
||||
quell_stand je Vorlage dokumentiert, kein Lexis-Volltext im Repo —
|
||||
Lizenzthema damit fürs Produkt gelöst; Muster werden laufend ergänzt,
|
||||
kein Warten nötig: neue Vorlagen = Datenarbeit).
|
||||
- **Bau:** Modell `l10n.at.payroll.dokument.vorlage` (+ feld): eigener Text
|
||||
`inhalt_html` (Html, sanitize=False), Feldliste (auto/manuell, pflicht),
|
||||
kb_ref/quell_stand/rechtsstatus (entwurf|geprueft), company + Rule.
|
||||
Wizard `l10n.at.payroll.dokument.wizard` (+ Zeilen-Transient): Stichtag →
|
||||
hr.version (date_version <= Stichtag!), Auto-Resolver (firma/firma_strasse/
|
||||
firma_plz/firma_ort/mitarbeiter/mitarbeiter_strasse/plz/ort/ead/funktion/
|
||||
geboren), Manuell-Eingaben, Pflicht-UserError, Vorschau, PDF via
|
||||
`ir.actions.report._render_qweb_pdf` **mit HTML-Fallback** ohne
|
||||
wkhtmltopdf (Anhang am hr.employee). Generisches QWeb-Print-Layout
|
||||
(AbstractModel + data['body'] als Markup, wie DSE-Muster).
|
||||
- **⚠️ Rendering-Weg (wichtig, abweichend vom Plan):** NICHT
|
||||
`mail.render.mixin._render_template` (engine inline_template) — deren
|
||||
Ausdrucks-Whitelist (`mail_allowed_qweb_expressions`, nur object.name u.ä.)
|
||||
sperrt `werte['…']`-Ausdrücke für Nicht-Template-Editoren (AccessError).
|
||||
Stattdessen: `rendering_tools.convert_inline_template_to_qweb` →
|
||||
`ir.qweb._render(lxml html.fragment_fromstring(src, create_parent='div'), …)`
|
||||
+ Wrapper-[5:-6]-Strip (Muster `_render_template_qweb`). Autor-Syntax
|
||||
bleibt identisch; **t-out escapt Werte automatisch** (kein manuelles
|
||||
Escaping). t-if-Blöcke für optionale Absätze sind möglich (QWeb direkt).
|
||||
- **Pilotvorlagen (eigen formuliert, Rechtsstatus 'entwurf'):** DV
|
||||
Angestellte (lb-bes-09), Kündigung DG (lb-bnd-55), einvernehmliche
|
||||
Auflösung (lb-bnd-52/62), Vordienstzeitenbestätigung (lb-end-35).
|
||||
§-Verifikation: § 27 AngG (wichtiger Grund) RIS ✅; **§ 34 AngG =
|
||||
Verjährung** (nicht Auflösung!) — Auflösungstexte zitieren bewusst keine §§.
|
||||
- **Tests 8** (Auto-Werte, Platzhalter-Ersetzung, Pflicht-UserError,
|
||||
Stichtags-Versionen, Anhang PDF/HTML, generisches Layout via
|
||||
`_render_qweb_html` ohne wkhtmltopdf, ACL hr.group_hr_user vs. base,
|
||||
Pilotvorlagen E2E). Suite **236/236** (73 Kern + 18 GemBG + 199 Privat
|
||||
+ 10 Dokumente) frischer -i-Lauf.
|
||||
- Offen: DSE-Pfändung-Link ins Dokumente-Menü (kosmetisch), mehr Vorlagen
|
||||
nach Nutzermustererweiterung, Produktivsetzung erst nach rechtlicher
|
||||
Prüfung (rechtsstatus je Vorlage).
|
||||
|
||||
**Erneuter Abgleich Modul ↔ Wissensbasis (2026-09-16, Read-only, Grep-Verifikation am Code):**
|
||||
Basis PLAN-Restluecken-AP11 (Abgleich 2026-09-12, 601 Einträge) + Zwischenstand AP8/AP11–AP16.
|
||||
Befund:
|
||||
- **Geplante Reste unverändert offen (0 Code-Treffer je Thema):** AP17 (L17, § 109a/
|
||||
§ 109b-Meldung, mBGM Geringfügigen-Jahreszahlung 2,5 %), AP18 (NSchG-Monatszähler,
|
||||
Schwerarbeitsmeldung — ASchV/NSchG-Beschaffungsgate), AP19 (GF/Vorstand-Flag,
|
||||
Ferialpraktikanten, DVH-Sonderfälle, Präsenzdienst-BV-Fiktion), AP20+-Optionen
|
||||
(ATZ, Kurzarbeit, Betriebspension/Beteiligung, Entsendung), Quer-LSt: FB+/ANV-
|
||||
Automatik, Prämien-Anspruchsprinzip (A3-blockiert), 2027-Werte.
|
||||
- **Zwischenzeitlich ✅ (Code-verifiziert):** All-in § 2g AVRAG (GP2-Deckungsrechnung,
|
||||
payslip_private `_at_allin_deckung`), Fallweise-Felder + mBGM G3/G4 tagesgenau,
|
||||
AVAB/AVB-Selection, Nachzahlungspfade (SV/LSt/Endabrechnung), Tod des DN =
|
||||
Abgangsursache 13, §§ 23f/§ 47-Übertritte in abfertigung_private.
|
||||
- **1 NEUER Restpunkt aus Batch 10:** **Ausbildungskostenrückersatz** (lb-end-27/28,
|
||||
Checkliste + Muster) — 0 Code-Treffer, auch nicht im AP11-Plan erfasst →
|
||||
als Zusatzpunkt in AP14/Endabrechnung (Scope-Gate Pilotmandant) aufnehmen.
|
||||
- Batch 10 sonst: keine neuen Cluster, keine neuen Berechnungslogiken (Muster/
|
||||
Checklisten/Übersichten); lb-end-30/31 (freiwillige Abf./Voll-Übertritt) und
|
||||
lb-end-29 (Zeitschulden) abgedeckt; lb-grz-09..11/lb-swa-06 stützen AP18/AP20.
|
||||
- KB-interne offene Punkte unverändert: A3 „Formel 7“, A4 All-In-Oberwert,
|
||||
A7-2026-GFG, C7-2027-Werte, B3 Pensionisten (VwGH), ASchV/NSchG-Beschaffung.
|
||||
- **Nachgetragen 2026-09-16 (Nutzer):** Ausbildungskostenrückersatz in
|
||||
`PLAN-Restluecken-AP11.md` (AP14-Umsetzung/Rechtsanker + Lücken-Liste 2.4).
|
||||
- **Neue Anfrage (2026-09-16, ERLEDIGT — siehe Modul-Block oben):**
|
||||
`.lexis360/muster/` für Dokumente in Odoo nutzen → Modul
|
||||
`l10n_at_payroll_dokumente` umgesetzt; Nutzer entschieden: eigene Texte
|
||||
nach Muster-Struktur (kein Lexis-Volltext im Repo), Lizenz-Redistribution
|
||||
damit fürs Produkt gelöst; Sammlung wird laufend ergänzt (kein Warten).
|
||||
|
||||
**Wissensbasis Batch 10 (3 neue Lexis-Subordner) ABGESCHLOSSEN — 64/64 kuratiert, `--registry` + `--check` grün**
|
||||
(2026-09-16, Nutzerfreigabe "bitte zur wissensbasis hinzufuegen"):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user