<%# app/views/consolidacao_entregas/validar.html.erb — PASSO 2: Validar entregas %> <% content_for :title, "Validar — #{@motorista}" %>
<%# Cabeçalho + controles fixos no topo (no desktop); só a lista de NFs rola. %>
<%# Header %>
<%= link_to '← Voltar (Passo 1)', wizard_consolidacao_path(@consolidacao), class: 'inline-flex items-center gap-1 bg-[#1a1a1a] hover:bg-[#2a2a2a] text-white border border-[#2a2a2a] hover:border-orange-500 font-semibold px-4 py-2.5 rounded-lg text-sm min-h-[44px]' %>

🚚 <%= @motorista %>

<%= @consolidacao.nome %> · <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %>

<%= link_to 'Revisar (Passo 3) →', revisar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista), class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-5 py-3 rounded-lg min-h-[48px] flex items-center' %>
<%# Barra de progresso (reflete o veículo selecionado, se houver) %>
<% if @veiculos_sel.any? %>🚚 <%= @veiculos_sel.join(', ') %> — <% end %> <%= @classificadas %> de <%= @total_entregas %> entregas classificadas · +<%= @manuais %> manuais
<%# Barra com 2 segmentos: laranja/verde = elegíveis classificadas · azul = lançamentos manuais %>
<%# Fechar por veículo — filtra a tela por carro e mostra quais já estão fechados. Só aparece quando o motorista usou mais de um veículo no período. %> <% if @veiculos_status.size > 1 %>
🚗 Fechar por veículo: clique para filtrar/somar um ou vários carros (clique de novo p/ tirar)
<%# 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]]) %> <%= 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 #{selecionado ? 'border-orange-500 text-orange-400 bg-orange-500/10' : (v[:fechado] ? 'border-green-500 text-green-400 bg-green-500/10' : 'border-[#2a2a2a] text-gray-300 hover:border-orange-500')}" do %> <%= v[:vehicle] %> <%= v[:classificadas] %>/<%= v[:eligible] %> <%= '✓' if v[:fechado] %> <% end %> <% end %>
<% end %> <%# Ações em massa + filtro %>
Aplicar nos selecionados (clique de novo p/ remover):
<%# Oculta/mostra o resumo lateral (mais largura para a lista) %> <%= link_to params[:apenas_pendentes] == '1' ? 'Mostrar todas' : 'Apenas não classificadas', validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista, vehicle: @veiculos_sel.presence, apenas_pendentes: params[:apenas_pendentes] == '1' ? nil : '1'), class: 'text-orange-400 hover:text-orange-300 text-sm border border-orange-500/40 px-3 py-2 rounded-lg' %>
<%# 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. %> <% unless @consolidacao.finalizada? && current_user.operador? %>
<%# Botão único + menu suspenso %> <%# Modal — registro manual de entrega %> <%# Modal — entrega de termo %>
<% end %>
<%# Fim do cabeçalho fixo — abaixo só a lista de NFs rola. %>
<%# ── Lista de entregas (3 colunas) — área rolável ──── %>
<%# 🔍 Busca na listagem — filtra os cards por NF, local, endereço ou veículo %>
🔍
<% if @entregas.any? %> <% @entregas.each do |e| %> <% tipos_ativos = (@classificacoes[e.tracking_id] || []).map(&:tipo) %>
<%# Checkbox seleção em massa %> <%# Dados da entrega %>

NF <%= e.numero_nf %> · <%= e.local %> <% if e.falhada? %> ⚠️ Insucesso <% else %> ✓ Entregue <% end %>

📍 <%= e.address.presence || 'sem endereço' %>

📅 <%= e.checkout&.strftime('%d/%m/%Y') || '—' %> · 🚚 <%= e.vehicle.presence || 'sem veículo' %> <% if e.atraso_minutos > 0 %> · ⏱️ atraso <%= e.atraso_minutos %>min<% end %>

<%# Toggles coloridos — laranja=normal, laranja escuro=retirada, branco=bônus, preto=desconto %>
<% [ ['entrega_normal', 'Normal', 'bg-orange-500 text-black'], ['retirada', 'Retirada', 'bg-orange-800 text-white'], ['bonus', 'Bônus', 'bg-white text-black border border-orange-500'], ['desconto', 'Desc.', 'bg-black text-white border border-gray-700'], ['extraordinaria', 'Extra', 'bg-purple-600 text-white'] ].each do |tipo, label, cores| %> <% end %>
<% end %> <% else %>

🎉

Nenhuma entrega pendente neste filtro.

<% end %>
<%# ── Resumo lateral (1 coluna) — rola junto se precisar ─────── %>

📊 Resumo

Normal 0
Retirada 0
Bônus 0
Desconto 0
Extraordinária 0
Termo 0
Apontamentos manuais <%= @manuais %>

Total do motorista

R$ 0,00

💰 Normal: <%= moeda(@precos[:entrega_normal]) %>

📦 Retirada: <%= moeda(@precos[:retirada]) %>

⭐ Bônus: <%= moeda(@precos[:bonus]) %>

⚠️ Desconto: -<%= moeda(@precos[:desconto]) %>

✨ Extraordinária: <%= moeda(@precos[:extraordinaria]) %> (valor por entrega)

📄 Termo: <%= moeda(@precos[:termo]) %>

<%# Estado inicial para o Stimulus %>