Files
project-tools/project_link_from_invoice/models/account_move.py
Stéphan Sainléger ff07b3aa17 [CLN] global: apply ruff
2025-07-08 15:09:51 +02:00

47 lines
1.5 KiB
Python

from odoo import models, fields, api
class AccountMove(models.Model):
_inherit = "account.move"
project_ids = fields.Many2many(
"project.project", name="Projects", compute="get_related_project_ids"
)
project_count = fields.Integer("Project Count", compute="get_related_project_ids")
projects_name = fields.Char("Project(s)", compute="get_related_project_ids")
def action_open_projects(self):
"""
Open related projects, in form or tree view depending on project numbers
"""
project_ids = self.project_ids.ids
action = self.env["ir.actions.actions"]._for_xml_id(
"project.open_view_project_all"
)
if self.project_count == 1:
action["res_id"] = project_ids[0]
action["views"] = [[False, "form"]]
else:
action["views"] = [[False, "tree"], [False, "form"]]
action["domain"] = [("id", "in", project_ids)]
del action["target"] # to display breadcrumbs
return action
@api.depends("line_ids.sale_line_ids")
def get_related_project_ids(self):
for move in self:
projects = (
self.env["project.task"]
.search(
[("sale_order_id", "in", move.line_ids.sale_line_ids.order_id.ids)]
)
.project_id
)
move.project_ids = projects.ids
move.projects_name = " ; ".join([p.name for p in projects])
move.project_count = len(projects)