# Resumen de Cambios: Pago de Mantenimiento y Desecho de Proyectos Activos

Se ha implementado completamente la funcionalidad solicitada para gestionar proyectos activos al final del trimestre (quincenas 6, 12, 18, 24).

## Cambios Realizados

### 1. Pantalla de Resumen ([resumen.php](file:///c:/CHV/ludotecaLocal/Colaborando/resumen.php))
- **Botones Dinámicos en Tarjetas:** Las tarjetas de proyectos activos (`En proceso`) muestran los botones **Pagar Manto** y **Desechar** si y solo si la quincena actual es un fin de trimestre (quincena % 6 === 0) y el mantenimiento no ha sido pagado en ese trimestre.
- **Información Adicional en Tarjetas Activas:** Ahora se visualiza en cada tarjeta de proyecto activo su **Potencial** de ingresos y su valor de **Penalización** (formateado como moneda).
- **Función Pagar Manto:** 
  - Solicita confirmación al usuario utilizando el diálogo `confirm()` asíncrono con el costo y departamento origen antes de proceder.
  - Resta los recursos necesarios (Tiempo, Personal, Capital) del departamento seleccionado (`deptoActual`).
  - Si el departamento no tiene recursos suficientes, muestra un mensaje de alerta.
  - Guarda `mantenimientoPagadoEnTrimestre = trimestreActual` en el proyecto para indicar que se pagó la mantención para la transición al siguiente trimestre.
  - **Habilidad Especial de Logística y Sistemas ("Omitir un mantenimiento"):** Si el departamento seleccionado es "LogisticaYSistemas", tiene comprada dicha habilidad especial (campo de acción especial distinto de `""`) y está disponible (cooldown), se le ofrece un diálogo modal preguntando si desea usar su habilidad para omitir el mantenimiento del proyecto **sin gastar ningún recurso**, o pagar de manera normal. Usar la habilidad actualiza su cooldown (`accionEspecialLastUsed`).
- **Función Desechar:**
  - Valida que el acumulado general hasta el trimestre actual sea suficiente para pagar la penalización. Si es insuficiente, se impide el desecho y se muestra un mensaje explicativo.
  - Utiliza la función `confirm()` personalizada asíncrona mediante callback (para evitar que aborte instantáneamente como lo hacía al usar un valor de retorno síncrono). Al confirmar, resta la penalización del acumulado del trimestre actual e internally cambia el estado del proyecto a `'descartado'`.
  - **Habilidad Especial de Operaciones:** Si el departamento seleccionado es "Operaciones", tiene comprada dicha habilidad especial (es decir, el campo de la acción especial es distinto de vacío `""`) y no está en *cooldown* (periodicidad), se le presenta un diálogo de decisión ofreciendo descartar el proyecto **sin costo** utilizando la habilidad especial, o realizar un desecho normal pagando la penalización. Usar la habilidad especial actualiza su último turno de uso (`accionEspecialLastUsed`).

### 2. Tablero de Juego ([jsCode.js](file:///c:/CHV/ludotecaLocal/Colaborando/jsCode.js))
- **Ocultamiento por Mantenimiento:** Se modificó la carga del tablero en la función `continuamos()` para que los proyectos activos cuyo mantenimiento ya se pagó en el trimestre actual no aparezcan en el tablero (de esta forma no se puede seguir trabajando en ellos en el fin de trimestre actual).
- **Reaparición en el Siguiente Trimestre:** Al cambiar el trimestre (por ejemplo, avanzar de la quincena 6 a la 7), la comparación detecta que el trimestre actual es mayor al del pago de mantenimiento, por lo que el proyecto vuelve a cargarse automáticamente en el tablero.
- **Función `limpiaProyectoGrande`**: Se implementó una nueva función helper para despejar la vista del proyecto grande cuando está en estado pendiente de pago o pago realizado en resumen.
- **Ancho de Diálogos de Alerta (`window.alert`)**: Se aumentó un 50% (de 300px a 450px) el ancho predeterminado de los cuadros de diálogo de alerta para evitar que los mensajes largos de advertencia o confirmación se vean estrechos.
- **Corrección de Actualización de Recursos (IDs Dinámicos)**: Se corrigió un problema donde los recursos del departamento seleccionado no se reflejaban visualmente al pagar el mantenimiento. Esto ocurría porque los IDs de los contenedores cambian de `#tiempoCh` a `#recursoDispTiempoGde` cuando un departamento está seleccionado. Se implementó una selección flexible que detecta ambos formatos.
- **Bypass de Cache del Navegador (Cache-Busting)**: Se implementó un parámetro único de marca de tiempo (`_t`) y la cabecera `cache: 'no-store'` en la carga AJAX de la sesión para evitar que el navegador devuelva respuestas cacheadas obsoletas del estado del juego al navegar entre el tablero y el resumen.

## Cómo Realizar las Pruebas (Verificación)

1. **Escenario de Pago de Mantenimiento:**
   - Asegúrate de estar en una quincena fin de trimestre (ej. **Q6** del Trimestre 1).
   - Ve a la pantalla de resumen. Verás los botones correspondientes en los proyectos en proceso.
   - Selecciona un departamento con recursos suficientes y pulsa **Pagar Manto**.
   - El proyecto desaparecerá inmediatamente de la lista del resumen.
   - Ve al Tablero (`colaborando2.php`) en la misma quincena (Q6) y verifica que el proyecto no se muestra.
   - Avanza la quincena a **Q7** (Trimestre 2). Vuelve al Tablero y comprueba que el proyecto reaparece en el tablero.

2. **Escenario de Desecho con Penalización:**
   - En la quincena fin de trimestre, ve a resumen.
   - Intenta desechar un proyecto cuya penalización sea mayor que tu acumulado actual disponible. Verifica que la aplicación bloquee la acción e informe.
   - Intenta desechar un proyecto teniendo fondos suficientes.
   - Confirma la alerta; comprueba que el proyecto desaparece y que la penalización se resta en la tabla de progresión general.
   - Ve al tablero y verifica que el proyecto desechado ya no vuelve a aparecer en ningún trimestre.
