gn_odoo/gn_career/models/gn_mission.py
Florian du Garage Num d93c76d937 add filters on tasks
2024-03-09 00:26:30 +01:00

41 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo 16 CE. See LICENSE file for full copyright and licensing details.
from odoo import fields, models, api
class GnCareerTask(models.Model):
_name = 'gn_career.task'
_description = "Tâches réalisées au cours de la mission"
name = fields.Char("Nom de la tâche")
description = fields.Text("Description de la tâche")
possible_mission_ids = fields.Many2many('gn_career.mission', string="Missions pouvant inclure cette tâche")
effective_mission_ids = fields.Many2many('gn_career.mission.detail', compute='_compute_effective_mission_ids', relation="effective_missions", string="Missions définies impliquant cette tâche")
active_mission_ids = fields.Many2many('gn_career.mission.detail', relation="active_missions", string="Missions actives incluant cette tâche")
@api.depends('possible_mission_ids.mission_detail_ids.task_ids')
def _compute_effective_mission_ids(self):
for task in self:
effective_mission_ids_set = set()
for mission in task.possible_mission_ids:
for detail in mission.mission_detail_ids:
if task in detail.task_ids:
effective_mission_ids_set.add(detail.id)
task.effective_mission_ids = [(6, 0, list(effective_mission_ids_set))]
class GnCareerMission(models.Model):
_name = 'gn_career.mission'
_description = "Missions prévues dans le contrat"
name = fields.Char("Nom de la mission")
description = fields.Text("Description de la mission")
task_ids = fields.Many2many('gn_career.task', string="Tâches pouvant être incluses dans la mission")
career_ids = fields.Many2many('gn_career.career', 'mission_ids', compute='_compute_career_ids', string="Fiches de poste incluant cette mission", store=True)
mission_detail_ids = fields.One2many('gn_career.mission.detail', 'mission_id', string="Répartition des missions au sein du poste")
@api.depends('mission_detail_ids.career_id')
def _compute_career_ids(self):
for mission in self:
career_ids = mission.mapped('mission_detail_ids.career_id').ids
mission.career_ids = [(6, 0, career_ids)]