[IMP] l10n_at_hr_payroll_private: Wr. DAG, Buchungsbeleg, VWGJ-Einstufung, EFZG-Teilentgelt mit fiktiver BV (AP2d+AP3+AP9+AP4)

AP3 — Wiener Dienstgeberabgabe (U-Bahn-Steuer, RIS LrW GesNr
20000133 verifiziert): Regel WIEN_DAG (Kopfpauschale 2 Euro je DN
und angefangene Woche, Wochenlogik Montag-im-Monat, Befreiungen
Lehrling/55+/<=10 WStd/Karenz-Woche), Company-Flag-Verwertung,
Parameter at_wien_dag_satz, FI 6663/3560 (Referenz-Rest)

AP2d — Buchungsbeleg-Report am Lohnlauf (Konto/Belegtext/Soll/Haben
der FI-Buchung, balancierte Summen; test_account_private-Erweiterung)

AP9 — Vordienstzeiten -> Einstufung: Stufen-Schwelle vwgj_ab an
l10n.at.payroll.kv.gruppe.stufe (aus Labels 'nach N VWGJ'; -1 =
nicht gepflegt, ORM liest Integer-NULL als 0), CSV-Seed,
_get_stufe_fuer_vwgj/_get_naechste_vwgj, Vertragsfeld
l10n_at_vordienstzeit_monate + VWGJ-Vorschlag + Vorrueckungstermin
(S 17 Abs 5 Rahmen-KV, Erster des Erreichungsmonats) + Uebernahme-
Button (manueller Verwaltungsakt)

AP4 — EFZG/Teilentgelt (AngG S 8/EFZG S 2 verifiziert, Gleichlauf
6/8/10/12+4 Wochen; lb-krs-07/08): EFZ-Phasenmaschine models/efzg.py
(Kalendertage-Kontingente je Arbeitsjahr, Krank-/AU-Topf getrennt,
AU-Urlaubsart ATP_AU), Regeln TEIL_ENTGELT_HALB/-50 % und
KRANKENTGELT_PHASE/-100 % je Arbeitstag (Tagesatz aus unreduzierter
Basis), fiktive BV-Grundlage S 7 Abs 3 BMSVG im _at_bv_basis_laufen-
Hook (50 % Vormonatsentgelt x Bezugs-KT/30), Parameter at_efz_stufen;
Krankengeldumlage S 62 ASVG = Falsch-Praemise (kein Baustein);
Rechenfaelle docs/rechenfaelle/efzg.md
This commit is contained in:
2026-09-12 23:17:57 +02:00
parent 34e6750fe3
commit 9b4221fcef
22 changed files with 1596 additions and 144 deletions
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- ============================================================ -->
<!-- AP2d: Buchungsbeleg der Lohnbuchhaltung am Lohnlauf. -->
<!-- ============================================================ -->
<record id="action_report_buchungsbeleg" model="ir.actions.report">
<field name="name">Buchungsbeleg (Lohnbuchhaltung)</field>
<field name="model">hr.payslip.run</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">l10n_at_hr_payroll_private.report_buchungsbeleg</field>
<field name="report_file">l10n_at_hr_payroll_private.report_buchungsbeleg</field>
<field name="paperformat_id" ref="hr_payroll.paperformat_euro_light"/>
<field name="binding_model_id" ref="hr_payroll.model_hr_payslip_run"/>
<field name="binding_type">report</field>
</record>
<template id="report_buchungsbeleg">
<t t-call="web.html_container">
<t t-foreach="laeufe" t-as="l">
<t t-call="web.external_layout">
<div class="page">
<h2>Buchungsbeleg — <t t-out="l['run'].name"/></h2>
<p class="text-muted">
<t t-foreach="l['moves']" t-as="m">
Beleg <t t-out="m.name"/> (Journal <t t-out="m.journal_id.name"/>,
Datum <t t-out="m.date"/>,
Status <t t-out="m.state"/>);
</t>
</p>
<table class="table table-sm">
<thead>
<tr>
<th>Konto</th>
<th>Kontobezeichnung</th>
<th>Belegtext</th>
<th class="text-end">Soll</th>
<th class="text-end">Haben</th>
</tr>
</thead>
<tbody>
<tr t-foreach="l['zeilen']" t-as="z">
<td><t t-out="z.account_id.code"/></td>
<td><t t-out="z.account_id.name"/></td>
<td><t t-out="z.name"/></td>
<td class="text-end">
<span t-if="z.debit" t-out="z.debit"
t-options='{"widget": "monetary", "display_currency": l["run"].company_id.currency_id}'/>
</td>
<td class="text-end">
<span t-if="z.credit" t-out="z.credit"
t-options='{"widget": "monetary", "display_currency": l["run"].company_id.currency_id}'/>
</td>
</tr>
<tr>
<td colspan="3"><strong>Summe</strong></td>
<td class="text-end"><strong><span t-out="l['summe_soll']"
t-options='{"widget": "monetary", "display_currency": l["run"].company_id.currency_id}'/></strong></td>
<td class="text-end"><strong><span t-out="l['summe_haben']"
t-options='{"widget": "monetary", "display_currency": l["run"].company_id.currency_id}'/></strong></td>
</tr>
</tbody>
</table>
</div>
</t>
</t>
</t>
</template>
</odoo>