Conteúdo do Curso

4.4 - Aba Value: agregação, KPI e gauge

Capítulo 4 How-to 10 min Lição 4.4

Aba Value — agregação, KPI e gauge

A aba Value aparece para tile, kpi e gauge. Ela controla como o número do card é calculado e comparado. Veja nos prints abaixo.

3
tipos que usam
3
agregações
4
modos de KPI
3
validações auto

aggregation

Como o item resume os registros do model_id filtrados pelo domain e pela janela de data.

count

O que faz: search_count(domain). Simples e rápido — conta os registros.

Não exige measure_field_id.

sum

O que faz: Soma do campo numérico escolhido em measure_field_id.

Exige measure_field_id.

avg

O que faz: Média do campo numérico escolhido em measure_field_id.

Exige measure_field_id.

Print 1 — aba Valor com aggregation=Contagem (padrão, sem measure_field_id):

Aba Valor - aggregation Contagem

Repare que o campo measure_field_id não aparece — count não precisa dele.

Print 2 — ao trocar para aggregation=Soma, um campo novo aparece:

Aba Valor - aggregation Soma

O campo Campo de medida aparece — é onde você escolhe expected_revenue, amount_total, etc.

O Campo de medida — aprofundamento

O measure_field_id é o campo numérico que será somado, contado ou medido. É o núcleo matemático do item. Vamos entender exatamente o que aceita.

Domínio técnico

O boardkit filtra o dropdown com a expressão NUMERIC_FIELD_DOMAIN:

[('model_id', '=', model_id),
             ('name', '!=', 'id'),
             ('store', '=', True),
             ('ttype', 'in', ['integer', 'float', 'monetary'])]

Quatro regras rígidas. O dropdown só mostra campos que passam todas.

4 regras que o campo deve cumprir
  • Mesmo modelo do item (ou model_2_id no Second Data Source).
  • Não ser id — não dá pra somar o ID técnico.
  • Estar armazenado (store=True) — campos computed puros não aparecem.
  • Tipo técnico: integer, float ou monetary.
Tipo Quando usar Exemplos comuns
integer Contagens inteiras: quantidade de registros, total de itens. quantity, priority, sequence, employee_ids (count).
float Métricas com casas decimais: pesos, durações, taxas, percentuais. margin, duration, conversion_rate, hourly_rate.
monetary Valores monetários armazenados (precisa ser monetary field no Odoo, não float com currency_id). expected_revenue, amount_total, amount_untaxed, price_subtotal.

Exemplos práticos por modelo Odoo

Combinações clássicas de modelo + campo + agregação:

Modelo measure_field_id recomendado Agregação Cenário
crm.leadexpected_revenue monetarysumPipeline total em R$
crm.lead(nenhum — count)countTotal de leads abertos
sale.orderamount_total monetarysumFaturamento total
account.moveamount_residual monetarysumSaldo a receber
product.productlist_price monetarysumValor de catálogo
res.partner(nenhum — count)countTotal de contatos
hr.employeehourly_cost monetarysumCusto hora total
project.taskplanned_hours floatsumHoras planejadas
project.task(nenhum — count)countTotal de tarefas
stock.moveproduct_uom_qty floatsumQuantidade movimentada
helpdesk.ticket(nenhum — count)countTotal de tickets

compare_previous_period

Disponível para tile e kpi. Quando marcado, o boardkit calcula o valor da mesma janela deslocada para trás (_previous_date_range) e exibe um delta badge ao lado do número.

Print 3 — o checkbox Comparar com o período anterior marcado:

Aba Valor - compare_previous_period ativo

No preview à direita, o card agora mostra o número atual ao lado de um badge ↑ +12% ou ↓ -100% — a diferença vs o período anterior.

Grupo KPI (item_type=kpi)

4 campos extras controlam como o KPI exibe o resultado.

CampoO que fazValores
kpi_mode Modo de comparação do KPI. Define como o segundo valor é obtido. target ou comparison
target_enabled Liga/desliga a meta. Só relevante no modo target. True ou False
target_value Valor numérico da meta. 100000.0
kpi_display Como mostrar os dois valores lado a lado. value sum ratio percent

Os dois modos do kpi_mode

target

Compara o valor atual com um número fixo definido em target_value. Exemplo: receita esperada vs meta de R$ 100.000.

Exige target_enabled=True e target_value.

comparison

Compara o valor atual com o valor de outro modelo (model_2_id). Exemplo: oportunidades ganhas vs cota de vendas.

Exige model_2_id, domain_2, aggregation_2.

Second Data Source

Quando kpi_mode=comparison, aparece um subgrupo com os campos do segundo modelo:

CampoO que define
model_2_idModelo a ser comparado (filtro ITEM_MODEL_DOMAIN).
domain_2Filtro estático sobre o segundo modelo (widget domain).
aggregation_2count / sum / avg — mesma lógica do item principal.
measure_field_2_idCampo numérico do segundo modelo.
date_field_2_idCampo de data do segundo modelo (opcional).

Grupo Gauge (item_type=gauge)

Para gauges, há 3 campos que controlam a escala e a meta.

CampoO que fazPadrão
target_enabledLiga/desliga o alvo. Sem alvo, mostra só o valor atual.False
target_valueValor numérico da meta (linha de referência no gauge).—
gauge_maxTopo da escala. Quando vazio, o boardkit calcula max(value, target, 1) * 1.2.auto

Validações automáticas

Ao salvar, o boardkit roda 3 verificações que protegem contra configurações quebradas:

_check_fields_belong_to_model

Garante que measure_field_id, date_field_id etc. pertencem ao model_id.

_check_custom_dates

date_from <= date_to quando date_filter=custom. Evita intervalos invertidos.

_check_domains

O domínio é avaliado com safe_eval; se quebrar, o item fica com erro no preview.

Agora que você domina a aba Value, vamos para a aba Chart — onde os gráficos ganham forma.

Detalhe da aba Value: aggregation, measure_field_id, compare_previous_period, alvo e o modo comparison entre dois modelos.

Avaliação
0 0

Por enquanto não há comentários.

Quiz opcional da lição. Acerte de primeira e ganhe 10 XP (7 / 5 / 2 XP nas tentativas seguintes). Conta para a certificação.