Multi-tenant

El ERP es multi-tenant: muchas empresas conviven en la misma base de datos. El API hereda esa estructura sin pedirle al cliente que pase empresa_id en cada request — el filtro es automático y se deriva del token.

¿Cómo funciona?

Cuando haces POST /auth/login, el backend identifica al usuario en la tabla ws_usuario_empresa y emite un token que lleva asociada una y solo una empresa (la del usuario). De ahí en adelante:

  1. Modelos con campo empresa (Nivel 3) — cada query del API agrega automáticamente WHERE empresa = <empresa_del_token>.
  2. Modelos sin campo empresa (Niveles 1 y 2) — son catálogos globales, no se filtran.
  3. Creación de registros — al hacer POST sobre un modelo Nivel 3, el campo empresa se completa automáticamente con el del token.

Ejemplo práctico

Mismo endpoint, dos tokens distintos:

# Token de empresa 7134 → ve solo sus 458 compras
curl http://localhost/api/v1/Compra -H "Authorization: Bearer $TOKEN_7134"
 
# Token de empresa 9201 → ve solo sus 122 compras
curl http://localhost/api/v1/Compra -H "Authorization: Bearer $TOKEN_9201"

Catálogos globales

Algunos catálogos NO tienen empresa porque son universales: Moneda, Pais, RegimenFiscal, TipoComprobante, etc. Estos se comparten entre todas las empresas. La lectura siempre regresa la lista completa.

Cambiar de empresa

Si un usuario opera para varias empresas, cada empresa tiene su propio registro en ws_usuario_empresa y por lo tanto su propio token. Para cambiar de empresa, haces login con el usuario asociado a la otra empresa — no existe un endpoint "switch tenant".