<%# app/views/consolidacao_entregas/validar.html.erb — PASSO 2: Validar entregas %> <% content_for :title, "Validar — #{@motorista}" %>
<%# 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 @veiculo.present? %>🚚 <%= @veiculo %> — <% end %> <%= @classificadas %> de <%= @total_entregas %> entregas classificadas
<%# 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 e classificar um carro de cada vez
<%# Chip "Todos" %> <%= 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 #{@veiculo.blank? ? '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 = (@veiculo == v[:vehicle]) %> <%= link_to validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista, vehicle: v[:vehicle]), 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 #{v[:fechado] ? 'border-green-500 text-green-400 bg-green-500/10' : (selecionado ? 'border-orange-500 text-orange-400 bg-orange-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 %>
Ações em massa:
Selecionados como:
<%= link_to params[:apenas_pendentes] == '1' ? 'Mostrar todas' : 'Apenas não classificadas', validar_consolidacao_consolidacao_entregas_path(@consolidacao, motorista: @motorista, vehicle: @veiculo, 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' %>
<%# Apontamento 100% manual — entrega que NÃO está na base de rastreio (ex.: motorista foi ao local mas a NF ficou com outro no rastreio). %> <% unless @consolidacao.finalizada? && current_user.operador? %>
<%# Modal %>
<%# Entrega de termo — entrega SEM nota fiscal nem código; só motorista + quantidade. %>
<%# Modal %>
<% end %>
<%# ── Lista de entregas (3 colunas) ─────────────────── %>
<% 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, sticky) ─────────────── %>

📊 Resumo

Normal 0
Retirada 0
Bônus 0
Desconto 0
Extraordinária 0

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)

<%# Estado inicial para o Stimulus %>