# Plan de Implementación: Contabilización de Activos (Producidos, Recuperados y Perdidos) Este documento detalla la lógica matemática y los pasos técnicos necesarios para implementar la visualización y el cálculo de estadísticas de activos en la pantalla de resumen de la aplicación **Colaborando**. --- ## 📋 Resumen del Enfoque Para evitar desincronizaciones de datos y la necesidad de alterar la base de datos o los esquemas JSON de persistencia de sesión, utilizaremos un **cálculo dinámico en el cliente** (JavaScript). Toda la información necesaria ya existe dentro del arreglo global `proyectos` y el objeto `arregloGeneral`, que se guardan y cargan automáticamente con la sesión. --- ## 🧮 Lógica de Cálculo de Métricas Para cada tipo de activo (p. ej., *Personal Calificado*, *Analistas*, *Flujo de Efectivo*, etc.), los valores se calculan recorriendo el arreglo global `proyectos` buscando proyectos con `estatus === 'Completado'`: ### 1. Activos Producidos (Total) * **Definición:** Activos que fueron creados/asignados para completar los proyectos finalizados. * **Lógica:** Suma de los requerimientos originales de todos los proyectos completados. * **Fórmula:** $$\text{Producidos}(c) = \sum_{p \in \text{Completados}} p[c]$$ *(Donde $c$ es el campo de requerimiento del activo, como `amarillo`, `naranjas`, etc.)* ### 2. Activos Recuperados * **Definición:** Activos que se arrastraron exitosamente desde los proyectos terminados hacia los departamentos (lo cual resta del proyecto y suma al departamento). * **Lógica:** La diferencia entre el requerimiento original del proyecto completado y su valor de asignación actual (que disminuye al ser arrastrado). * **Fórmula:** $$\text{Recuperados}(c) = \sum_{p \in \text{Completados}} (p[c] - p['activoAsignado' + (i+1)])$$ *(Donde $i$ es el índice del slot correspondiente al tipo de activo en el proyecto)* ### 3. Activos Perdidos * **Definición:** Activos que no se pudieron recuperar de proyectos finalizados por falta de recursos o de espacio antes de cambiar de periodo. * **Lógica:** Suma de los activos remanentes (`activoAsignadoX`) en proyectos completados que pertenecen a trimestres anteriores (ya que en el trimestre actual todavía es posible recuperarlos). * **Fórmula:** $$\text{Perdidos}(c) = \sum_{p \in \text{Completados}, p.\text{trimestreCompletado} < \text{trimestreActual}} p['activoAsignado' + (i+1)]$$ --- ## 🛠️ Archivos y Cambios Requeridos Todo el cambio se centraliza en el archivo **[resumen.php](file:///C:/CHV/ludotecaLocal/Colaborando/resumen.php)**. ### Paso 1: Interfaz de Usuario (HTML) Modificar la estructura de la tabla `#tablaActivos` (líneas ~308-348) para cambiar sus encabezados a: 1. **Activo** 2. **Producidos** 3. **Recuperados** 4. **Perdidos** Asignar identificadores de celda descriptivos para inyectar los datos, por ejemplo: * Para Personal Calificado: `producidosPersonalCalificado`, `recuperadosPersonalCalificado`, `perdidosPersonalCalificado`. * Para Analistas: `producidosAnalistas`, `recuperadosAnalistas`, `perdidosAnalistas`. * *(Repetir para los 6 tipos de activos)*. ### Paso 2: Motor de Cálculo (JavaScript) Dentro de la función `actualizarResumenUI()` (línea ~720): 1. **Inicializar:** Crear un objeto local para llevar las cuentas por tipo de activo e indicador (ej. `const stats = { PersonalCalificado: { producidos: 0, recuperados: 0, perdidos: 0 }, ... }`). 2. **Procesar:** Iterar sobre el arreglo `proyectos` y clasificar según las fórmulas explicadas. 3. **Renderizar:** Actualizar el contenido de las celdas del HTML utilizando jQuery (ej. `$('#producidosPersonalCalificado').text(stats.PersonalCalificado.producidos)`). --- ## 🎯 Beneficios de esta Solución * **Integridad de datos:** No requiere modificar la estructura JSON del archivo de datos (`datos.json` / `cheve.json`). * **Sincronización total:** Si el usuario recarga la página o arrastra activos, la tabla se vuelve a calcular en tiempo real reflejando el estado real del juego. * **Mantenibilidad:** El código queda autocontenido en la vista de resumen.