Usuarios y Licencias

Cómo funcionan los usuarios, las licencias (estaciones), la autenticación y las sesiones

AY-014
Menú Ayuda

Enviarle este manual a un usuario

El enlace abre solo este manual, sin el menú del sistema. El usuario no necesita clave ni entrar a FactuPOS: se ve en cualquier navegador y en el celular.

El WhatsApp sale del número de Soporte Real y el correo de info@soportereal.com. Con Compartir desde este teléfono sale de su propio WhatsApp y elige el contacto de su lista, sin escribir el número.

Conceptos básicos

En FactuPOS existen dos conceptos que se confunden con frecuencia y que conviene separar desde el principio:

ConceptoQué es
LicenciaUna estación del sistema. Representa un puesto de trabajo: una caja, una terminal de facturación, una PC de administración, etc.
UsuarioUna persona con credenciales (código y contraseña) que usa el sistema. Cada usuario tiene permisos, grupo, comisión, etc.
En resumen Las licencias son estaciones. Un usuario es la persona que se sienta en esa estación a trabajar. Se cobra por licencias (sesiones simultáneas), no por cantidad de usuarios creados.

¿Qué es una licencia?

Una licencia en FactuPOS es lo mismo que una estación. Cada licencia permite que una persona a la vez esté trabajando en esa estación. El número de licencias que tenga una empresa define cuántas personas pueden estar usando el sistema al mismo tiempo.

Las licencias se administran en el módulo Configuración → Estaciones (CF-006). Cada licencia tiene un nombre identificable, por ejemplo:

  • Caja 1 — Terminal de cobro frente al cliente
  • Caja 2 — Segunda terminal de cobro
  • Administración — PC del encargado para reportes y configuración
  • Bodega — Terminal para recibir mercadería
Facturación de licencias Cada estación es de un tipo: Consulta (solo ver información: no factura ni cambia el inventario) que no se cobra, u Operativa, que sí es licencia de pago. Si la empresa necesita que más personas operen en paralelo, debe contratar más licencias operativas. Los usuarios adicionales nunca tienen costo. El detalle está en el manual de Tipos de Licencia.

¿Qué es un usuario?

Un usuario es una persona que tiene credenciales para entrar al sistema. No es lo mismo que una licencia: usted puede crear todos los usuarios que quiera, sin importar cuántas licencias tenga.

Cada usuario tiene:

  • Código único de hasta 5 caracteres (ej: 00025)
  • Nombre (hasta 50 caracteres), email, teléfono, cédula, dirección
  • Grupo: Usuario, Agente o Referido/Empleado (campo obligatorio)
  • Departamento (hasta 3 caracteres, opcional)
  • Estación predeterminada: la licencia que usará normalmente al entrar. Si se le cambia la estación a un usuario que ya está adentro, el cambio se aplica la próxima vez que entre: mientras no toque Salir y vuelva a entrar, sigue usando la estación anterior.
  • Horario de acceso: franja de días/horas permitida (por defecto "Completo" = 24/7)
  • Comisión (0–100 %) para agentes de venta
  • Contraseña personal (hasta 25 caracteres)
  • Un juego de permisos (qué módulos y acciones puede realizar)

El módulo para administrarlos es Seguridad → Usuarios (SE-001).

Usuarios protegidos Los usuarios 09029 y 59999 son cuentas de sistema. No aparecen en la lista de SE-001 y no se pueden editar ni eliminar desde la interfaz. Cualquier cambio en ellas debe realizarse directamente en la base de datos por un administrador del sistema.

Relación usuario–licencia

Esta es la parte clave. La regla se enuncia en tres puntos:

1. Una licencia puede tener varios usuarios asignados Si varios empleados se turnan en la misma caja, todos pueden tener esa estación como predeterminada.
2. Un usuario no puede estar en varias licencias al mismo tiempo Cada usuario solo puede tener una sesión activa. Si inicia sesión en otra estación, la sesión anterior se cierra automáticamente.
3. Los usuarios de una misma licencia no pueden estar logueados al mismo tiempo Cada licencia es un asiento: solo un usuario a la vez. Si Juan está en Caja 1 y María entra a Caja 1, Juan queda desconectado.

Diagrama

Licencia: Caja 1
Juan María Carlos
Licencia: Caja 2
Ana Pedro
Licencia: Administración
Roberto

3 licencias, 6 usuarios. Máximo 3 personas trabajando simultáneamente (una por licencia).

Reglas de la sesión

  • Una estación = una sesión a la vez. En cada estación solo puede haber una persona trabajando.
  • Si alguien entra a una estación que ya está ocupada, el sistema avisa: "Estación ocupada", con el nombre de quien está adentro. Puede cancelar o continuar; si continúa, la sesión del otro se cierra y esa persona vuelve al login.
  • El mismo usuario SÍ puede quedar abierto en dos estaciones distintas. Al entrar, el sistema avisa "Sesión activa en otro lugar" para que usted lo sepa, pero si continúa la otra sesión NO se cierra: el bloqueo es por estación, no por usuario. Esa otra sesión se cierra sola a las 3 horas sin uso, o en el momento si usted aprieta Salir (ver el punto de abajo).
  • El sistema revisa cada minuto si su sesión sigue siendo la vigente. Si otra persona tomó su estación, o si la sesión ya venció, la pantalla lo devuelve al login sola, sin que usted tenga que hacer nada. Vale para cualquier pantalla que tenga abierta, no solo el menú.
  • La sesión se cierra sola tras 3 horas sin usar el sistema. Es tiempo de inactividad, no vida máxima: cada vez que usted hace algo —una consulta, una factura, abrir un módulo— el contador vuelve a empezar en 3 horas. Quien trabaja durante el día nunca ve la pantalla de login.
  • Al salir con el botón «Salir», la sesión se cierra en todas las computadoras. No solo en la que usted está usando. Lo mismo pasa al cambiarle la contraseña a un usuario: todas sus sesiones abiertas se caen y hay que volver a entrar.
