[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:
2026-09-16 10:36:49 +02:00
parent efe76e6b3d
commit 1df5fb19c4
16 changed files with 1048 additions and 0 deletions
@@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_dokument_vorlage_hr_user,l10n.at.payroll.dokument.vorlage hr.user,model_l10n_at_payroll_dokument_vorlage,hr.group_hr_user,1,0,0,0
access_dokument_vorlage_hr_manager,l10n.at.payroll.dokument.vorlage hr.manager,model_l10n_at_payroll_dokument_vorlage,hr.group_hr_manager,1,1,1,1
access_dokument_feld_hr_user,l10n.at.payroll.dokument.feld hr.user,model_l10n_at_payroll_dokument_feld,hr.group_hr_user,1,0,0,0
access_dokument_feld_hr_manager,l10n.at.payroll.dokument.feld hr.manager,model_l10n_at_payroll_dokument_feld,hr.group_hr_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_dokument_vorlage_hr_user l10n.at.payroll.dokument.vorlage hr.user model_l10n_at_payroll_dokument_vorlage hr.group_hr_user 1 0 0 0
3 access_dokument_vorlage_hr_manager l10n.at.payroll.dokument.vorlage hr.manager model_l10n_at_payroll_dokument_vorlage hr.group_hr_manager 1 1 1 1
4 access_dokument_feld_hr_user l10n.at.payroll.dokument.feld hr.user model_l10n_at_payroll_dokument_feld hr.group_hr_user 1 0 0 0
5 access_dokument_feld_hr_manager l10n.at.payroll.dokument.feld hr.manager model_l10n_at_payroll_dokument_feld hr.group_hr_manager 1 1 1 1
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="rule_dokument_vorlage_company" model="ir.rule">
<field name="name">Dokumentvorlage: eigene Company</field>
<field name="model_id" ref="model_l10n_at_payroll_dokument_vorlage"/>
<field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', company_ids)]</field>
</record>
</odoo>