# Informes: totales, detalles y turnos

Esta guía explica cómo recuperar informes operativos de un TPV Integrado con la operación `GetReports`. Se aplica a los modos de conexión SDK (USB / HTTP) y Cloud2Cloud; solo cambia el método de creación del Connector.

## ¿Qué es GetReports?

La función **GetReports** permite que el sistema de automatización solicite datos de informes consolidados o detallados directamente al terminal. Especificas el tipo de informe y el terminal devuelve los datos, con la opción de imprimirlos. Los tipos de informe son **Totals** (totales agregados de transacciones), **Detailed** (registros de transacciones individuales) y **Shift** (transacciones agrupadas por turno).

<Callout type="warning">

El informe debe solicitarse al menos **dos minutos** después de la última venta o del último cambio de turno, para asegurar la sincronización.

</Callout>

## Antes de comenzar

Antes de recuperar informes:

* Debes crear y validar un Connector con `Polling`
* El modo TPV Integrado debe estar activo

## Paso 1: Ejecuta una solicitud de informe

Para recuperar un informe operativo, llama a la operación `GetReports` con el `Type` deseado.

> Por razones técnicas, los informes deben solicitarse al menos **dos minutos** después de la última venta o del último cambio de turno. Así, todos los datos de las transacciones quedan sincronizados correctamente en el terminal.

Los siguientes parámetros están disponibles para la operación `GetReports`:

| Parámetro | Tipo | Obligatorio | Descripción |
| :--- | :--- | :--- | :--- |
| `Type` | Enum | Sí | Tipo de informe: `Totals` (resumen), `Detailed` (detallado) o `Shift` (por período operativo). |
| `PrintOnPos` | Boolean | No | Si es `true`, el informe se imprime en el terminal. Si es `false`, los datos se devuelven en el campo `ReportDetails`. |

El siguiente ejemplo muestra cómo solicitar un informe de resumen para imprimirlo directamente en el dispositivo:

```csharp
var reportRequest = new ReportsRequest
{
    Type = ReportType.Totals,
    PrintOnPos = true
};

var reportResult = await connector.GetReportsAsync(reportRequest);
```

El siguiente ejemplo muestra cómo recuperar datos detallados de transacciones para procesarlos en tu sistema de automatización:

```csharp
var reportRequest = new ReportsRequest
{
    Type = ReportType.Details,
    PrintOnPos = false
};

var reportResult = await connector.GetReportsAsync(reportRequest);
```

## Paso 2: Maneja la respuesta

El TPV devuelve una respuesta estructurada que corresponde al tipo de informe solicitado. Si configuraste `PrintOnPos` en `false`, el campo `ReportDetails` contiene los datos JSON.

A continuación se muestra un ejemplo de respuesta exitosa para una solicitud de informe detallado:

```json
{
  "Code": 0,
  "Message": "APPROVED",
  "CommerceCode": "1234567890",
  "TerminalId": "GET00123",
  "ReportDetails": [
    {
      "authorizationCode": "551437",
      "paymentId": "789456123",
      "opReasonMessageStatus": "APPROVED",
      "timestamp": "2025-08-25T16:11:23.000Z",
      "brandType": "Mastercard",
      "cardLastNumber": "1234",
      "operationValue": "5000",
      "operation": "Credit"
    }
  ]
}
```

Verifica siempre el `Code` y el `Message` antes de analizar la estructura `ReportDetails`.

## Siguientes pasos

* [Gestión de turnos](/es/integrated-pos/operational-guides/shift-management) — operaciones e informes de turno.
* [Responsabilidad de impresión](/es/integrated-pos/core-concepts-pos/printing-responsibility) — PrintOnPos y manejo de recibos.