La caja que se queda abierta factura a nombre de quien la dejó abierta El sistema le pone a cada documento el usuario que está abierto en esa computadora. Si alguien se va sin salir del sistema y otra persona atiende en esa máquina, las ventas quedan a nombre del primero. Por eso la sesión ahora se cierra sola a las 3 horas y por eso conviene salir con el botón Salir al terminar el turno.
No comparta contraseñas Aunque dos personas puedan usar la misma licencia a horas distintas, cada una debe tener su propio usuario. Así el sistema registra correctamente quién hizo cada venta, cambio o movimiento.

Login y autenticación

El proceso de acceso al sistema usa un wizard de 4 pasos: servidor, empresa, usuario y contraseña. Una vez completado, el sistema crea una sesión segura en el subdominio de la empresa.

Flujo de verificación de contraseña

FactuPOS nunca almacena la contraseña en texto legible para comparar. El proceso real es:

  1. El usuario escribe su contraseña en el paso 4 del wizard.
  2. El PHP llama al procedimiento almacenado SP_VerificaPasswordUsuario en SQL Server.
  3. El SP carga el salt (UNIQUEIDENTIFIER) y el hash almacenado (VARBINARY(64)) del usuario.
  4. Recalcula: HASHBYTES('SHA2_256', CONCAT(TRIM(clave_ingresada), CAST(salt AS VARCHAR(36)))) con collation binaria.
  5. Si los hashes coinciden, devuelve la fila del usuario y se crea la sesión.

Trigger de hashing automático

Cuando se guarda o cambia una contraseña (desde SE-001 o la API), el trigger TRG_Usuarios_HashClave se dispara automáticamente:

  • Genera un nuevo salt con NEWID().
  • Calcula SHA2_256(CONCAT(TRIM(Password), CAST(NuevoSalt))).
  • Guarda el salt y el hash en Empleados.salt y Empleados.clavesegura.
  • La columna Password queda en texto para la función "Olvidé mi contraseña".

Token "Recordarme" (fp_token)

Si el usuario marca la opción de acceso rápido, el sistema crea una cookie fp_token:

PropiedadValor
TipoHMAC-SHA256 firmado con clave de servidor
Duración3 horas desde el último uso. Mientras se trabaja se renueva solo; si la computadora queda 3 horas sin actividad, el token vence y hay que escribir la contraseña de nuevo.
UsoLogin automático sin ingresar contraseña
InvalidaciónAl salir del sistema o al cambiar la contraseña: se caen los tokens de ese usuario en todas las computadoras, no solo en la que ejecutó la acción.

Función "Olvidé mi contraseña"

  • Disponible en el paso 4 del wizard de login.
  • Envía la contraseña actual al email registrado del usuario.
  • Rate limiting: máximo 5 solicitudes por usuario+empresa en 10 minutos.
  • El email muestra la dirección ofuscada: j***@gmail.com.
Login vs estación predeterminada Desde 2026, el login no modifica la estación predeterminada del usuario en la base de datos. La estación default solo cambia desde el módulo de Configuración o Seguridad. El acceso rápido siempre consulta la estación actual desde la BD, no desde el localStorage.

Contraseñas

Reglas de la contraseña

Toda contraseña nueva tiene que cumplir con todo esto:

  • Mínimo 6 caracteres (máximo 25).
  • Al menos una letra mayúscula y una minúscula.
  • Al menos un número.
  • Al menos un carácter especial, por ejemplo * # @ ! - .

Ejemplo que sirve: Ventas24*. Si la contraseña no cumple, el sistema no la guarda y le dice qué le falta. La regla vale en los tres lugares donde se pone una contraseña: al crear o editar un usuario en SE-001, en Mi Cuenta y en el enlace para restablecer la contraseña.

Las contraseñas que ya existen siguen sirviendo La regla se pide al cambiar la contraseña. Para que los usuarios pasen a una contraseña que cumpla, use el botón Solicitar cambio de clave o espere al vencimiento de la clave.

Cada cuánto vence la contraseña: 3, 6, 12 o 18 meses

Cada contraseña dura 3 meses desde la última vez que se cambió, salvo que la empresa elija otro plazo en el parámetro 971 (Configuración → Parámetros, CF-004): 3, 6, 12 o 18 meses. No hay opción de que no venza nunca: el sistema se usa por internet y una clave que nunca cambia es un riesgo; recomendamos cambiarla al menos cada 6 meses. Cuando ya venció, al entrar al sistema se abre sola la ventana de Mi Cuenta en el cambio de contraseña, con el aviso «Su contraseña ya venció… Ya debe cambiar su contraseña».

  • Puede cambiarla en ese momento (con las reglas de arriba) y el aviso no vuelve a salir hasta que se cumpla otra vez el plazo de la empresa.
  • O puede tocar Cancelar y seguir trabajando normal: no se bloquea. Pero el aviso le vuelve a salir cada vez que entre hasta que la cambie (recargar el menú o volver de un módulo no lo repite).
  • Cuenta cualquier cambio: desde Mi Cuenta, cuando el administrador se la cambia en SE-001 o con el enlace de restablecer.
  • Si se cambia el plazo, rige de una vez para todos, contado desde el último cambio de cada uno (ej.: de 3 a 6 meses, a quien la cambió hace 4 meses deja de salirle el aviso).
  • Cuando el administrador pide el cambio, el aviso sale aunque el plazo no se haya cumplido.

Cambio de contraseña de un usuario

  1. En SE-001, tocar el lápiz del usuario para abrir la edición (permiso 902).
  2. Escribir la nueva contraseña en el campo «Nueva contraseña» (vacío = no se cambia).
  3. Guardar. Al usuario se le cierran las sesiones que tenga abiertas en otras computadoras.
  4. Si tiene correo y/o celular registrado, recibe la nueva clave por correo y WhatsApp.

Solicitar cambio de clave a los usuarios que usted elija

