# Integración DTE SimpleAPI (SII Chile)

## Resumen

El punto de venta envía DTE (Documentos Tributarios Electrónicos) al SII de Chile cuando se selecciona un tipo de documento tributario (Boleta 22/28, Factura 5/15) y SimpleAPI DTE está configurado.

## Tipos de documento

| Código | Nombre                        | Requiere cliente | Acción                    |
|--------|-------------------------------|------------------|---------------------------|
| 22     | Boleta Electrónica            | No               | Envía DTE al SII          |
| 28     | Boleta No Afecta o Exenta     | No               | Envía DTE al SII          |
| 47     | Comprobante de Venta          | No               | Solo guarda venta (interno)|
| 5      | Factura Electrónica           | **Sí**           | Envía DTE al SII          |
| 15     | Factura No Afecta o Exenta    | **Sí**           | Envía DTE al SII          |

## Configuración (.env)

```env
# SimpleAPI base
SIMPLEAPI_ENABLED=true
SIMPLEAPI_API_KEY=tu_api_key
SIMPLEAPI_BASE_URL=https://api.simpleapi.cl/api/v1

# DTE - Emisión al SII
SIMPLEAPI_DTE_ENABLED=true
SIMPLEAPI_DTE_CERT_PATH=/ruta/absoluta/certificado.pfx
SIMPLEAPI_DTE_CERT_PASSWORD=contraseña_certificado
SIMPLEAPI_DTE_RUT_CERT=12345678-9
SIMPLEAPI_DTE_RUT_EMISOR=12345678-9
SIMPLEAPI_DTE_RAZON_SOCIAL=Mi Empresa SpA
SIMPLEAPI_DTE_GIRO=Comercio al por menor
SIMPLEAPI_DTE_DIRECCION=Av. Principal 123
SIMPLEAPI_DTE_COMUNA=Santiago
SIMPLEAPI_DTE_ACTIVIDAD=620900
SIMPLEAPI_DTE_NRO_RESOLUCION=80
SIMPLEAPI_DTE_FECHA_RESOLUCION=2024-01-15
SIMPLEAPI_DTE_UNIDAD_SII=Santiago
SIMPLEAPI_DTE_AMBIENTE=0
```

- **SIMPLEAPI_DTE_AMBIENTE**: 0 = Certificación, 1 = Producción
- **Datos resolución**: Obtener desde SII (Certificación: maullin.sii.cl, Producción: palena.sii.cl)

## Flujo

1. Usuario selecciona tipo de documento en el punto de venta.
2. Para Factura (5, 15) debe asociar un cliente con RUT.
3. Al guardar la venta, si el tipo es tributario (22, 28, 5, 15) y DTE está habilitado:
   - Se construye el XML DTE desde la venta.
   - Se llama a `POST api.simpleapi.cl/api/v1/envio/generar` con certificado PFX y DTE.
   - Se obtiene el sobre de envío (EnvioDTE/EnvioBoleta) firmado.
4. Se actualiza la venta con `dte_folio`, `dte_estado`.

## Consideraciones

### TED (Timbre Electrónico)

El DTE válido para el SII requiere:
- **Archivo CAF** (Autorización de Folios) del SII.
- **Firma RSA** con el certificado digital.

La implementación actual genera la estructura XML con un TED placeholder. Para emisión real ante el SII necesitará:
1. Archivos CAF descargados del SII.
2. Timbrar el DTE con el rango de folios autorizado.
3. Firmar electrónicamente.

SimpleAPI ofrece SDK (.NET) para timbrar y firmar. Si el sobre de envío falla por DTE inválido, la venta se guarda igual y se registra `dte_estado=error`.

### Impresión

Endpoints disponibles en SimpleAPIService:
- `generarPDFTicket80mmBase64($dteXml)` – ticket 80mm
- `generarPDFCartaCedibleBase64($dteXml)` – factura carta cedible

## Migración

```bash
php artisan migrate
```

Agrega a `ventas`: `dte_folio`, `dte_track_id`, `dte_estado`.

## Pruebas de facturación (deploy)

El comando `ventas:test-facturacion` prueba todos los escenarios del punto de venta:

| Tipo | Documento           | Cliente/RUT   |
|------|---------------------|---------------|
| 22   | Boleta Electrónica  | No requiere   |
| 28   | Boleta Exenta       | No requiere   |
| 47   | Comprobante de Venta| No requiere   |
| 5    | Factura Electrónica | Requiere RUT  |
| 15   | Factura Exenta      | Requiere RUT  |

### Uso

```bash
# Prueba directa (CLI, sin servidor HTTP)
php artisan ventas:test-facturacion

# Solo inserción en tablas, sin emisión DTE real
php artisan ventas:test-facturacion --skip-dte

# Prueba vía HTTP (deploy, servidor corriendo)
php artisan ventas:test-facturacion --url=https://mi-app.com

# Con token Bearer (si ya lo tienes)
php artisan ventas:test-facturacion --url=https://mi-app.com --token=xxx
```

Para `--url`, si no se pasa `--token`, el comando intenta login con `TEST_USER` y `TEST_PASS` de `.env`.
