diff --git a/models/calendar.py b/models/calendar.py index 4ee465cf7361a047d03aba966b7b10ff45ea4058..0e67bfb27ba10cfee2ce75056058881318c01862 100644 --- a/models/calendar.py +++ b/models/calendar.py @@ -11,10 +11,10 @@ from odoo.exceptions import UserError, ValidationError class CGScopAttendee(models.Model): _inherit = 'calendar.attendee' - timesheet_id = fields.Many2one( + timesheet_ids = fields.One2many( comodel_name='account.analytic.line', + inverse_name='attendee_id', string='Timesheet linked', - ondelete='set null', copy=False) @@ -133,10 +133,14 @@ class CGScopCalendar(models.Model): def _compute_is_transfered(self): for event in self: + event_id = event.get_metadata()[0].get('id') attendee = self.env['calendar.attendee'].search([ - ('event_id', '=', event.id), + ('event_id', '=', event_id), ('partner_id', '=', self.env.user.partner_id.id)]) - if attendee.timesheet_id: + # l'attendee a des feuilles de temps liées à la même date + if (attendee.timesheet_ids + and attendee.timesheet_ids.filtered( + lambda t: t.date == event.start.date())): event.is_transfered = True else: event.is_transfered = False @@ -234,7 +238,8 @@ class CGScopCalendar(models.Model): """ partner = self.env.user.partner_id for event in self: - if not partner in event.partner_ids: + event_id = event.get_metadata()[0].get('id') + if partner not in event.partner_ids: raise UserError("Vous ne faites pas partie des participants, \ vous ne pouvez donc pas transformer cette entrée d'agenda \ en ligne de temps.") @@ -243,9 +248,12 @@ class CGScopCalendar(models.Model): renseigné sur chaque entrée d'agenda") else: attendee = self.env['calendar.attendee'].search([ - ('event_id', '=', event.id), + ('event_id', '=', event_id), ('partner_id', '=', partner.id)]) - if attendee.timesheet_id: + # l'attendee a des feuilles de temps liées à la même date + if (attendee.timesheet_ids + and attendee.timesheet_ids.filtered( + lambda t: t.date == event.start.date())): raise UserError("Vous avez déjà transféré cette entrée \ d'agenda : %s" % event.name) else: @@ -258,7 +266,7 @@ class CGScopCalendar(models.Model): 'name': event.name, 'company_id': self.env.user.company_id.id, 'partner_id': event.coop_id.id, - 'event_id': event.id, + 'event_id': event_id, 'attendee_id': attendee.id, } # Gestion des évènements sur toute la journée