El botón naranja Solicitar cambio de clave, arriba en SE-001 (en el celular, el ícono de la llave junto a «Salir»), abre la ventana MSE-004 con la lista de usuarios activos. Ahí se marcan con la casilla los usuarios a los que se les quiere cambiar la clave (con Todos / Ninguno y un buscador). Al lado de cada uno se ve si tiene correo y WhatsApp (en verde = lo tiene). A cada usuario marcado:

  • se le cierra la sesión si estaba trabajando (opcional);
  • la próxima vez que entre (con su clave de siempre) se le abre la ventana para cambiar la contraseña, con el aviso «Por seguridad, su empresa pidió que cambie su contraseña». Puede tocar Cancelar y seguir, pero le vuelve a salir en cada ingreso hasta que la cambie (igual que el vencimiento de la clave);
  • le llega por correo y/o WhatsApp un enlace para cambiarla desde ahí (vence en 24 horas, un solo uso).

El cierre de sesión y el enlace son dos casillas de la misma ventana, marcadas de entrada: si las desmarca, solo queda el pedido de cambio para cuando el usuario vuelva a entrar.

Qué NO hace No le anula la clave a nadie: así ningún usuario se queda afuera, aunque no tenga correo ni celular (a ese no le llega el enlace, pero igual se le pide el cambio al entrar). En la lista no aparecen el administrador ni usted (el usuario con el que entró), ni los usuarios inactivos. Todo queda en la bitácora en una sola línea, con la lista de los usuarios.

Requiere el permiso 902 (Editar usuarios); sin él, el botón sale gris y al tocarlo dice cuál falta.

Usuarios protegidos

Los códigos 09029 y 59999 no aparecen en la lista de usuarios de SE-001 y no se pueden editar desde la interfaz web. Son cuentas de sistema reservadas para administración.

Imagen de seguridad tras 3 intentos fallidos

A partir del tercer intento fallido seguido, la pantalla de ingreso agrega una imagen con letras que hay que copiar en el campo de abajo para poder seguir intentando. Es un control automático contra programas que prueban contraseñas en cadena.

  • Quien sabe su contraseña no la ve nunca: aparece recién al tercer error, no en el ingreso normal.
  • Se olvida sola: si pasan 15 minutos sin intentos, la cuenta vuelve a cero y la imagen desaparece. También desaparece apenas se ingresa bien.
  • Copiar mal las letras NO cuenta como intento fallido, así que leer mal la imagen no aprieta más el bloqueo. Se perdonan varios errores de tipeo sobre la misma imagen; después hay que pedir una nueva.
  • Las letras no distinguen mayúsculas de minúsculas, y la imagen no usa caracteres que se confundan entre sí (no hay O ni 0, ni I ni 1).
  • Si la oficina entera sale a internet por una misma conexión, los intentos fallidos de un compañero pueden hacer que a otro también le aparezca la imagen durante esos 15 minutos.
La imagen la genera nuestro propio servidor No se usa ningún servicio externo: no se le envían datos de sus usuarios a terceros y la pantalla sigue funcionando aunque un proveedor de afuera se caiga.

Sesiones multi-subdominio

Cada empresa en FactuPOS opera en su propio subdominio (ej: mitienda.factupos.com). Las cookies de sesión están aisladas por subdominio, por lo que el sistema usa un mecanismo especial para transferir la sesión del dominio principal al subdominio de la empresa.

Flujo de transferencia

  1. El usuario completa el wizard en factupos.com (dominio principal).
  2. El servidor genera un token aleatorio de 64 caracteres hex usando bin2hex(random_bytes(32)).
  3. El token se guarda en /tmp/factupos_transfers/{token}.json con los datos de sesión y un timestamp.
  4. El sistema redirige al usuario al subdominio con el token en la URL:
    https://empresa.factupos.com/auth.php?transfer={token}
  5. El auth.php del subdominio lee el archivo, valida que tenga menos de 30 segundos, crea la sesión local y elimina el archivo inmediatamente.
CaracterísticaDetalle
Tiempo de vida30 segundos máximo
ReutilizableNo — se elimina al primer uso
Formato64 caracteres hexadecimales aleatorios
Almacenamiento/tmp/factupos_transfers/ (filesystem compartido)
LimpiezaTokens de más de 1 hora se purgan automáticamente
Por qué no se usa cookie compartida Una cookie con domain=.factupos.com compartiría sesión entre todos los subdominios, rompiendo el aislamiento multi-tenant. El mecanismo de token un solo uso es más seguro porque no expone datos de sesión en cabeceras HTTP.

Tus accesos guardados (y por qué a veces no aparecen)

Entrar «a pie» son cuatro pasos: correo de la empresa → empresa → usuario → contraseña. La casilla «Recordar este acceso» existe para saltárselos: guarda la empresa y el usuario, y si además marcás «Guardar también mi clave», guarda la contraseña. Ese acceso aparece después como un botón con tu nombre arriba de todo, en «Tus accesos»: al tocarlo, el sistema elige empresa y usuario por vos, pone la clave y entra.

El rayito del botón Si el acceso muestra un rayo, tiene la clave guardada y entra de una. Si no lo muestra, te elige la empresa y el usuario, pero te va a pedir la contraseña.
Si te cambian la estación, el acceso se pone al día solo El acceso guardado recuerda la empresa, el usuario y la clave, pero la estación no la toma de lo guardado: cada vez que abrís la pantalla de ingreso, el sistema consulta qué estación tiene asignada hoy cada acceso y lo actualiza. Si te asignaron una licencia nueva, tocá Salir, esperá un par de segundos en la pantalla de ingreso y tocá tu acceso: entrás por la estación nueva.

Se guardan en tu equipo, y por sitio

Esos accesos no se guardan en el servidor: quedan en el navegador de esa computadora o de ese teléfono. Por eso no viajan de un equipo a otro, y por eso conviene marcar «Guardar también mi clave» solo en un equipo de uso personal: quien lo use podrá entrar a tu cuenta.

Y hay una segunda parte, que es la que confunde: el navegador guarda esas cosas separadas por sitio. Lo guardado en invefacon.net no lo ve invefacon.com, ni factupos.com. Son cajones distintos, aunque sea la misma computadora y el mismo sistema.

Por qué a veces entrás por un sitio y a veces por otro

