O Big Table é o DataTable configurado como tela de relatório: 85 linhas × 50 colunas fake, baseadas na exportação fiscal EXPORT_20261007_093013. Os dados são crus (números, datas ISO, códigos como texto); a formatação em moeda e data acontece só em render.
Por onde começar: quem analisa os dados vai em Como usar a tabela; quem programa (com ou sem LLM) vai em Para quem implementa; a demonstração completa está logo abaixo, em Visão completa. Use o menu no topo para pular entre as seções.
Como usar a tabela
Para quem analisa os dados. Tudo é feito com cliques na própria tabela; nada altera o dado original, só a forma de olhar.
Quero…
Como faço
Ver o total por filial, depois por CFOP, depois por parceiro
Clique em Loc. neg. → CFOP → Parceiro no painel de protótipo e use os botões 1 · 2 · 3 · Itens na barra da tabela: 1 = total por filial, 2 = por CFOP, 3 = por parceiro, Itens = as notas.
Agrupar por colunas que eu escolher
Segure Ctrl e clique nos títulos das colunas (ou Shift para um intervalo) e clique em Agrupar. A ordem dos cliques é a hierarquia.
Abrir ou fechar um grupo
Clique na seta ▼/▶ da linha do grupo. Abrir um grupo não abre os grupos de dentro dele.
Somar valores
Clique no título da coluna → seção Totais (soma, contagem, média, mínimo, máximo). Em colunas de dinheiro o valor aparece como R$.
Filtrar
Clique no funil do título e marque os valores. As opções de uma coluna respeitam os filtros das outras.
Esconder ou mostrar colunas
Clique no olho do título, ou na engrenagem ⚙ da barra para ver a lista completa.
Mudar a ordem das colunas
Arraste o título, ou selecione colunas e use ◀ ▶.
Mudar a largura de uma coluna
Arraste a borda direita do título (como no Excel). Duplo clique volta à largura original.
Ordenar
Clique no título → Ordenar.
Levar para o Excel
Botão de download na barra: exporta a tabela inteira, com todas as colunas, ignorando filtros.
Exemplo: apuração fiscal por filial (como no SAP GUI / SPED)
Clique em SPED: 11SP por CST ICMS: a tabela filtra a filial 11SP e agrupa por CST ICMS, com os totais de moeda ligados.
Leia o Valor contábil de cada CST na linha do grupo (recolhido) ou na linha de total.
Para ver quais parceiros compraram: clique em Loc. neg. → CFOP → Parceiro e abra o CFOP desejado.
Use Destacar… para pintar e pôr em negrito as colunas de interesse.
Variantes (visões salvas)
Como no SAP GUI: monte a tabela do seu jeito, dê um nome e volte a ela quando quiser. Nesta fase o contrato e a validação já existem; o botão “Variantes” na barra e a gravação no banco virão em seguida.
Para quem usa
Uma variante guarda como você olha a tabela: ordem e largura das colunas, colunas escondidas, filtros, ordenação, agrupamento, totais e cores/negrito.
Ela não guarda os dados (sempre aparecem os atuais) nem quais grupos estavam abertos.
Você escolhe o nome (ex.: “Apuração por filial”) e pode ter várias.
Se uma coluna deixar de existir, ela some da variante e você é avisado; o resto continua funcionando. Colunas novas aparecem no fim.
Quem pode ver a variante, usá-la como padrão ou compartilhá-la com todos (global) é decidido pela plataforma, conforme o seu nível de acesso.
Para quem implementa
O componente não grava nada: a variante é um JSON simples (DataTableView) que a tela salva e carrega.
sanitizeView(json, columns) valida e ajusta o JSON às colunas atuais. Nunca lança erro e é idempotente.
Padrão e global são da plataforma: o JSON só tem name; quem é dono, quem enxerga e qual é a padrão ficam na tabela do banco.
Todo estado de visão novo precisa ser controlável por prop e serializável (sem Set, função ou JSX).
Só version e name são obrigatórios; campo ausente = “não mexer”. Fora da variante: dados, grupos abertos/fechados e seleção de colunas.
Salvar e abrir
import { sanitizeView, type DataTableView } from '@solutio/design-system';
// 1) Salvar: a tela monta o JSON a partir do estado que já controla e envia ao backend.
const variante: DataTableView = { version: 1, name: 'Apuração por filial', columnOrder, hiddenColumns, groupByColumns };
await api.salvarVariante(usuarioId, telaId, variante);
// 2) Abrir: ao carregar do banco, SEMPRE passe por sanitizeView com as colunas ATUAIS da tela.
const { view, removedColumns, notes } = sanitizeView(jsonDoBanco, columns);
// view.* -> aplique em setOrder / setHidden / setLevels / setFilters ...
// removedColumns -> colunas que não existem mais (já removidas da variante); avise o usuário
// notes -> regras que ajustaram a variante (ex.: coluna agrupada não pode ficar oculta)
O que sanitizeView garante
Situação
Resultado
Coluna citada que não existe mais
Removida de ordem, ocultas, larguras, filtros, ordenação, agrupamento, totais e estilos; listada em removedColumns.
Coluna nova (a variante não conhece)
Entra no fim da ordem.
Coluna que não pode ser ocultada (hideable: false) ou que está agrupada
Continua visível; aviso em notes.
Coluna com groupable: false ou filterable: false
Ignorada no agrupamento / no filtro; aviso em notes.
Total com função não permitida ao tipo da coluna
Ignorado (ex.: soma de texto); aviso em notes.
Largura menor que o mínimo, número inválido, valor de lista desconhecido
Ajustada ao mínimo (48 px) ou ignorada.
Entrada que não é uma variante (null, texto, lista…)
Variante vazia chamada “Variante”, sem lançar erro.
Variante de versão mais nova
Campos desconhecidos ignorados; aviso em notes.
Para quem implementa
Passo a passo para montar uma tela de relatório com o DataTable, à mão ou com ajuda de um LLM. A receita completa está no pacote (docs/recipes/datatable-report-screen.md).
Todas as linhas e colunas, valores crus; sem totais.
Barra e navegação
toolbarActions, onNavigate, pagination, pageSize
Com agrupamento a paginação é desligada (grupos completos).
3. Armadilhas comuns
Não formate os dados em rows (nada de "1.234,56" como texto): a soma, o filtro e o .xlsx usam o valor cru.
Não some com reduce/toFixed; use os totais do componente ou aggregateValues.
Para o nível mostrar o que você espera, ordene rows pelas colunas de agrupamento no consumidor.
Botões de apoio de protótipo ficam fora do componente: não os coloque em toolbarActions.
Só Yarn (yarn add, yarn test); só tokens --sol-*; sem dark mode.
4. Prompt pronto para um LLM
Copie, preencha o caso de uso no final e cole no seu assistente.
Implemente uma tela de relatório com o DataTable do @solutio/design-system (Yarn; nunca npm/pnpm/bun).
Leia ANTES: packages/design-system/docs/recipes/datatable-report-screen.md (receita) e o exemplo vivo
apps/docs/app/_components/BigTableReport.tsx. Não invente props: confira os tipos em DataTableProps/Column.
Regras:
1. 'use client' no componente de tela. rows chega por prop; o DataTable não busca dados.
2. Dados CRUS em rows: números como number, datas ISO (AAAA-MM-DD), códigos como texto (preserva zeros à esquerda).
Formate só em Column.render. Dinheiro: Column.dataType = 'currency' (sem render).
3. Declare Column.dataType ('number' | 'currency' | 'text' | 'date'); nunca dependa de inferência.
4. Recursos são opt-in: horizontalScroll, resizableColumns, selectableColumns, columnVisibilityControl,
filterableColumns, groupByColumns + collapsibleGroups + groupLevelControl, aggregatable/initialTotals, exportable.
5. Estado controlado quando a tela precisa reagir: columnOrder, columnFilters, groupByColumns, collapsedGroups.
Ordene rows por groupByColumns no consumidor para a ordem ficar previsível.
6. Totais usam aggregateValues (decimal exato). NUNCA some com reduce/toFixed.
7. Cor/negrito: Column.tone/Column.bold ou columnStyles=[{ keys, tone, bold }] (só tokens; não use hex).
8. Só tokens --sol-* para qualquer estilo. Sem dark mode.
9. Escreva testes (Vitest + Testing Library) para os comportamentos criados.
Caso de uso a atender: <descreva a tela: colunas, hierarquia de agrupamento, totais, filtros>.
Todas as capacidades do DataTable ligadas ao mesmo tempo, com 50 colunas e 85 linhas: rolagem horizontal, reordenar colunas (arrastar e “Posição”), seleção de colunas (Ctrl/Shift+clique) com ◀ ▶, ocultar (⚙ e botão no cabeçalho), filtro por coluna com opções dependentes, ordenar, agrupar em N níveis (detalhe abaixo ou acima, recolher grupos), totais (dialog + totais iniciais) com coluna de moeda R$, exportação .xlsx, ações na barra, abrir detalhes e paginação “Mais”. Os controles acima da tabela são de protótipo.
Ctrl/Shift+clique seleciona colunas (◀ ▶ movem) · arraste um título ou use “Posição” · funil filtra · olho oculta · clique no título → ordenar, agrupar, totais · arraste a borda do cabeçalho para ajustar a largura · role para a direita
Arraste o título de uma coluna para frente ou para trás; ou clique no título e use a seção “Posição” do DataTableFeatureDialog (alternativa por teclado).
Notas fiscais (12)
1000
12/03/2026
1101/AA
SP
R$ 12.287,26
R$ 2.211,71
1010
28/01/2026
1102/AA
SP
R$ 9.205,23
R$ 1.656,94
12SP
18/01/2026
2101/AA
ES
R$ 16.758,23
R$ 3.016,48
1014
22/03/2026
5102/AA
SP
R$ 22.953,07
R$ 4.131,55
12SP
14/02/2026
1302/AA
SP
R$ 12.623,80
R$ 0,00
12SP
12/03/2026
1916/AA
SP
R$ 78.310,06
R$ 0,00
11SP
05/03/2026
2916/AA
ES
R$ 47.347,15
R$ 0,00
1010
16/01/2026
2662/AA
SC
R$ 70.742,72
R$ 374,40
11SP
26/02/2026
1101/AA
SP
R$ 34.206,30
R$ 3.620,39
1010
11/02/2026
1102/AA
SP
R$ 2.663,26
R$ 281,88
1010
13/01/2026
2101/AA
SC
R$ 89.299,91
R$ 9.644,39
11SP
11/01/2026
5102/AA
SP
R$ 14.079,76
R$ 1.520,61
<DataTable
title="Notas fiscais"
columns={columns}
rows={rows}
rowKey={(r) => r.id}
reorderableColumns // modo não controlado: o DataTable guarda a ordem
onColumnOrderChange={(order) => salvarPreferencia(order)} // opcional
/>
// Controlado: <DataTable columnOrder={order} onColumnOrderChange={setOrder} ... />
Entrada: DataTableProps<T> — reorderableColumns?: boolean, columnOrder?: string[], onColumnOrderChange?: (order: string[]) => void; DataTableFeatureDialogProps — position?, totalColumns?, onMoveColumn?Saída: onColumnOrderChange(order: string[]) — ordem COMPLETA com todas as chaves de columnsMock: BIGTABLE_ROWS (12 primeiras linhas) / BIGTABLE_COLUMN_DEFS (6 colunas)
Barra de ações
Barra de ações — toolbarActions
Ações declarativas na barra superior: cada item vira um Button (type=button) com variant, disabled e loading; convivem com actions, Criar e Atualizar.
Entrada: DataTableProps<T> — toolbarActions?: DataTableToolbarAction[] ({ key, label, variant?: ButtonVariant, onClick, disabled?, loading? })Saída: onClick: () => void (de cada ação)Mock: BIGTABLE_ROWS (12 primeiras linhas) / BIGTABLE_COLUMN_DEFS (6 colunas)
Exportar .xlsx
Exportar .xlsx — DataTable
O botão “Exportar .xlsx” baixa todas as linhas (ignora a paginação), na ordem atual das colunas, com valores crus; exportValue converte a data ISO em data do Excel.
Entrada: DataTableProps<T> — exportable?: boolean, exportFileName?: string, exportSheetName?: string, getExportRows?: () => T[] | Promise<T[]>; Column<T> — exportValue?: (row: T) => string | number | boolean | Date | nullSaída: download de <exportFileName>.xlsx (uma aba, cabeçalho em negrito, números/datas/texto tipados)Mock: BIGTABLE_ROWS (12 primeiras linhas) / BIGTABLE_COLUMN_DEFS (6 colunas)
Funcionalidades estilo SAP GUI
Estilo SAP GUI — seleção, N níveis, filtro, moeda e totais iniciais
Modelo do SAP GUI: Ctrl/Shift+clique seleciona colunas (◀ ▶ movem 1 posição por clique); “Agrupar” em ordem define a hierarquia; detalhe abaixo ou acima; funil de filtro com opções dependentes; coluna de moeda (R$) e totais já na renderização. Os botões do painel são de protótipo.
Apuração por parceiro (120)
1030
5102
VIBRA
07/02/2026
00001000
R$ 458,46
R$ 458,46
R$ 82,52
11
1030
5102
IPIRANGA
17/01/2026
00001001
R$ 7.863,94
R$ 7.863,94
R$ 1.415,51
12
1030
5102
RAIZEN
10/01/2026
00001002
R$ 4.400,45
R$ 4.400,45
R$ 792,08
17
1030
6102
VIBRA
23/01/2026
00001003
R$ 1.787,72
R$ 1.787,72
R$ 321,79
39
1030
6102
SHELL
28/01/2026
00001004
R$ 6.370,67
R$ 6.370,67
R$ 1.146,72
28
2050
5949
SHELL
05/01/2026
00001005
R$ 3.624,44
R$ 3.624,44
R$ 652,40
28
2050
6102
IPIRANGA
13/02/2026
00001006
R$ 1.166,58
R$ 1.166,58
R$ 209,98
20
2050
6102
PETROBRAS
22/03/2026
00001007
R$ 4.317,44
R$ 4.317,44
R$ 777,14
12
2050
6102
ALE
26/01/2026
00001008
R$ 7.278,39
R$ 7.278,39
R$ 1.310,11
40
11SP
5102
VIBRA
24/02/2026
00001009
R$ 6.991,03
R$ 6.991,03
R$ 1.258,39
22
11SP
6652
RAIZEN
21/01/2026
00001010
R$ 5.051,13
R$ 5.051,13
R$ 909,20
25
11SP
6652
PETROBRAS
13/01/2026
00001011
R$ 1.049,26
R$ 1.049,26
R$ 188,87
30
11SP
6655
ALE
20/01/2026
00001012
R$ 595,75
R$ 595,75
R$ 107,24
8
1030
5102
VIBRA
05/02/2026
00001013
R$ 5.642,68
R$ 5.642,68
R$ 1.015,68
39
1030
5102
IPIRANGA
04/02/2026
00001014
R$ 1.820,24
R$ 1.820,24
R$ 327,64
33
1030
5102
RAIZEN
23/02/2026
00001015
R$ 9.096,55
R$ 9.096,55
R$ 1.637,38
38
1030
6102
VIBRA
12/02/2026
00001016
R$ 1.361,03
R$ 1.361,03
R$ 244,99
23
1030
6102
SHELL
10/02/2026
00001017
R$ 412,46
R$ 412,46
R$ 74,24
12
2050
5949
SHELL
13/02/2026
00001018
R$ 8.494,55
R$ 8.494,55
R$ 1.529,02
13
2050
6102
IPIRANGA
27/02/2026
00001019
R$ 2.936,07
R$ 2.936,07
R$ 528,49
3
2050
6102
PETROBRAS
06/02/2026
00001020
R$ 6.273,93
R$ 6.273,93
R$ 1.129,31
37
2050
6102
ALE
09/03/2026
00001021
R$ 9.915,64
R$ 9.915,64
R$ 1.784,82
26
11SP
5102
VIBRA
14/03/2026
00001022
R$ 6.813,75
R$ 6.813,75
R$ 1.226,47
37
11SP
6652
RAIZEN
07/02/2026
00001023
R$ 8.179,76
R$ 8.179,76
R$ 1.472,36
10
11SP
6652
PETROBRAS
16/01/2026
00001024
R$ 5.696,39
R$ 5.696,39
R$ 1.025,35
28
11SP
6655
ALE
08/03/2026
00001025
R$ 4.237,42
R$ 4.237,42
R$ 762,74
31
2050
5949
SHELL
16/02/2026
00001026
R$ 6.019,27
R$ 6.019,27
R$ 1.083,47
26
1030
5102
VIBRA
26/03/2026
00001027
R$ 9.100,43
R$ 9.100,43
R$ 1.638,08
30
2050
6102
IPIRANGA
12/01/2026
00001028
R$ 3.878,42
R$ 3.878,42
R$ 698,12
9
1030
5102
IPIRANGA
11/01/2026
00001029
R$ 7.867,48
R$ 7.867,48
R$ 1.416,15
33
1030
5102
IPIRANGA
09/01/2026
00001030
R$ 5.998,32
R$ 5.998,32
R$ 1.079,70
1
2050
6102
PETROBRAS
25/02/2026
00001031
R$ 5.465,50
R$ 5.465,50
R$ 983,79
36
2050
6102
PETROBRAS
05/03/2026
00001032
R$ 5.533,40
R$ 5.533,40
R$ 996,01
11
11SP
5102
VIBRA
25/02/2026
00001033
R$ 3.306,45
R$ 3.306,45
R$ 595,16
14
1030
6102
VIBRA
13/01/2026
00001034
R$ 7.569,16
R$ 7.569,16
R$ 1.362,45
7
11SP
6652
PETROBRAS
25/01/2026
00001035
R$ 3.338,50
R$ 3.338,50
R$ 600,93
7
1030
5102
IPIRANGA
07/02/2026
00001036
R$ 7.972,37
R$ 7.972,37
R$ 1.435,03
38
1030
5102
RAIZEN
18/02/2026
00001037
R$ 244,98
R$ 244,98
R$ 44,10
20
2050
6102
ALE
17/03/2026
00001038
R$ 3.084,91
R$ 3.084,91
R$ 555,28
24
1030
6102
VIBRA
28/03/2026
00001039
R$ 7.812,71
R$ 7.812,71
R$ 1.406,29
11
1030
5102
VIBRA
16/03/2026
00001040
R$ 2.977,90
R$ 2.977,90
R$ 536,02
3
1030
5102
VIBRA
09/02/2026
00001041
R$ 66,59
R$ 66,59
R$ 11,99
29
11SP
6652
RAIZEN
25/03/2026
00001042
R$ 205,59
R$ 205,59
R$ 37,01
4
2050
6102
IPIRANGA
10/02/2026
00001043
R$ 5.812,90
R$ 5.812,90
R$ 1.046,32
25
1030
5102
IPIRANGA
26/03/2026
00001044
R$ 8.256,54
R$ 8.256,54
R$ 1.486,18
31
1030
6102
SHELL
01/03/2026
00001045
R$ 8.270,47
R$ 8.270,47
R$ 1.488,68
13
2050
6102
ALE
16/01/2026
00001046
R$ 6.714,93
R$ 6.714,93
R$ 1.208,69
4
11SP
6652
PETROBRAS
04/01/2026
00001047
R$ 2.187,39
R$ 2.187,39
R$ 393,73
23
1030
5102
RAIZEN
17/01/2026
00001048
R$ 9.683,36
R$ 9.683,36
R$ 1.743,00
11
1030
6102
SHELL
25/02/2026
00001049
R$ 687,60
R$ 687,60
R$ 123,77
28
1030
6102
SHELL
21/03/2026
00001050
R$ 841,50
R$ 841,50
R$ 151,47
36
1030
6102
VIBRA
08/03/2026
00001051
R$ 1.727,09
R$ 1.727,09
R$ 310,88
27
1030
5102
VIBRA
27/02/2026
00001052
R$ 1.792,46
R$ 1.792,46
R$ 322,64
10
11SP
6652
PETROBRAS
21/02/2026
00001053
R$ 3.484,72
R$ 3.484,72
R$ 627,25
14
1030
5102
IPIRANGA
28/01/2026
00001054
R$ 6.950,40
R$ 6.950,40
R$ 1.251,07
28
1030
5102
IPIRANGA
21/03/2026
00001055
R$ 5.235,09
R$ 5.235,09
R$ 942,32
25
11SP
5102
VIBRA
23/03/2026
00001056
R$ 2.596,13
R$ 2.596,13
R$ 467,30
28
11SP
6652
RAIZEN
02/03/2026
00001057
R$ 8.065,73
R$ 8.065,73
R$ 1.451,83
22
1030
5102
IPIRANGA
25/01/2026
00001058
R$ 9.451,04
R$ 9.451,04
R$ 1.701,19
40
11SP
5102
VIBRA
06/03/2026
00001059
R$ 7.378,79
R$ 7.378,79
R$ 1.328,18
5
11SP
5102
VIBRA
08/01/2026
00001060
R$ 6.984,08
R$ 6.984,08
R$ 1.257,13
9
2050
6102
IPIRANGA
24/03/2026
00001061
R$ 5.687,38
R$ 5.687,38
R$ 1.023,73
17
1030
6102
SHELL
21/02/2026
00001062
R$ 3.515,43
R$ 3.515,43
R$ 632,78
8
2050
6102
ALE
27/01/2026
00001063
R$ 7.854,00
R$ 7.854,00
R$ 1.413,72
22
1030
5102
IPIRANGA
15/02/2026
00001064
R$ 5.988,19
R$ 5.988,19
R$ 1.077,87
26
1030
5102
IPIRANGA
07/01/2026
00001065
R$ 800,35
R$ 800,35
R$ 144,06
34
1030
5102
RAIZEN
02/01/2026
00001066
R$ 9.484,15
R$ 9.484,15
R$ 1.707,15
23
2050
5949
SHELL
12/02/2026
00001067
R$ 5.930,36
R$ 5.930,36
R$ 1.067,46
27
1030
6102
SHELL
08/03/2026
00001068
R$ 3.832,10
R$ 3.832,10
R$ 689,78
6
1030
5102
RAIZEN
05/01/2026
00001069
R$ 7.337,22
R$ 7.337,22
R$ 1.320,70
28
11SP
6652
PETROBRAS
04/03/2026
00001070
R$ 7.355,34
R$ 7.355,34
R$ 1.323,96
11
2050
5949
SHELL
08/03/2026
00001071
R$ 8.487,76
R$ 8.487,76
R$ 1.527,80
36
1030
5102
RAIZEN
18/02/2026
00001072
R$ 1.709,67
R$ 1.709,67
R$ 307,74
21
11SP
5102
VIBRA
06/01/2026
00001073
R$ 3.156,04
R$ 3.156,04
R$ 568,09
23
11SP
6655
ALE
01/03/2026
00001074
R$ 4.123,97
R$ 4.123,97
R$ 742,31
28
1030
5102
VIBRA
08/02/2026
00001075
R$ 3.169,90
R$ 3.169,90
R$ 570,58
40
2050
6102
IPIRANGA
26/02/2026
00001076
R$ 6.710,32
R$ 6.710,32
R$ 1.207,86
24
11SP
5102
VIBRA
15/02/2026
00001077
R$ 2.720,60
R$ 2.720,60
R$ 489,71
14
11SP
6652
RAIZEN
15/02/2026
00001078
R$ 4.046,84
R$ 4.046,84
R$ 728,43
37
11SP
6652
RAIZEN
27/03/2026
00001079
R$ 4.585,32
R$ 4.585,32
R$ 825,36
11
2050
6102
PETROBRAS
06/02/2026
00001080
R$ 3.881,19
R$ 3.881,19
R$ 698,61
9
1030
5102
RAIZEN
15/03/2026
00001081
R$ 1.353,25
R$ 1.353,25
R$ 243,58
22
2050
5949
SHELL
03/02/2026
00001082
R$ 5.074,59
R$ 5.074,59
R$ 913,43
13
1030
6102
VIBRA
20/01/2026
00001083
R$ 4.797,92
R$ 4.797,92
R$ 863,63
19
1030
5102
IPIRANGA
25/02/2026
00001084
R$ 9.200,16
R$ 9.200,16
R$ 1.656,03
1
1030
6102
SHELL
17/01/2026
00001085
R$ 4.394,06
R$ 4.394,06
R$ 790,93
39
11SP
6652
PETROBRAS
10/03/2026
00001086
R$ 4.789,12
R$ 4.789,12
R$ 862,04
7
1030
6102
SHELL
20/02/2026
00001087
R$ 6.276,47
R$ 6.276,47
R$ 1.129,76
10
11SP
5102
VIBRA
13/03/2026
00001088
R$ 8.394,46
R$ 8.394,46
R$ 1.511,00
14
2050
6102
IPIRANGA
19/03/2026
00001089
R$ 5.770,40
R$ 5.770,40
R$ 1.038,67
10
1030
5102
VIBRA
23/01/2026
00001090
R$ 2.342,41
R$ 2.342,41
R$ 421,63
19
2050
5949
SHELL
17/03/2026
00001091
R$ 6.046,93
R$ 6.046,93
R$ 1.088,45
32
11SP
6655
ALE
06/02/2026
00001092
R$ 2.751,57
R$ 2.751,57
R$ 495,28
25
11SP
5102
VIBRA
26/02/2026
00001093
R$ 2.073,27
R$ 2.073,27
R$ 373,19
21
11SP
6655
ALE
28/03/2026
00001094
R$ 4.103,34
R$ 4.103,34
R$ 738,60
35
11SP
5102
VIBRA
22/03/2026
00001095
R$ 9.373,79
R$ 9.373,79
R$ 1.687,28
36
2050
6102
ALE
24/03/2026
00001096
R$ 1.236,60
R$ 1.236,60
R$ 222,59
10
2050
5949
SHELL
13/01/2026
00001097
R$ 62,35
R$ 62,35
R$ 11,22
1
11SP
6652
PETROBRAS
07/01/2026
00001098
R$ 4.289,22
R$ 4.289,22
R$ 772,06
21
11SP
6652
PETROBRAS
11/02/2026
00001099
R$ 1.839,80
R$ 1.839,80
R$ 331,16
29
1030
5102
RAIZEN
16/03/2026
00001100
R$ 5.377,03
R$ 5.377,03
R$ 967,87
20
1030
5102
IPIRANGA
06/03/2026
00001101
R$ 7.868,12
R$ 7.868,12
R$ 1.416,26
14
1030
6102
VIBRA
22/02/2026
00001102
R$ 2.476,45
R$ 2.476,45
R$ 445,76
40
2050
6102
ALE
06/02/2026
00001103
R$ 9.691,93
R$ 9.691,93
R$ 1.744,55
16
11SP
5102
VIBRA
21/01/2026
00001104
R$ 8.082,27
R$ 8.082,27
R$ 1.454,81
28
1030
5102
VIBRA
21/02/2026
00001105
R$ 7.397,01
R$ 7.397,01
R$ 1.331,46
34
2050
6102
PETROBRAS
21/02/2026
00001106
R$ 961,74
R$ 961,74
R$ 173,11
6
11SP
5102
VIBRA
07/01/2026
00001107
R$ 2.370,57
R$ 2.370,57
R$ 426,70
5
1030
6102
VIBRA
03/03/2026
00001108
R$ 5.972,36
R$ 5.972,36
R$ 1.075,02
26
2050
6102
PETROBRAS
22/02/2026
00001109
R$ 1.588,54
R$ 1.588,54
R$ 285,94
13
2050
6102
IPIRANGA
05/03/2026
00001110
R$ 7.440,62
R$ 7.440,62
R$ 1.339,31
13
1030
5102
IPIRANGA
01/01/2026
00001111
R$ 7.872,43
R$ 7.872,43
R$ 1.417,04
37
1030
6102
SHELL
12/02/2026
00001112
R$ 6.462,35
R$ 6.462,35
R$ 1.163,22
30
1030
5102
VIBRA
27/03/2026
00001113
R$ 7.177,87
R$ 7.177,87
R$ 1.292,02
33
11SP
6652
PETROBRAS
25/01/2026
00001114
R$ 5.348,84
R$ 5.348,84
R$ 962,79
21
2050
6102
PETROBRAS
01/01/2026
00001115
R$ 1.555,30
R$ 1.555,30
R$ 279,95
13
11SP
6652
RAIZEN
07/02/2026
00001116
R$ 9.907,73
R$ 9.907,73
R$ 1.783,39
4
2050
5949
SOLO
30/03/2026
00001118
R$ 0,00
1
1030
5102
VIBRA
14/02/2026
00001119
R$ 1.234,56
12,5
R$ 222,22
7
11SP
6655
ALE
05/01/2026
00000120
R$ 0,00
0
Conferência da soma de Valor por nível (tabela, Local e Local/CFOP) sobre as 118 linhas com valor após os filtros: 11 recortes × idênticos à referência independente (centavos inteiros) ✓
Entrada: DataTableProps<T> — selectableColumns, selectedColumns/defaultSelectedColumns/onSelectedColumnsChange, groupByColumns/defaultGroupByColumns/onGroupByColumnsChange, groupDetailPlacement, filterableColumns, columnFilters/defaultColumnFilters/onColumnFiltersChange, initialTotals; Column<T> — groupable, filterable, dataType: 'currency'Saída: onSelectedColumnsChange(keys), onGroupByColumnsChange(levels), onColumnFiltersChange(filters: ColumnFilter[]); onGroupChange continua recebendo só o primeiro nívelMock: SAPGUI_ROWS (120 linhas) — Local neg. → CFOP → Nome Parceiro, com grupo de 1 linha, vazios e dado sujo
Totais e agregações
Totais e agregações — DataTable
Seção “Totais” no dialog da coluna: função (por tipo de dado), casas decimais, escopo e total geral. Sem agrupamento há uma linha de total; com agrupamento, uma por grupo.
Clique no título de Value → “Totais”: função, casas decimais, interruptor “Somente os registros exibidos” e, com agrupamento, “Exibir total geral”. A paginação mostra 6 de 18 linhas para evidenciar o escopo.
Prova ao vivo: o total do componente (aggregateValues) comparado com uma referência independente em centavos inteiros, para a tabela inteira e por filial.
Cada célula mostra o total do componente (aggregateValues) e o da referência independente (centavos inteiros). ✓ = idênticos; ✗ = divergência. ✓ 30 de 30 conferem.
Coluna
Soma
Contagem
Média
Mínimo
Máximo
Value
✓ 3872291,21
✓ 85
✓ 45556,37
✓ 1259,33
✓ 409945,29
Valor contábil
✓ 3890448,06
✓ 85
✓ 45769,98
✓ 1259,33
✓ 415274,58
BASE ICMS
✓ 1807839,56
✓ 85
✓ 21268,70
✓ 0,00
✓ 331779,24
IMPOSTO ICMS
✓ 276178,78
✓ 85
✓ 3249,16
✓ 0,00
✓ 59720,26
IMPOSTO PIS
✓ 31203,58
✓ 85
✓ 367,10
✓ 0,00
✓ 6764,10
IMPOSTO CBS
✓ 16101,43
✓ 85
✓ 189,43
✓ 0,00
✓ 3689,51
const r = aggregateValues(values, { fn: 'sum', dataType: 'number', decimals: 2 });
if (r.ok) r.text; // decimal exato