Grupos principales de Odoo (módulo base)

Share this post on:

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

  1. 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.

  2. 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).
  3. 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.
Share this post on:

Leave a Reply

Your email address will not be published. Required fields are marked *