# Estructura de Parámetros EFPA

## Descripción General
El formulario de parámetros EFPA replica exactamente la estructura de EMFA, adaptado para trabajar con el endpoint de la API EFPA.

---

## Endpoint de API

### Obtener Variables por Cuadro
```
http://192.168.100.137:8081/simafir_api/ws/efpa/criterios/obtenerPorCuadro/{cuadro}?formato=json
```
- **Método**: GET
- **Autenticación**: Bearer Token (requerido)
- **Respuesta**: Array de objetos con estructura:
  ```json
  [
    {
      "codigoVariable": "string",
      "variable": "string",
      "codigoSector": "string",
      "hijos": [
        {
          "codigoVariable": "string",
          "variable": "string"
        }
      ]
    }
  ]
  ```

### Obtener Datos
```
http://192.168.100.137:8081/simafir_api/ws/public/efpa/obtenerDatos/{cuadro}/{variable}/{pais}/{frecuencia}/{sector}/{subsector}?fechaInicio={dd-mm-yyyy}&fechaFin={dd-mm-yyyy}&formato=json
```
- **Método**: GET
- **Autenticación**: NO requerida (endpoint público)
- **Parámetros**:
  - `cuadro`: Código del cuadro (ej: "EFPA01")
  - `variable`: Código de variable
  - `pais`: Código ISO Alpha-3 del país (CRI, SLV, GTM, HND, NIC, DOM, PAN)
  - `frecuencia`: "M" (Mensual), "A" (Anual), "T" (Trimestral)
  - `sector`: Código del sector (auto-completado desde variable)
  - `subsector`: Código del subsector (auto-completado desde primer hijo de variable)
  - `fechaInicio`: Formato dd-mm-yyyy (ej: "01-01-2020")
  - `fechaFin`: Formato dd-mm-yyyy (ej: "31-12-2025")

---

## Estructura del Formulario

### 1. País / Regiones (Tab Navigation)
- **Tabs**: PAIS / REGIONES
- **Control**: Radio buttons
- **Valores**:
  - CRI = Costa Rica
  - SLV = El Salvador
  - GTM = Guatemala
  - HND = Honduras
  - NIC = Nicaragua
  - DOM = República Dominicana
  - PAN = Panamá

### 2. Variables
- **Control**: Radio buttons (dinámico desde API)
- **Fuente**: `efpa_get_variables_by_cuadro($cuadro)`
- **Acción**: Al seleccionar, auto-completa campos ocultos:
  - `sector` ← `variable.codigoSector`
  - `subsector` ← `variable.hijos[0].codigoVariable` o "_Z" si no hay hijos

### 3. Años
- **Control**: Checkboxes multi-select
- **Rango**: 2000 - Año actual
- **Botones**:
  - "Seleccionar todo" → Marca todos los años
  - "Eliminar todo" → Desmarca todos los años

### 4. Meses
- **Control**: Checkboxes multi-select
- **Valores**: 01 (Enero) - 12 (Diciembre)
- **Botones**:
  - "Seleccionar todo" → Marca todos los meses
  - "Eliminar todo" → Desmarca todos los meses

### 5. Campos Ocultos (Auto-completados)
- `cuadro` → Desde parámetro URL
- `sector` → Desde variable seleccionada
- `subsector` → Desde primer hijo de variable seleccionada
- `frecuencia` → "M" (fijo para mensual)
- `fechaInicio` → Construido desde primer año/mes seleccionado
- `fechaFin` → Construido desde último año/mes seleccionado

---

## Construcción de Fechas

### Formato Final: dd-mm-yyyy

**Fecha Inicio:**
```javascript
'01-' + primerMesSeleccionado + '-' + primerAñoSeleccionado
// Ejemplo: "01-01-2020"
```

**Fecha Fin:**
```javascript
ultimoDiaDelMes + '-' + ultimoMesSeleccionado + '-' + ultimoAñoSeleccionado
// Ejemplo: "31-12-2025"
```

**Nota**: El último día del mes se calcula dinámicamente:
```javascript
var ultimoDia = new Date(año, mes, 0).getDate();
```

---

## Validaciones del Formulario

Antes de enviar, el formulario valida:

1. ✅ **País seleccionado** (radio button)
2. ✅ **Variable seleccionada** (radio button)
3. ✅ **Sector poblado** (campo oculto)
4. ✅ **Subsector poblado** (campo oculto)
5. ✅ **Al menos 1 año seleccionado** (checkbox)
6. ✅ **Al menos 1 mes seleccionado** (checkbox)

---

## Navegación

