[IMP] l10n_at_hr_payroll_private: GP5 Abfertigung Neu (BVG-Regel, eigene BV-Grundlage, Anwartschaft/Report/Wizard)

Laufender Beitrag (§ 6 BMSVG): Regel BVG (Kategorie ATP_DG, ohne Nettoeffekt) auf EIGENER, ungecappter BV-Grundlage — §-49-bereinigt, ohne HBG-/Jahresdeckel (§ 6 Abs 5 iVm § 49 ASVG) und ohne §-67-Abs-3/6-Zeilen (§ 49 Abs 3 Z 7 ASVG); bewusst kein Rückgriff auf die SV-SZ-Basis des Kerns (Nutzer-Entscheidung eigene BV-Grundlage; deren Z-7-Ausschluss fehlt — GP4-Beobachtung bleibt offen dokumentiert).

Beitragsfreier erster Monat taggenau: Fenster [Eintritt, Eintritt + 1 Monat), Beitragspflicht ab Monatsjubiläum (15. 06. → 15. 07.; KB-Beispiel lb-vor-03: 4.500/30 × 17 = 2.550 — die ab-Folgetag-Lesart war ein Off-by-one und wurde verworfen); 30-Tage-Aliquotierung über die Lohnsteuertage (Teilmonate ohne Doppelabzug); Monatsende-Klippe (Eintritt 31. 01.): Fenster bis Monatsultimo, Pflicht ab Folgemonatserstem (ABGB-Fristrechnung); AV ≤ 1 Monat zur Gänze beitragsfrei.

Wiederzulassung binnen 12 Monaten → Beitragspflicht ab dem 1. Tag; Vor-AV beliebiger Dauer (auch < 1 Monat, Nutzer-Klarstellung) und schlägt auch die Kurz-AV-Freiheit des laufenden AV (OGH 9 ObA 30/16a; Suche über frühere hr.version mit contract_date_end im 12-Monats-Fenster). Sonderzahlungen werden nicht um das Fenster gekürzt, bleiben frei nur bei Beitragsmonat (voller Datumstag, taggenau) im Fenster. Geringfügig Beschäftigte und Lehrlinge sind erfasst — BVG läuft auch im §-53a-Fall.

Anwartschaft (§ 15: gutgebrachte Beiträge + Erträge, keine Monatsentgelt-Staffel) on-the-fly aus validierten Läufen; Anwartschaftsreport (QWeb auf hr.employee) und Endabrechnungs-Wizard (§§ 14-17: §-14-Abs-2-Verfügungsmatrix, < 36 Beitragsmonate sperrt immer, §-16-Fälligkeit am Ende des zweitfolgenden Monats, 6-Monats-Erklärungsfrist, 5 Verfügungsoptionen) — die Auszahlung erfolgt durch die MV-Kasse, nicht über den Payslip.

Stammdaten: Vertrags-Flag l10n_at_abfertigung_neu (§ 46) + Modell l10n.at.bv.kasse (Leitzahl für eSV/mBGM; Seed der 7 Kassen-Namen noupdate, lb-gsv-11 — Leitzahlen aus Mandats-Unterlagen) + Mitarbeiter-Felder l10n_at_bv_ertraege/l10n_at_bv_monate_extern (Kassen-Auszug).

Bewusst nicht: §-7-BMSVG-Fiktivfälle (dokumentierte Option), Geringfügigen-Jahreszahlung + 2,5 % (GP7), BV-Provider (Option).

