1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
from odoo.exceptions import ValidationError
class Company(models.Model):
_inherit = 'res.company'
leave_timesheet_project_id = fields.Many2one(
'project.project', string="Internal Project",
help="Default project value for timesheet generated from time off type.")
leave_timesheet_task_id = fields.Many2one(
'project.task', string="Time Off Task",
domain="[('project_id', '=', leave_timesheet_project_id)]")
@api.constrains('leave_timesheet_project_id')
def _check_leave_timesheet_project_id_company(self):
for company in self:
if company.leave_timesheet_project_id:
if company.leave_timesheet_project_id.sudo().company_id != company:
raise ValidationError(_('The Internal Project of a company should be in that company.'))
def init(self):
for company in self.search([('leave_timesheet_project_id', '=', False)]):
company = company.with_company(company)
project = company.env['project.project'].search([
('name', '=', _('Internal')),
('allow_timesheets', '=', True),
('company_id', '=', company.id),
], limit=1)
if not project:
project = company.env['project.project'].create({
'name': _('Internal'),
'allow_timesheets': True,
'company_id': company.id,
})
company.write({
'leave_timesheet_project_id': project.id,
})
if not company.leave_timesheet_task_id:
task = company.env['project.task'].create({
'name': _('Time Off'),
'project_id': company.leave_timesheet_project_id.id,
'active': False,
'company_id': company.id,
})
company.write({
'leave_timesheet_task_id': task.id,
})
def _create_internal_project_task(self):
projects = super()._create_internal_project_task()
for project in projects:
company = project.company_id
company = company.with_company(company)
if not company.leave_timesheet_project_id:
company.write({
'leave_timesheet_project_id': project.id,
})
if not company.leave_timesheet_task_id:
task = company.env['project.task'].sudo().create({
'name': _('Time Off'),
'project_id': company.leave_timesheet_project_id.id,
'active': False,
'company_id': company.id,
})
company.write({
'leave_timesheet_task_id': task.id,
})
|