# Set Boletas v1 - EVENTSUD - SOK

**Identificador del Set SII:** `4841006`
**Tipo de Set:** SET BOLETAS - Version 1
**RUT Emisor:** `78073481-7` (EVENTSUD PRODUCCIONES LIMITADA)
**RUT Firmante:** `16658678-K`
**Track ID:** `0249764608` (10 digitos — enviado por DTEUpload/maullin, NO REST)
**Fecha emision/envio:** 2026-05-27
**Estado SII envio:** `EPR - Envio Procesado` (5/5 aceptados, 0 reparos, 0 rechazados)
**Estado SII revision del set:** `SOK - SET DE PRUEBA CORRECTO`

## Boletas incluidas (tipo 39, precios CON IVA)

Las 5 boletas van en **un solo envio** `EnvioBOLETA`. Receptor anonimo `66666666-6`.

| # | Caso | Tipo | Folio | Total (bruto) | Neto | IVA | Exento | Detalle |
|---|---|---|---|---|---|---|---|---|
| 1 | CASO-1 | 39 | 21 | 29.800 | 25.042 | 4.758 | 0 | Cambio de aceite 19.900 + Alineacion y balanceo 9.900 |
| 2 | CASO-2 | 39 | 22 | 2.040 | 1.714 | 326 | 0 | Papel de regalo 17 x 120 |
| 3 | CASO-3 | 39 | 23 | 4.100 | 3.445 | 655 | 0 | Sandwic 2 x 1.500 + Bebida 2 x 550 |
| 4 | CASO-4 | 39 | 24 | 14.720 | 10.689 | 2.031 | 2.000 | item afecto 8 x 1.590 + item exento 2 x 1.000 (IndExe) |
| 5 | CASO-5 | 39 | 25 | 3.500 | 2.941 | 559 | 0 | Arroz 5 x 700, UnmdItem=Kg |

Totales boleta: `MntTotal` = suma bruta de lineas; `MntNeto = round(brutoAfecto/1.19)`,
`IVA = brutoAfecto - MntNeto`. Orden Totales EnvioBOLETA_v11: MntNeto, MntExe, IVA, MntTotal.

## Referencia al SET (clave)

Cada boleta referencia su caso con **`CodRef=SET`** + **`RazonRef=CASO-N`** (sin
`TpoDocRef`, sin `IndGlobal`, sin `FchRef`). En boletas el marcador del set va en
`CodRef`, NO en `TpoDocRef` como en facturas.

## RVD (Resumen Ventas Diarias / ConsumoFolios)

- Track ID: `249764924`, SecEnvio=4, folios 21-25, via DTEUpload/maullin.
- Resultado: `REPARO` con 0 errores y 1 reparo **informativo** codigo `250`
  ("Envio de RVD no es obligatorio desde agosto 2022"). El RVD ya no es
  obligatorio; se envia igual en el tramite y vuelve recibido/valido.
- XML: `rvd_boletas_v1_eventsud_249764924.xml`.

## Historial de intentos antes de SOK

| Intento | TrackID | Folios | Canal | Referencia | Resultado revision | Diagnostico |
|---|---|---|---|---|---|---|
| v1 | 27973337 | 6-10 | REST/pangal | TpoDocRef=SET, RazonRef=CASO-N | SRH | "El Documento no esta en el envio" (5 casos) |
| v2 | 27973497 | 11-15 | REST/pangal | TpoDocRef=SET, RazonRef=CASO 4841006-N | SRH | Identico. El formato de RazonRef no era la causa |
| v3 | 27973780 | 16-20 | REST/pangal | CodRef=SET, RazonRef=CASO-N | SRH | Identico. CodRef tampoco lo resolvio estando en REST |
| **v4** | **0249764608** | **21-25** | **DTEUpload/maullin** | **CodRef=SET, RazonRef=CASO-N** | **SOK** | OK |

## Causa raiz (las dos cosas, la decisiva fue el CANAL)

1. **Canal (decisivo):** el set de boletas se envia por **DTEUpload a maullin**
   (el canal de facturas), NO por la API REST de pangal. El revisor del set lee
   el sistema de DTE: el contribuyente ingresa el trackid en el portal de
   certificacion y el SII lo busca ahi. Las boletas por REST viven en pangal
   (otro pozo), asi que el revisor encontraba el trackid pero no los documentos
   -> SRH "El Documento no esta en el envio". Ademas REST no emite correo de
   envio; maullin si (de ahi que el correo "Resultado de Validacion de Envio de
   DTE" recien llego en v4). La API REST (pangal) es para emision de PRODUCCION.
2. **Referencia (correcta por spec):** en boletas el marcador del set va en
   `CodRef=SET` (no `TpoDocRef=SET`). El formato de boletas no admite `SET` como
   `TpoDocRef` (valores validos 39/41/50/52/801..813). Aunque v3 mostro que por
   si solo no bastaba (seguia en REST), se mantiene porque es lo que indica el
   instructivo del set de boletas.

## Fixes incorporados al motor para este caso

1. **feat(dte): build set boletas + ruteo transporte REST** (commit `faa27e2`)
   - Desglose neto/IVA de boletas (back-out de precios con IVA); Referencia
     boleta-aware (sin FchRef/IndGlobal).
2. **fix(dte): envio boletas host correcto + parser REST** (commit `4ba5715`)
   - Hosts boletas confirmados con OpenAPI oficial; parser ResultadoEnvioPost.
3. **fix(dte): referencia al SET usa CodRef=SET (no TpoDocRef)** (commit `8d39488`)
4. **feat(dte): set boletas certificacion por DTEUpload (maullin)** (commit `07c41e2`)
   - emitirBatch con $boletasPorDteUpload; el set de boletas va por DTEUpload.
5. **feat(dte): DTEUpload como canal por defecto para boletas** (commit `4cfbb2c`)
6. **feat(dte): comando dte:enviar-rvd** (commit `f8a7844`) + filtros `--track`
   (commit `93276b3`).

## Como reproducir

```bash
# Set de boletas (va por DTEUpload/maullin por defecto):
php artisan dte:emitir-set-pruebas tests/Fixtures/SetPruebasSII/casos_exito/set_boletas_v1_eventsud_input.json

# RVD del dia (acotado al envio del set):
php artisan dte:enviar-rvd --empresa=1 --fecha=YYYY-MM-DD --sec-envio=N --track=<trackid> --enviar
```

Requiere CAF tipo 39 activo en `dte_cafs` y certificado vigente. Luego ingresar
el trackid del set en el portal de certificacion para gatillar la revision.

## Notas operacionales (especificas de boletas)

- **Canal: DTEUpload/maullin para el SET de pruebas.** REST/pangal es para
  produccion. Ver memoria `feedback-sii-boletas-arquitectura`.
- **Boletas NO emiten correo por la via REST.** Por DTEUpload si (igual que
  facturas). El diagnostico REST se consulta por trackid (EPR + estadistica).
- **1 envio por set** (las 5 boletas juntas).
- **Referencia del set en boletas: `CodRef=SET` + `RazonRef=CASO-N`.**
- **SecEnvio del RVD se incrementa en cada reenvio del dia.**
- **RVD ya no es obligatorio desde 2022-08-01** (reparo informativo 250).