Tests: test_bv_private (10 Fälle, RF-BV1-10); gesamt 84/84 grün (frischer -i-Lauf auf Wegwerf-DB). Rechenfälle docs/rechenfaelle/abfertigung.md. 19.0.5.0.0.
This commit is contained in:
2026-09-12 08:22:13 +02:00
parent 3aff46de07
commit 0ea7f54682
16 changed files with 1235 additions and 13 deletions
@@ -0,0 +1,104 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<!-- ============================================================ -->
<!-- GP5: BV-Anwartschaftsreport (§ 15 BMSVG: gutgebrachte -->
<!-- Beiträge + Erträge laut Kassen-Auszug — KEINE -->
<!-- Monatsentgelt-Staffel). Daten aus dem AbstractModel-Report -->
<!-- (models/bv_report.py); druckbar am Mitarbeiter und aus dem -->
<!-- Endabrechnungs-Wizard. -->
<!-- ============================================================ -->
<record id="action_report_bv_anwartschaft" model="ir.actions.report">
<field name="name">BV-Anwartschaftsreport (Abfertigung Neu)</field>
<field name="model">hr.employee</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">l10n_at_hr_payroll_private.report_bv_anwartschaft</field>
<field name="report_file">l10n_at_hr_payroll_private.report_bv_anwartschaft</field>
<field name="paperformat_id" ref="base.paperformat_euro"/>
<field name="binding_model_id" ref="hr.model_hr_employee"/>
<field name="binding_type">report</field>
</record>
<template id="report_bv_anwartschaft">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="employee">
<t t-set="fort" t-value="anwartschaft[employee.id]"/>
<t t-call="web.external_layout">
<div class="page">
<h2>BV-Anwartschaftsreport (Abfertigung Neu)</h2>
<table class="table table-sm o_main_table">
<tbody>
<tr>
<td><strong>Dienstnehmer:in</strong></td>
<td><t t-out="employee.name"/></td>
<td><strong>Mitarbeitervorsorgekasse</strong></td>
<td><t t-out="employee.l10n_at_bv_kasse_id.name or '—'"/></td>
</tr>
<tr>
<td><strong>Beitragsmonate (dieser DG)</strong></td>
<td><t t-out="fort['monate']"/></td>
<td><strong>Beitragsmonate Vor-Arbeitgeber</strong></td>
<td><t t-out="employee.l10n_at_bv_monate_extern"/></td>
</tr>
</tbody>
</table>
<h3>Gutgebrachte Beiträge je Beitragsjahr (§ 6 BMSVG)</h3>
<table class="table table-sm o_main_table">
<thead>
<tr>
<th>Beitragsjahr</th>
<th class="text-end">Beitragsmonate</th>
<th class="text-end">Gutgebrachte Beiträge</th>
</tr>
</thead>
<tbody>
<tr t-foreach="fort['jahre']" t-as="jahr">
<td><t t-out="jahr[0]"/></td>
<td class="text-end"><t t-out="jahr[1]"/></td>
<td class="text-end">
<span t-out="jahr[2]"
t-options='{"widget": "monetary", "display_currency": employee.currency_id}'/>
</td>
</tr>
<tr>
<td><strong>Summe gutgebracht</strong></td>
<td/>
<td class="text-end">
<span t-out="fort['beitraege']"
t-options='{"widget": "monetary", "display_currency": employee.currency_id}'/>
</td>
</tr>
<tr>
<td>Erträge laut Kassen-Auszug (§ 15)</td>
<td/>
<td class="text-end">
<span t-out="employee.l10n_at_bv_ertraege"
t-options='{"widget": "monetary", "display_currency": employee.currency_id}'/>
</td>
</tr>
<tr>
<td><strong>Anwartschaft gesamt (Beiträge + Erträge)</strong></td>
<td/>
<td class="text-end">
<span t-out="fort['beitraege'] + employee.l10n_at_bv_ertraege"
t-options='{"widget": "monetary", "display_currency": employee.currency_id}'/>
</td>
</tr>
</tbody>
</table>
<p class="small text-muted">
Auszahlung der Abfertigungsanwartschaft durch die
Mitarbeitervorsorgekasse (§ 15 BMSVG — keine
Monatsentgelt-Staffel); Fälligkeit am Ende des
zweitfolgenden Monats nach Geltendmachung (§ 16).
Verfügungsausschluss nach § 14 Abs 2 BMSVG bei
Kündigung durch den AN, verschuldeter Entlassung,
unberechtigtem vorzeitigem Austritt oder weniger
als 36 Beitragsmonaten (Vor-Arbeitgeber-Monate
zählen mit — Mitarbeiter-Stamm pflegen).
</p>
</div>
</t>
</t>
</t>
</template>
</odoo>