# 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