41 lines
2.2 KiB
Python
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)] |