TunoCommerce

Empresas

Multi-tenencia con jerarquía, configuración de empresa e impersonación

El módulo de empresas implementa la multi-tenencia real de TunoCommerce: cada empresa es un tenant aislado con su propio catálogo, clientes, configuración y permisos. Las empresas pueden organizarse en jerarquías padre-hijo para escenarios de distribuidoras, franquicias o corporativos.

Multi-tenencia jerárquica

Estructura de empresas

Las empresas se organizan en una jerarquía de hasta 4 niveles de profundidad utilizando rutas materializadas (materialized path) para consultas eficientes.

Corporativo (nivel 0)
├── Distribuidora Norte (nivel 1)
│   ├── Sucursal Monterrey (nivel 2)
│   └── Sucursal Guadalajara (nivel 2)
└── Distribuidora Sur (nivel 1)
    └── Sucursal Mérida (nivel 2)

Empresa master vs. subsidiarias

CaracterísticaEmpresa MasterSubsidiaria
Gestión de catálogoCRUD completoSolo lectura
Visibilidad de catálogoVe todoSolo lo asignado
Creación de subsidiariasSegún configuración
Modificación de datos propios

Aislamiento de datos

Cada consulta se filtra por alcance de empresa a través del scope resolver:

  • La empresa master puede consultar datos de todas las empresas activas o filtrar por una específica.
  • Las subsidiarias solo acceden a sus propios datos.
  • Nunca se exponen datos entre empresas no relacionadas jerárquicamente.

Configuración de empresa

Datos generales

Cada empresa tiene su propio perfil con:

  • Identidad: Nombre, slug (único global), idioma por defecto.
  • Estado: active o inactive.
  • Datos de contacto: Dirección completa, teléfono, sitio web.
  • Branding: Logo (base64), colores primario y secundario.

Configuración heredable

Las configuraciones se almacenan como pares clave-valor (JSON) y cascadean de padre a hijo:

  • Si una subsidiaria no define un valor, se hereda del padre.
  • Si el padre no lo tiene, se busca en el abuelo, y así hasta la raíz.
  • Aplica tanto para configuración operativa como para branding visual.

Ejemplos de configuración:

  • SMTP para envío de correos.
  • Métodos de autenticación habilitados.
  • Días de expiración de cotizaciones.
  • Límites de rondas de negociación.
  • Máximo de storefronts permitidos.

Impersonación

La empresa master puede impersonar subsidiarias para gestionar sus datos como si fuera la subsidiaria misma. Esto se usa para:

  • Soporte técnico y resolución de problemas.
  • Configuración inicial de nuevas subsidiarias.
  • Gestión centralizada cuando es necesario.

La impersonación queda registrada en el log de auditoría con el campo impersonatedBy para trazabilidad completa.


Direcciones de empresa

Cada empresa puede gestionar múltiples direcciones de envío y facturación:

  • Campos: Etiqueta descriptiva, datos de contacto, dirección completa.
  • Tipos: Envío, facturación o ambas.
  • Predeterminadas: Una dirección predeterminada de envío y una de facturación por empresa, con cambio automático de defaults.
  • Uso en cotizaciones: Las cotizaciones pueden referenciar una dirección de envío de la empresa.

Datos del modelo

CampoDescripción
NombreNombre de la empresa
SlugIdentificador único para URLs
Estadoactive / inactive
Idiomaes-MX / en-US
Es masterFlag que identifica a la empresa principal
Parent IDReferencia al padre en la jerarquía
Root Tenant IDReferencia a la raíz del árbol
DepthNivel en la jerarquía (0-3)
PathRuta materializada para consultas jerárquicas

On this page