v2.0.0 — Analítica multinivel, acceso por sucursal y vinculador de formatos
Versión mayor. Reúne tres bloques de trabajo que nunca se publicaron por separado, por eso el salto desde la 1.0.1.
Al actualizar no hay que hacer nada manualmente: las tablas y columnas nuevas se crean solas y la configuración de formatos se siembra con el mapeo que ya venía en el código. Probado sobre una instalación real con datos.
1. Analítica multinivel y acceso por sucursal
Todo —gráficas, indicadores, estadísticas y costos— se puede ver ahora en los cuatro niveles: toda la flota, una empresa, una ciudad/sucursal o una máquina, con filtro adicional por marca.
- Gráficas en todas partes. El dashboard estrena tendencia de disponibilidad, preventivo frente a correctivo, costos por mes y averías por sistema. La hoja de vida cambia la pestaña «Disponibilidad» por «Indicadores», con las gráficas de esa máquina. Todo es SVG generado en el servidor: sin librerías externas ni CDN.
- Indicadores nuevos: MTBF, cumplimiento del plan preventivo (programados frente a cerrados a tiempo), y costos separados en facturado, pagado y saldo, con costo promedio por intervención.
- Comparar por lo que sirva: empresa, ciudad/sucursal, máquina, marca o modelo, con un modo automático que elige la dimensión que aporta información en cada nivel.
- Acceso de clientes por sucursal. Hasta ahora un cliente solo podía tener acceso a una empresa completa. Ahora se le puede dar acceso a una o varias sucursales sin abrir el resto de la empresa. El panel de asignación está en la ficha de la ciudad/sucursal.
- El portal del cliente gana su propia sección de reportes con el mismo motor, acotada a lo suyo y redactada desde su lado, e incluye los costos completos: total facturado, pagado y pendiente por pagar.
2. Formato prellenado desde la tarea
- Al crear una tarea se elige qué formato debe diligenciar el técnico. Si se deja sin elegir —como en las tareas que genera el mantenimiento recurrente—, lo escoge él al abrirla.
- El botón «Abrir formato» abre el formulario en una pestaña nueva con los datos de la máquina ya cargados, y la tarea pasa sola a «En progreso».
- Hay también un panel «Diligenciar formato» en la ficha del técnico, para abrir cualquiera de los formatos prellenado sin necesidad de una tarea.
Corrección importante: un técnico con una tarea asignada en una máquina que no tenía asignada veía la tarea en su panel, pero al entrar chocaba con «No tienes acceso». Ahora la tarea es en sí misma la autorización: se entra a la máquina por estar asignado a ella o por tener una tarea en ella.
3. Vinculador de formatos
Nueva pantalla «Máquinas → Formatos». Hasta ahora, conectar un formulario de Forminator exigía tocar el código del plugin y publicar una versión. Ahora es configuración.
- Se elige el formulario y se mapea cada campo con desplegables que muestran la etiqueta y el slug reales (
text-14 — Código de máquina), con una sugerencia automática a partir de los nombres de los campos. - Se configura qué campo decide el tipo de mantenimiento y cómo se traducen sus valores, y lo mismo para el sistema/falla.
- Autorrelleno a la carta: se elige exactamente qué campo se llena con qué dato —de la máquina, la empresa, la ciudad, el usuario que abre el formato, la fecha de hoy o la tarea—, distinto en cada formato.
- Probador de mapeo: toma el último envío real del formulario y muestra qué extraería el plugin, sin crear nada.
- Aviso de campos rotos: Forminator renumera los slugs cuando se borra y se vuelve a crear un campo, y un campo perdido llega vacío sin avisar. Ahora se detecta y se avisa.
- Además: reprocesar un envío fallido desde los logs, duplicar la configuración de un formato, y activar o desactivar un formato sin borrar su mapeo.
Correcciones
- El sistema de la falla nunca se estaba guardando en lo que entraba por Forminator, así que la gráfica «Averías por sistema» solo reflejaba las intervenciones cargadas a mano. Ahora se mapea y se traduce.
- El costo entraba siempre en cero en las intervenciones creadas desde formulario. Ahora costo y monto abonado son mapeos opcionales.
- Un horómetro escrito «1.234,5» se guardaba como 0, en silencio. El campo del formato de avería es de texto, así que ocurría de verdad.
- Tres puntos donde un campo vacío en la base provocaba un aviso de PHP visible en la página.
Pruebas
Ejecutadas sobre WordPress 7.1 y MariaDB 10.4 reales: instalación limpia, actualización desde la v1.0.1 con datos preexistentes —sin pérdida ni alteración de nada— y desinstalación completa. 147 comprobaciones de integración, más 325 en pruebas aisladas de la lógica y 224 consultas SQL verificadas.
Lo que no se pudo probar automáticamente, porque exige el sitio real: el envío de un formulario de Forminator de punta a punta, la generación del PDF por E2PDF, y la lectura de formularios y campos desde la API de Forminator que alimenta la pantalla de Formatos.