El sistema sale a internet por dos proveedores distintos, uno por cada dominio. Cuando entrás por factupos.com, la página te manda al que esté funcionando en ese momento; si uno se cae, entrás por el otro. Vos no elegís cuál: te lo da la conexión del día. Y como cada sitio tiene su propio cajón, un día ves tus accesos y otro día la lista aparece vacía, sin que hayas borrado nada.

Cómo se traen los accesos de los otros sitios

Cuando abrís la pantalla de ingreso y ese sitio no tiene ningún acceso guardado, el sistema va a buscarlos solo: la pantalla pasa un segundo por una página que dice «Sincronizando tus accesos…» y vuelve con la lista completa. No hay que tocar nada. Si la lista ya tiene sus accesos, no hace el viaje: no hace falta.

Funciona en los dos sentidos: los accesos de este sitio se suman a los de los demás, y volvés con todo junto. Lo intenta una vez cada tres días por sitio, para no rebotar en cada ingreso cuando no hay nada que traer.

Tu contraseña no pasa por el servidor En ese viaje los datos van por dentro de la dirección del navegador, en la parte que no se envía al servidor. La contraseña guardada va de un sitio al otro sin quedar registrada en ningún lado, y el viaje solo puede terminar en un sitio nuestro: la dirección de regreso se revisa contra una lista fija de dominios.
Si el sitio principal no contesta Antes de viajar, el sistema revisa que se pueda llegar al sitio donde se juntan los accesos (factupos.com). Si no contesta —por una caída del internet, por ejemplo— no lo lleva a ningún lado: la pantalla de ingreso queda como está, para que entre escribiendo su correo y su clave como siempre.
Ya no hay botón «Traer mis accesos guardados» Hasta octubre de 2026 la pantalla de ingreso mostraba ese botón cuando el sitio no tenía accesos. Se quitó: el viaje lo hace el sistema solo.

Al salir del sistema

Cuando toca Salir en el menú, el sistema cierra la sesión, libera la caja y lo deja en la pantalla de ingreso de factupos.com. Sus accesos guardados siguen ahí —salir no los borra—, pero no se usan solos: para volver a entrar hay que tocar el acceso.

Corregido: salir y que volviera a entrar solo Si usted entraba con un acceso guardado y salía a los pocos segundos, el sistema lo tomaba por error como una caída de la conexión y volvía a entrar solo con la clave guardada. Ya no pasa: salir es salir.

Estaciones en el login

Al autenticarse, el sistema debe saber en qué estación (licencia) trabaja el usuario. La estación se determina así:

  1. El wizard de login carga la lista de estaciones disponibles desde la BD.
  2. Si el usuario tiene una estación predeterminada configurada (Empleados.EstacionId), esa se preselecciona automáticamente.
  3. Si no tiene predeterminada, se usa la primera estación de la lista.
  4. Si no hay estaciones, el campo queda vacío y el login es bloqueado con el mensaje "Debes seleccionar una estación".

Consulta de estaciones (con fallback)

La lista de estaciones del modal de usuarios (SE-001) se carga con fallback:

IntentoQueryResultado si falla
1 (principal)SELECT Id, EstacionNombre FROM vista_estacionesPasa al intento 2
2 (fallback)SELECT id AS Id, EstacionNombre FROM EstacionesLog de error + lista vacía
3 (vacía)—Label muestra "(no se pudo cargar)" en rojo
PK de Estaciones La tabla Estaciones tiene la PK como id (minúsculas). La vista vista_estaciones la expone como Id. Siempre que sea posible, use la vista.

Horarios de acceso

Cada usuario puede tener asignado un horario de acceso que restringe en qué días y horas puede entrar al sistema. Si intenta acceder fuera de su horario, el menú principal le muestra una pantalla de bloqueo con reloj en vivo.

Los horarios se administran en Seguridad → Horarios de Acceso (permiso 176 para entrar y 177 para crear, editar o eliminar). Cada horario define 7 días (Dom–Sáb) con hora de inicio, hora de fin y si ese día está activo.

HorarioDescripciónEditable
1 — CompletoAcceso 24/7 todos los días.No (protegido)
2 — VentasLunes a Sábado, 07:00–17:00.Sí
PersonalizadosCreados por el administrador según necesidad.Sí
Horario obligatorio Al crear o editar un usuario, el campo Horario de acceso es obligatorio: hay que elegir uno conscientemente (ya no se asigna "Completo" de forma automática). Si querés que el usuario entre sin restricción, seleccioná explícitamente Completo. Los usuarios anteriores que no tenían horario quedan en Completo.
Zona horaria La validación de horario usa siempre America/Costa_Rica (UTC-6, sin cambio de hora). Si el servidor está en otra zona, los horarios pueden no coincidir con lo esperado.

Contrato de servicio y batería

En el encabezado del sistema aparece una batería estilo celular de 8 segmentos que representa el estado del contrato de servicio con el proveedor (SoporteReal). Funciona consultando la cuenta por cobrar (CxC) del cliente en la base de datos del proveedor.

Significado de la batería

SegmentosDías vencidoColorAcción
8/8 (100%)0Verde oscuroNinguna
7/81Verde esmeraldaSolo muestra batería
6/82VerdeSolo muestra batería
5/83Verde limaSolo muestra batería
4/84AmarilloSolo muestra batería
3/85NaranjaSolo muestra batería
2/86Naranja rojoOverlay con contador + pulso
1/87RojoOverlay con contador + pulso
0/8 (0%)8+GrisMenú bloqueado

Bloqueo total (día 8 en adelante)

  • Las tarjetas del menú quedan grises e inactivas (pointer-events: none).
  • Se abre automáticamente el modal "Reportar Pago".
  • No se puede navegar por el sistema hasta que el proveedor registre el pago.

Parámetros del contrato

ParámetroDescripción
226Nombre de la BD del proveedor de servicios (ej: soporterealsrl)
214Código de cliente en la BD del proveedor = número de contrato
Overlay días 6 y 7 En los días 6 y 7 de atraso aparece un overlay con un contador de max(5, días × 3) segundos. Al terminar el contador el usuario puede seguir usando el sistema, pero el overlay vuelve a aparecer cada vez que carga una página.

