57522b5be3
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).
48 lines
2.0 KiB
Python
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 |