Panel de Programador

Configuración avanzada del sistema

Apariencia — Tema de Color

El tema seleccionado se aplica en todas las páginas del sistema.

Verde Sabai
Activo
Océano
Clic para activar
Terracota
Clic para activar

Logos de la Empresa

Sube dos versiones del logo: Oscuro (logo claro/blanco, para fondos de color) y Claro (logo oscuro/coloreado, para fondos blancos como las facturas). Luego elige cuál usar en cada ubicación.

Logo Oscuro (blanco/claro — para fondos de color)

Logo oscuro

Logo Claro (oscuro/coloreado — para fondos blancos)

Logo claro

¿Qué logo mostrar en cada lugar?

Porcentajes de IVA

Define las tasas de IVA que el sistema usará en facturas y prefacturas. El administrador puede activar/desactivar el modo feriado desde la página de Administración.

Productos sin check "Con IVA" en gestión de menú
Productos con check, modo normal
Productos con check, modo feriado
IVA activo:  |  Modo:

Configuración de Empresa

Certificado Digital P12

Configuración del SRI

Modo de Facturación

Define si todas las sucursales comparten un mismo RUC/certificado, o si cada sucursal tiene sus propios datos fiscales independientes.

Políticas de Ventas y Cobros

Controla cómo el cajero puede cerrar mesas y registrar pagos.

Activado: El cajero debe generar una factura (con datos del cliente o a Consumidor Final) para poder procesar el cobro. No se puede cerrar sin facturar.
Desactivado (default): El cajero puede cobrar sin generar factura, confirmando que no emitirá comprobante.

Según el SRI Ecuador, solo se puede facturar como Consumidor Final hasta un monto máximo por transacción. Si el total supera este valor, se solicitarán datos de facturación del cliente. (Valor actual SRI: $50.00)

$ USD

Configuración de Email Saliente (SMTP)

Configure el servidor SMTP para enviar facturas electrónicas por correo.

Recepción de Facturas por Email (IMAP)

Cuando está activo, el sistema revisa automáticamente el buzón de entrada cada hora y registra facturas electrónicas enviadas por proveedores como adjuntos XML.

Desactivado

Estado Actual de Red

Cargando...

Redes WiFi Disponibles

Presiona "Escanear Redes" para ver las redes disponibles.

Certificado SSL — Instalación en dispositivos

Para que los celulares y tablets no muestren advertencia de seguridad al ingresar al sistema, instala el certificado SSL en cada dispositivo.

Descargar certificado (cert.pem)

El certificado se actualiza automáticamente si la IP del dispositivo cambia de red.

  1. Descarga el certificado con el botón de arriba. Se guardará en Descargas.
  2. Abre Ajustes del teléfono.
  3. Busca "Seguridad" o "Biometría y seguridad".
  4. Toca "Instalar certificado" o "Instalar desde almacenamiento".
  5. Selecciona "Certificado CA" (o "Certificado de confianza").
  6. Acepta la advertencia y elige el archivo sabai_cert.pem de tu carpeta de Descargas.
  7. Dale un nombre como "Sabai Facturas" y confirma.
  8. Abre el navegador y entra a https://192.168.1.108:8443 — ya no aparecerá la advertencia.
Samsung: Ajustes → Pantalla de bloqueo y seguridad → Cifrado y credenciales → Instalar desde almacenamiento → Certificado de CA.

Cómo acceder desde otra red

Si cambias de red WiFi, el dispositivo obtendrá una nueva dirección IP. Para encontrarlo:

  1. Conéctate a la misma red WiFi desde tu computadora o celular
  2. Accede por el nombre del dispositivo: https://sabai.local:8443
  3. O busca la nueva IP en el panel del router (sección DHCP)
  4. O desde otra terminal en la misma red: ping sabai.local

Para mayor estabilidad, considera asignar una IP estática en la configuración de tu router (por MAC address).

Protecciones Activas

🔒
HTTPS / TLS
Todo el tráfico cifrado
🛡️
Rate Limiting
5 intentos → bloqueo 15 min
🎫
JWT + Roles
Autenticación por token
🧱
Security Headers
XSS, Clickjacking, MIME

Usuario de Emergencia

Este usuario se guarda fuera de la base de datos, en un archivo separado del servidor. Si la BD se elimina o corrompe, podrás ingresar con estas credenciales para restaurar el backup desde esta misma página.

Cargando estado...

PIN de Administrador

El PIN se guarda cifrado y no se puede recuperar. Si alguien lo olvidó, usa este formulario para reemplazarlo directamente desde el panel programador.

Monitor de Intentos de Login

IPs con intentos fallidos o bloqueadas actualmente. Se limpia automáticamente al reiniciar el servidor.

Checklist de Seguridad para Producción

