🚀 ROADMAP ERP - PoolControl Pro

Captura con datos demo AquaDemo.
Documento maestro de funcionalidades
Última actualización: Junio 2026
📊 ESTADO GENERAL
| Categoría | Funcionalidades Totales | Implementadas | A Mejorar | Prioridad |
|---|---|---|---|---|
| Fiscal (Hacienda) | 4 | 1 | 3 | 🔴 CRÍTICA |
| Facturación | 8 | 7 | 1 | 🔴 CRÍTICA |
| Logística/Almacén | 8 | 8 | 2 | 🟢 ALTA |
| Planificación/Rutas | 6 | 6 | 1 | 🟢 ALTA |
| Reportes | 5 | 4 | 1 | 🟡 MEDIA |
| Producto | 6 | 4 | 2 | 🟡 MEDIA |
| Integraciones | 4 | 1 | 3 | 🟢 MEDIA |
| Pre-Launch Técnico | 4 | 0 | 4 | 🔴 CRÍTICA |
✅ LO QUE YA TENEMOS IMPLEMENTADO
🗺️ Zonas Geográficas Avanzadas
Estado: ✅ COMPLETO
- ✅ Definición de zonas por CÍRCULO (centro + radio)
- ✅ Definición de zonas por POLÍGONO libre (múltiples vértices)
- ✅ Algoritmo Ray Casting para detectar si coordenada está dentro de polígono
- ✅ Asignación automática de piscinas a zona según coordenadas GPS
- ✅ Mapa visual con Leaflet
🛣️ Generación Automática de Visitas (Rutas Maestras)
Estado: ✅ IMPLEMENTADO (Mejorable UI)
El sistema YA GENERA visitas automáticamente desde rutas maestras vía job programado:
FUNCIONAMIENTO ACTUAL (visit-generator.job.ts):
├── Se dispara vía POST /api/jobs/trigger-visits (header x-api-key = CRON_SECRET)
├── No hay cron interno en el servidor (jun 2026); tareas periódicas vía login-maintenance
├── Lee todas las RouteTemplates activas
├── Comprueba temporadas (seasons)
├── Genera visitas según frecuencia:
│ ├── WEEKLY (semanal)
│ ├── BIWEEKLY (quincenal)
│ ├── MONTHLY (mensual)
│ └── QUARTERLY (trimestral)
├── Optimiza orden con Nearest Neighbor
└── Asigna horarios secuencialesMejora pendiente: Interfaz de usuario para "Generar ahora" manualmente desde el calendario.
🧭 Optimización de Rutas
Estado: ✅ IMPLEMENTADO
- ✅ Algoritmo Nearest Neighbor en
route-optimizer.ts - ✅ Cálculo de distancia Haversine
- ✅ Integrado en generación de visitas
🏭 Motor de Aprovisionamiento Inteligente (MRP)
Estado: ✅ IMPLEMENTADO (Avanzado)
Sistema completo en procurement.service.ts:
Estrategias disponibles:
- ✅ MIN_MAX - Basado en stock mínimo/máximo
- ✅ SEASONAL_FORECAST - Basado en histórico del año anterior
Funcionalidades:
- ✅ Predicción de demanda estacional
- ✅ Factor de crecimiento configurable (ej: +10% vs año pasado)
- ✅ Cálculo de reorder point dinámico
- ✅ Hub & Spoke (distribución desde central a delegaciones)
- ✅ Generación automática de pedidos
📱 Escáner QR para Técnicos
Estado: ✅ COMPLETO
- ✅ Escaneo con cámara
- ✅ Inicio automático de trabajo
- ✅ Creación de urgencias in-situ
📊 Informes Financieros
Estado: ✅ PARCIALMENTE IMPLEMENTADO
Disponibles:
- ✅ Rentabilidad (
generateProfitabilityReport):- Ingresos totales
- Coste de materiales
- Gastos generales (Expenses)
- Margen bruto y neto
- Por cliente
- ✅ Consumos - Por producto, cliente, técnico
- ✅ Prefacturación - Análisis de facturación pendiente
Pendientes mejorar:
- Balance de Situación completo
- Cuenta de Pérdidas y Ganancias estandarizada
💰 Cartera de Efectos
Estado: ✅ IMPLEMENTADO
- ✅ Listado de vencimientos con filtros
- ✅ Estados: PENDIENTE, PAGADO, REMESADO
- ✅ División de deuda (split) para renegociaciones
- ✅ Sincronización automática con factura
- ✅ Integración con remesas SEPA
💰 Remesas SEPA
Estado: ✅ COMPLETO (Básico)
- ✅ Generación XML SEPA (pain.008.001.02)
- ✅ Cálculo de sumas de control
- ✅ Identificación de acreedor SEPA
- ✅ Marcado masivo como cobrado
📦 Gestión de Stock Avanzada
Estado: ✅ COMPLETA
- ✅ Control multi-almacén (central + furgonetas + delegaciones)
- ✅ Transferencias entre almacenes
- ✅ Carta de carga (stock mínimo/máximo)
- ✅ Solicitud de reposición de furgoneta
- ✅ Reporte de mermas/roturas
- ✅ Consumo automático al completar visita
- ✅ Control de stock negativo configurable
- ✅ Cuarentena / Write-off
- ✅ Trazabilidad de lotes (FEFO)
📋 Series de Facturación
Estado: ✅ IMPLEMENTADO
- ✅ Secuencias automáticas por tipo de documento
- ✅ Prefijos configurables
- ✅ Numeración por año
- ✅ Multidelegación (por warehouseId)
- ✅ Longitud configurable (3-10 dígitos)
🔴 PRIORIDAD CRÍTICA - Imprescindible para ERP serio
📋 FISCALIDAD Y HACIENDA
1. Modelo 303 - Declaración Trimestral de IVA
Estado: 📅 Próximamente - Q2 2026
- [ ] Cálculo automático casillas [01] a [59]
- [ ] IVA repercutido por tipos (21%, 10%, 4%)
- [ ] IVA soportado deducible
- [ ] Exportación formato BOE
2. Modelo 347 - Operaciones con Terceros
Estado: 📅 Próximamente - Q2 2026
- [ ] Listado automático clientes >3.005€
- [ ] Listado automático proveedores >3.005€
- [ ] Exportación formato AEAT
3. Libro de Registro de IVA (SII)
Estado: 📅 Próximamente - Q2 2026
- [ ] Envío automático facturas emitidas a Hacienda
- [ ] Envío facturas recibidas
- [ ] Consulta estado envíos
4. VeriFactu - Facturación Electrónica
Estado: Emisión y envío AEAT preproducción operativos; producción bloqueada (XAdES + homologación)
- [x] Generación XML con formato VeriFactu
- [x] Encadenamiento criptográfico SHA-256
- [x] QR en PDF y descarga XML
- [x] Envío AEAT PRE (certificado + supervisión)
- [x] Laboratorio interno
vf-lab - [ ] Firma XAdES y producción AEAT
💰 FACTURACIÓN AVANZADA
5. Facturación Recurrente Automática
Estado: 📅 Próximamente - Q2 2026
Lo que YA existe:
- ✅ Clientes con
monthlyFee(cuota fija mensual) - ✅ Asistente de facturación que agrupa:
- Cuota de mantenimiento + Consumos + Albaranes
- ✅ Generación manual de facturas por período
Lo que falta (automatización):
- [ ] Generación automática sin intervención (job mensual)
- [ ] Contratos con fechas de inicio/fin
- [ ] Renovación automática de contratos
- [ ] Envío automático por email
- [ ] Cobro SEPA automático
6. Registro de Cobros Manual
Estado: 📅 Próximamente - Q2 2026
- [ ] Registrar cobro de factura manualmente
- [ ] Soportar cobros parciales
- [ ] Múltiples métodos de pago detallados
- [ ] Conciliación bancaria completa
Nota: La cartera de efectos existe. Falta el registro manual más detallado.
🟡 MEJORAS A LO EXISTENTE
📦 PRODUCTO Y CATÁLOGO
9. Unidades de Medida
Estado: ⚠️ Implementado básico - MEJORABLE
Actual: Campo unit como string libre ("kg", "L", "ud")
Mejoras propuestas:
- [ ] Catálogo de unidades predefinidas
- [ ] Conversión automática entre unidades
- [ ] Unidad base vs unidad de compra
10. Códigos de Barras (EAN/UPC)
Estado: 📅 Próximamente - Q3 2026
- [ ] Campo EAN-13 en producto
- [ ] Generación códigos internos
- [ ] Impresión de etiquetas
- [ ] Escáner en TPV
11. Tipos de Producto
Estado: ⚠️ Parcialmente implementado
- [x] Producto físico (con stock) ✅ COMPLETO
- [ ] Servicio (sin stock, solo precio)
- [ ] Kit/Combo (grupo de productos con precio especial)
- [ ] Producto alquilable (con fianza)
📊 INVENTARIO Y ALMACÉN
12. Inventarios Físicos (Tomas de Inventario)
Estado: 📅 Próximamente - Q3 2026
- [ ] Sesión de inventario completa con app
- [ ] Conteo por ubicación
- [ ] Inventario ciego
- [ ] Aprobación de ajustes
Nota: Los ajustes manuales individuales existen.
13. Alertas de Stock Inteligentes
Estado: ⚠️ Parcial - MEJORABLE
Actual:
- ✅ Cálculo de necesidades en procurement
- ✅ Sugerencias de compra
Mejoras:
- [ ] Notificaciones proactivas (email/push)
- [ ] Dashboard con semáforos 🟢🟡🔴
- [ ] Alertas en tiempo real al técnico
🛠️ PLANIFICACIÓN Y RUTAS
14. Generación Masiva desde Rutas Maestras (UI)
Estado: ⚠️ Implementado en backend - MEJORABLE UI
Actual:
- ✅ Job automático diario
- ✅ Generación desde templates
- ✅ Optimización de rutas
Mejora:
- [ ] Botón manual "Generar visitas ahora" en calendario
- [ ] Vista previa antes de generar
- [ ] Selección de rango de fechas manual
📧 COMUNICACIONES
15. Sistema de Emails Integrado
Estado: 📅 Próximamente - Q2 2026
- [ ] Configuración SMTP
- [ ] Plantillas personalizables
- [ ] Envío automático de facturas
🟢 PRIORIDAD MEDIA
🔌 INTEGRACIONES
16. Exportación Contable
- [ ] Sage
- [ ] Contaplus
- [ ] A3
- [ ] CSV/XLSX estándar
17. Sincronización Calendarios
- [ ] Google Calendar
- [ ] Outlook
18. Pasarela de Pago
- [ ] Stripe
- [ ] Redsys
- [ ] Bizum
✅ CHECKLIST DE PROGRESO
Fiscal
- [ ] Modelo 303
- [ ] Modelo 347
- [ ] Libro SII
- [x] VeriFactu (PRE operativo; prod pendiente)
Facturación
- [ ] Recurrente (facturación automática)
- [ ] Cobros manuales mejorados
- [x] Cartera de efectos ✅
- [x] Series configurables ✅
- [x] VeriFactu integrado ✅
- [x] Rectificativas ✅
- [x] SEPA básico ✅
Logística (¡Muy completo!)
- [x] Almacenes multi-sede
- [x] Transferencias
- [x] Fulfillment MRP
- [x] Carta de carga
- [x] Cuarentena
- [x] Reposición furgonetas
- [x] Predicción estacional (año anterior)
- [x] Hub & Spoke
- [ ] Inventarios físicos con app
- [ ] Alertas proactivas (UI)
Planificación (¡Muy completo!)
- [x] Calendario
- [x] Visitas
- [x] Rutas maestras
- [x] Generación automática desde templates (job)
- [x] Transferencias entre técnicos
- [x] Modo lluvia
- [x] Optimización de rutas
- [ ] Botón manual "Generar visitas" (UI)
Zonas y GPS
- [x] Todo implementado ✅
Reportes
- [x] Rentabilidad (ingresos, costes, gastos, margen)
- [x] Consumos
- [x] Prefacturación
- [ ] Balance completo
- [ ] Cuenta de resultados estandarizada
Producto
- [x] Catálogo
- [x] Categorías
- [x] Stock multi-almacén
- [x] Lotes
- [x] Unidades básicas (mejorable)
- [ ] Códigos de barras
- [ ] Servicios
- [ ] Kits
- [ ] Alquileres
🎯 RESUMEN EJECUTIVO
Lo que somos (✅ Implementado):
- Planificación avanzada - Generación automática de visitas, optimización de rutas
- Logística enterprise - MRP con predicción estacional, Hub & Spoke, fulfillment
- Zonas geográficas serias - Polígonos, círculos, asignación automática
- Stock completo - Multi-almacén, lotes, trazabilidad, cuarentena
- Gestión financiera básica - Rentabilidad, cartera, SEPA, series
Lo que nos falta para ERP completo:
- Fiscalidad española - Modelo 303, 347, SII (imprescindible)
- Facturación recurrente - Contratos con generación mensual
- Mejoras UX/UI - Botón generar visitas, alertas proactivas, emails
- Códigos de barras - Para agilizar TPV e inventarios
Pre-Launch Técnico (Beta)
- [ ] Email retry con cola y reintentos
- [ ] Push subscriptions en Prisma (no en memoria)
- [ ] Pagination con ordenamiento por defecto
- [ ] Cloudinary URL parsing robusto
Testing (ÚLTIMA FASE - cuando todo esté estable)
Nota importante: Los tests serán lo ÚLTIMO que hagamos. Una vez todo el código esté perfecto y estable, entonces implementaremos la suite de tests completa. Hacer tests ahora sería contraproducente porque el código aún puede cambiar significativamente y romperíamos los tests constantemente.
- [ ] Tests de integración flujos críticos (auth, facturación, login)
- [ ] Tests unitarios servicios core
- [ ] Tests e2e principales flujos
- [ ] Cobertura mínima 70%
🔧 PRE-LAUNCH: Deuda Técnica Crítica
🔴 CRÍTICO (Impediría lanzamiento Beta)
PL-1. Email Retry y Cola de Envío
Estado: ⚠️ Implementado parcialmente - Sin reintentos
El servicio de email actual (mailer.ts) falla silenciosamente sin reintentos.
- [ ] Implementar cola de emails pendientes
- [ ] Reintentos automáticos: 3 intentos con backoff exponencial
- [ ] Dead letter queue para fallos permanentes
- [ ] Notificación a admin si el servicio de email falla
- [ ] Guardar emails críticos en BD para reintento manual
FLUJO ACTUAL: Enviar → Falla → Throw error → Se pierde el email ❌
FLUJO DESEADO: Enviar → Falla → Cola → Reintento 1 → 2 → 3 → Alerta admin🟡 IMPORTANTE (Degradaría experiencia)
PL-2. Push Notifications Persistencia
Estado: ⚠️ En memoria (Map) - Se pierde al reiniciar servidor
Las suscripciones push se guardan en Map() en memoria. Al reiniciar el servidor, todos los técnicos pierden las notificaciones push.
- [ ] Migrar push subscriptions de Map() a tabla Prisma
- [ ] Modelo:
PushSubscription { userId, endpoint, p256dh, auth, createdAt } - [ ] Expiración automática de suscripciones antiguas
- [ ] Re-suscripción automática en el cliente
PL-3. Pagination con Default Sorting
Estado: ⚠️ Sin orden por defecto
Las queries paginadas no tienen orden definido, causando resultados inconsistentes y full table scans.
- [ ] Agregar
orderBy: { createdAt: 'desc' }a todas las queries paginadas - [ ] Índices compuestos para ordenamiento eficiente
- [ ] Permitir ordenamiento por columna desde UI
PL-4. Cloudinary URL Parsing Robusto
Estado: ⚠️ String replacement frágil
El código actual usa url.replace('/upload/', '/upload/f_png/') que puede fallar con URLs complejas.
- [ ] Usar Cloudinary SDK o URL API en lugar de string replacement
- [ ] Manejar casos edge: URLs con transformaciones existentes
- [ ] Fallback graceful si la URL no es parseable
📞 NOTAS PARA EL EQUIPO
Tenemos MUCHO más de lo que parece.
El sistema ya es operativamente muy avanzado:
- Genera visitas automáticamente desde rutas maestras
- Predice necesidades de stock comparando con año anterior
- Optimiza rutas con algoritmos
- Gestiona múltiples almacenes con Hub & Spoke
Prioridad 1: Fiscalidad española (303, 347, SII) Prioridad 2: Mejorar UX de funcionalidades existentes Prioridad 3: Facturación recurrente
Documento vivo - Se actualiza con cada sprint