forked from Mapan/odoo17e
49 lines
2.3 KiB
Python
49 lines
2.3 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class ProjectProject(models.Model):
|
|
_inherit = "project.project"
|
|
|
|
allow_worksheets = fields.Boolean(
|
|
"Worksheets", compute="_compute_allow_worksheets", store=True, readonly=False)
|
|
worksheet_template_id = fields.Many2one(
|
|
'worksheet.template', compute="_compute_worksheet_template_id", store=True, readonly=False,
|
|
string="Default Worksheet",
|
|
domain="[('res_model', '=', 'project.task'), '|', ('company_ids', '=', False), ('company_ids', 'in', company_id)]")
|
|
|
|
@api.depends('is_fsm')
|
|
def _compute_allow_worksheets(self):
|
|
for project in self:
|
|
project.allow_worksheets = project.is_fsm
|
|
|
|
@api.depends('allow_worksheets')
|
|
def _compute_worksheet_template_id(self):
|
|
default_worksheet = self.env.ref('industry_fsm_report.fsm_worksheet_template', False)
|
|
project_ids = []
|
|
for project in self:
|
|
if not project.worksheet_template_id:
|
|
if project.allow_worksheets:
|
|
if default_worksheet and (not project.company_id or not default_worksheet.company_ids or project.company_id in default_worksheet.company_ids):
|
|
project.worksheet_template_id = default_worksheet
|
|
else:
|
|
project_ids.append(project.id)
|
|
else:
|
|
project.worksheet_template_id = False
|
|
if project_ids:
|
|
projects = self.browse(project_ids)
|
|
if len(projects.company_id) == 1:
|
|
projects.worksheet_template_id = self.env['worksheet.template'].search([('company_ids', 'in', [projects.company_id.id, False])], limit=1)
|
|
else:
|
|
worksheet_per_company = {
|
|
company: worksheets[:1]
|
|
for company, worksheets in self.env['worksheet.template']._read_group(
|
|
[('company_ids', 'in', [*projects.company_id.ids, False])],
|
|
['company_ids'],
|
|
['id:recordset'],
|
|
)
|
|
}
|
|
for project in projects:
|
|
project.worksheet_template_id = worksheet_per_company.get(project.company_id, False)
|