Buscar K
Aparência
Aparência
O Widget Matriz Composta é a ferramenta para demonstrativos financeiros: DRE, demonstrativo gerencial, orçado × realizado, fluxo gerencial. A diferença para a Matriz está em de onde vêm as linhas.
Na Matriz, as linhas são descobertas no dado: elas são os valores de uma dimensão. Isso resolve "Faturamento por Região × Mês", e não resolve DRE, porque "Receita Líquida" não existe como valor de coluna nenhuma. Ela é Receita Bruta menos Deduções.
Na Matriz Composta, cada linha é declarada por quem monta, e as colunas são sempre tempo. Apesar do nome, ela não serve só a DRE: qualquer relatório em que as linhas são um roteiro fixo (indicadores operacionais, quadro de pessoal, painel de safra) se monta do mesmo jeito.
| Seu demonstrativo | Onde montar |
|---|---|
| Balancete puro sobre um plano de contas que já tem Código e Código Pai | Matriz, modo Hierárquico (resolve em uma consulta) |
| Tem linhas calculadas (Receita Líquida, EBITDA, margens) | Matriz Composta |
| Mistura fatos que não se relacionam entre si (venda, financeiro, folha) | Matriz Composta |
| Precisa de coluna de categoria (Região, Produto) | Matriz |
TIP
Se o plano de contas do cliente já está bem modelado com Pai/Filho, comece pela Matriz Hierárquica. Ela é muito mais barata. A Matriz Composta ganha quando o demonstrativo precisa de contas que o plano não tem.
O botão Montar matriz, no fim da barra lateral, abre a tela em que o demonstrativo é construído: a lista de linhas à esquerda, e à direita tudo o que a linha selecionada tem.
Toda linha é de uma destas três espécies, e os três botões de Adicionar ficam no topo da lista:
Receita Bruta − Deduções)Em Como esta linha é calculada, cada parcela é uma ficha: escolha a operação (somar, subtrair, multiplicar, dividir) e a linha que entra. Também dá para acrescentar um número fixo (Lucro antes do IR × 0,34) ou abrir um grupo de parênteses, que nasce e morre fechado. Logo abaixo, a conta aparece escrita por extenso, com os nomes das linhas, para conferência.
Uma conta só oferece as linhas que já terminaram acima dela. É isso que torna impossível escrever uma referência circular.
Em No total do grupo acima, cada linha diz como entra no total do grupo que a contém: Soma, Subtrai ou Não entra. Quem subtrai aparece no demonstrativo com um (−) antes do nome, para a leitura não depender de abrir a configuração.
O "Não entra" existe para linha de memória: número de colaboradores, toneladas, ticket médio, uma margem no meio de uma seção. Sem ele, o grupo somaria pessoas com dinheiro.
WARNING
O sinal vale só para a soma do grupo. Contas, totalizadores e análise vertical leem sempre o valor sem sinal.
Ou seja: se "Deduções" está marcada como Subtrai dentro do grupo dela, a conta Receita Bruta − Deduções continua subtraindo uma vez, não duas.
Se o dado já vem com sinal invertido no banco (despesa gravada negativa, ou débito e crédito em coluna separada), isso se resolve onde é o lugar: numa expressão da tabela ou da Aplicação. É a causa número um de um demonstrativo que parece certo e não está.
O campo Formato aceita Do próprio campo (o padrão, que respeita a máscara definida na modelagem), Número, Moeda, Percentual, Reduzido (mil, mi) e Inteiro. Grupos e contas herdam o formato de quem eles resumem, então um grupo não sai com R$ em cima de filhas sem R$.
Cada linha da lista tem uma alça. Arrastando:
Um grupo viaja com tudo o que está dentro dele. Mirar no próprio conteúdo não faz nada, de propósito: seria a forma de o ramo sumir do demonstrativo sem aviso.
Cada linha também tem, ao passar o mouse, os botões Subir, Descer e Excluir, e os grupos ganham um Adicionar dentro para criar uma linha já no lugar certo.
IMPORTANT
Não existe linha de total automática no rodapé, e isso é de propósito. Um rodapé automático somaria um grupo que contém uma linha percentual e imprimiria um número sem significado. A última linha do demonstrativo é uma conta que você escreve, chamada Lucro Bruto ou Resultado Líquido.
A Matriz Composta exige uma Tabela Calendário. O motivo é direto: as linhas de um DRE costumam ler fatos diferentes, que não se relacionam entre si, e o Calendário é a única coisa que faz um filtro de data da Dashboard alcançar todos eles.
Na seção Tempo, escolha a Coluna do Calendário e o Agrupar por: Dia, Semana, Mês ou Ano.
WARNING
Não existe agrupamento por trimestre. Para uma visão trimestral, agrupe por mês e leia os grupos, ou agrupe por ano.
Se uma linha precisa de outra data (despesa por competência, financeiro por caixa), isso se resolve na modelagem, com Relacionamento Fantasma e uma expressão use(). Veja a receita Calendário e Filtros Dinâmicos.
O demonstrativo sempre segue o filtro de data da Dashboard. O que se configura aqui é só o quanto esse filtro é expandido:
No ano corrente, "Sempre anos completos" não desenha doze colunas vazias esperando o futuro: ele vai até o mês de hoje, e passa dele quando houver valor lançado à frente, como um previsto ou um orçamento já aprovado. Assim o ano abre em janeiro sem terminar em cinco colunas em branco.
Nos dois primeiros modos há um Mínimo de colunas, porque filtrar um mês só deixaria o demonstrativo com uma coluna. Em "Últimos N períodos" ele não aparece: o N já diz quantas.
A seção Filtros padrão do widget, na barra lateral, vale para todas as linhas do demonstrativo: restringir tudo a uma filial, a um centro de custo, ou sobrescrever o período que veio da Dashboard.
Filtro de linha compõe por cima deste, do mais geral para o mais específico: primeiro o do Widget, depois o da linha.
TIP
Para o demonstrativo ler um recorte diferente do resto da Dashboard, use os Filtros padrão do widget, e não o seletor de períodos. É a mesma mecânica dos outros Widgets, e ela aparece na barra de filtros como qualquer outro filtro, em vez de ficar escondida numa configuração interna.
NOTE
Uma linha não pode filtrar a mesma data que define as colunas. Se tentar, o demonstrativo avisa e pede para ajustar o período na seção de Tempo, que é quem manda no eixo horizontal.
Por padrão, cada período é uma coluna. Declarando duas ou mais em Colunas dentro do período, cada período passa a ter várias: é assim que se monta orçado × realizado, ou a papeleta de consolidação Empresa A | Empresa B | Eliminações | Consolidado.
Uma coluna é só um nome. Não tem filtro nem configuração própria. O que muda entre elas é o campo que cada linha lê: com duas colunas declaradas, toda linha de medida passa a escolher dois campos, um para cada, em Campo de cada coluna.
Isso é o suficiente porque orçado e realizado costumam morar em tabelas diferentes. Quando moram na mesma, separados por um indicador de cenário, a diferença vira um campo de Expressão da Aplicação, e a coluna simplesmente aponta para ele. Uma coluna de variação percentual funciona do mesmo jeito.
TIP
Ao adicionar a primeira, já nascem duas ("Realizado" e "Orçado"). Uma coluna sozinha não significa nada: cada período já é uma.
A Coluna de acumulado fica ligada por padrão, em Totalizadores e análises, e o rótulo dela é editável. O acumulado é uma consulta própria, sem agrupamento por período. Não é a soma das células.
Isso não é detalhe técnico, é o que faz o número certo aparecer:
Cada linha como percentual de uma linha base que você escolhe, tipicamente a Receita Líquida.
Compara o período com outro. Ao ligar, escolha com o que ela compara:
Contra o período anterior (fevereiro contra janeiro)Contra o mesmo período do ano anterior (fev/26 contra fev/25)E escolha onde ela aparece:
Numa sub-linha abaixo de cada linha: cabe em demonstrativo largo, com muitos períodosNuma coluna dentro de cada período: cabe em demonstrativo alto, com muitas linhasSão o mesmo número desenhado em dois lugares.
NOTE
Numa linha de percentual a variação sai em pontos percentuais. Uma margem que foi de 10% para 12% aparece como +2,0 p.p., e não como +20%, porque é assim que se lê demonstrativo.
Uma linha de medida pode se abrir em filhas, uma por valor de uma dimensão: despesas comerciais abertas por centro de custo, por exemplo. Configure em Quebrar por, dentro da linha.
As filhas saem dos valores da dimensão, então um centro de custo criado no mês que vem aparece sozinho, sem ninguém editar o demonstrativo.
Até três níveis. Acima disso a quantidade de linhas explode e o demonstrativo fica ilegível.
Com colunas declaradas, a lista de filhas é a mesma em todas: quem define o conjunto é a primeira coluna. Sem isso, o orçado teria centros de custo que o realizado não tem e a matriz deixaria de ser uma matriz.
A seção Aparência, na barra lateral, tem a galeria de modelos. Escolher um resolve o caso comum sem abrir mais nada:
| Modelo | Característica |
|---|---|
| Limpo | Sem grade. A hierarquia vem do peso do texto. É o padrão |
| Contábil | Negativo entre parênteses, sem grade nenhuma, traço acima dos subtotais |
| Compacto | Grade completa, linhas alternadas e texto menor. Cabe mais linha na tela |
| Executivo | Texto maior e faixa colorida nos grupos. Para telão e apresentação |
| Zebrado | Linhas alternadas com grade horizontal. Ajuda a percorrer muitos períodos |
TIP
Trocar de modelo não apaga os ajustes que você já fez. O modelo é o ponto de partida, e o que você mexeu continua por cima. Dá para experimentar os cinco sem perder trabalho.
O botão Ajuste fino, logo abaixo da galeria, abre uma tela maior com prévia ao vivo grudada no canto: mexeu num controle, o exemplo ao lado muda na hora. Ela vem em seções recolhíveis.
Modelo
A mesma galeria, em cartões maiores, com a explicação de cada um ao lado do nome.
Geral
Apertado, Normal ou EspaçosoNenhuma, Só entre linhas ou Completa, com cor própriaSimples, Com traço ou Com fundoAjuste fino, marcado como o que quase ninguém precisa
Largura da coluna de rótulos (plano de contas costuma ter nome comprido), fonte dos números (A da interface ou Monoespaçada, que alinha dígito a dígito em conferência), caixa e alinhamento do cabeçalho, traço abaixo do cabeçalho com largura, tipo e cor, cores do cabeçalho, e Esconder o cabeçalho para quando o Widget já tem título logo acima.
Período corrente
Destacar o período em que estamos marca a coluna do mês de hoje, em negrito e com cor de fundo e de texto configuráveis. Numa matriz de doze colunas, achar o mês corrente no meio delas é um trabalho que a tela pode fazer.
Por espécie de linha
Ajusta uma espécie inteira de uma vez: Todas as linhas, Grupos e seções, Medidas, Contas, Itens de quebra e Linha de variação. Cada uma tem um "voltar ao modelo" próprio.
Note que a régua é visual, e não o tipo declarado: uma medida quebrada por dimensão conta como Grupos e seções, porque para quem lê ela é uma seção que se desdobra.
As duas últimas seções, Regras da matriz e Colunas especiais, são formatação condicional e estão descritas mais abaixo.
Dentro de Montar matriz, cada linha tem sua própria seção de aparência, e o que estiver ali vence o da espécie. Ela fica onde a linha se edita de propósito: procurar "onde eu mudo a cor do Lucro Líquido" numa tela à parte é o tipo de caça que faz gente desistir de customizar.
O vocabulário é o mesmo dos dois lados: negrito, itálico, caixa alta, tamanho relativo (Menor, Normal, Maior), cor de texto e de fundo, e o Traço, que carrega as convenções contábeis prontas: Traço acima significa "aqui fecha uma conta", Traço duplo abaixo significa "aqui fecha o resultado". Atrás do "Ajuste fino" da própria linha ficam largura, estilo e cor do traço, respiro acima e abaixo, sublinhado, riscado, alinhamento do rótulo, um ícone fixo e uma segunda cor de fundo, que transforma o fundo da linha em degradê.
Cada controle mostra um ponto ao lado quando o valor foi declarado ali, e não herdado. É o que separa "não mexi nisto" de "quero isto assim", e é o que permite tirar o negrito que o modelo põe em toda conta.
Em Geral:
Com sinal de menos ou Entre parênteses, a convenção contábilO padrão é desligado porque num demonstrativo a seção de custos é negativa por natureza: pintar todo negativo de vermelho pinta metade da página e o resultado se lê como relatório de erro. Vermelho aqui funciona melhor como sinal de exceção, e exceção é o que a formatação condicional marca. Quando você liga, qualquer regra condicional sobre negativos continua vencendo, inclusive para escolher outra cor.
Existe em dois lugares, com a mesma tela:
A régua é o escopo: o que fala de uma linha vence o que fala de todas. É assim que se isenta uma linha de uma regra geral sem inventar exceção.
Cada regra tem duas metades lado a lado: Quando a célula (o teste) e Ela fica assim (o efeito).
Do lado esquerdo, o teste:
For negativa, For positiva, For zero, Não tiver valorComparar com um número (>, >=, <, <=, =, !=)Estiver numa faixa (de / até)Regra em códigoDo lado direito, o efeito. Comece pelos estilos prontos, que dizem a leitura em vez de pedir uma escolha entre dois vermelhos: Ruim, Bom, Atenção, Destaque, as três versões com fundo, e Apagado. Cada botão mostra um número de verdade, então dá para ver se o texto continua legível. Além deles: negrito, itálico, sublinhado, riscado, um ícone de um catálogo curto (semáforo, direção, situação, marcação) que pode ficar antes ou depois do número, e as cores à mão.
TIP
A ordem importa, e ela está na tela. As regras valem de cima para baixo, e as de baixo refinam as de cima: uma que pinta o fundo depois de outra que pinta o texto mantém as duas coisas. Use as setas para reordenar, e o olho para desligar uma regra sem apagá-la.
Para o que os testes prontos não alcançam ("marque o melhor mês desta linha", "pinte numa escala contínua"), o teste Regra em código abre o editor do produto.
O código devolve true, e aí a célula recebe o efeito escolhido ao lado, ou devolve o próprio efeito como objeto, quando ele depende do valor. O painel O que dá para usar aqui lista o que o código recebe e traz exemplos prontos:
this.value: o valor da célula, ou null quando não deu para calcularthis.row: a linha (nome e tipo)this.period: o período da coluna, e se ela é a do acumuladothis.column: a coluna dentro do período, quando há mais de umathis.rowValues: todos os valores daquela linha, na ordem dos períodos1. Usar o efeito escolhido ao lado
// Marca o melhor mês desta linha.
const v = this.rowValues.filter(x => x !== null);
return this.value !== null && this.value === Math.max(...v);2. Decidir o efeito pelo valor
if (this.value === null) return false;
if (this.value < -1e6) return { color: "#dc2626", bold: true, icon: "mdi:alert-octagon" };
if (this.value < 0) return { color: "#dc2626", icon: "mdi:triangle-down" };
return false;3. Escala de cor contínua
// A cor aceita qualquer notação de cor, então o degradê sai da conta.
const v = this.rowValues.filter(x => x !== null);
if (this.value === null || !v.length) return false;
const min = Math.min(...v), max = Math.max(...v);
const t = max === min ? 0.5 : (this.value - min) / (max - min);
return { background: `hsl(${Math.round(120 * t)} 70% 92%)` };Enquanto escreve, o editor testa a regra contra células reais do seu próprio demonstrativo e mostra como o número ficaria. É o que transforma "não funcionou" em "devolveu isto".
NOTE
Só cor, fundo, marcas de texto e ícone atravessam. Tamanho, espaçamento e borda ficam de fora porque mudariam a métrica da tabela inteira a partir de uma célula, e o alinhamento entre linhas é o que faz um demonstrativo se ler.
WARNING
Uma regra em código que dá erro se desliga sozinha e o demonstrativo mostra o aviso na tela, com o nome da linha. Ele some quando a regra é corrigida.
A coluna de acumulado, a de AV% e a de variação têm aparência própria, tanto no nível do demonstrativo (Colunas especiais, no Ajuste fino) quanto dentro de uma linha (Colunas especiais nesta linha). Serve para deixar o acumulado de uma linha em destaque sem mexer nas outras.
A ordem de precedência, do mais fraco para o mais forte, é sempre a mesma:
modelo < espécie de linha < a linha < regra condicionalClicar numa célula (com o botão esquerdo mesmo) abre o menu de ações daquele número:
TIP
"Copiar linha" e "Copiar matriz" colam direto numa planilha, já em colunas, sem passar por arquivo. As colunas saem na mesma ordem em que estão na tela, incluindo acumulado e análises.
Ver relatório aparece nas linhas de medida, porque ali existe uma consulta que devolve aquele número. Numa linha de grupo ou de conta não existe: "Lucro Bruto" não é uma consulta, é aritmética. Para essas, a ação é De onde vem este número, que abre a decomposição:
+, −, ×, ÷, ou não entra), e o rodapé repete o total, então dá para conferir a conta na horaCélulas de AV% e de variação não têm nenhuma das duas ações: elas são derivadas de outras duas células, que já as têm.
Toda linha que se desdobra (um grupo, ou uma medida quebrada por dimensão) ganha uma seta à esquerda do nome. Clicar abre e fecha.
O estado inicial se define em dois lugares:
Tudo aberto, Só o primeiro nível aberto ou Tudo fechadoNOTE
Refiltrar a Dashboard não desfaz o que você abriu ou fechou à mão. As linhas vêm da configuração, não do dado, então trocar o mês não é motivo para colapsar o demonstrativo de volta.
Este é o Widget mais caro do produto. Cada linha de medida faz uma consulta por coluna, mais uma para o acumulado. Um demonstrativo de 30 linhas de medida com duas colunas e acumulado ligado são 120 consultas.
Duas consequências práticas:
Enquanto carrega, a tela mostra o progresso real (a porcentagem dos dados já carregados, não uma animação genérica). A matriz não desenha pela metade, de propósito: meio demonstrativo preenchido parece um demonstrativo pronto.
Depois de montado, editar nome, sinal, conta, cor ou análise não volta ao banco: só o que muda o recorte dos dados (campo, filtro, período, colunas, quebra) refaz as consultas.
Se a montagem tiver erro (uma conta referenciando uma linha que não existe, um grupo vazio, uma linha de medida sem campo), a Matriz Composta não desenha e lista o que está errado, com o nome da linha. A barra lateral também mostra quantos ajustes estão pendentes, e clicar nela abre a tela de montagem.
Isso é diferente dos outros Widgets, e é deliberado. Num demonstrativo, uma linha que some deixa um resultado completo, internamente coerente e errado, e alguém toma decisão em cima dele. Erro visível é melhor que número plausível.
Uma célula com — no lugar do número significa não foi possível calcular, e nunca zero.
O caso mais comum é uma margem num mês sem movimento: a receita é zero e a divisão não existe. Mostrar 0% ali seria pior, porque 0% de margem se lê como prejuízo operacional, enquanto o traço se lê como ausência de dado, que é o que de fato houve. Nesses meses o Acumulado continua mostrando a margem real do período inteiro.
O traço também aparece quando a linha depende de um campo que o seu acesso não alcança. Nesse caso só ela e quem depende dela ficam vazios; o resto do demonstrativo continua desenhado.
Jan | Fev | Mar | 1º Tri | Abr…)