Ejemplos prácticos

Ejemplo 1: Restaurante con 2 cajas

El restaurante tiene 2 licencias (Caja 1 y Caja 2) pero 5 empleados que se turnan:

  • Los 5 usuarios se crean en Seguridad → Usuarios.
  • A cada empleado se le asigna una estación predeterminada según su turno.
  • Solo pueden trabajar 2 personas a la vez (una por caja).
  • Si un tercero necesita entrar, tiene que esperar o desplazar a uno.

Ejemplo 2: Tienda con 1 caja y 1 admin

La tienda tiene 2 licencias (Caja y Administración):

  • La cajera usa siempre la licencia "Caja".
  • El dueño usa siempre la licencia "Administración" para ver reportes.
  • Ambos pueden estar conectados al mismo tiempo porque son licencias distintas.

Ejemplo 3: Necesito más gente trabajando al mismo tiempo

Si su empresa crece y ahora necesita 3 personas facturando en paralelo, debe:

  1. Contactar a Soporte Real para contratar una licencia adicional.
  2. Una vez activada, crear la nueva estación en Configuración → Estaciones.
  3. Asignar la nueva estación como predeterminada a los usuarios que la vayan a usar.

Grupos de usuario

Cada usuario pertenece a un grupo. El grupo cambia el comportamiento del usuario en reportes, comisiones y módulos. Es un campo obligatorio al crear o editar un usuario.

Código BDNombreUso típico
1UsuarioPersona interna del sistema: cajero, bodeguero, contador, admin.
2AgenteVendedor que gana comisión sobre las facturas que emite. Aparece en reportes de comisiones. Puede tener % de comisión configurado.
3Referido / EmpleadoRelación externa o empleado sin acceso operativo directo al módulo de facturación.

El grupo se almacena en Empleados.Grupo (columna CHAR(1), puede ser NULL en registros legacy).

El grupo es obligatorio Al crear un usuario debe escoger el grupo. El sistema valida este campo antes de guardar y devuelve error si está vacío.

Crear un usuario

  1. Entrar a Seguridad → Usuarios (SE-001).
  2. Hacer clic en el botón Nuevo en la parte superior del panel de usuarios (requiere permiso 901).
  3. Completar los campos del modal. Los marcados con asterisco son obligatorios: Nombre, Grupo y Contraseña.
  4. Seleccionar la Estación (licencia) donde trabajará normalmente. Junto al nombre de cada estación se muestra su detalle (información del último ingreso: quién, cuándo y desde dónde), y al elegirla el detalle completo aparece debajo del campo — útil para identificar la estación correcta antes de asignarla.
  5. Seleccionar el Horario de acceso (por defecto "Completo" = 24/7).
  6. Si es agente, poner el % de comisión (0–100).
  7. Guardar. Si puso email, el sistema le envía la contraseña por correo automáticamente.
  8. Después de crearlo, asignarle permisos en el panel derecho de la misma pantalla.
Copiar y Igualar perfil de permisos
  • Copiar Perfil (perm 906): agrega los permisos del usuario modelo al destino, sin quitar los que ya tenía.
  • Igualar Perfil (perms 906 + 907): el usuario destino queda con exactamente los mismos permisos del modelo. Agrega los faltantes y quita los sobrantes. Permite seleccionar múltiples destinatarios a la vez.
Versión móvil disponible 2026-05-11 Al abrir Seguridad → Usuarios desde celular o tablet, el sistema redirige automáticamente a una vista optimizada para pantalla pequeña: cards apiladas, búsqueda sticky, botón flotante "+ Nuevo" y modales a pantalla completa para edición y permisos. Las acciones disponibles son las mismas (crear, editar, cambiar estado, asignar permisos, copiar e igualar perfil). Si necesitás la vista de escritorio desde el móvil, agregá ?desktop=1 al final de la URL.

Validaciones y límites de campos

El sistema aplica validaciones tanto en el frontend (atributos maxlength) como en el backend antes de ejecutar el INSERT o UPDATE en la tabla Empleados.

CampoColumna BDTipoMáx. caracteresRequerido
CódigoCod_UsuarioVARCHAR5Sí (auto-generado)
NombreNombreVARCHAR50Sí
ContraseñaPasswordHashVARCHAR6 a 25 · mayúscula, minúscula, número y especial (reglas)Sí (solo en nuevo)
EmailEmailVARCHAR100No
TeléfonotelefonosVARCHAR100No
DirecciónDireccionVARCHAR100No
CédulaCedulaVARCHAR20No
GrupoGrupoCHAR(1)1Sí
DepartamentoCod_DepartamentoVARCHAR3No
Comisión (%)ComisionNUMERIC(9)—No (0–100)

Estados de usuario

CódigoEstadoColor en listaPuede entrar
1ActivoVerdeSí
2InactivoAmarilloNo
3EliminadoRojoNo

La eliminación es lógica (se marca como eliminado, no se borra físicamente), para conservar la trazabilidad de facturas, recibos y movimientos históricos.

Las casillas de permisos salen grises y «Todos» no hace nada

Es la situación más reportada de esta pantalla: se ve la lista completa de permisos del usuario, pero ninguna casilla se deja marcar y los botones «Todos» y «Ninguno» no producen ningún cambio.

No es una falla: le faltan los permisos 906 y 907 Para ver los permisos de los demás basta con el 910. Para modificarlos hacen falta otros dos: el 906 para marcar (dar) y el 907 para desmarcar (quitar). Con el 910 y sin el 906/907 la pantalla queda de solo lectura: entra, muestra todo y no deja tocar nada.
Lo que tieneLo que puede hacer en esta pantalla
910Ver los permisos de cada usuario. Nada más. Casillas grises.
910 + 906Ver y agregar permisos. Las casillas ya marcadas siguen grises (no las puede quitar).
910 + 906 + 907Ver, agregar y quitar. Es el juego completo, el que necesita quien administra la seguridad.

Desde setiembre de 2026 la pantalla dice el motivo: la casilla bloqueada lo muestra al pasar el mouse por encima, y los botones «Todos» / «Ninguno» salen en gris y avisan con un mensaje cuál permiso falta. Antes no decían nada y parecía que la pantalla estaba mala.

