<%# app/views/dashboard/pendentes.html.erb O que há por trás do card "N pendentes": as entregas EM ABERTO do período — nem concluídas nem falhadas, pela data planejada. Antes o número existia e não havia tela nenhuma listando as linhas. %> <% ctx = { inicio: @periodo_inicio.strftime('%Y-%m-%d'), fim: @periodo_fim.strftime('%Y-%m-%d'), operacoes: @operacao_filtro.presence }.compact %>
<%# ── Cabeçalho ─────────────────────────────────────────── %>

Entregas em aberto

Planejadas entre <%= @periodo_inicio.strftime('%d/%m/%Y') %> e <%= @periodo_fim.strftime('%d/%m/%Y') %> sem fechamento — o motorista não registrou nem sucesso nem insucesso. <% if @operacao_filtro.present? %> · <%= @operacao_filtro.map { |t| Operacao.label(t) }.join(', ') %> <% end %>

<%= link_to '‹ Voltar ao dashboard', dashboard_path(ctx), data: { turbo: false }, class: 'px-4 py-2.5 rounded-xl text-sm whitespace-nowrap bg-[#1a1a1a] text-gray-300 border border-white/10 hover:border-orange-500' %>

<%= @total_em_aberto %> <%= 'entrega'.pluralize(@total_em_aberto) %> em aberto

A coluna Operação diz se a NF está em alguma planilha gade_entregas_*; Visitas é quantas vezes o rastreio tem essa NF. As duas juntas explicam por que ela ficou em aberto.

<% if @em_aberto.empty? %>

Nenhuma entrega em aberto neste período. 🎉

<% else %>
<% @em_aberto.each do |entrega| %> <% nf = entrega.reference_id.to_s %> <% operacao = @operacao_por_nf[nf] %> <% visitas = @visitas_por_nf[entrega.reference_id].to_i %> <% end %>
NF Status Motorista Veículo Unidade Planejada Operação Visitas
<%= entrega.reference_id %> <%= entrega.status.presence || 'sem status' %> <%= entrega.driver.presence || '— sem motorista' %> <%= entrega.vehicle.presence || '—' %> <%= entrega.contact_name.presence || '—' %> <%= entrega.planned_date&.strftime('%d/%m/%Y') || '—' %> <% if operacao.present? %> <%= operacao.join(', ') %> <% else %> fora da operação <% end %> <%= visitas %>
<%# Navegação de páginas (mesmo padrão de consolidacao_entregas/revisar) %> <% if @pagy.pages > 1 %> <% pag = ->(p) { dashboard_pendentes_path(ctx.merge(page: p)) } %> <% end %> <% end %>