diff --git a/addons_extensions/project_task_timesheet_extended/models/__init__.py b/addons_extensions/project_task_timesheet_extended/models/__init__.py
index 610eb5339..5aa20df30 100644
--- a/addons_extensions/project_task_timesheet_extended/models/__init__.py
+++ b/addons_extensions/project_task_timesheet_extended/models/__init__.py
@@ -17,3 +17,4 @@ from . import project_task
from . import timesheets
# from . import project_task_gantt
from . import user_availability
+from . import stage_visibility
diff --git a/addons_extensions/project_task_timesheet_extended/models/stage_visibility.py b/addons_extensions/project_task_timesheet_extended/models/stage_visibility.py
new file mode 100644
index 000000000..dc3e06b72
--- /dev/null
+++ b/addons_extensions/project_task_timesheet_extended/models/stage_visibility.py
@@ -0,0 +1,45 @@
+from odoo import api, fields, models
+
+
+class ProjectProject(models.Model):
+ _inherit = 'project.project'
+
+ is_initiation_user = fields.Boolean(compute='_compute_stage_access')
+ is_planning_user = fields.Boolean(compute='_compute_stage_access')
+ is_development_user = fields.Boolean(compute='_compute_stage_access')
+ is_testing_user = fields.Boolean(compute='_compute_stage_access')
+ is_deployment_user = fields.Boolean(compute='_compute_stage_access')
+ is_maintenance_user = fields.Boolean(compute='_compute_stage_access')
+ is_closure_user = fields.Boolean(compute='_compute_stage_access')
+ is_architecture_user = fields.Boolean(compute='_compute_stage_access')
+ is_project_editor = fields.Boolean(compute='_compute_stage_access')
+
+ def _compute_stage_access(self):
+ user = self.env.user
+
+ for project in self:
+ flows = self.env['project.stages.approval.flow'].search([
+ ('project_id', '=', project.id)
+ ])
+
+ stages = flows.filtered(
+ lambda f:
+ f.assigned_to == user
+ or f.approval_by == user
+ or user in f.involved_users
+ or user.has_group('project.group_project_manager')
+ ).mapped('stage_id.name')
+ project_editor = False
+ if (project.user_id and user == project.user_id) or (project.project_sponsor and user == project.project_sponsor):
+ project_editor = True
+
+
+ project.is_initiation_user = 'Initiation' in stages
+ project.is_planning_user = 'Planning' in stages
+ project.is_development_user = 'Development' in stages
+ project.is_testing_user = 'Testing' in stages
+ project.is_deployment_user = 'Deployment' in stages
+ project.is_maintenance_user = 'Maintenance & Support' in stages
+ project.is_closure_user = 'Closer' in stages
+ project.is_architecture_user = 'Architecture & Design' in stages
+ project.is_project_editor = project_editor
diff --git a/addons_extensions/project_task_timesheet_extended/security/project_stage_visibility.xml b/addons_extensions/project_task_timesheet_extended/security/project_stage_visibility.xml
new file mode 100644
index 000000000..cb55fbd11
--- /dev/null
+++ b/addons_extensions/project_task_timesheet_extended/security/project_stage_visibility.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Project Stage Visibility - User
+
+
+ [
+ '|',
+ ('assigned_to', '=', user.id),
+ '|',
+ ('approval_by', '=', user.id),
+ '|',
+ ('involved_users', 'in', user.id),
+ '|',
+ ('project_id.user_id', '=', user.id),
+ ('project_id.project_lead', '=', user.id)
+ ]
+
+
+
+
+
+
+ Project Stage Visibility - Manager
+
+ [(1,'=',1)]
+
+
+
+
diff --git a/addons_extensions/project_task_timesheet_extended/view/project.xml b/addons_extensions/project_task_timesheet_extended/view/project.xml
index 757863e8e..78a9c0155 100644
--- a/addons_extensions/project_task_timesheet_extended/view/project.xml
+++ b/addons_extensions/project_task_timesheet_extended/view/project.xml
@@ -69,14 +69,17 @@
+
[('id', 'in', showable_stage_ids)]
-
+
+ not is_project_editor
+
-
+
@@ -94,7 +97,7 @@
-
+
@@ -110,7 +113,7 @@
-
+
@@ -138,6 +141,9 @@
1
+
+ not is_initiation_user
+
-
+
@@ -363,7 +369,7 @@
-
+
@@ -417,7 +423,7 @@
-
+
@@ -460,7 +466,7 @@
-
+
@@ -485,7 +491,7 @@
-
+
@@ -602,10 +608,10 @@
-
+
-
+
diff --git a/addons_extensions/project_task_timesheet_extended/view/stage_visibility_view.xml b/addons_extensions/project_task_timesheet_extended/view/stage_visibility_view.xml
new file mode 100644
index 000000000..01e878a9c
--- /dev/null
+++ b/addons_extensions/project_task_timesheet_extended/view/stage_visibility_view.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ project.project.form.tab.visibility
+ project.project
+
+
+
+
+
+ not is_initiation_user
+
+
+
+
+ not is_planning_user
+
+
+
+
+ not is_architecture_user
+
+
+
+
+ not is_development_user
+
+
+
+
+ not is_testing_user
+
+
+
+
+ not is_deployment_user
+
+
+
+
+ not is_maintenance_user
+
+
+
+
+ not is_closure_user
+
+
+
+
+
+