[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
@@ -145,6 +145,19 @@ class HrPayslip(models.Model):
'BV-Anwartschafts-Zeiträume; beim Pauschalvergleich der '
'Verhältnisfaktor Forderungsbetrag : Vergleichssumme '
'(E-MVB 011-02-00-001).')
l10n_at_pram_nachweis = fields.Text(
string='AT Prämie bei Beendigung — Nachweis/Begründung', copy=False,
help='Anspruchsgrundlage (KV-/Vertragsvereinbarung, '
'Anspruchszeitraum), §-16-Aliquotierung, '
'Leistungsverknüpfung und Fälligkeitsvereinbarung '
'dokumentieren (lb-end-18).')
l10n_at_pram_beitragsmonat = fields.Date(
string='AT Prämie (§ 67 Abs 10) — SV-Beitragsmonat der Rollung',
copy=False,
help='Beitragsmonat, dem die später fällige anteilige Prämie '
'sv-rechtlich zuzuordnen ist — der Zeitraum, in dem die '
'Leistungen erbracht wurden (E-MVB 044-01-00-006, lb-end-18). '
'Leer = Zuflussmonat.')
# ------------------------------------------------------------------
# SV-Tage-Umrechnung und Verlängerungsmonate (§ 11 Abs 2 ASVG)
@@ -590,7 +603,11 @@ class HrPayslip(models.Model):
gelegt. Der Standardanteil jedes Monats bleibt auf die volle
monatliche HBG gedeckelt, der Verlängerungsanteil auf den
Tageswert (monatliche HBG × Verlängerungstage/30, lb-url-15);
die Fenster laufen sequenziell (Abgang zuerst, UEL danach)."""
die Fenster laufen sequenziell (Abgang zuerst, UEL danach).
AP14-B: die später fällige Prämie (PRAM_END_TARIF) rollt über
l10n_at_pram_beitragsmonat in den Beitragsmonat des
Austrittsjahres (E-MVB 044, lb-end-18); die LSt bleibt im
Zuflussmonat (§ 67 Abs 10)."""
self.ensure_one()
gruppen = {}
verlaengerung = {}
@@ -617,8 +634,12 @@ class HrPayslip(models.Model):
tage_pro_monat[monat] = \
tage_pro_monat.get(monat, 0) + tage
continue
monat = (rule.l10n_at_beitragsmonat or self.date_from) \
.replace(day=1)
if rule.code == 'PRAM_END_TARIF' \
and self.l10n_at_pram_beitragsmonat:
monat = self.l10n_at_pram_beitragsmonat.replace(day=1)
else:
monat = (rule.l10n_at_beitragsmonat or self.date_from) \
.replace(day=1)
gruppen[monat] = gruppen.get(monat, 0.0) + werte['total']
standard = self.date_from.replace(day=1)
if standard in gruppen: