# Changelog - v1.5.33

## API v2 Migration: ESEA Field Name Update

### Release Date
2024-01-XX

---

## 📋 Resumen

**Actualización crítica** para resolver páginas en blanco en el módulo ESEA causadas por cambios en la estructura de respuesta de la API v2. La API v2 cambió el nombre del campo `idDetalle` a `idFormulario`, lo que provocaba que los parámetros `chartid` llegaran vacíos a las páginas de gráficos.

---

## 🔴 Problema Original

### Síntomas
- Páginas de gráficos ESEA mostraban pantalla en blanco
- URLs generaban `chartid=` vacío: `?chartid=&epID=0`
- Panel de debug mostraba:
  ```
  Keys disponibles: idFormulario, nombreEsp, nombreIng, variables
  ❌ idDetalle NO existe
  ```

### Causa Raíz
La API v2 cambió la estructura de respuesta:
- **API v1 (viejo)**: `esea_get_params()` retornaba campo `idDetalle` (valores numéricos: 442, 443, 444, 440)
- **API v2 (nuevo)**: Retorna campo `idFormulario` (valores string: BOPBPM6, IIPBPM6, ARDLBPM6, EDTBPM6)

### Impacto
- Todos los shortcodes ESEA generaban enlaces con `chartid` vacío
- Páginas de Balanza de Pagos, Deuda Externa, Posición de Inversión, y Activos de Reserva no cargaban
- Sistema de navegación entre categorías ESEA completamente roto

---

## ✅ Solución Implementada

### 1. Actualización de Campo en Shortcodes (8 archivos)

Reemplazado `$ss[0]["idDetalle"]` por `$ss[0]["idFormulario"]` en todos los archivos ESEA:

#### A. shortcodes/ESEA/esea-list-shortcode.php
```php
// ANTES (línea 47):
&chartid=<?php echo $ss[0]["idDetalle"]; ?>&epID=

// DESPUÉS:
&chartid=<?php echo $ss[0]["idFormulario"]; ?>&epID=

// Agregado comentario de documentación (línea 22):
// API v2 usa "idFormulario" en lugar de "idDetalle"
```

#### B. shortcodes/ESEA/Balanza_pagos.php (línea 62)
```php
// ANTES:
chartid=<?php echo $ss[0]["idDetalle"]; ?>

// DESPUÉS:
chartid=<?php echo $ss[0]["idFormulario"]; ?>
```

#### C. shortcodes/ESEA/saldo_bruto_deuda_externa.php (línea 62)
- Mismo cambio que Balanza_pagos.php

#### D. shortcodes/ESEA/pos_inversion_internacional.php (línea 62)
- Mismo cambio que Balanza_pagos.php

#### E. shortcodes/ESEA/activos_reserva_liquidez_ME.php (línea 62)
- Mismo cambio que Balanza_pagos.php

#### F. shortcodes/ESEA/matriz.php (líneas 100-103)
```php
// ANTES (formato multi-línea):
<?php echo get_permalink(
    get_page_by_path('encuestas/sector-externo-y-cuenta-capital/estadisticas')
) . '?active=' . $catID .
'&son=' . $subcatNombre .
'&chartid=' . $ss[0]["idDetalle"]

// DESPUÉS:
<?php echo get_permalink(
    get_page_by_path('encuestas/sector-externo-y-cuenta-capital/estadisticas')
) . '?active=' . $catID .
'&son=' . $subcatNombre .
'&chartid=' . $ss[0]["idFormulario"]
```

#### G. shortcodes/ESEA/matriz2.php (línea 86)
```php
// ANTES:
$ss[0]["idDetalle"]

// DESPUÉS:
$ss[0]["idFormulario"]
```

#### H. shortcodes/ESEA/matrizsepa.php (línea 95)
- Mismo cambio que matriz2.php

---

### 2. Debug Output Añadido

Agregado bloque de debug en `secmca-api.php` función `scm_esea_chart_shortcode()` (líneas 2677-2684):

