v9.10 — 25/03/2026
🔄 Datos del Planificador
• El Excel Planificador se lee via Bridge API
• 📥 Excel→Sheets: importa filas nuevas/modificadas del Excel al Sheet (compara por clave única)
• 📤 Sheets→Excel: exporta Sheet como .xlsx a Google Drive (mantiene últimas 5 versiones)
• 🔄 Sync Bidireccional: importa + exporta en un solo clic
• Auto-sync: configurar trigger en Apps Script cada 15 min (función syncAuto)
• Apps Script v5 con funciones: syncFromExcel, syncToExcel, syncBidirectional, syncStatus
🖥️ Integración POS (PostgreSQL)
• API Bridge Node.js (pos_api_bridge.js) con 10 endpoints REST
• Admin → 🖥️ POS: config URL + API Key, test conexión, sync ventas/productos/empleados
• Barcode fallback: búsqueda en POS si no encuentra en Sheet/Firestore
• Auto-fill arqueo desde POS (cargarVentasPOS)
👤 Alta empleado mejorada
• Modal unificado crear/editar con todos los campos (foto, roles, zona, IBAN, SIP)
• Roles en grid 3 columnas, zona con scroll
• Banner inicio compacto (horizontal, mitad de alto)
v9.9 — 24/03/2026
📰 Tablón de Noticias
• Noticias visibles en la página de inicio debajo del perfil
• Tipos: 📰 Noticia, 🆕 Novedad, 🚨 Urgente (fondo rojo), 🎉 Evento, 📚 Formación
• Filtro por rol: visible para todos, solo jefes tienda, solo zona, solo admin, etc.
• Fecha de caducidad opcional — las noticias caducadas desaparecen solas
• Imagen/adjunto con lightbox
• Admin: crear, activar/desactivar, eliminar noticias
• Colección Firestore: noticias
📋 Historial de Versiones en Admin
• Sección desplegable con changelog completo v9.1→v9.9
v9.8 — 24/03/2026
👥 Módulo RRHH completo
• 📋 Candidatos — alta, pipeline (nuevo→entrevista→prueba→aprobado→contratado), historial, CV adjunto, filtros
• 🏖️ Vacaciones/Ausencias — solicitud→aprobación zona→aprobación RRHH, justificantes, tipos (vacaciones/baja/permiso/maternidad)
• 📄 Documentos — contratos, nóminas, DNI, títulos por empleado con descarga
• 📊 Dashboard RRHH — plantilla por tienda, pipeline candidatos, KPIs
• Colecciones Firestore: candidatos, vacaciones, docs_rrhh
🔐 Administración puede borrar en TODAS las secciones
• hasRole('administracion') añadido a 30+ puntos de control (mg, isMgr, isRRHH, canEdit, canAct)
• Planificador: admin puede editar, eliminar, marcar pagado, crear órdenes de pago
v9.7 — 24/03/2026
🏆 Empleado del Trimestre — anónimo + trimestral
• 1 voto por trimestre por tienda (Q1 Ene-Mar, Q2 Abr-Jun, Q3 Jul-Sep, Q4 Oct-Dic)
• Voto anónimo: se guarda como "Anónimo", evaluadorId interno para validación
• Kanban y detalle no muestran quién votó (solo director puede verlo)
• Indicador visual verde/rojo al seleccionar tipo: "Puedes votar" / "Ya has votado"
📦 Proveedor en Pedidos — autocompletado + crear nuevo
• Datalist dl-provs2 alimentado por proveedores PG (600+ proveedores)
• Botón "+ Nuevo" crea proveedor en Firestore + Sheet al instante
• Aviso ⚠️ si el proveedor no existe en la base de datos
💰 Cierres de Hoy (Dashboard) arreglado
• Campos corregidos: totalCash, ingreso, bancoIngreso, sobra (antes undefined)
v9.6 — 24/03/2026
🔒 Filtro global de tiendas por rol
• getMyStores() — jefe tienda ve solo su tienda, jefe zona sus tiendas, director todas
• populateStoreDropdowns() — centralizado para TODOS los dropdowns del ERP
• Aplicado a: Tareas, Compra, Pedidos, Auditorías, Arqueo, Pagos, Peticiones, Devoluciones, Ventas, Horario
✅ Tareas — CONTABILIDAD oculta para jefe zona
• Las tareas de CONTABILIDAD solo visibles para contabilidad/admin/director
• Badge y filtro dropdown también filtrados
v9.5 — 24/03/2026
💰 Arqueo de Caja — mejoras mayores
• Fórmula ingreso corregida: TotalCash - Cambio - Gastos - CajaFuerte
• Fórmula sobra corregida: TotalCash - (CajaHoy + DineroCaja - Visa - Vales) = sobra real
• 🔐 Campo Caja Fuerte añadido al formulario
• Panel SOBRAS/FALTAS con badge coloreado + destino (banco/caja fuerte/cambio)
• Billetes invertidos: 5€→500€ (de menor a mayor)
• Campos sin "0" por defecto (placeholder gris)
• Enter para navegar entre campos (5€→10€→...→500€→Monedas→CajaHoy→...)
• Campos VENTAS aceptan fórmulas: 34+33=67, 500+625.33, etc.
• Tienda + empresa bloqueados para jefe tienda
🖨️ Impresión dual
• Ticket 1: CAMBIO PARA MAÑANA (solo cambio, letras grandes, para dejar en caja)
• Ticket 2: CIERRE COMPLETO (todos los datos, Helvetica Neue, secciones)
• Prompt al guardar: 1=Mañana, 2=Cierre, 3=Los dos
🔐 Módulo Caja Fuerte
• Nueva pestaña en Arqueo con colección Firestore caja_fuerte
• Movimientos: entrada (sobra), salida→banco, salida→cambio, salida→otro
• Saldo por tienda, justificante obligatorio, filtros
v9.4 — 24/03/2026
🔒 Permisos por rol — hasRole() en todo el ERP
• Convertido TODO .includes(CU.role) a hasRole() para multi-rol
• renderTickets, renderLista, renderPedidos, renderTareas, renderArqHist, etc.
• filterListByTienda usa hasRole()
📊 Auditorías — filtro por rol
• Jefe tienda solo ve Faena + Empleado Trimestre (no Limpieza ni Encargada Zona)
• Kanban, Comparar y dropdown filtrados por rol
📦 Devoluciones arregladas
• Proveedor datalist propio (dl-provs-dev)
• Tienda bloqueada para jefe tienda
• Lector de código busca precio en API + Sheet automáticamente
v9.3 — 23/03/2026
📊 Auditorías — 4 tipos con checklist completo
• ✅ Limpieza y Orden (18 ítems, 5 categorías, máx 90 pts) — jefe zona
• 📋 Encargada Zona (16 ítems, 4 cats, máx 80 pts) — jefe zona
• 🏆 Empleado del Trimestre (20 ítems, 5 cats, máx 100 pts) — jefe zona + tienda
• 📝 Faena Diaria (58 tareas checkbox con responsable + hora) — jefe tienda
• populateAuditTypes() dinámico por rol
• GPS obligatorio en todas las auditorías
🔔 Canal Ético — archivos + evidencia RRHH
• Upload de fotos/PDFs/docs en denuncias
• RRHH puede añadir evidencia por caso
👤 Empleados multi-rol
• Checkboxes de roles múltiples (jefe_tienda + rrhh, etc.)
• hasRole() checks both role and roles[] array
• Edit modal: foto, IBAN, SIP, DNI, nacimiento, contraseña
📦 Proveedores — admin + Excel Planificador sync
• Source: PostgreSQL (tabla proveedores)
• Edit modal completo (CIF, IBAN, forma pago, días pago)
• Auto-fill en Alta Documento y Orden de Pago
• Apps Script sync: addProveedor, updateProveedor, deleteProveedor
v9.2 — 23/03/2026
📦 Pedidos a Proveedores — flujo completo
• GPS auto-capture + múltiples archivos (fotos/PDFs)
• Recepción: % recibido (100/75/50/25), albarán upload
• Reclamar: 🚨 con fotos de reclamación
• Pasar a Pagos: 💳 envía a Sheet "Todo" vía Apps Script
• Thumbnails por tipo (azul=pedido, verde=albarán, rojo=reclamación)
💳 Alta Documento mejorada
• Validación planApi, loader, campo Nº Pedido Interno
• Auto-fill proveedor (tipo pago, días, IBAN)
🎨 Fuente Helvetica Neue
• font-weight:300 body, 700 headers/buttons
Tienda→Empresa auto-fill
• getEmpresaForTienda(), autoFillEmpresa(), populateEmpresaDropdowns()
v9.1 — 23/03/2026
💳 Planificador de Pagos
• Google Sheet "Todo" via Visualization API (23K filas en ~5s)
• Apps Script CRUD (add, edit, delete, markpaid)
• Dashboard: 5 tarjetas clickables, calendario 6 meses, pivot table
• Previsión ventas vs pagos por tienda (55% presupuesto)
• Gráficos: by empresa, by tipo, top 15 proveedores, by banco
• Generador de pagarés, órdenes de pago, SEPA XML
Base del ERP
• PostgreSQL via Bridge API
• 18 colecciones Firestore
• Tabs: Home, Tareas, Compra, Pedidos, Directorio, QR, Control, Caja, Peticiones, Pagos, Seguros, Admin