<%# Cabeçalho + controles fixos no topo (no desktop); só a lista de NFs rola. %>
<%# Cabeçalho compacto: voltar, identificação e progresso numa faixa só.
Espaço vertical aqui é CARO — tudo isto fica fixo e é subtraído da lista,
que é o que o ADM realmente precisa ver. Antes eram 178px em dois cards. %>
<%= link_to wizard_consolidacao_path(@consolidacao), title: 'Voltar (Passo 1)',
class: 'shrink-0 inline-flex items-center justify-center gap-1 bg-[#1a1a1a] hover:bg-[#2a2a2a] text-white border border-[#2a2a2a] hover:border-orange-500 font-semibold px-3 h-11 rounded-lg text-sm' do %>
←Passo 1
<% end %>
<%# basis-40: o nome não pode ser espremido até virar "P…" — se não couber
com o resto, a linha quebra em vez de esmagar a identificação. %>
<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>
<%# Progresso ao lado do título (em vez de um card de 70px só p/ ele). No
celular vai para uma linha própria, no fim, para não brigar pelo espaço.
Números em branco/negrito: esta é a informação que o ADM confere o tempo
todo enquanto classifica — compactar não pode custar a leitura dela. %>
<%# Barra com 2 segmentos: laranja = elegíveis classificadas · azul = manuais %>
<%# Fechar por veículo — filtra a tela por carro, mostra o estado (pronto/
consolidado/arquivado) e permite CONSOLIDAR o veículo selecionado.
Só aparece quando o motorista usou mais de um veículo no período. %>
<% pode_fechar_veiculo = !(@consolidacao.finalizada? && !current_user.pode?('consolidacao.editar_finalizada')) %>
<% if @veiculos_status.size > 1 %>
<%= icone :veiculo %> Fechar por veículo:clique no nome para filtrar; consolide o carro quando estiver 100% (<%= icone :travado, cor: nil, tamanho: 'w-3.5 h-3.5' %>)
<%# Chip "Todos" — limpa a seleção (mostra todos os carros) %>
<%= link_to validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista),
class: "px-3 py-2 rounded-lg text-sm font-semibold border min-h-[40px] flex items-center
#{@veiculos_sel.empty? ? 'border-orange-500 text-orange-400 bg-orange-500/10' : 'border-[#2a2a2a] text-gray-300 hover:border-orange-500'}" do %>
Todos
<% end %>
<% @veiculos_status.each do |v| %>
<% selecionado = @veiculos_sel.include?(v[:vehicle]) %>
<%# Alterna este veículo dentro da seleção atual (multi-seleção) %>
<% nova_sel = selecionado ? (@veiculos_sel - [v[:vehicle]]) : (@veiculos_sel + [v[:vehicle]]) %>
<%# Cor determinística: selecionado(laranja) > consolidado(verde+cadeado) >
pronto(verde) > arquivado(cinza tracejado) > neutro. %>
<% cor = if selecionado then 'border-orange-500 text-orange-400 bg-orange-500/10'
elsif v[:fechado] then 'border-green-500 text-green-400 bg-green-500/10'
elsif v[:completo] then 'border-green-600/50 text-green-400'
elsif v[:arquivado] then 'border-dashed border-[#3a3a3a] text-gray-500'
else 'border-[#2a2a2a] text-gray-300 hover:border-orange-500' end %>
<%= link_to validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista, vehicle: nova_sel.presence),
data: { 'validacao-target': 'chipVeiculo', vehicle: v[:vehicle], eligible: v[:eligible] },
class: "px-3 py-2 rounded-lg text-sm font-semibold border min-h-[40px] flex items-center gap-2 transition-colors #{cor}" do %>
<%= icone :travado, cor: nil, tamanho: 'w-3.5 h-3.5', espaco: false %><%= v[:vehicle] %><%= v[:classificadas] %>/<%= v[:eligible] %><%= icone :confirmar, cor: nil, tamanho: 'w-3.5 h-3.5', espaco: false %>
<% end %>
<% end %>
<%# Ação de consolidação — opera sobre o veículo único selecionado. %>
<% if pode_fechar_veiculo %>
<% sel_unico = @veiculos_sel.size == 1 ? @veiculos_sel.first : nil %>
<% status_unico = sel_unico && @veiculos_status.find { |v| v[:vehicle] == sel_unico } %>
<% if status_unico.nil? %>
Selecione um veículo (clique no nome) para consolidá-lo separadamente.
<%# Habilita só quando o carro está 100% classificado; o JS liga/desliga
conforme a barra do escopo selecionado chega (ou não) a 100%. %>
<%= button_to fechar_veiculo_consolidacao_consolidacao_entregas_path(@consolidacao),
method: :post,
params: { motorista: @motorista, vehicle: sel_unico, vehicle_sel: @veiculos_sel },
disabled: !status_unico[:completo],
data: { 'validacao-target': 'consolidarBtn' },
form: { data: { turbo_confirm: "Consolidar o veículo #{sel_unico}? Você poderá reabrir depois." } },
class: "font-bold px-4 py-2 rounded-lg text-xs min-h-[40px] inline-flex items-center gap-1.5 #{status_unico[:completo] ? 'bg-green-600 hover:bg-green-500 text-white cursor-pointer' : 'bg-[#2a2a2a] text-gray-600 cursor-not-allowed'}" do %>
<%= icone :travado, cor: nil, tamanho: 'w-4 h-4' %> Consolidar este veículo
<% end %>
<%= button_to arquivar_veiculo_consolidacao_consolidacao_entregas_path(@consolidacao),
method: :post,
params: { motorista: @motorista, vehicle: sel_unico, vehicle_sel: @veiculos_sel },
form: { data: { turbo_confirm: "Arquivar o veículo #{sel_unico}? Ele sai da finalização (as entregas já classificadas continuam no pagamento)." } },
class: 'text-gray-400 hover:text-white border border-[#2a2a2a] hover:border-red-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px] inline-flex items-center gap-1.5' do %>
<%= icone :arquivar, cor: nil, tamanho: 'w-4 h-4' %> Arquivar veículo
<% end %>
<%= status_unico[:completo] ? 'Pronto para consolidar.' : 'Classifique 100% deste veículo para consolidar.' %>
<% end %>
<% end %>
<% end %>
<%# Barra de ações — uma linha só. O botão "Adicionar lançamento" (bloco
abaixo, que carrega os modais) entra NESTA mesma faixa via flex `order`,
sem precisar mover os modais de lugar. %>
<%# Pilares SEMPRE visíveis: são a ação principal da tela e o ADM precisa
vê-los para saber o que pode fazer. Sem seleção eles ficam esmaecidos
(não escondidos) — a versão anterior os removia do DOM e obrigava a
descobrir que existiam depois de marcar algo. %>
<%# Caixa de ferramentas — concentra os lançamentos avulsos (registro manual de
entrega e entrega de termo) num único botão com menu suspenso. Os modais e
controllers existentes são reaproveitados; só o gatilho mudou.
Fica DENTRO da barra de ações (order-2) para não custar uma linha própria;
os modais são `fixed`, então não afetam o layout da faixa. %>
<% unless @consolidacao.finalizada? && !current_user.pode?('consolidacao.editar_finalizada') %>
<%# Botão único + menu suspenso %>
<%# Modal — registro manual de entrega %>
Registro manual de entrega
Lançe uma entrega à mão, sem buscar na base de rastreio. Use quando o motorista foi ao local mas a nota ficou registrada com outro motorista.
<%# Motorista (default = o motorista da tela; pode trocar) %>
<%# Veículo (Q3) — a qual carro este lançamento pertence (soma no balde dele) %>
<%# NF + observação (texto livre) %>