¿Quién se los da? El dueño de la empresa, no Soporte Real (#1133) Los permisos de un usuario los otorga el dueño o administrador de la empresa — otro usuario de la misma empresa que ya tenga el 906 y el 907. Se los asigna en esta misma pantalla: lo elige en la lista de la izquierda, busca 906 y 907 en el buscador de permisos y marca las dos casillas.

Soporte Real no asigna permisos de usuario. Quién ve la contabilidad, quién cambia precios o quién anula una factura es una decisión de la empresa sobre su propia información, y la toma quien responde por ella — no el personal de soporte. Nosotros le explicamos el procedimiento y le ayudamos con cualquier duda, pero la habilitación la hace el dueño desde su propio usuario, y así queda registrada a su nombre en la bitácora (SE-004).
Ojo: los permisos NO son la única llave del Excel Si lo que busca es descargar reportes a Excel, tenga presente que unos pocos reportes sensibles (catálogos de clientes, artículos, cuentas contables y toda la cartera de Cuentas por Cobrar y por Pagar) llevan una segunda llave a nivel de empresa que solo abre Soporte Real. Ver El botón de Excel está gris (AY-119).

Permisos del módulo

El módulo de Seguridad tiene sus propios permisos. Se asignan desde el panel de permisos de SE-001 o desde Seguridad → Permisos del Sistema (SE-002).

CódigoNombreQué autorizaSubmódulo
176 · 177 Horarios de Acceso 176 entra a Horarios de Acceso; 177 crea, edita y elimina horarios. Sin el 176 la opción sale en gris en el menú. (Antes era el 900 «Módulo seguridad», que se retiró.) Horarios
901 Crear Usuarios Permite crear nuevos usuarios. Sin este permiso, el botón "Nuevo" aparece deshabilitado en gris. SE-001
902 Editar Usuarios Permite editar datos de usuarios existentes (nombre, email, contraseña, grupo, estado, estación, horario) y usar el botón Solicitar cambio de clave. SE-001
903 Cambiar Estado Permite activar, inactivar o marcar como eliminado un usuario. La eliminación es lógica. SE-001
906 Asignar Permisos Permite agregar permisos a un usuario, así como usar "Copiar Perfil" e "Igualar Perfil". SE-001, SE-002
907 Quitar Permisos Permite remover permisos de un usuario. Requerido junto con 906 para usar "Igualar Perfil". SE-001, SE-002
910 Marcas de Reloj Acceso al módulo de marcas de reloj (asistencia/planilla). Planilla
911 Bitácora del Sistema Acceso al módulo de Bitácora (SE-004): ver registro histórico de acciones de todos los usuarios. SE-004
912 Mis Claves Acceso al gestor de contraseñas de servicios externos (Netflix, bancos, etc.). Mis Claves
Sin permiso: botón gris, no oculto Cuando un usuario no tiene permiso para una acción, el botón correspondiente aparece deshabilitado en gris con un tooltip "Sin permiso". Nunca se oculta, para que el usuario sepa que la función existe aunque no tenga acceso a ella.

Asignar permisos: pantalla de 3 columnas

Al hacer clic en un usuario de la lista, la asignación de permisos se muestra en tres columnas de izquierda a derecha:

  1. Usuarios — la lista donde elegís a quién configurar.
  2. Módulos — la lista de áreas (Facturación, Inventarios, Contabilidad, Planilla…). Cada módulo muestra un contador asignados / total y una barrita que se va llenando según cuántos permisos de ese módulo tiene el usuario. Arriba está «Todos» para ver el total. Cada módulo tiene su ícono y su color —los mismos de su ficha en el menú principal— y cada permiso lleva una franja de ese color, así en «Todos» se reconoce de un vistazo a qué módulo pertenece. En el celular los módulos son pestañas con el mismo ícono y color.
  3. Permisos — la lista de permisos del módulo elegido. Cada uno tiene una casilla para marcar (asignar) o desmarcar (quitar).

Al hacer clic en un módulo, la tercera columna se filtra a los permisos de ese módulo; «Todos» muestra la lista completa. Marcar requiere el permiso 906 y desmarcar el 907; si no los tenés, la casilla aparece deshabilitada y al pasar el mouse te dice cuál permiso falta (ver Las casillas salen grises).

Atajo: asignar de golpe un grupo de permisos Los botones «Todos» y «Ninguno» respetan lo que haya en el buscador de permisos: solo tocan los que se están mostrando. Por ejemplo, escribir Excel en el buscador y apretar «Todos» le asigna a esa persona los permisos de exportación y no toca ningún otro. No use «Copiar» para eso: copia el perfil entero.

El filtro de permisos se conserva al cambiar de usuario

Arriba de la tercera columna está el buscador de permisos, junto con los filtros Todos / Asignados / Pendientes y el orden. Lo que escriba ahí se mantiene puesto cuando cambia de usuario: no hay que volver a escribirlo cada vez.

Para qué sirve: el mismo permiso a varias personas Escriba una sola vez el permiso que busca (por ejemplo 648), y vaya haciendo clic de un usuario a otro en la primera columna: la lista de permisos ya viene filtrada en cada uno. Solo marca la casilla y pasa al siguiente. Antes había que volver a escribir la búsqueda con cada usuario.

Se conservan el texto del buscador, el módulo que tenga elegido en la segunda columna, el filtro Asignados / Pendientes y el orden.

El botón «Limpiar»

Al lado del buscador está el botón Limpiar: de un solo clic borra el texto del buscador, vuelve el filtro a Todos y la segunda columna a Todos los módulos. El orden que haya elegido no se toca. También puede borrar el texto a mano, como siempre.

Cómo saber que hay un filtro puesto Cuando hay un filtro activo, el botón Limpiar se pone amarillo. Y si el filtro no deja ningún permiso a la vista, la pantalla lo dice — «Ningún permiso coincide con el filtro que está puesto» — con un enlace para limpiarlo. Así la lista nunca aparece vacía sin explicación.

En la versión de celular funciona igual: el filtro se conserva al abrir los permisos de otro usuario, y la ✕ que está junto al buscador lo limpia.

Ver quién más tiene un permiso (y quitárselo)

Debajo de la lista de permisos hay un panel. Al hacer clic sobre un permiso, ese panel muestra qué otros usuarios activos también lo tienen, en forma de etiquetas con su código y nombre.

Quitar el permiso a otro usuario desde el panel Cada etiqueta del panel trae una «✕» para quitarle ese permiso a ese usuario sin tener que buscarlo en la lista. Pide confirmación y queda registrado en la bitácora. Requiere el permiso 907 (Quitar permisos). Los usuarios protegidos del sistema (administrador) no se pueden modificar y no muestran la «✕».

Asignar o quitar un permiso a TODOS los usuarios de un golpe

Hay permisos que tienen que tenerlos todos. Para no ir usuario por usuario, al hacer clic sobre un permiso aparecen a la derecha de ese mismo panel dos botones con el número del permiso:

BotónQué haceRequiere
Asignar N a todos los demás usuarios (verde) Le da ese permiso a todos los usuarios activos que todavía no lo tienen. 906
Quitar N a todos los usuarios (rojo) Le quita ese permiso a todos los usuarios activos, menos al administrador y a usted (el usuario con el que entró), para que nadie se quede sin acceso a esta pantalla. 907
Antes de aplicar, le dice a cuántos toca El sistema cuenta primero cuántos usuarios se van a cambiar y le pide confirmación con ese número (por ejemplo «¿ASIGNAR el permiso [158] … a 12 usuario(s)?»). Los usuarios inactivos o eliminados no se tocan. El cambio queda en la bitácora en una sola línea, con la lista de los usuarios afectados.

Si le falta el permiso 906 o 907, el botón sale gris y al tocarlo le dice cuál falta. En la versión de celular los mismos dos botones están en el panel de abajo, al tocar un permiso.

¿Quién le dio (o le quitó) un permiso a un usuario?

Cada vez que alguien marca o desmarca un permiso en esta pantalla, queda un renglón en la Bitácora del Sistema SE-004 a nombre de quien lo hizo, con fecha y hora. Para averiguarlo:

  1. Entre a Seguridad → Bitácora del Sistema (requiere el permiso 911).
  2. En Detalle escriba el código del usuario que quiere revisar (por ejemplo 00038).
  3. Ponga el rango en Desde y Hasta.
  4. Busque con Origen = Actual y repita con Origen = Histórico: lo que tiene más de un año se archiva solo y sale únicamente ahí.

Los renglones dicen «Permiso asignado: [N] … al usuario [código] NOMBRE» o «Permiso removido: …», y las columnas Usuario y Nombre son de quien hizo el cambio. Con el botón Excel se puede bajar la lista.

Copiar deja un renglón con la lista de los permisos que se le pusieron al usuario («Permisos copiados: … Asignados: 101, 102…»), e Igualar deja un renglón por cada usuario que cambió, con los permisos que se le asignaron y los que se le quitaron («Permisos igualados a [modelo] … en el usuario [código] NOMBRE. Asignados (N): … Quitados (N): …»).

Tres cosas que explican un resultado «incompleto»
  • Antes de enero de 2026 la bitácora no anotaba permiso por permiso: guardaba el perfil con que se creó o se cambió el usuario («asigna nuevo perfil=CAJERO, al usuario …»). Si un permiso no tiene renglón de «asignado», lo más probable es que venga de ese perfil.
  • Antes del 20 de octubre de 2026, igualar dejaba un solo renglón («Permisos igualados») que nombraba al usuario modelo y no a los que recibieron el cambio, y copiar decía cuántos permisos pero no cuáles. Para esas fechas busque esas palabras en Detalle.
  • Buscar solo el código puede traer renglones ajenos (un artículo o una factura que contenga ese número). Para afinar, escriba el código con sus corchetes, tal como sale en el renglón: [00038].

Aviso por correo cada vez que se asigna o se quita un permiso

Cada cambio de permisos manda un correo al correo de Mensajes Sistema de la empresa (parámetro 194, en Configuración → Datos Empresa). Así el dueño o el encargado se entera al momento, sin tener que revisar la bitácora.

Dónde se hace el cambioQué correo llega
Marcar o desmarcar la casilla de un permisoUno por cada permiso asignado o quitado.
Quitar el permiso a otro usuario (panel de abajo) o desde Permisos del Sistema SE-002Uno por cada permiso quitado.
Asignar / Quitar a todos, Copiar e IgualarUn solo correo con la lista completa de usuarios y permisos que cambiaron.

El correo dice la fecha y hora, la empresa, quién hizo el cambio y desde qué estación, y el detalle: + Asignado / − Quitado, el usuario y el permiso.

Varios correos y cómo apagarlo En el parámetro 194 se pueden poner varios correos separados por coma: el aviso les llega a todos. Si el parámetro está en blanco, no se manda nada. Solo avisa lo que de verdad cambió (quitar un permiso que el usuario ya no tenía no manda correo), y el cambio de permisos no se demora por el envío.

Parámetros de empresa

Los parámetros relacionados con seguridad y sesiones se configuran desde Configuración → Parámetros (CF-004).

CódigoNombreQué controlaValores
54 Nombre del negocio (corto) Nombre corto del negocio que aparece en el encabezado y en correos a usuarios. Texto libre
62 Nombre de la empresa Razón social completa. Se usa en el título de los módulos del área de Seguridad. Texto libre
68 Días de vigencia del token (fp_token) Cantidad de días que el token "Recordarme" mantiene la sesión activa sin requerir login. Número entero (ej: 30)
73 URL base del sistema URL raíz usada para construir enlaces en correos enviados a usuarios (ej: link de acceso). URL (ej: https://empresa.factupos.com)
106 Email del sistema Dirección desde la cual se envía la contraseña por email al crear o editar un usuario. Dirección de email
194 Email mensajes sistema Recibe el aviso por correo de cada permiso asignado o quitado (además de las otras alertas del sistema). Uno o varios emails separados por coma · en blanco = sin aviso
214 Código cliente en BD proveedor Número de contrato del cliente en la BD del proveedor de servicios. Usado para la batería de contrato. Código alfanumérico
226 BD del proveedor de servicios Nombre de la base de datos del proveedor donde se consulta el estado de la CxC (ej: soporterealsrl). Nombre de base de datos
971 Meses que dura la contraseña Cada cuántos meses se le pide a cada usuario cambiar su contraseña al entrar (ver vencimiento). 3 (por defecto), 6, 12 o 18. Otro valor no se guarda

Tablas de base de datos

Referencia de las tablas y vistas principales que usa el módulo de Seguridad.

Tabla / VistaUso principalNotas
EmpleadosUsuarios del sistemaPK: Cod_Usuario VARCHAR(5). Contiene Password (texto), salt y clavesegura.
DerechosUsuarioPermisos individuales asignadosColumnas: UsuarioCodigo + DerechoCodigo
DerechosSistemaCatálogo de todos los permisosColumnas: Cod_Derecho, Descripcion, Cod_Modulo
HorarioAccesoGrupos de horarioPK: HorarioAccesoId. Id=1 (Completo) es protegido.
HorarioAccesoDetalle7 filas por grupo (un día cada una)Columnas: DiaSemana (0=Dom–6=Sáb), HoraInicio, HoraFin, Activo
BitacoraSistemaRegistro de auditoría del sistemaConsultado en SE-004 (permiso 911)
UsuarioClavesGestor de contraseñas externasSolo para el módulo "Mis Claves" (permiso 912)
EstacionesLicencias del sistemaPK: id (minúsculas)
vista_estacionesExpone estaciones con Id (PascalCase)Usar preferentemente sobre la tabla directa
vista_permisos_sistemaPermisos con nombre de móduloColumnas: PermisoCodigo, PermisoNombre, ModuloCodigo, ModuloNombre
vista_usuariosLista de usuarios para SE-001Incluye estado, grupo, estación

Procedimientos almacenados clave

SP / TriggerFunción
SP_VerificaPasswordUsuarioVerifica contraseña calculando SHA2_256 con salt almacenado. Retorna fila del usuario si coincide.
TRG_Usuarios_HashClaveAFTER INSERT/UPDATE en Empleados. Genera nuevo salt con NEWID() y recalcula clavesegura automáticamente.

Preguntas frecuentes

¿Cómo abro (creo) un segundo usuario para otra persona?

En Seguridad → Usuarios (SE-001), botón Nuevo (requiere permiso 901). Llene Nombre, Grupo y Contraseña —los tres obligatorios—, escoja la Estación donde va a trabajar y guarde; después márquele los permisos en el panel de la derecha (o use Copiar perfil desde un usuario parecido). Los pasos completos están en Crear un usuario.

Ojo con la diferencia. Crear el usuario no cuesta nada y no tiene límite, pero no habilita a dos personas a trabajar al mismo tiempo: eso lo da la licencia (estación). Si las dos van a estar conectadas a la vez, hace falta una segunda licencia; si se turnan en la misma computadora, con la que ya tiene alcanza. Ver Relación usuario–licencia.

¿Y si el usuario nuevo solo va a consultar?

Ese caso no consume licencia de pago. Se le crea el usuario con permisos de solo ver —reportes, existencias, consultas— y queda entendido que no puede facturar ni hacer cambios en el inventario. Es la opción para quien necesita revisar información sin tocar nada. Si más adelante esa persona va a facturar o mover inventario trabajando al mismo tiempo que otra, ahí sí hay que habilitarle una licencia: consúltenos el costo.

¿Cuántos usuarios puedo crear?

Todos los que quiera. Los usuarios no se cobran: lo que se cobra son las licencias (sesiones simultáneas).

¿Puedo usar el mismo usuario en dos computadoras al mismo tiempo?

No. Cada usuario tiene una sola sesión activa. Si inicia sesión en otra parte, la anterior se cierra automáticamente.

¿Pueden dos usuarios usar la misma licencia al mismo tiempo?

No. Cada licencia permite un usuario a la vez. Si María entra a Caja 1 y Juan estaba usándola, Juan queda desconectado.

¿Cómo sé cuántas licencias tengo?

En Configuración → Estaciones puede ver la lista completa. Cada estación activa es una licencia.

¿Qué pasa si quiero eliminar un usuario?

Se puede Inactivar (queda en amarillo, no puede entrar pero se conservan sus registros) o Eliminar (se marca como eliminado en rojo). No se borra físicamente para mantener la trazabilidad de facturas, recibos, etc.

¿Cómo cambio la contraseña de un usuario?

Seleccionar el usuario, abrir el modal de edición (requiere permiso 902) y escribir la nueva contraseña (debe cumplir las reglas). Si el usuario tiene correo o celular, recibe la nueva clave por correo y WhatsApp. Para obligar a varios a cambiarla, use Solicitar cambio de clave.

¿Los usuarios del sistema (09029, 59999) se pueden editar?

No. Son usuarios protegidos del sistema. No aparecen en la lista ni se pueden modificar ni eliminar desde la interfaz web.

¿Qué tan segura es la contraseña almacenada?

Las contraseñas se verifican con SHA-256 con salt aleatorio (UNIQUEIDENTIFIER único por usuario). El hash se recalcula con cada cambio de clave. Sin embargo, la clave en texto también se guarda en la columna Password para permitir la función "Olvidé mi contraseña".

La batería del contrato aparece en cero. ¿Qué hago?

Significa que hay 8 o más días de atraso en el pago del servicio. Use el modal "Reportar Pago" (se abre automáticamente) para notificar a Soporte Real que realizó un pago. El sistema se desbloqueará cuando el proveedor confirme el pago en su sistema.

Un usuario dice que su estación no aparece en el dropdown del login

Si la lista de estaciones queda vacía, usualmente es porque la vista vista_estaciones no está disponible en esa empresa. El sistema intenta un fallback automático a la tabla Estaciones directa. Si tampoco funciona, contacte a soporte técnico para verificar la migración de vistas.