# 🚀 Guía Rápida: Refactoring de $progress['module']

> Tabla de cambios línea-por-línea para cada archivo

---

## LOTE 1: Progress Views (Find-Replace seguro)

### 📄 Views/Progress/List/table.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 118 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Pensum disponible en línea 117 |
| 120 | display | `{$progress['module']}` en concatenación | `{$pensum['module']}` en concatenación | Mismo contexto |
| 155 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 158 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 161 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 164 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 167 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |

**Validación:** `php -l Views/Progress/List/table.php`

---

### 📄 Views/Progress/Reader/table.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 84 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Pensum disponible en línea 85 |
| 122 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 125 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 128 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 131 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |

**Validación:** `php -l Views/Progress/Reader/table.php`

---

### 📄 Views/Progress/Print/table.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 89 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Pensum disponible en línea 90 |
| 108 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 111 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 114 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |
| 117 | img alt | `alt=\"" . $progress['module']` | `alt=\"" . $pensum['module']` | En img tag |

**Validación:** `php -l Views/Progress/Print/table.php`

---

## LOTE 2: Preenrollment/Tools (Revisar contexto)

### 📄 Views/Tools/Preenrollment/preenrollment.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 85 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | REVISAR si pensum está disponible |
| 86 | query | `.where("module", $progress['module'])` | `.where("module", $pensum['module'])` | Usa el pensum de línea 87? |
| 91 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Repetido de línea 85 |
| 97 | span | `MB-{$progress['module']}` | `MB-{$pensum['module']}` | Cosmético (display de ID) |
| 102 | comment | `// $progress['module'] es...` | `// $pensum['module'] es...` | Actualizar documentación |
| 105 | query | `.where("module", $progress['module'])` | `.where("module", $pensum['module'])` | Segundo query por module |

⚠️ **CRÍTICO:** Verificar que `$pensum` es accesible en todos estos contextos (revisar si hay bloques if/foreach)

**Validación:** `php -l Views/Tools/Preenrollment/preenrollment.php`

---

### 📄 Views/Preenrollments/Edit/preenrollment.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 65 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | ¿Pensum disponible? |
| 68 | query | `.where("module", $progress['module'])` | `.where("module", $pensum['module'])` | Query por módulo |
| 74 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Repetido |
| 78 | span | `MB-{$progress['module']}` | `MB-{$pensum['module']}` | Display span data |

⚠️ **CRÍTICO:** Mismo archivo que anterior, revisar scope de variables

**Validación:** `php -l Views/Preenrollments/Edit/preenrollment.php`

---

### 📄 Views/Preenrollments/Edit/Components/check.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 4 | comment | `// $progress['module'] es...` | `// $pensum['module'] es...` | Actualizar comentario |
| 8 | query | `.where("module", $progress['module'])` | `.where("module", $pensum['module'])` | Query principal |
| 12 | comment | `// $table .=$progress['module']` | `// $table .=$pensum['module']` | Código comentado |

⚠️ **CRÍTICO:** Este archivo se incluye como componente, revisar dónde se incluye para validar contexto

**Validación:** `php -l Views/Preenrollments/Edit/Components/check.php`

---

### 📄 Views/Tools/ProgressPensumModule/view.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 38 | query | `.where('module', $progress['module'])` | `.where('module', $pensum['module'])` | Query en select |
| 51 | echo | `echo("<td>{$progress['module']}</td>")` | `echo("<td>{$pensum['module']}</td>")` | Display en tabla |

⚠️ **ATENCIÓN:** Verificar si pensum está disponible antes de línea 38

**Validación:** `php -l Views/Tools/ProgressPensumModule/view.php`

---

## LOTE 3: Heredados + Documentación (Baja prioridad)

### 📄 Views/Tools/Autoenrollment/view.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 65 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Pensum en línea 67 |

⚠️ **NOTA:** Revisar línea 67 para confirmar que obtiene pensum

**Validación:** `php -l Views/Tools/Autoenrollment/view.php`

---

### 📄 Views/Reports/Preenrollments/view.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 116 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | ¿Pensum disponible? |
| 125 | comment | `//$code.="<td>{$progress['module']}</td>"` | `//$code.="<td>{$pensum['module']}</td>"` | Código comentado |

**Validación:** `php -l Views/Reports/Preenrollments/view.php`

---

### 📄 Views/Excels/preenrollments-old.php

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 64 | getModule | `$mmodules->getModule($progress['module'])` | `$mmodules->getModule($pensum['module'])` | Pensum en línea 65? |

⚠️ **NOTA:** Archivo tiene sufijo "old" - **CONSIDERAR DEPRECAR COMPLETAMENTE**

**Validación:** `php -l Views/Excels/preenrollments-old.php`

---

### 📄 Views/Progress/List/readme.md

| Línea | Tipo | ANTES | DESPUÉS | Notas |
|-------|------|-------|---------|-------|
| 166 | example | `` $mmodules->getModule($progress['module'])`` | `` $mmodules->getModule($pensum['module'])`` | Ejemplo en documentación |

**Validación:** Solo documentación, sin impacto funcional

---

## ⚡ Find-Replace Rápido (si es seguro)

```bash
# OPCIÓN 1: Replace global (CUIDADO - revisar antes de hacer commit)
find app/Modules/Sie/Views -name "*.php" -exec sed -i "s/\$progress\['module'\]/\$pensum['module']/g" {} \;

# OPCIÓN 2: Ver qué cambiaría (sin hacer cambios)
grep -r "\$progress\['module'\]" app/Modules/Sie/Views/ --include="*.php"

# OPCIÓN 3: Manual por archivo (RECOMENDADO)
# Seguir tabla línea-por-línea arriba
```

---

## ✅ Validación Completa

```bash
# 1. Después de LOTE 1
php -l Views/Progress/List/table.php && \
php -l Views/Progress/Reader/table.php && \
php -l Views/Progress/Print/table.php && \
echo "✅ Lote 1 OK"

# 2. Después de LOTE 2
php -l Views/Tools/Preenrollment/preenrollment.php && \
php -l Views/Preenrollments/Edit/preenrollment.php && \
php -l Views/Preenrollments/Edit/Components/check.php && \
php -l Views/Tools/ProgressPensumModule/view.php && \
echo "✅ Lote 2 OK"

# 3. Después de LOTE 3
php -l Views/Tools/Autoenrollment/view.php && \
php -l Views/Reports/Preenrollments/view.php && \
php -l Views/Excels/preenrollments-old.php && \
echo "✅ Lote 3 OK"

# 4. Tests finales
./vendor/bin/phpunit --stop-on-failure 2>&1 | tail -20

# 5. Verificar que no quedan rastros
grep -r "\$progress\['module'\]" app/Modules/Sie/Views/ --include="*.php" && \
echo "⚠️ Aún hay ocurrencias" || \
echo "✅ Todas las ocurrencias removidas"
```

---

## 📊 Progreso

| Lote | Estado | Archivos | Cambios |
|------|--------|----------|---------|
| 1 | ⬜ Pendiente | 3 | 19 |
| 2 | ⬜ Pendiente | 4 | 17 |
| 3 | ⬜ Pendiente | 4 | 6 |
| **TOTAL** | ⬜ Pendiente | **11** | **42** |

---

**Última actualización:** 2026-05-13