HTTPS activo — Todo el tráfico está cifrado con TLS
Rate limiting activo — Login protegido contra fuerza bruta
⚠️
Firewall del sistema — Ejecuta en terminal: sudo ufw status — debe estar activo y solo permitir red local
⚠️
Contraseñas seguras — Verifica que todos los usuarios tengan contraseñas fuertes (mínimo 8 caracteres con números)
⚠️
IP estática en el router — Asigna la MAC de la Raspberry Pi a una IP fija en la sección DHCP del router
NAT del router — El router bloquea conexiones de internet por defecto. No configures port forwarding para el puerto 8443
# Comandos para activar firewall (ejecutar UNA vez en terminal)
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow from 192.168.0.0/16 to any port 8443
# Si tu red local usa 10.x.x.x en vez de 192.168.x.x:
sudo ufw allow from 10.0.0.0/8 to any port 8443
sudo ufw enable
sudo ufw status verbose

Estado del Backup Automático

Cargando...

Configuración de Backup

Ruta absoluta donde se guardará sabai_backup.db.enc (se sobreescribe en cada ejecución)
Los backups se cifran con AES-256-GCM. Guarda esta clave para poder restaurar.

Backups Disponibles

Cargando...

Restaurar Backup

Modo Merge: Se insertarán los registros del backup que no existan en la BD actual. Los datos existentes (ventas, facturas, clientes) no se modifican.

Registrar Factura Recibida

Sincronizar desde Portal SRI en Línea

Se loguea automáticamente en srienlinea.sri.gob.ec y descarga el reporte de comprobantes recibidos del período indicado.

URLs del Portal SRI (solo cambiar si el SRI modifica sus direcciones)

Cargando última sincronización...

O subir Excel descargado manualmente del portal SRI

Descarga desde portal SRI → "Descargar reporte" → sube el archivo aquí.

Facturas Recibidas

Período de Análisis

Ingresos

Cargando...

Egresos

Cargando...

Liquidación IVA (estimada)

Cargando...

Este resumen es referencial. Para la declaración oficial use el portal del SRI.

Flujo de Caja — ...

Cargando...
Estado de Licencia
Verificando...

Información de la Licencia

Cargando...

Configuración (Uso Futuro)

Cuando el sistema central esté activo, configure la URL para verificación remota de licencias.

Déjelo vacío mientras el servidor central no esté disponible.

Módulos Habilitados

En modo prototipo (demo), todos los módulos están habilitados indefinidamente.

Información Técnica

Impresoras Térmicas

Modo Cocina Tradicional
Actívalo si el cocinero no tiene pantalla. El flujo será: mesero confirma pedido → se imprime comanda → cocinero prepara → mesero marca servido directamente.
Los botones "Preparar" y "Plato Listo" se ocultarán para el cocinero.

Configura impresoras térmicas ESC/POS conectadas por red (WiFi o Ethernet).
Puerto por defecto: 9100. La Impresora de Caja se usa para imprimir facturas automáticamente.

Agente de Impresión Local (para servidor en VPS)
Descarga estos archivos en la PC del restaurante. Ejecuta primero INICIAR_AGENTE_IMPRESION.bat para configurar y arrancar el agente. Para que inicie automáticamente al encender la PC, ejecuta INSTALAR_INICIO_AUTOMATICO.bat como administrador.
sabai_print_server.py INICIAR_AGENTE_IMPRESION.bat INSTALAR_INICIO_AUTOMATICO.bat DESINSTALAR_INICIO_AUTOMATICO.bat
Ruteo por Categoría
Configura qué impresora recibe las comandas de cada categoría de menú (cocina, barra, caja).
Configurar Ruteo

Cargando impresoras...


Agregar Impresora

Si el servidor está en un VPS, configura aquí la IP del computador local que tiene el agente de impresión corriendo.

Salud del Sistema

Diagnóstico en tiempo real del disco, base de datos y archivos generados.


Cargando...

Almacenamiento Externo (USB / SSD)

Redirige la base de datos, facturas XML/PDF y backups a un disco externo o USB SSD. El sistema crea enlazaces simbólicos transparentes — el resto de la aplicación no cambia.

Cargando estado...

El directorio debe existir y tener permisos de escritura. Los datos se mueven automáticamente. Reinicia el servidor después de migrar.

Limpieza de PDFs

Elimina PDFs generados (facturas, reportes Z, RIDEs) con más de N días de antigüedad. Los archivos originales en la BD no se ven afectados.

Guía de Producción — Problemas Frecuentes

Esta guía describe síntomas comunes en producción y cómo resolverlos. Los marcados con EXTERNO requieren configuración fuera de la aplicación.

El sistema no arranca después de un corte de luz
Síntomas: La Raspberry Pi arranca pero el servidor no inicia, o la BD está corrupta.
Causa: El corte de luz interrumpió una escritura a disco.
Solución:
  1. Al arrancar, el sistema hace automáticamente un PRAGMA integrity_check. Si falla, revisa el log.
  2. Ir a Backup → Restaurar y cargar el último backup automático.
  3. Los backups de arranque están en backend/backups/startup_backup_*.db.
