# SIIGO Importer - Plugin WordPress

Generador inteligente de planos SIIGO con detección automática de formatos de Excel (DIAN vs SIIGO).

## Características

✅ **Detección Automática**: Detecta automáticamente si el Excel es formato DIAN o SIIGO
✅ **Mapeo Dinámico**: Mapea columnas automáticamente según el formato
✅ **Validación Inteligente**: Verifica presencia de columnas críticas
✅ **Mapeo Manual**: Interface de mapeo manual si faltan columnas
✅ **Persistencia**: Guarda mapeos por cliente para reutilizar
✅ **Sin Almacenamiento**: No guarda archivos intermedios, solo procesa
✅ **Integración WP**: Totalmente integrado con WordPress
✅ **Logging**: Registro detallado de operaciones

## Instalación

### 1. Requisitos Previos

- WordPress 5.0+
- PHP 7.4+
- Python 3.6+
- Librerías Python: `pandas`, `openpyxl`

### 2. Instalación de Dependencias Python

```bash
pip install pandas openpyxl
```

### 3. Copiar Plugin

Copia la carpeta `siigo-importer` a:
```
wp-content/plugins/siigo-importer/
```

### 4. Activar Plugin

1. Ve a **Panel de Admin → Plugins**
2. Busca "SIIGO Importer"
3. Haz clic en **Activar**

## Estructura de Archivos

```
siigo-importer/
├── plugin.php                           # Punto de entrada
├── controllers/
│   └── SiigoExcelController.php         # Controlador principal
├── admin/
│   ├── page.php                         # Página de administración
│   └── assets/
│       ├── style.css                    # Estilos
│       └── script.js                    # JavaScript frontend
├── python/
│   ├── config.py                        # Configuración compartida
│   ├── detectar_formato.py              # Detecta DIAN vs SIIGO
│   ├── mapeo_dinamico.py                # Mapea columnas
│   ├── validar_columnas.py              # Valida columnas críticas
│   ├── generar_plano.py                 # Genera plano final
│   └── utils.py                         # Funciones auxiliares
├── includes/
│   └── Logger.php                       # Sistema de logging
├── configs/
│   └── mapeos_cliente.json              # Configuraciones guardadas
└── README.md                            # Este archivo
```

## Uso

### 1. Acceder al Plugin

Ve a **Panel de Admin → SIIGO Importer → Cargar Excel**

### 2. Subir Archivo

- Arrastra tu archivo Excel o haz clic para seleccionar
- El plugin automáticamente:
  1. Detecta el formato (DIAN/SIIGO)
  2. Valida que tenga columnas críticas
  3. Mapea dinámicamente las columnas
  4. Si falta algo, muestra interface de mapeo manual
  5. Genera el plano SIIGO

### 3. Mapeo Manual (si aplica)

Si faltan columnas, el plugin te pedirá que las mapees manualmente:
- Se mostrarán los campos faltantes
- Selecciona qué columna del archivo corresponde a cada uno
- Los mapeos se guardan para futuro uso (si proporcionas Cliente ID)

### 4. Descargar Resultado

Una vez procesado, haz clic en **"Descargar Plano SIIGO"**

## Columnas Críticas (18 obligatorias)

```
1. NIT Emisor
2. Nombre Emisor
3. IVA
4. ICA
5. IC
6. INC
7. Timbre
8. INC Bolsas
9. IN Carbono
10. IN Combustibles
11. IC Datos
12. ICL
13. INPP
14. IBUA
15. ICUI
16. Rete IVA
17. Rete Renta
18. Rete ICA
```

El plugin acepta variaciones de estos nombres (minúsculas, con/sin acentos, etc.)

## Formatos Soportados

### Formato DIAN (Oficial)
Columnas típicas:
- CUFE/CUDE, Folio, Prefijo
- Tipo de documento
- Fecha Emisión, Fecha Recepción
- Forma de Pago, Medio de Pago
- NIT Receptor, Nombre Receptor

### Formato SIIGO
Columnas típicas:
- Base, CxPagar
- CATEGORIA, DESCRIPCION, NOTA
- TARIFAFTE, TARIFAICA
- Fedepapa
- Total Fact.

## Archivos de Configuración

### mapeos_cliente.json

Almacena mapeos por cliente:

```json
{
  "cliente_001": {
    "formato": "DIAN",
    "mapeos": {
      "NIT": "NIT Emisor",
      "Nombre": "Nombre Emisor"
    },
    "timestamp": "2026-05-02 10:30:00"
  }
}
```

El plugin carga automáticamente los mapeos cuando reconoce a un cliente.

## Historial de Logs

Ve a **SIIGO Importer → Historial** para ver todas las operaciones registradas:
- Archivos procesados
- Errores y warnings
- Timestamps de operaciones

Los logs se guardan en:
```
wp-content/uploads/siigo_logs/siigo_YYYY-MM-DD.log
```

## Solución de Problemas

### Error: "Python no encontrado"

El plugin intenta detectar Python automáticamente. Si falla:

1. Edita `controllers/SiigoExcelController.php`
2. Cambia la línea:
   ```php
   private $python_path = 'python';
   ```
   Por la ruta completa:
   ```php
   private $python_path = '/usr/bin/python3'; // Linux/Mac
   // o
   private $python_path = 'C:\\Python39\\python.exe'; // Windows
   ```

### Error: "Columnas críticas faltantes"

Esto significa que el archivo no tiene las 18 columnas mínimas requeridas.
- Verifica que el Excel tenga datos de impuestos
- Usa la interface de mapeo manual para ayudar al plugin

### Error: "Respuesta JSON inválida"

Probablemente error en el script Python:
1. Revisa el log en **SIIGO Importer → Historial**
2. Ejecuta manualmente el script Python para debugging:
   ```bash
   cd wp-content/plugins/siigo-importer/python
   python detectar_formato.py /ruta/a/archivo.xlsx
   ```

## Integración con generar_plano_siigo.py

El plugin esta diseñado para trabajar junto con los scripts existentes:

- `generar_plano_siigo.py` - Genera el plano final
- `generar_egresos_siigo.py` - Genera egresos (próximamente)

## API de Controlador

Para uso avanzado, puedes usar el controlador directamente:

```php
$controller = new SiigoExcelController();
// El controlador maneja AJAX automáticamente
```

## Contribuir

Para reportar bugs o sugerir mejoras:
1. Revisa los logs en **SIIGO Importer → Historial**
2. Contacta al desarrollador con:
   - Nombre del archivo Excel
   - Formato detectado
   - Mensaje de error exacto

## Licencia

GPL v2 o posterior

## Soporte

Para soporte técnico, contacta al equipo de desarrollo.

---

**Versión**: 1.0.0  
**Última actualización**: 2026-05-02
