> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cucu.bo/llms.txt
> Use this file to discover all available pages before exploring further.

# Contingencia y Eventos

> Las 7 herramientas MCP para gestionar eventos significativos (contingencia) y la emisión offline.

## Contingencia y Eventos

Cuando el SIAT no está disponible, se abre un **evento significativo** para seguir emitiendo facturas offline; al reconectar se cierra el evento y se reenvía el paquete al SIAT. Estas 7 herramientas cubren todo el ciclo.

<CardGroup cols={2}>
  <Card title="abrirEvento" icon="triangle-exclamation" href="#abrirevento">
    Abre un evento de contingencia para un POS y habilita la emisión OFFLINE.
    Motivos SIAT 1-7 (5/6/7 = facturación manual, admiten fecha retroactiva).
  </Card>

  <Card title="cerrarEvento" icon="circle-check" href="#cerrarevento">
    Cierra el evento: POS vuelve online, regenera CUFD, registra en SIAT
    y reenvía el paquete de facturas offline. Idempotente y reintentable.
  </Card>

  <Card title="reenviarPaqueteEvento" icon="paper-plane" href="#reenviarpaqueteevento">
    Reenvía el paquete de un evento YA registrado en SIAT, sin re-registrarlo.
    Destraba facturas que quedaron en `OFFLINE_PENDING`.
  </Card>

  <Card title="resellarFacturasEvento" icon="stamp" href="#resellarfacturasevento">
    Re-sella al CUFD del evento las facturas offline "muertas" (CUFD distinto)
    y reenvía el paquete. El número no cambia; el CUF/QR sí.
  </Card>

  <Card title="consultarEventosSiat" icon="magnifying-glass" href="#consultareventossiat">
    Consulta en SIAT los eventos significativos registrados para un POS
    en una fecha dada.
  </Card>

  <Card title="obtenerEventoActivo" icon="bolt" href="#obtenereventoactivo">
    Obtiene el evento de contingencia ACTIVO (no finalizado) de un POS,
    si existe.
  </Card>

  <Card title="verificarConexionSiat" icon="signal" href="#verificarconexionsiat">
    Verifica la conexión con todos los servicios SIAT. Útil antes de
    emitir o de cerrar una contingencia.
  </Card>
</CardGroup>

***

<h2 id="abrirevento\">
  abrirEvento \\
</h2>

Abre un evento significativo (contingencia) para un punto de venta, habilitando la emisión OFFLINE.

| Parámetro      | Tipo   | Requerido | Descripción                                                                                                                                                                                                   |
| -------------- | ------ | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `posId`        | String | Sí        | UUID del punto de venta                                                                                                                                                                                       |
| `codigoMotivo` | int    | Sí        | Motivo SIAT (1-7). `1` Corte de Internet, `2` Inaccesibilidad SIN, `3` Zona sin internet, `4` Venta en lugar sin internet, `5` Virus/falla software, `6` Falla hardware/infraestructura, `7` Corte de energía |
| `descripcion`  | String | Sí        | Descripción del motivo de la contingencia                                                                                                                                                                     |
| `fechaInicio`  | String | No        | Solo motivos `5/6/7` (facturación manual): fecha/hora ISO-8601 retroactiva en que empezó la facturación manual. Omitir para eventos en tiempo real                                                            |

**Requiere autenticación:** Sí

<Info>
  Los motivos `5/6/7` son de **facturación manual** (talonario de papel) y admiten `fechaInicio`
  retroactiva: el sistema usa el CUFD vigente en esa fecha en vez del actual.
</Info>

**Ejemplo de uso con AI:**

> "Abre una contingencia en el POS 660e... por corte de internet"

***

<h2 id="cerrarevento\">
  cerrarEvento \\
</h2>

Cierra un evento significativo: finaliza la contingencia (el POS vuelve online), regenera el CUFD, registra el evento en SIAT y reenvía el paquete de facturas offline. Idempotente y reintentable.

| Parámetro  | Tipo   | Requerido | Descripción                                                                                                                               |
| ---------- | ------ | --------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `posId`    | String | Sí        | UUID del punto de venta                                                                                                                   |
| `eventoId` | String | Sí        | UUID del evento a cerrar                                                                                                                  |
| `fechaFin` | String | No        | Cierre retroactivo: fecha/hora ISO-8601 en que terminó la facturación manual (posterior al inicio). Omitir para usar la fecha/hora actual |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "Cierra el evento de contingencia abc123 del POS 660e..."

***

<h2 id="reenviarpaqueteevento\">
  reenviarPaqueteEvento \\
</h2>

Reenvía el paquete de facturas offline de un evento **ya registrado** en SIAT, sin re-registrar el evento. Destraba eventos cuyo paquete falló al cerrar y dejó facturas en `OFFLINE_PENDING`.

| Parámetro  | Tipo   | Requerido | Descripción             |
| ---------- | ------ | --------- | ----------------------- |
| `posId`    | String | Sí        | UUID del punto de venta |
| `eventoId` | String | Sí        | UUID del evento         |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "Reenvía el paquete del evento abc123"

***

<h2 id="resellarfacturasevento\">
  resellarFacturasEvento \\
</h2>

Re-sella al CUFD del evento las facturas offline "muertas" (emitidas con un CUFD distinto al del evento, que SIAT no valida en el paquete y quedan en estado `901`) y reenvía el paquete. El evento debe estar registrado en SIAT. **El número de factura no cambia; el CUF/QR sí.**

| Parámetro  | Tipo   | Requerido | Descripción             |
| ---------- | ------ | --------- | ----------------------- |
| `posId`    | String | Sí        | UUID del punto de venta |
| `eventoId` | String | Sí        | UUID del evento         |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "Resella las facturas del evento abc123 y reenvía el paquete"

***

<h2 id="consultareventossiat\">
  consultarEventosSiat \\
</h2>

Consulta en SIAT los eventos significativos registrados para un punto de venta en una fecha dada.

| Parámetro     | Tipo   | Requerido | Descripción                     |
| ------------- | ------ | --------- | ------------------------------- |
| `posId`       | String | Sí        | UUID del punto de venta         |
| `fechaEvento` | String | Sí        | Fecha del evento (`YYYY-MM-DD`) |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "Qué eventos tiene registrados en SIAT el POS 660e... el 2026-07-01"

***

<h2 id="obtenereventoactivo\">
  obtenerEventoActivo \\
</h2>

Obtiene el evento de contingencia ACTIVO (no finalizado) de un punto de venta, si existe.

| Parámetro | Tipo   | Requerido | Descripción             |
| --------- | ------ | --------- | ----------------------- |
| `posId`   | String | Sí        | UUID del punto de venta |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "¿Hay una contingencia activa en el POS 660e...?"

***

<h2 id="verificarconexionsiat\">
  verificarConexionSiat \\
</h2>

Verifica la conexión con todos los servicios SIAT (códigos y operaciones). Útil para diagnosticar si SIAT está disponible antes de emitir o de cerrar una contingencia.

| Parámetro   | Tipo | Requerido | Descripción            |
| ----------- | ---- | --------- | ---------------------- |
| *(ninguno)* | -    | -         | No requiere parámetros |

**Requiere autenticación:** Sí

**Ejemplo de uso con AI:**

> "¿Está disponible el SIAT ahora mismo?"
