# -*- coding: utf-8 -*- from odoo import models, fields, api from datetime import datetime, timedelta class ProjectTask(models.Model): _inherit = "project.task" x_start_date = fields.Date(string="Fecha inicio") x_end_date = fields.Date(string="Fecha final") x_days_duration = fields.Integer(string="Duración (Días)", compute="compute_days_duration", store=True) @api.depends("x_start_date","x_end_date") def compute_days_duration(self): for rec in self: if rec.x_start_date and rec.x_end_date: days = (rec.x_end_date - rec.x_start_date).days day_date = rec.x_start_date duration = 0 for day in range(days + 1): weekday = day_date.weekday() if weekday not in [5,6]: duration += 1 day_date += timedelta(days=1) rec.x_days_duration = duration else: rec.x_days_duration = 0 @api.depends('date_deadline', 'planned_date_begin', 'user_ids') def _compute_allocated_hours(self): for rec in self: rec.allocated_hours = 0 @api.depends('project_id') def _compute_display_in_project(self): for rec in self: rec.display_in_project = True @api.depends('project_id', 'parent_id') def _compute_show_display_in_project(self): for rec in self: rec.show_display_in_project = False @api.onchange("x_start_date") def onchange_start_date(self): for rec in self: if rec.x_start_date: rec.planned_date_begin = datetime.combine(rec.x_start_date, datetime.min.time()) + timedelta(hours=9) @api.onchange("x_end_date") def onchange_end_date(self): for rec in self: if rec.x_end_date: rec.date_deadline = datetime.combine(rec.x_end_date, datetime.min.time()) + timedelta(hours=9)