1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/industry_fsm_report/models/project_project.py
2024-12-10 09:04:09 +07:00

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)