Conceptos básicos
En FactuPOS existen dos conceptos que se confunden con frecuencia y que conviene separar desde el principio:
| Concepto | Qué es |
|---|---|
| Licencia | Una estación del sistema. Representa un puesto de trabajo: una caja, una terminal de facturación, una PC de administración, etc. |
| Usuario | Una persona con credenciales (código y contraseña) que usa el sistema. Cada usuario tiene permisos, grupo, comisión, etc. |
¿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
¿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).
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:
Diagrama
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.
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:
- El usuario escribe su contraseña en el paso 4 del wizard.
- El PHP llama al procedimiento almacenado
SP_VerificaPasswordUsuarioen SQL Server. - El SP carga el salt (UNIQUEIDENTIFIER) y el hash almacenado (
VARBINARY(64)) del usuario. - Recalcula:
HASHBYTES('SHA2_256', CONCAT(TRIM(clave_ingresada), CAST(salt AS VARCHAR(36))))con collation binaria. - 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.saltyEmpleados.clavesegura. - La columna
Passwordqueda 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:
| Propiedad | Valor |
|---|---|
| Tipo | HMAC-SHA256 firmado con clave de servidor |
| Duración | 3 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. |
| Uso | Login automático sin ingresar contraseña |
| Invalidación | Al 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.
Contraseñas
Longitud máxima
La columna Empleados.Password acepta hasta 25 caracteres. El frontend aplica este límite con maxlength="25".
Cambio de contraseña
- En SE-001, seleccionar el usuario y abrir el modal de edición.
- Escribir la nueva contraseña en el campo "Contraseña".
- Guardar. El trigger de SQL Server genera automáticamente el nuevo salt y hash.
- Si el usuario tiene email registrado, recibe la nueva clave por correo.
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.
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
- El usuario completa el wizard en
factupos.com(dominio principal). - El servidor genera un token aleatorio de 64 caracteres hex usando
bin2hex(random_bytes(32)). - El token se guarda en
/tmp/factupos_transfers/{token}.jsoncon los datos de sesión y un timestamp. - El sistema redirige al usuario al subdominio con el token en la URL:
https://empresa.factupos.com/auth.php?transfer={token} - El
auth.phpdel subdominio lee el archivo, valida que tenga menos de 30 segundos, crea la sesión local y elimina el archivo inmediatamente.
| Característica | Detalle |
|---|---|
| Tiempo de vida | 30 segundos máximo |
| Reutilizable | No — se elimina al primer uso |
| Formato | 64 caracteres hexadecimales aleatorios |
| Almacenamiento | /tmp/factupos_transfers/ (filesystem compartido) |
| Limpieza | Tokens de más de 1 hora se purgan automáticamente |
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.
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.
El botón «Traer mis accesos guardados»
Cuando abre la pantalla de ingreso y ese sitio no tiene ningún acceso guardado, aparece un aviso con el botón «Traer mis accesos guardados». Si la lista ya tiene sus accesos, el botón no sale: no hace falta.
- Tocá «Traer mis accesos guardados».
- La pantalla pasa un segundo por una página que dice «Sincronizando tus accesos…».
- Volvés al ingreso con la lista completa, y ya podés entrar con un toque.
Funciona en los dos sentidos y en un solo viaje: los accesos de este sitio se suman a los de los demás, y volvés con todo junto. No hay que repetirlo cada vez — una vez que este sitio los tiene, quedan ahí. Volvés a tocarlo solo si guardaste un acceso nuevo en otro sitio y querés verlo también acá.
factupos.com es el sitio donde se juntan los accesos de todos los demás.
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.
Estaciones en el login
Al autenticarse, el sistema debe saber en qué estación (licencia) trabaja el usuario. La estación se determina así:
- El wizard de login carga la lista de estaciones disponibles desde la BD.
- Si el usuario tiene una estación predeterminada configurada (
Empleados.EstacionId), esa se preselecciona automáticamente. - Si no tiene predeterminada, se usa la primera estación de la lista.
- 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:
| Intento | Query | Resultado si falla |
|---|---|---|
| 1 (principal) | SELECT Id, EstacionNombre FROM vista_estaciones | Pasa al intento 2 |
| 2 (fallback) | SELECT id AS Id, EstacionNombre FROM Estaciones | Log de error + lista vacía |
| 3 (vacía) | — | Label muestra "(no se pudo cargar)" en rojo |
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 900). Cada horario define 7 días (Dom–Sáb) con hora de inicio, hora de fin y si ese día está activo.
| Horario | Descripción | Editable |
|---|---|---|
| 1 — Completo | Acceso 24/7 todos los días. | No (protegido) |
| 2 — Ventas | Lunes a Sábado, 07:00–17:00. | Sí |
| Personalizados | Creados por el administrador según necesidad. | Sí |
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
| Segmentos | Días vencido | Color | Acción |
|---|---|---|---|
| 8/8 (100%) | 0 | Verde oscuro | Ninguna |
| 7/8 | 1 | Verde esmeralda | Solo muestra batería |
| 6/8 | 2 | Verde | Solo muestra batería |
| 5/8 | 3 | Verde lima | Solo muestra batería |
| 4/8 | 4 | Amarillo | Solo muestra batería |
| 3/8 | 5 | Naranja | Solo muestra batería |
| 2/8 | 6 | Naranja rojo | Overlay con contador + pulso |
| 1/8 | 7 | Rojo | Overlay con contador + pulso |
| 0/8 (0%) | 8+ | Gris | Menú 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ámetro | Descripción |
|---|---|
226 | Nombre de la BD del proveedor de servicios (ej: soporterealsrl) |
214 | Código de cliente en la BD del proveedor = número de contrato |
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:
- Contactar a Soporte Real para contratar una licencia adicional.
- Una vez activada, crear la nueva estación en Configuración → Estaciones.
- 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 BD | Nombre | Uso típico |
|---|---|---|
1 | Usuario | Persona interna del sistema: cajero, bodeguero, contador, admin. |
2 | Agente | Vendedor que gana comisión sobre las facturas que emite. Aparece en reportes de comisiones. Puede tener % de comisión configurado. |
3 | Referido / Empleado | Relació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).
Crear un usuario
- Entrar a Seguridad → Usuarios (SE-001).
- Hacer clic en el botón Nuevo en la parte superior del panel de usuarios (requiere permiso
901). - Completar los campos del modal. Los marcados con asterisco son obligatorios: Nombre, Grupo y Contraseña.
- 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.
- Seleccionar el Horario de acceso (por defecto "Completo" = 24/7).
- Si es agente, poner el % de comisión (0–100).
- Guardar. Si puso email, el sistema le envía la contraseña por correo automáticamente.
- Después de crearlo, asignarle permisos en el panel derecho de la misma pantalla.
- 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.
?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.
| Campo | Columna BD | Tipo | Máx. caracteres | Requerido |
|---|---|---|---|---|
| Código | Cod_Usuario | VARCHAR | 5 | Sí (auto-generado) |
| Nombre | Nombre | VARCHAR | 50 | Sí |
| Contraseña | Password | VARCHAR | 25 | Sí (solo en nuevo) |
Email | VARCHAR | 100 | No | |
| Teléfono | telefonos | VARCHAR | 100 | No |
| Dirección | Direccion | VARCHAR | 100 | No |
| Cédula | Cedula | VARCHAR | 20 | No |
| Grupo | Grupo | CHAR(1) | 1 | Sí |
| Departamento | Cod_Departamento | VARCHAR | 3 | No |
| Comisión (%) | Comision | NUMERIC(9) | — | No (0–100) |
Estados de usuario
| Código | Estado | Color en lista | Puede entrar |
|---|---|---|---|
1 | Activo | Verde | Sí |
2 | Inactivo | Amarillo | No |
3 | Eliminado | Rojo | No |
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.
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 tiene | Lo que puede hacer en esta pantalla |
|---|---|
910 | Ver los permisos de cada usuario. Nada más. Casillas grises. |
910 + 906 | Ver y agregar permisos. Las casillas ya marcadas siguen grises (no las puede quitar). |
910 + 906 + 907 | Ver, 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.
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-003).
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ódigo | Nombre | Qué autoriza | Submódulo |
|---|---|---|---|
900 |
Horarios de Acceso | Acceso al módulo de Horarios de Acceso. Sin este permiso, la opción no aparece en el menú. | 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). | 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-003): ver registro histórico de acciones de todos los usuarios. | SE-003 |
912 |
Mis Claves | Acceso al gestor de contraseñas de servicios externos (Netflix, bancos, etc.). | Mis Claves |
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:
- Usuarios — la lista donde elegís a quién configurar.
- Módulos — la lista de áreas (Facturación, Inventarios, Contabilidad, Planilla…). Cada módulo muestra un contador asignados / total. Arriba está «Todos» para ver el total.
- 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).
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.
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.
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.
907 (Quitar permisos). Los usuarios protegidos del sistema (administrador) no se pueden modificar y no muestran la «✕».
Parámetros de empresa
Los parámetros relacionados con seguridad y sesiones se configuran desde Configuración → Parámetros (CF-004).
| Código | Nombre | Qué controla | Valores |
|---|---|---|---|
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 |
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 |
Tablas de base de datos
Referencia de las tablas y vistas principales que usa el módulo de Seguridad.
| Tabla / Vista | Uso principal | Notas |
|---|---|---|
Empleados | Usuarios del sistema | PK: Cod_Usuario VARCHAR(5). Contiene Password (texto), salt y clavesegura. |
DerechosUsuario | Permisos individuales asignados | Columnas: UsuarioCodigo + DerechoCodigo |
DerechosSistema | Catálogo de todos los permisos | Columnas: Cod_Derecho, Descripcion, Cod_Modulo |
HorarioAcceso | Grupos de horario | PK: HorarioAccesoId. Id=1 (Completo) es protegido. |
HorarioAccesoDetalle | 7 filas por grupo (un día cada una) | Columnas: DiaSemana (0=Dom–6=Sáb), HoraInicio, HoraFin, Activo |
BitacoraSistema | Registro de auditoría del sistema | Consultado en SE-003 (permiso 911) |
UsuarioClaves | Gestor de contraseñas externas | Solo para el módulo "Mis Claves" (permiso 912) |
Estaciones | Licencias del sistema | PK: id (minúsculas) |
vista_estaciones | Expone estaciones con Id (PascalCase) | Usar preferentemente sobre la tabla directa |
vista_permisos_sistema | Permisos con nombre de módulo | Columnas: PermisoCodigo, PermisoNombre, ModuloCodigo, ModuloNombre |
vista_usuarios | Lista de usuarios para SE-001 | Incluye estado, grupo, estación |
Procedimientos almacenados clave
| SP / Trigger | Función |
|---|---|
SP_VerificaPasswordUsuario | Verifica contraseña calculando SHA2_256 con salt almacenado. Retorna fila del usuario si coincide. |
TRG_Usuarios_HashClave | AFTER 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.
¿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. El sistema hashea automáticamente. Si el usuario tiene email, recibe la nueva clave por correo.
¿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.