# Copyright 2020 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from odoo import fields, models, api class ProjectTask(models.Model): _inherit = 'project.task' @api.model def default_get(self, fields): res = super(ProjectTask, self).default_get(fields) if 'default_project_id' in self.env.context: default_project_id = self.env['project.project'].browse(self.env.context['default_project_id']) if default_project_id.exists().porteurs_projets_ids: participant_ids = [] for porteur_project in default_project_id.porteurs_projets_ids: vals = { 'porteur_id': porteur_project.porteur_id.id, 'lastname': porteur_project.lastname, 'firstname': porteur_project.firstname, 'commune': porteur_project.commune, 'mobile': porteur_project.mobile, 'fixe': porteur_project.fixe, 'email': porteur_project.email, } participant_ids.append((0, 0, vals)) res.update({'participant_ids': participant_ids}) return res user_id = fields.Many2one( 'res.users', string='CFD', default=lambda self: self.env.uid, index=True, track_visibility='always') formateur_id = fields.Many2one( 'res.partner', string='Formateur', domain=[ ('active', '=', True), ('is_company', '=', False), ('is_consultant_form', '=', True), '|', ('reference', '=', 'reference'), ('reference', '=', 'prereference')], on_delete='restrict') duree_jr = fields.Selection([ ('demi_journee', "Demi journée"), ('journee', "Journée"), ], "Durée (en jours)") duree_hr = fields.Float( "Durée en heures", compute='_compute_duree_hr', store=True ) participant_ids = fields.One2many( 'res.partner.porteur.project', 'task_id', string="Participants") cout_seance = fields.Float("Coût de la séance", compute='_compute_cout_seance') @api.depends('duree_jr') @api.multi def _compute_duree_hr(self): for task in self: if task.duree_jr == 'journee': task.duree_hr = 1 if task.duree_jr == 'demi_journee': task.duree_hr = 0.5\ @api.depends('formateur_id', 'duree_hr') @api.multi def _compute_cout_seance(self): for task in self: if task.formateur_id: formateur_proj = self.env['adefpat.project.cout'].search([ ('project_id', '=', task.project_id.id), ('partner_id', '=', task.formateur_id.id) ]) if formateur_proj: task.cout_seance = formateur_proj.cout_jour * task.duree_hr