# Relatórios: Totais, Detalhes e Turnos

Este guia explica como recuperar relatórios operacionais de um POS Integrado usando a operação `GetReports`. Ela vale para os modos de conexão SDK (USB / HTTP) e Cloud2Cloud. Só o método de criação do Connector muda.

## O que são os GetReports

A função **GetReports** permite que o sistema de automação solicite dados de relatórios consolidados ou detalhados diretamente do terminal POS. Você especifica o tipo de relatório. O terminal retorna os dados e, opcionalmente, pode imprimi-los. Os tipos de relatório são **Totals** (totais agregados de transações), **Detailed** (registros individuais de transações) e **Shift** (transações agrupadas por turno).

<Callout type="warning">

O relatório deve ser solicitado pelo menos **dois minutos** após a última venda ou troca de turno para garantir a sincronização.

</Callout>

## Antes de começar

Antes de recuperar relatórios:

* Um Connector deve ser criado e validado com `Polling`
* O Modo POS Integrado deve estar ativo

## Passo 1: Execute a requisição de relatório

Para recuperar um relatório operacional, chame a operação `GetReports` com o `Type` desejado.

> Por motivos técnicos, os relatórios devem ser solicitados pelo menos **dois minutos** após a última venda ou troca de turno. Assim, todos os dados das transações são sincronizados corretamente no terminal.

Os seguintes parâmetros estão disponíveis para a operação `GetReports`:

| Parâmetro | Tipo | Obrigatório | Descrição |
| :--- | :--- | :--- | :--- |
| `Type` | Enum | Sim | Tipo de relatório: `Totals` (resumo), `Detailed` (detalhado) ou `Shift` (por período operacional). |
| `PrintOnPos` | Boolean | Não | Se `true`, o relatório é impresso no terminal POS. Se `false`, os dados são retornados no campo `ReportDetails`. |

O exemplo a seguir demonstra como solicitar um relatório de resumo para impressão direta no dispositivo:

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

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

O exemplo a seguir demonstra como recuperar dados detalhados de transações para o seu sistema de automação processar:

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

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

## Passo 2: Trate a resposta

O POS retorna uma resposta estruturada correspondente ao tipo de relatório solicitado. Se `PrintOnPos` foi definido como `false`, o campo `ReportDetails` conterá os dados em JSON.

Abaixo está um exemplo de resposta bem-sucedida para uma requisição de relatório detalhado:

```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"
    }
  ]
}
```

Sempre verifique o `Code` e a `Message` antes de analisar a estrutura de `ReportDetails`.

## Próximos passos

* [Gerenciamento de Turnos](/pt/integrated-pos/operational-guides/shift-management) — Operações de turno e relatórios.
* [Responsabilidade de Impressão](/pt/integrated-pos/core-concepts-pos/printing-responsibility) — PrintOnPos e tratamento de recibos.