Files
odoo-at-payroll/addons/l10n_at_hr_payroll_private/models/fristen_private.py
T
fegger 57522b5be3 [IMP] l10n_at_hr_payroll_private: GP8 Vertragsstichtage-UI, All-in-Deckungsrechnung, DAG-Ausweis, Frist-mBGM-Verlinkung
Vertragsstichtage-UI (views/vertragsfelder_views.xml): GP4-Felder (ALV-Entfall, UV-Entfall, PV-Bonusphase, LNK-frei) + Status (Lehrling, fallweise, Familienabsetzbetrag, ueberw. Nachtarbeit) als gruppierte Payroll-Seite am Mitarbeiterformular (Muster: KV-Einstufung + BV-Gruppe).

All-in-Deckungsrechnung (report/gp8_reports.xml — QWeb auf hr.payslip): GP2-_at_allin_deckung als Ausweis (Pauschale vs. Bezuege, Rest = Über-/Unterdeckung; § 2g AVRAG). DAG-Ausweis (QWeb auf hr.payslip.run): § 1 DAG je Monat — Lohnsumme der Geringfuegigen, Schwelle (1,5 × GFG), Abgabe 19,4 % (GP4 _l10n_at_dag).

Frist-mBGM-Verlinkung (models/fristen_private.py): ref_mbgm_id-Feld am Fristenkalender (Kernmodell kennt mBGM nicht) + action_zum_objekt-Super-Chain; _l10n_at_verlinke_deklarationen setzt Sprungziele fuer offene L16- und mBGM-Fristen.

19.0.8.0.0. Tests: GP8-Kernsuite 6 (100/100 gesamt).
2026-09-12 19:59:03 +02:00

48 lines
2.0 KiB
Python

# Part of the odoo-at-payroll project. License: LGPL-3.
"""GP8-Privat: Verlinkung des Fristenkalenders mit den
privatwirtschaftlichen GP7-Deklarationen (L16/mBGM-Sprungziele)."""
from odoo import fields, models
class L10nAtPayrollFrist(models.Model):
_inherit = 'l10n.at.payroll.frist'
ref_mbgm_id = fields.Many2one(
'l10n.at.payroll.mbgm', string='mBGM-Deklaration',
help='Sprungziel für SV-Fristen (Privatmodul — das '
'Kernmodell kennt mBGM nicht).')
def action_zum_objekt(self):
"""Sprung zur GP7-Deklaration (L16 oder mBGM)."""
self.ensure_one()
result = super().action_zum_objekt()
if result is not True:
return result
if self.ref_mbgm_id:
return {
'type': 'ir.actions.act_window',
'res_model': 'l10n.at.payroll.mbgm',
'res_id': self.ref_mbgm_id.id,
'view_mode': 'form',
}
return True
def _l10n_at_verlinke_deklarationen(self):
"""Sprungziele für offene L16- und mBGM-Fristen setzen: neueste
Deklaration des Bezugsjahres verlinken, wenn vorhanden."""
for frist in self:
if frist.fristart in ('l16', 'arbeitsstaette'):
l16 = self.env['l10n.at.payroll.l16'].search([
('company_id', '=', frist.company_id.id),
('jahr', '=', frist.jahr),
], order='id desc', limit=1)
frist.ref_l16_id = l16 or False
elif frist.fristart == 'sv_mbgm':
mbgm = self.env['l10n.at.payroll.mbgm'].search([
('company_id', '=', frist.company_id.id),
('beitragsmonat', '>=',
'%d-%02d-01' % (frist.jahr, frist.monat or 1)),
('beitragsmonat', '<=',
'%d-%02d-01' % (frist.jahr, frist.monat or 12)),
], order='id desc', limit=1)
frist.ref_mbgm_id = mbgm or False