```php
// DEBUG TEMPORAL: Mostrar chartID recibido
if (is_user_logged_in() && !empty($chartID)) {
    echo "<div style='background: #d1ecf1; border: 2px solid #0c5460; padding: 15px; margin: 10px;'>";
    echo "<strong>🔍 DEBUG - scm_esea_chart_shortcode()</strong><br>";
    echo "- chartID recibido: <strong>" . esc_html($chartID) . "</strong><br>";
    echo "- Tipo: " . gettype($chartID) . "<br>";
    echo "- epID: " . (isset($_GET["epID"]) ? esc_html($_GET["epID"]) : 'No definido') . "<br>";
    echo "- subject: " . (isset($_GET["subject"]) ? esc_html($_GET["subject"]) : 'No definido') . "<br>";
    echo "- finaldates: " . (isset($_GET["finaldates"]) ? esc_html($_GET["finaldates"]) : 'No definido') . "<br>";
    echo "</div>";
}
```

**Propósito:**
- Ver qué valor de chartID realmente recibe la función
- Identificar tipo de dato (string vs numeric)
- Verificar otros parámetros GET
- Solo visible para usuarios logueados

---

### 3. Mapeo de IDs (Descubierto)

La migración de API v2 cambió formato de identificadores:

| ID Viejo (Numérico) | ID Nuevo (String) | Nombre del Formulario |
|---------------------|-------------------|-----------------------|
| 442 | BOPBPM6 | Balanza de Pagos |
| 443 | IIPBPM6 | Posición de Inversión Internacional |
| 444 | ARDLBPM6 | Activos de Reserva de Liquidez |
| 440 | EDTBPM6 | Saldo Bruto Deuda Externa |

---

## ⚠️ Trabajo Pendiente

### Issue Identificado: Comparación de chartID

El código en `scm_esea_chart_shortcode()` (línea ~2686) aún usa comparaciones numéricas:

```php
if($chartID == 442) {
    // Lógica para Balanza de Pagos
} elseif($chartID == 443) {
    // Lógica para Posición de Inversión
}
// etc.
```

**Problema:** Los nuevos chartIDs son strings (`BOPBPM6`), no números (442).

### Solución Recomendada (Para Próxima Versión)

**Opción 1: Mapeo de IDs**
```php
// Agregar al inicio de scm_esea_chart_shortcode()
$chartIDMap = array(
    'BOPBPM6' => 442,   // Balanza de Pagos
    'IIPBPM6' => 443,   // Posición de Inversión
    'ARDLBPM6' => 444,  // Activos de Reserva
    'EDTBPM6' => 440    // Deuda Externa
);

$numericChartID = isset($chartIDMap[$chartID]) ? $chartIDMap[$chartID] : null;

// Luego usar:
if($numericChartID == 442) {
    // Lógica existente
}
```

**Opción 2: Reescribir con comparaciones de string**
```php
if($chartID == 'BOPBPM6') {
    // Balanza de Pagos
} elseif($chartID == 'IIPBPM6') {
    // Posición de Inversión
}
```

**Opción 3: Usar parámetros alternativos**
- Basarse en `epID` y `subject` en lugar de `chartID`

---

## 📝 Archivos Modificados

### Shortcodes (8 archivos)
1. `shortcodes/ESEA/esea-list-shortcode.php` - Líneas 22, 47
2. `shortcodes/ESEA/Balanza_pagos.php` - Línea 62
3. `shortcodes/ESEA/saldo_bruto_deuda_externa.php` - Línea 62
4. `shortcodes/ESEA/pos_inversion_internacional.php` - Línea 62
5. `shortcodes/ESEA/activos_reserva_liquidez_ME.php` - Línea 62
6. `shortcodes/ESEA/matriz.php` - Líneas 100-103
7. `shortcodes/ESEA/matriz2.php` - Línea 86
8. `shortcodes/ESEA/matrizsepa.php` - Línea 95

### Core (1 archivo)
9. `secmca-api.php` - Líneas 2677-2684 (debug output), Línea 24 (versión)

---

## 🧪 Testing Requerido

### Después de Instalar v1.5.33:

1. **Verificar URLs generadas:**
   - Ir a página principal ESEA
   - Revisar que enlaces tengan `chartid=BOPBPM6` (no vacío)
   - Verificar formato: `?chartid=BOPBPM6&epID=0`

2. **Revisar Debug Output:**
   - Login como usuario
   - Navegar a página de gráfico ESEA
   - Verificar que cuadro debug muestre:
     - chartID con valor (ej: `BOPBPM6`)
     - Tipo: `string`

