SaaS multiempresa
Varias empresas en un panel,
y los datos de cada una donde deben estar.
Un panel multiempresa se rompe siempre por el mismo sitio: alguien consulta por identificador sin filtrar por empresa y de pronto un cliente ve datos de otro. Se resuelve con aislamiento centralizado, no con cuidado — el cuidado se acaba a la tercera pantalla.
El fallo que se repite
Cuatro formas de filtrar datos entre empresas
Ninguna de estas cuatro es exótica. Son las que aparecen una y otra vez al auditar paneles que llevan años funcionando, y las cuatro tienen el mismo origen: la protección depende de que alguien se acuerde.
Consultar por identificador y olvidar la empresa
Es el fallo número uno y casi siempre el primero. Alguien escribe una consulta por identificador de factura, se olvida de filtrar además por empresa, y cualquiera que cambie un número en la barra de direcciones ve un documento que no es suyo. No hace falta ser un atacante: basta con tener curiosidad.
Numerar facturas fuera de la transacción
«Buscar el último número y sumarle uno» funciona hasta que dos personas facturan en el mismo segundo. Entonces salen dos facturas con el mismo número, o un hueco en la serie. Ninguna de las dos cosas se puede arreglar después: una serie fiscal no se reescribe.
Permisos pegados a la pantalla, no al dato
Esconder un botón no protege nada. Si el permiso vive en la interfaz y no en la consulta, la información sigue saliendo por la puerta de atrás en cuanto alguien llama directamente al servidor.
Informes que se saltan el filtro
Las pantallas se revisan; los informes, las exportaciones y los resúmenes por correo, casi nunca. Y son exactamente los sitios donde se agrega información de varias empresas a la vez.
Cómo se aísla de verdad
El filtro no se recuerda: se hereda
Revisar pantalla por pantalla funciona el primer mes. Luego entra alguien nuevo, se añade un informe, se monta una exportación a última hora, y basta una consulta sin filtro para que el aislamiento deje de existir.
Por eso el filtro de empresa no vive en cada consulta, sino en una función de alcance compartida por la que pasan todas. Escribir una consulta nueva sin ella no es un descuido que se cuele: es algo que no llega a funcionar.
En SAB Panel, la plataforma que operamos en producción para varias empresas a la vez, esa guarda cubre 121 manejadores de API.
No es una demostración ni un proyecto de cartera: es el sistema con el que damos servicio, con su facturación, su CRM y sus comisiones. Cuando algo falla ahí, lo arreglamos nosotros a las tres de la mañana. Es la razón por la que estas decisiones no son teóricas.
Los permisos van pegados al dato, no a la interfaz. Esconder un botón no protege nada: si la restricción vive en la pantalla y no en la consulta, la información sale igual en cuanto alguien llama directamente al servidor.
Facturación española
Una serie de facturas no se puede reescribir
La normativa española pide que las facturas lleven una serie correlativa y sin saltos. Suena administrativo y es un problema de ingeniería.
La forma habitual de numerar —buscar el último número y sumarle uno— funciona hasta el día en que dos personas facturan a la vez. Entonces aparecen dos facturas con el mismo número, o un hueco en la serie. Y ninguna de las dos cosas se arregla luego.
Nosotros asignamos el número dentro de la misma transacción de base de datos que crea la factura. Dos emisiones simultáneas se ordenan solas, y ninguna puede duplicar ni saltar.
Integrar, no sustituir
El encargo más habitual no es «háganme un programa de facturación»: es «mi sistema ya funciona y ahora tiene que cumplir». Son cosas distintas. Un producto de facturación obliga a cambiar cómo trabaja la empresa; una integración respeta el flujo que ya existe y le añade lo que le falta.
Cada empresa del panel lleva además su propia razón social, identificación fiscal, serie y tipos impositivos. Que una emita su factura 300 no mueve el contador de las demás.
Capaz, no maqueta
Lo que lleva dentro un panel que se usa a diario
Un panel de administración se juzga por lo aburrido: si el gestor puede cerrar el trimestre sin llamar a nadie, está bien hecho. Esto es lo que lleva el que tenemos en producción.
El paquete del gestor, cada trimestre
Libro de facturas emitidas, libro de ingresos y gastos, y un PDF por cada factura. Se genera desde el propio panel: nadie exporta a mano ni cuadra hojas de cálculo la semana antes de presentar.
Preguntas frecuentes
Lo que suelen preguntar antes de empezar
¿Qué es un panel multiempresa y en qué se diferencia de uno normal?
Un panel multiempresa atiende a varias empresas desde una sola instalación, y cada una debe ver únicamente sus datos. La diferencia no está en las pantallas, que se parecen: está en que cada consulta a la base de datos tiene que llevar el filtro de empresa. Un panel normal pregunta «dame la factura 400». Uno multiempresa pregunta «dame la factura 400 de esta empresa», y si no es suya, no existe.
¿Cómo se garantiza que una empresa no vea los datos de otra?
Con una guarda central, no con disciplina. En vez de confiar en que cada programador se acuerde de filtrar, el filtro vive en una función compartida por la que pasan todas las consultas: si alguien escribe una nueva sin usarla, no compila o no devuelve nada. En el panel que tenemos en producción esa guarda cubre 121 manejadores de API. El cuidado se acaba a la tercera pantalla; una guarda central, no.
¿Qué es la numeración fiscal sin huecos y por qué importa?
La normativa española exige que las facturas lleven una serie correlativa y sin saltos. El problema es técnico: si el número se calcula buscando el último y sumando uno, dos facturas emitidas en el mismo instante pueden llevar el mismo número o dejar un hueco. Nosotros asignamos el número dentro de la misma transacción de base de datos que crea la factura, de modo que dos emisiones simultáneas se ordenan solas y ninguna puede duplicar ni saltar.
¿Podéis integrar la facturación verificable en el software que ya tengo?
Es el encargo más habitual. La mayoría de empresas no quiere cambiar de sistema: quiere que el que ya usa cumpla. Se integra el registro de facturación dentro del flujo existente, respetando cómo se trabaja hoy, en lugar de sustituirlo por un producto de facturación al que haya que adaptarse.
¿Se puede facturar desde el panel a varias empresas con distintos datos fiscales?
Sí. Cada empresa lleva su razón social, su identificación fiscal, su serie de facturación propia y sus tipos impositivos. Las series son independientes: que una empresa emita su factura número 300 no mueve el contador de las demás.
¿Qué se le entrega al gestor cada trimestre?
Un paquete con el libro de facturas emitidas, el libro de ingresos y gastos, y un PDF por cada factura. Se genera desde el propio panel, sin que nadie tenga que exportar a mano ni cuadrar hojas de cálculo.
¿Con qué está construido?
Python con FastAPI y SQLAlchemy en el servidor, Next.js en la interfaz y PostgreSQL como base de datos. La infraestructura puede ser autoalojada en la Unión Europea, sin depender de un proveedor externo para los datos.
¿Tu panel aguanta que un cliente cambie un número en la URL?
Es la primera pregunta que hacemos, y la que más veces se responde con un silencio. Cuéntanos qué tienes montado y te decimos por dónde se rompería.
Cuéntanos tu caso