# Relatório de vendas

## Prompt

Criar um novo menu chamado **Relatórios**, preparado para receber vários relatórios.

O primeiro será o relatório de vendas, contendo todas as vendas realizadas e seus valores. A tela deve possuir gráficos, filtros, opção para visualizar vendas com nota e sem nota, e exportação para Excel ou PDF.

## Resposta

Novo menu **Relatórios** criado com o item **Vendas**.

O relatório de vendas foi implementado com:

- Paginação e ordenação pelo servidor.
- Exibição de venda, data, operador, tipo, nota fiscal, pagamento, subtotal, desconto, total, valor pago, troco e situação.
- Filtros por busca, período, presença de NFC-e autorizada, situação e tipo de venda.
- Indicadores de quantidade de vendas, valor total, descontos, ticket médio e cancelamentos.
- Gráfico de valores por dia ou por mês, conforme o período encontrado.
- Gráfico comparativo de vendas com e sem NFC-e autorizada.
- Exportação das vendas filtradas para Excel (`.xls`).
- Exportação das vendas filtradas para PDF por meio da tela de impressão.
- Layout responsivo e tabela com carregamento dos dados pelo servidor.

Não foi necessário alterar a estrutura do banco de dados.

Verificações executadas:

- Consulta testada com dados reais das duas contas.
- Filtros de vendas com e sem NFC-e testados.
- Busca por operador combinada com o filtro fiscal testada.
- Sintaxe PHP válida.
- Verificação de tipos do frontend concluída sem erros.
- Formatação validada com Prettier.

O build do frontend aguarda confirmação, conforme a regra do projeto.

## Ajuste posterior

O menu principal foi reorganizado nesta ordem:

1. Dashboards
2. Cadastros
3. Vendas
4. Fiscal
5. Relatórios

As rotas e os itens internos dos menus foram preservados.

## Ajuste do período do gráfico

- A tela passa a iniciar com o filtro da semana atual, de domingo a sábado.
- O gráfico diário sempre exibe todos os dias selecionados, mesmo quando não existem vendas.
- Períodos de até 31 dias são exibidos por dia.
- Períodos maiores que 31 dias são exibidos por mês.
- Meses sem vendas também aparecem no gráfico com valor zero.
- Os rótulos diários mostram o dia da semana e a data.

## Ajuste do componente do gráfico

- O gráfico manual foi substituído pelo componente Chart.js já disponível no sistema.
- Dias e meses com valor zero permanecem no eixo, mas não exibem barra.
- Foram removidos os números de quantidade que apareciam abaixo das barras.
- Valor da venda e quantidade aparecem somente ao passar o mouse sobre uma barra com vendas.
- O tooltip não é exibido para períodos sem vendas.

## Ajuste dos filtros

- Removida a opção **Tipo de venda** do diálogo de filtros.
- A coluna **Tipo** foi mantida na tabela apenas para identificar a origem da venda.