Prevención: EXTERNO Conectar la Raspberry Pi a un UPS (batería de respaldo). Incluso uno pequeño de 600VA da 15–30 min para un cierre limpio.
Los dispositivos no encuentran el sistema en la red
Síntomas: Tablets/celulares no pueden acceder a https://IP:8443. La IP cambió.
Causa: El router asignó una IP diferente a la Raspberry Pi (DHCP dinámico).
Solución inmediata:
  1. En la Raspberry Pi, ejecutar: hostname -I para ver la IP actual.
  2. El certificado SSL se regenera automáticamente si la IP cambia al reiniciar el servidor.
  3. Actualizar los accesos directos en los dispositivos con la nueva IP.
Solución permanente: EXTERNO En la configuración del router, asignar una IP fija (reserva DHCP) a la MAC de la Raspberry Pi. Consultar el manual del router.
La impresora térmica no imprime
Síntomas: Los botones de impresión no hacen nada o dan error.
Causas posibles:
  • IP de impresora cambió: EXTERNO Configurar IP fija en la impresora (menú de la impresora o software del fabricante), luego actualizar en Impresoras → editar.
  • Impresora apagada o sin papel: Verificar estado físico.
  • Firewall bloquea puerto 9100: EXTERNO En el router/switch, asegurar que el puerto TCP 9100 esté abierto en la red local.
Diagnóstico: Ir a Impresoras → Prueba de impresión para verificar conectividad.
Las facturas SRI dan error de autorización
Síntomas: Las facturas quedan en estado "Pendiente" o "Error SRI".
Causas y soluciones:
  • Sin internet: EXTERNO Verificar conexión a internet en la Raspberry Pi: ping 8.8.8.8. Las facturas se reintentarán cuando vuelva la conexión.
  • Certificado p12 expirado: Renovar el certificado digital en el SRI y subirlo en Configuración SRI → Certificado Digital.
  • Ambiente incorrecto: En Configuración SRI, verificar que el ambiente sea "Producción" (no "Pruebas") para facturas reales.
  • RUC/datos incorrectos: Revisar Configuración Empresa. El RUC debe coincidir con el del certificado.
Recuperación: Las facturas fallidas se pueden reintentar desde la pestaña Facturas Pendientes.
El disco está lleno — el sistema se vuelve lento
Síntomas: El sistema responde lento, errores al guardar datos, alertas de disco en esta pantalla.
Solución inmediata:
  1. Usar el botón Limpiar PDFs de esta página (elimina PDFs viejos, no datos de BD).
  2. Descargar y eliminar backups antiguos desde la pestaña Backup.
Solución a largo plazo: EXTERNO Usar una tarjeta microSD de mayor capacidad (mínimo 64GB de clase A2) o conectar un disco USB externo y redirigir la carpeta backups/ a él.
Los usuarios son cerrados de sesión inesperadamente
Síntomas: Los meseros/cajeros son enviados al login sin haber hecho nada.
Causas y soluciones:
  • Token JWT expirado: El sistema ahora usa tokens de 7 días y los renueva automáticamente al navegar. Si ocurre con frecuencia, verificar que el dispositivo no tenga la hora del sistema incorrecta.
  • Servidor reiniciado: Al reiniciar el servidor con una nueva SECRET_KEY, todos los tokens anteriores se invalidan. Esto es normal.
  • Hora incorrecta en el dispositivo: EXTERNO Verificar que la hora del dispositivo y la Raspberry Pi estén sincronizadas.
El navegador muestra "Conexión no segura"
Síntomas: Al abrir https://IP:8443 aparece advertencia de seguridad.
Causa: El sistema usa un certificado autofirmado (no emitido por una CA pública).
Solución:
  1. En el navegador, hacer clic en Avanzado → Continuar de todos modos (solo la primera vez).
  2. Para eliminar la advertencia definitivamente: EXTERNO Instalar el archivo cert.pem como certificado de confianza en cada dispositivo (Ajustes → Seguridad → Certificados).
  3. Alternativamente, usar HTTP en lugar de HTTPS accediendo al puerto 8000 (redirige a HTTPS automáticamente).

Restablecer Aplicación

Esta acción borra todos los datos operacionales de forma irreversible.
Úsala solo para preparar el sistema para un nuevo cliente.

Se elimina

  • Sesiones NFC y consumos
  • Facturas emitidas y clientes
  • Menú (categorías e ítems)
  • Productos de cerveza
  • Inventario y materia prima
  • Arqueos y caja maestra
  • Reportes Z y cierres
  • Logs SRI y facturas recibidas
  • Ventas importadas
  • Secuencial de facturas (→ 1)

Se conserva

  • Cuentas de usuario
  • Configuración de empresa
  • Credenciales SRI
  • Configuración de impresoras
  • Licencia del sistema
  • Configuración de backup
  • Parámetros del sistema

Facturas Pendientes o con Error

Facturas que no han sido autorizadas por el SRI o están pendientes de envío.

Número Cliente Total Estado Info Acciones
Cargando...