3. **Pruebas de Navegación:**
   - Balanza de Pagos → Debe cargar datos
   - Posición de Inversión Internacional → Debe cargar datos
   - Activos de Reserva → Debe cargar datos
   - Deuda Externa → Debe cargar datos

4. **Verificar Matrices:**
   - `matriz.php` - Enlaces funcionales
   - `matriz2.php` - Enlaces funcionales
   - `matrizsepa.php` - Enlaces funcionales

---

## 🔄 Relación con Versiones Anteriores

### v1.5.32 (Anterior)
- **Objetivo:** Arreglar procesamiento de fechas en ESEA
- **Cambio:** Fechas pasadas directamente a `esea_allData2()`
- **Resultado:** ✅ Completado

### v1.5.33 (Actual)
- **Objetivo:** Arreglar chartID vacío en URLs ESEA
- **Cambio:** Usar `idFormulario` en lugar de `idDetalle`
- **Resultado:** ⏳ Parcialmente completado (URLs corregidas, lógica de comparación pendiente)

### v1.5.34 (Próxima - Sugerida)
- **Objetivo:** Actualizar lógica de comparación de chartID
- **Cambio:** Implementar mapeo string → numeric o reescribir comparaciones
- **Status:** 📋 Planeada

---

## 📚 Lecciones Aprendidas

### Patrón de Migración API v2

Este issue estableció un patrón para futuras migraciones:

1. **Identificar cambios de estructura:**
   - Usar panel de debug para ver nuevos campos
   - Documentar mapeos old → new

2. **Actualizar en fases:**
   - Fase 1: Corregir nombres de campos (v1.5.33)
   - Fase 2: Adaptar lógica de comparación (v1.5.34)
   - Fase 3: Limpieza de código debug

3. **Módulos Pendientes:**
   - EFPA probablemente necesita migración similar
   - SIMAFIR verificar estructura de respuesta
   - EMFA ya migrado en v1.5.29-31

---

## 🔍 Debug Panel Integration

El panel de debug fue crucial para identificar este issue:

```php
// Debug añadido en esea-list-shortcode.php que reveló el problema:
echo "Keys disponibles: " . implode(", ", array_keys($ss[0])) . "<br>";
if (isset($ss[0]["idDetalle"])) {
    echo "✅ idDetalle existe<br>";
} else {
    echo "❌ idDetalle NO existe<br>";
}
```

**Output que identificó el problema:**
```
Keys disponibles: idFormulario, nombreEsp, nombreIng, variables
❌ idDetalle NO existe
nombreEsp: BOPBPM6
```

---

## 📦 Instalación

```bash
# Descomprimir en directorio de plugins
cd wp-content/plugins/
unzip secmca-api-v1.5.33-ESEA-IDFORMULARIO-FIX.zip

# O reemplazar archivos existentes manualmente
```

---

## 🐛 Issues Conocidos

1. **chartID Comparison Logic:**
   - Comparaciones `if($chartID == 442)` no coincidirán con nuevos IDs string
   - **Workaround temporal:** URLs ahora tienen chartID, pero páginas pueden no cargar contenido específico
   - **Fix permanente:** Requerido en v1.5.34

2. **Debug Code en Producción:**
   - Bloques de debug visibles para usuarios logueados
   - **Remover:** Una vez validado funcionamiento

---

## 📞 Soporte

Si después de instalar v1.5.33:
- URLs aún tienen `chartid=` vacío → Revisar caché de plugin/navegador
- Páginas cargan pero sin datos → Issue #2 pendiente (comparación de IDs)
- Otros errores → Verificar logs de PHP en `inc/errorlog.txt`

---

## ✅ Estado del Cambio

| Componente | Estado | Notas |
|------------|--------|-------|
| URL Generation | ✅ FIXED | chartID ahora poblado |
| Field Name Migration | ✅ FIXED | idFormulario usado |
| Debug Output | ✅ ADDED | Ver valores recibidos |
| ID Comparison Logic | ⚠️ PENDING | Necesita mapeo |
| Testing | 🧪 REQUIRED | Validar en staging |
| Production Deploy | ⏳ READY | Después de testing |

---

**Autor:** GitHub Copilot AI Assistant  
**Fecha:** 2024-01-XX  
**Versión:** 1.5.33  
**Tipo de Release:** Bug Fix (API v2 Migration)  
**Criticidad:** 🔴 HIGH (Afecta funcionalidad completa de ESEA)
