[IMP] l10n_at_hr_payroll_private: add premiums at termination under § 16 AngG (AP14-B)

Close the premium-at-termination gap of the end-of-employment cycle: an aliquote periodic premium (annual, sales, bonus, 15th payment) whose entitlement period outlasts the termination is covered by § 16 AngG — the pro-rata amount follows the ratio of the elapsed service to the entitlement period, is due for employees regardless of the termination ground (loss clauses void, 9 ObA 82/13v), while performance-linked premiums for workers may validly hinge on non-fault grounds and premiums tied to a specific service (e.g. Bilanzgeld) are not aliquote without the service (lb-end-18). Two routes: PRAM_END (bemessung sonstig) covers premiums paid with the end-of-employment run — a special payment inside the annual sixth at the flat 6 % rate with the 620 EUR free amount and 2 615 EUR free threshold checked by the core, SV as special-payment contributions (KV/PV/AV without AK/WF) against the monthly HBG and the annual SZ cap, fully payroll-levy liable and BV-contributory at the uncapped 1.53 % rate (§ 6 Abs 1 iVm Abs 5 BMSVG). PRAM_END_TARIF (bemessung laufend plus the core l10n_at_s67_abs6_ueberhang flag) covers premiums due at a pre-agreed maturity because their amount only becomes determinable after the entitlement period ends (e.g. balance-sheet premiums): taxed like running pay with the payment-month tariff without touching the annual sixth (§ 67 Abs 10, not a § 67 Abs 8 lit c case per 98/14/0009 = ARD 5483/14/2004) — the SV contribution month rolls back into the termination year via a new payslip field consumed by an extended branch of the existing SV-basis-by-Beitragsmonat override (historical caps and rates, E-MVB 044-01-00-006), while the LSt stays in the payment month. The wizard section previews the § 16 pro-rata amount from the full premium, entitlement period and elapsed service, keeps the payable amount confirmable (KB agreement), requires the service/claim-basis confirmation, enforces the contribution month for the deferred case, and lands the memo on the payslip for the separate Lohnzettel workflow (LStR Rz 911a); the existing manual PRAM rule is untouched. The account matrix posts both rules to 6230. Verified against the original statute text in .ris/ (AngG § 16, BMSVG § 6 Abs 5) and the knowledge-base source lb-end-18; the full SZ roll-forward (storno plus recomputation against the termination year's SZ annual cap) and the mBGM storno/re-transmission remain open in the GP7 payroll-reporting track, and the BV attribution of the deferred premium remains in the payment month as a documented approximation.

Version 19.0.16.0.0 (private)
This commit is contained in:
2026-09-15 13:33:49 +02:00
parent 472b19a4b2
commit 850e99df20
10 changed files with 499 additions and 9 deletions
@@ -47,4 +47,12 @@
<field name="name">Vergleichssumme — BV-Anwartschafts-Teil (Brutto)</field>
<field name="code">ATP_VERGLEICH_BV</field>
</record>
<record id="input_type_atp_pram_end" model="hr.payslip.input.type">
<field name="name">Aliquote Prämie bei Beendigung (Brutto, § 16 AngG)</field>
<field name="code">ATP_PRAM_END</field>
</record>
<record id="input_type_atp_pram_end_tarif" model="hr.payslip.input.type">
<field name="name">Später fällige anteilige Prämie (Brutto, § 67 Abs 10)</field>
<field name="code">ATP_PRAM_END_TARIF</field>
</record>
</odoo>
@@ -15,6 +15,11 @@
<!-- Override, BV-Anwartschafts-Teil bis 7.500 € mit 6 %; beide -->
<!-- SV-pflichtig (Zuflussmonat; Aufrollung je Beitragsmonat bzw. -->
<!-- PV-Verlängerung siehe lb-end-22) und LNK-pflichtig. -->
<!-- Prämie: § 16 AngG-Aliquot bei Beendigung (AP14-B, lb-end-18) — -->
<!-- mit Endabrechnung sonstiger Bezug (Sechstel, SZ-SV); später -->
<!-- fällig über § 67 Abs 10 (tarifisch im Zuflussmonat ohne -->
<!-- Sechstel, Kern-Flag) mit Rollung des SV-Beitragsmonats ins -->
<!-- Austrittsjahr (Wizard-Write auf die Linie; mBGM-Storno GP7). -->
<!-- ============================================================ -->
<!-- Urlaubsersatzleistung — laufender Anteil (§ 67 Abs 8 lit d). -->
@@ -173,6 +178,48 @@ result = inputs['ATP_VERGLEICH_BV'].amount
]]></field>
</record>
<!-- Aliquote Prämie/Sonderzahlung bei Beendigung (§ 16 AngG):
mit der Endabrechnung ausgezahlt — sonstiger Bezug im
Jahressechstel (6 %, Freibetrag/Freigrenze), SZ-SV, voll
LNK- und BV-pflichtig (lb-end-18). -->
<record id="rule_pram_end" model="hr.salary.rule">
<field name="name">Aliquote Prämie bei Beendigung (§ 16 AngG)</field>
<field name="code">PRAM_END</field>
<field name="sequence" eval="35"/>
<field name="category_id" ref="l10n_at_hr_payroll_private.category_atp_brutto"/>
<field name="struct_id" ref="l10n_at_hr_payroll_private.structure_at_privat"/>
<field name="condition_select">python</field>
<field name="condition_python">result = 'ATP_PRAM_END' in inputs and inputs['ATP_PRAM_END'].amount</field>
<field name="l10n_at_bemessung">sonstig</field>
<field name="amount_select">code</field>
<field name="amount_python_compute"><![CDATA[
result = inputs['ATP_PRAM_END'].amount
]]></field>
</record>
<!-- Später fällige anteilige Prämie (§ 67 Abs 10): die Höhe ist
erst nach Ablauf der Anspruchsperiode ermittelbar und wird zum
vereinbarten Fälligkeitszeitpunkt ausgezahlt — wie ein laufender
Bezug zum Tarif des Zuflussmonats, OHNE Sechstel-Erhöhung
(Kern-Flag), gesonderter Lohnzettel (LStR Rz 911a); der
SV-Beitragsmonat wird per Rollung ins Austrittsjahr auf die
Linie geschrieben (E-MVB 044-01-00-006). -->
<record id="rule_pram_end_tarif" model="hr.salary.rule">
<field name="name">Später fällige anteilige Prämie (§ 67 Abs 10)</field>
<field name="code">PRAM_END_TARIF</field>
<field name="sequence" eval="36"/>
<field name="category_id" ref="l10n_at_hr_payroll_private.category_atp_brutto"/>
<field name="struct_id" ref="l10n_at_hr_payroll_private.structure_at_privat"/>
<field name="condition_select">python</field>
<field name="condition_python">result = 'ATP_PRAM_END_TARIF' in inputs and inputs['ATP_PRAM_END_TARIF'].amount</field>
<field name="l10n_at_bemessung">laufend</field>
<field name="l10n_at_s67_abs6_ueberhang" eval="True"/>
<field name="amount_select">code</field>
<field name="amount_python_compute"><![CDATA[
result = inputs['ATP_PRAM_END_TARIF'].amount
]]></field>
</record>
<!-- Zeitguthaben an Normalarbeitszeit (§ 19e Abs 2 AZG: + 50 %). -->
<record id="rule_zeit_guthaben" model="hr.salary.rule">
<field name="name">Zeitguthaben Normalarbeitszeit + 50 % (§ 19e Abs 2 AZG)</field>