# Módulo SIRE (SUNAT)

SIRE = Sistema Integrado de Registros Electrónicos. Reemplaza al PLE/SLE-Portal.
- **RVIE** (`sale`, `codLibro=140000`): Registro de Ventas e Ingresos.
- **RCE** (`purchase`, `codLibro=080000`): Registro de Compras Electrónico.

Rutas UI: `/sire/sale`, `/sire/purchase`, config en Empresa → SIRE.

## Credenciales (columnas `companies.sire_*`)
- `sire_client_id`, `sire_client_secret`: de Clave SOL → "Credenciales de API SUNAT", URI **"MIGE RCE y RVIE – SIRE"**.
- `sire_username` = `{RUC}{USUARIO_SOL}`, `sire_password` = clave SOL.
- Config en `companies/form.vue` (componente `SireConfiguration`). El token OAuth2 se cachea (`Cache 'sire_token'`).
- Para activar verificación SSL en prod: `SIRE_VERIFY_SSL=true` en `.env` (default `false`).

## Contrato SUNAT (manuales oficiales)
- **Compras v28** y **Ventas v27** (13/08/2025), `https://cpe.sunat.gob.pe` (node/129, node/139).
- Host negocio `https://api-sire.sunat.gob.pe`, token `https://api-seguridad.sunat.gob.pe/.../oauth2/token/` (grant `password`).
- **Descargar archivo (5.32/5.17): salida BINARIA (.zip)** — 6 params: `nomArchivoReporte`, `codTipoArchivoReporte`, `codLibro`, `perTributario`, `codProceso`, `numTicket`.

## Implementado (`Helpers/SireService.php`)
| Operación | Método | Estado |
|---|---|---|
| Token OAuth2 (cacheado) | `getToken/queryToken` | ✅ |
| Periodos (padrón) | `getPeriods` | ✅ |
| Descargar propuesta (RVIE/RCE) → ticket | `getTicket` | ✅ |
| Consultar estado ticket (+ descarga binaria + parse TXT + conciliación) | `queryTicket`/`queryFile` | ✅ (params v28) |
| Aceptar propuesta (RVIE **y** RCE) | `acceptProposal` | ✅ |
| Registrar preliminar (RVIE/RCE) | `registerPreliminar` | ⚠️ sin testear vs SUNAT |
| Consultar preliminares registrados (5.61/5.37) | `consultPreliminares` | ⚠️ sin testear vs SUNAT |

## Pendiente — cargas masivas (protocolo **TUS.io**)
Reemplazar propuesta, Incluir/Excluir comprobantes, Importar CP, Generar libro, Ajustes posteriores, Tipo de cambio = **suben un `.txt` por TUS.io**. SUNAT solo da cliente de referencia en **Java** (anexo del manual). Desde PHP requiere `php-tus/tus-php` o un microservicio Java. Ver stub `uploadTus()`.
`codProceso` (Anexo I): 1=Importar CP propuesta · 2=Aceptar · 3=Reemplazo · 4=Importar CP preliminar · 5=Generar libro RVIE · 6-8=Ajustes · 55=Incluir/Excluir.

## Caveats
- **Sin credenciales SIRE en demo** → no probado contra SUNAT real (verificado: lint, config round-trip, build, render).
- **Índices de columna del TXT** (`queryFile`): alineados a pro8; **validar contra un TXT real** (el layout varía por versión).
- Nuevos códigos de error a manejar: 2009, 2293–2303 (`CATALOGO_ERROR_*`).
- Obligatoriedad 2026: PRICOS >2,300 UIT desde jun-2026; no-sanción hasta 30-jun-2026.
