En Odoo los grupos base vienen definidos en el módulo base y son los que se usan más comúnmente para reglas de acceso, seguridad y menús. Algunos de los más importantes son:
📌 Grupos principales de Odoo (módulo base)
- base.group_user → Usuarios internos (los que tienen acceso al backend).
- base.group_portal → Usuarios portal (clientes que acceden al portal web).
- base.group_public → Usuarios públicos (visitantes anónimos, sin login).
- base.group_system → Administradores técnicos (tienen acceso completo, configuración avanzada).
- base.group_erp_manager → Gerentes de ERP (acceso amplio a módulos de negocio).
- base.group_partner_manager → Gerentes de contactos (pueden gestionar todos los partners).
📌 Cómo se usan
- En reglas de registro (ir.rule) para limitar acceso:
<field name="groups" eval="[Command.link(ref('base.group_user'))]"/> - En menús o vistas para restringir visibilidad:
<menuitem id="menu_x" parent="base.menu_custom" groups="base.group_system"/>
📌 Jerarquía básica
- Public (group_public) → acceso mínimo, solo al sitio web.
- Portal (group_portal) → acceso al portal, facturas, pedidos, etc.
- User (group_user) → acceso al backend, según permisos de cada módulo.
- System (group_system) → superusuario técnico, acceso total.
👉 En tu ejemplo, base.group_user significa que la regla aplica a todos los usuarios internos (los que entran al backend). Si quieres que solo los administradores técnicos la vean, usarías base.group_system.
📌 Principales grupos base
| Grupo | Descripción |
|---|---|
| base.group_user | Usuarios internos (acceso al backend, según permisos de cada módulo). |
| base.group_portal | Usuarios portal (clientes con acceso al portal web). |
| base.group_public | Usuarios públicos (visitantes anónimos, sin login). |
| base.group_system | Administradores técnicos (acceso completo, configuración avanzada). |
| base.group_erp_manager | Gerentes ERP (acceso amplio a módulos de negocio). |
| base.group_partner_manager | Gerentes de contactos (pueden gestionar todos los partners). |
| base.group_no_one | Grupo vacío, útil para restringir acceso. |
| base.group_multi_company | Grupo que habilita la gestión multi-compañía. |
📌 Cómo dar permisos por compañía
- Reglas de registro (ir.rule)
Puedes limitar acceso a registros según la compañía del usuario:<record id="rule_model_x_user" model="ir.rule"> <field name="name">Acceso por compañía</field> <field name="model_id" ref="model_tu_modelo"/> <field name="groups" eval="[Command.link(ref('base.group_user'))]"/> <field name="domain_force">['|', ('company_id', '=', False), ('company_id', 'in', user.company_ids.ids)]</field> </record>Esto permite ver registros sin compañía o de las compañías a las que pertenece el usuario.
- Compañía principal con acceso global
Si quieres que la primera compañía creada (ej. company_id = 1) tenga acceso a todo, puedes añadirlo al dominio:<field name="domain_force">['|', ('company_id', '=', False), '|', ('company_id', 'in', user.company_ids.ids), ('company_id', '=', 1)]</field>Aquí:
- company_id = False → registros sin compañía.
- company_id in user.company_ids.ids → registros de las compañías del usuario.
- company_id = 1 → todos los registros de la compañía principal (global).
- Asignación de grupos
- Usa base.group_user para usuarios internos.
- Usa base.group_system para administradores técnicos (sin restricciones).
- Usa base.group_multi_company si quieres que puedan cambiar entre compañías.
📌 En resumen:
- Los grupos base más usados son group_user, group_portal, group_public, group_system.
- Para permisos por compañía, usa reglas ir.rule con domain_force.
- Para que la compañía principal tenga acceso global, añade explícitamente (‘company_id’, ‘=’, 1) en el dominio.