[IMP] sale_project: fix the SO access error even user has correct sales rights

Before this commit, When user has sale order all docuements right, project user right
and try to open a sale order linked with private project then it raises an
access rights error when a user clicks on sales orders in a project, even
though the user has the correct rights due to invalid access on project_ids
field also only project manager was able to see the project stat button on sale order.

so in this commit, make the project stat button visible to project user
and fix the access error on private project for project user.

task-2792884

closes odoo/odoo#91167

X-original-commit: f4e371a4b0903cea92c947b3afc36deee05237da
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
This commit is contained in:
Rohitkumar (roku)
2022-05-12 14:51:03 +02:00
committed by Barad Mahendra
parent bef18ef86e
commit 61569e9bf7
2 changed files with 4 additions and 1 deletions
+3
View File
@@ -35,10 +35,13 @@ class SaleOrder(models.Model):
@api.depends('order_line.product_id', 'order_line.project_id')
def _compute_project_ids(self):
is_project_manager = self.user_has_groups('project.group_project_manager')
for order in self:
projects = order.order_line.mapped('product_id.project_id')
projects |= order.order_line.mapped('project_id')
projects |= order.project_id
if not is_project_manager:
projects = projects._filter_access_rules('read')
order.project_ids = projects
order.project_count = len(projects)
@@ -8,7 +8,7 @@
<field name="priority">10</field>
<field name="arch" type="xml">
<xpath expr="//button[@name='action_view_invoice']" position="before">
<button type="object" name="action_view_project_ids" class="oe_stat_button" icon="fa-puzzle-piece" attrs="{'invisible': ['|', ('state', 'in', ['draft', 'sent']), ('project_ids', '=', [])]}" groups="project.group_project_manager">
<button type="object" name="action_view_project_ids" class="oe_stat_button" icon="fa-puzzle-piece" attrs="{'invisible': ['|', ('state', 'in', ['draft', 'sent']), ('project_ids', '=', [])]}" groups="project.group_project_user">
<field name="project_ids" invisible="1"/>
<field name="project_count" widget="statinfo" string="Projects"/>
</button>