| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # -*- 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)
- def write(self, vals):
- if vals and type(vals) == dict:
- if vals.get("x_start_date") or vals.get("x_end_date"):
- for rec in self:
- rec.planned_date_begin = datetime.combine(rec.x_start_date, datetime.min.time()) + timedelta(hours=9)
- rec.date_deadline = datetime.combine(rec.x_end_date, datetime.min.time()) + timedelta(hours=9)
- return super().write(vals)
|