44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2024-2026 Nexa Systems Inc.
|
|
# License OPL-1 (Odoo Proprietary License v1.0)
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class FusionClaimsDashboard(models.TransientModel):
|
|
_name = 'fusion.claims.dashboard'
|
|
_inherit = 'fusion_claims.adp.posting.schedule.mixin'
|
|
_description = 'Fusion Claims Dashboard'
|
|
_rec_name = 'name'
|
|
|
|
name = fields.Char(default='Dashboard', readonly=True)
|
|
|
|
# =========================================================================
|
|
# Role-aware filter
|
|
# =========================================================================
|
|
is_manager = fields.Boolean(compute='_compute_is_manager')
|
|
|
|
def _compute_is_manager(self):
|
|
manager_group = self.env.ref('fusion_claims.group_fusion_claims_manager',
|
|
raise_if_not_found=False)
|
|
sale_mgr_group = self.env.ref('sales_team.group_sale_manager',
|
|
raise_if_not_found=False)
|
|
for rec in self:
|
|
user = rec.env.user
|
|
rec.is_manager = bool(
|
|
(manager_group and user.has_group('fusion_claims.group_fusion_claims_manager'))
|
|
or (sale_mgr_group and user.has_group('sales_team.group_sale_manager'))
|
|
)
|
|
|
|
def _role_filter_domain(self):
|
|
"""Common domain prefix for SO-based counts.
|
|
|
|
Managers (fusion_claims.group_fusion_claims_manager or
|
|
sales_team.group_sale_manager) see everything.
|
|
Other users see only SOs where they are the salesperson.
|
|
"""
|
|
self.ensure_one()
|
|
if self.is_manager:
|
|
return []
|
|
return [('user_id', '=', self.env.user.id)]
|