1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- # -*- coding: utf-8 -*-
- # Part of Odoo. See LICENSE file for full copyright and licensing details.
- from odoo import fields, models, _
- class Company(models.Model):
- _inherit = 'res.company'
- leave_timesheet_task_id = fields.Many2one(
- 'project.task', string="Time Off Task",
- domain="[('project_id', '=', internal_project_id)]")
- def init(self):
- type_ids = [(4, self.env.ref('hr_timesheet.internal_project_default_stage').id)]
- companies = self.search(['|', ('internal_project_id', '=', False), ('leave_timesheet_task_id', '=', False)])
- internal_projects_by_company_dict = None
- Project = self.env['project.project']
- for company in companies:
- company = company.with_company(company)
- if not company.internal_project_id:
- if not internal_projects_by_company_dict:
- internal_projects_by_company_read = Project.search_read([
- ('name', '=', _('Internal')),
- ('allow_timesheets', '=', True),
- ('company_id', 'in', companies.ids),
- ], ['company_id', 'id'])
- internal_projects_by_company_dict = {res['company_id'][0]: res['id'] for res in internal_projects_by_company_read}
- project_id = internal_projects_by_company_dict.get(company.id, False)
- if not project_id:
- project_id = Project.create({
- 'name': _('Internal'),
- 'allow_timesheets': True,
- 'company_id': company.id,
- 'type_ids': type_ids,
- }).id
- company.write({'internal_project_id': project_id})
- if not company.leave_timesheet_task_id:
- task = company.env['project.task'].create({
- 'name': _('Time Off'),
- 'project_id': company.internal_project_id.id,
- 'active': True,
- '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_task_id:
- task = company.env['project.task'].sudo().create({
- 'name': _('Time Off'),
- 'project_id': company.internal_project_id.id,
- 'active': True,
- 'company_id': company.id,
- })
- company.write({
- 'leave_timesheet_task_id': task.id,
- })
- return projects
|