# DDS - Sistema de Display de Pedidos para RevoXEF Sistema de visualización de pedidos (Digital Display System) integrado con RevoXEF mediante webhooks. Muestra en tiempo real los pedidos "En Preparación" y "Listos para Recoger", ideal para restaurantes de comida rápida. ## 📁 Estructura del Proyecto ``` dds/ ├── config.php # Configuración principal ├── db.php # Gestión de base de datos SQLite ├── webhook.php # Receptor de webhooks de RevoXEF ├── api.php # API interna para el frontend ├── display.php # Pantalla principal del DDS ├── admin.php # Panel de administración ├── data/ │ └── orders.db # Base de datos SQLite (se crea automáticamente) └── assets/ ├── css/ │ └── display.css # Estilos del display ├── js/ │ └── display.js # JavaScript del display └── sounds/ └── notification.mp3 # Sonido de notificación (opcional) ``` ## 🚀 Instalación ### 1. Subir archivos al servidor Sube todos los archivos a tu servidor web en la ruta deseada (ej: `revotools.es/`). ### 2. Configurar permisos ```bash chmod 755 data/ chmod 644 data/orders.db # Se creará automáticamente ``` ### 3. Configurar la Secret Key Edita `config.php` y añade tu secret key de RevoXEF: ```php define('REVO_WEBHOOK_SECRET', 'TU_SECRET_KEY_AQUI'); ``` ### 4. Configurar Webhooks en RevoXEF 1. Ve a [https://revoxef.works/account/webhooks](https://revoxef.works/account/webhooks) 2. Crea nuevos webhooks con la URL: `https://revotools.es/webhook.php` 3. Suscríbete a estos eventos: - `order.created` - Nuevo pedido - `order.updated` - Pedido actualizado - `order.closed` - Pedido cerrado - `order.cancelled` - Pedido cancelado - `kds.contentsReady` - Contenidos listos en cocina ## 📺 Uso ### Display Principal Abre `https://revotools.es/display.php` en una TV o monitor. **Atajos de teclado:** - `F11` - Pantalla completa - `R` - Refrescar pedidos - `M` - Silenciar/activar sonidos ### Panel de Administración Accede a `https://revotools.es/admin.php` para: - Ver estadísticas - Crear pedidos de prueba - Marcar pedidos como listos/entregados - Limpiar pedidos antiguos ## 🔧 Configuración Avanzada Edita `config.php` para personalizar: ```php // Máximo de pedidos a mostrar por columna define('ORDERS_PREPARING_LIMIT', 8); define('ORDERS_READY_LIMIT', 8); // Minutos para auto-completar pedidos listos define('AUTO_COMPLETE_MINUTES', 30); // Zona horaria date_default_timezone_set('Europe/Madrid'); // Modo debug (desactivar en producción) define('DEBUG_MODE', false); ``` ## 📡 API Endpoints ### GET `api.php?action=getOrders` Obtiene todos los pedidos activos. ### GET `api.php?action=markReady&id={id}` Marca un pedido como listo para recoger. ### GET `api.php?action=markCompleted&id={id}` Marca un pedido como entregado/completado. ### GET `api.php?action=cancelOrder&id={id}` Cancela un pedido. ### GET `api.php?action=createTestOrder` Crea un pedido de prueba (para testing). ### GET `api.php?action=cleanup` Limpia pedidos antiguos completados. ## 🎨 Personalización ### Cambiar colores Edita las variables CSS en `assets/css/display.css`: ```css :root { --color-preparing: #f39c12; /* Naranja para "En preparación" */ --color-ready: #27ae60; /* Verde para "Listo" */ --color-bg-dark: #0d1117; /* Fondo oscuro */ } ``` ### Añadir sonido de notificación Coloca un archivo `notification.mp3` en `assets/sounds/`. ## 🔒 Seguridad 1. **Configura la Secret Key**: Esto verifica que los webhooks provienen de RevoXEF. 2. **Desactiva DEBUG_MODE en producción**: Evita exponer información sensible. 3. **Protege el panel admin**: Considera añadir autenticación HTTP básica. ## 📋 Flujo de Estados ``` order.created → "En Preparación" (preparing) ↓ kds.contentsReady → "Listo para Recoger" (ready) ↓ Click en display → "Completado" (completed) ↓ order.closed → Se elimina del display ``` ## 🐛 Solución de Problemas ### Los pedidos no aparecen 1. Verifica que el webhook esté activo en RevoXEF 2. Revisa los logs en `data/` (si DEBUG_MODE está activo) 3. Prueba creando un pedido de prueba desde admin.php ### Error de permisos ```bash chmod -R 755 data/ chown -R www-data:www-data data/ # En Linux ``` ### La página no carga Asegúrate de que PHP tenga habilitadas las extensiones: - `pdo_sqlite` - `json` ## 📄 Licencia Este proyecto es de código abierto. Úsalo y modifícalo según tus necesidades. ## 🤝 Soporte Para soporte con la API de RevoXEF, consulta: - [Documentación oficial](https://api.revo.works/sections/xef.html) - [Soporte RevoXEF](https://support.revoxef.works/)