%# locals: metricas (Analytics::OperacaoMetricas), titulo (opcional), filtravel (opcional, default false) — torna as tabelas clicáveis p/ cross-filter %> <% titulo = local_assigns[:titulo] %> <% filtravel = local_assigns.fetch(:filtravel, false) %> <% ins = metricas.insucessos_pct %> <% pd = metricas.por_dia %>
📦 Total de Entregas
<%= metricas.total %>
✅ <%= metricas.sucesso %> · ● <%= metricas.recusas %> · ⏳ <%= metricas.pendentes %>
✅ Total de Sucesso
<%= metricas.sucesso %>
<%= pct_total.(metricas.sucesso) %>% do total
❌ Total de Recusas
<%= metricas.recusas %>
<%= pct_total.(metricas.recusas) %>% do total
⏳ Entregas Pendentes
<%= metricas.pendentes %>
<%= pct_total.(metricas.pendentes) %>% do total
Insucessos %
<% if metricas.total.zero? %>Sem dados no período.
<% else %>Índices de Falha
<%= render 'tabela_simples', cabecalhos: ['Observação', 'Total', '%'], linhas: metricas.indices_falha.map { |h| [h[:observation], h[:total], "#{h[:pct]}%"] }, vazio: 'Nenhuma falha no período.', filtro: (filtravel ? 'f_obs' : nil) %>Por Status
<%= render 'tabela_simples', cabecalhos: ['Status', 'Quantidade'], linhas: metricas.por_status_gade.map { |h| [h[:status], h[:total]] }, vazio: 'Sem dados.', total: metricas.total, filtro: (filtravel ? 'f_status' : nil) %>Notas fiscais por Motorista
Entregas por STS (Unidade)
Entregas por Dia
<% if pd[:labels].empty? %>Sem dados no período.
<% else %>