```
[Lista de Cuadros] → [Parámetros] → [Resultados]
     efpa.php          efpa-params.php    efpa-results.php
```

### URLs:
- Lista: `/efpa-lista-de-cuadros/`
- Parámetros: `/efpa-parametros/?cuadro={codigo}`
- Resultados: `/efpa-resultados/?cuadro=...&variable=...&pais=...&...`

---

## Clases CSS (Compatibles con EMFA)

```css
.params-box           /* Contenedor de sección de parámetros */
.box-content-emfa     /* Área de contenido con scroll */
.custom-control       /* Control de formulario personalizado */
.custom-checkbox      /* Estilo de checkbox/radio */
.nav-pills            /* Navegación por tabs */
.lateral-menu         /* Menú lateral de cuadros */
```

---

## Debug / Desarrollo

### Habilitar mensajes de debug:
1. Descomentar bloque en línea ~58 (Debug Info)
2. Descomentar bloque en línea ~92 (Endpoint API)

### Console Logs (siempre activos):
- Variable seleccionada y su estructura
- Sector/Subsector auto-completados
- Parámetros finales del formulario
- URL de API construida

### Ver en navegador:
```
Consola del navegador (F12) → Tab "Console"
```

---

## Ejemplo de Flujo Completo

**1. Usuario selecciona cuadro "EFPA01" desde lista**
```
→ Redirige a: /efpa-parametros/?cuadro=EFPA01
```

**2. Sistema carga variables del cuadro**
```php
$variables = $api->efpa_get_variables_by_cuadro('EFPA01');
```

**3. Usuario completa formulario:**
- País: Costa Rica (CRI)
- Variable: "Ingresos Totales" (código: "IT01")
- Años: 2020, 2021, 2022
- Meses: 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12

**4. Al enviar, JavaScript construye:**
```javascript
{
  cuadro: "EFPA01",
  variable: "IT01",
  pais: "CRI",
  frecuencia: "M",
  sector: "ING",        // Auto-completado
  subsector: "IT",      // Auto-completado
  fechaInicio: "01-01-2020",
  fechaFin: "31-12-2022"
}
```

**5. Redirige a resultados con GET params:**
```
/efpa-resultados/?cuadro=EFPA01&variable=IT01&pais=CRI&frecuencia=M&sector=ING&subsector=IT&fechaInicio=01-01-2020&fechaFin=31-12-2022
```

**6. Página de resultados consulta API:**
```
GET http://192.168.100.137:8081/simafir_api/ws/public/efpa/obtenerDatos/EFPA01/IT01/CRI/M/ING/IT?fechaInicio=01-01-2020&fechaFin=31-12-2022&formato=json
```

---

## Diferencias con EMFA

| Aspecto | EMFA | EFPA |
|---------|------|------|
| **API Base** | esea_get_available() | efpa_get_variables_by_cuadro() |
| **Autenticación** | Requerida en todos los endpoints | Solo en criterios, NO en obtenerDatos |
| **Estructura Variables** | categorías/subcategorías | variables → hijos |
| **Selector País** | Dropdown en EMFA | Radio buttons (igual layout) |
| **Frecuencia** | Usuario selecciona | Fija en "M" (Mensual) |
| **Endpoint Datos** | /esea/obtenerDatos | /efpa/obtenerDatos |

---

## Archivos Relacionados

- **Template**: `/wp-content/themes/CM/templates/efpa-params.php`
- **Shortcode**: `/wp-content/plugins/secmca-api/shortcodes/EFPA/efpa-params-shortcode.php`
- **API Functions**: `/wp-content/plugins/secmca-api/inc/api.php`
- **Shortcode Loader**: `/wp-content/plugins/secmca-api/shortcodes/EFPA/_efpa-functions.php`

---

## Troubleshooting

### Variables no cargan:
1. Verificar token de autenticación en Theme Options
2. Verificar que el servidor de desarrollo esté activo (192.168.100.137:8081)
3. Revisar logs de PHP: `wp-content/debug.log`

### Sector/Subsector vacíos:
1. Verificar estructura de variable en Console (F12)
2. Comprobar que variable tenga `codigoSector`
3. Verificar que tenga array `hijos[]`

### Fechas incorrectas:
1. Verificar formato en Console: debe ser "dd-mm-yyyy"
2. Comprobar que mes tenga 2 dígitos: "01" no "1"
3. Verificar cálculo de último día del mes

### Error 401 en API:
- **Criterios** (obtenerPorCuadro): Renovar token en Theme Options
- **Datos** (obtenerDatos): NO debería dar 401 (es público)

---

Última actualización: Diciembre 2025
