%# 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 %>
<%# 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 %>
➕ Adicionar lançamento
▾
📝 Registrar entrega manualmente
fora da base de rastreio
📄 Entrega de termo
sem nota/código — só quantidade
<%# 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) %>
Motorista
<% Array(@motoristas_consolidacao).each do |nome| %>
<% end %>
<%# NF + observação (texto livre) %>
<%# Pilares (múltiplos) %>
Classificar como (pode marcar mais de uma)
<% [['entrega_normal', '🚚 Entrega Normal', Configuracao.preco_entrega],
['retirada', '📦 Retirada', Configuracao.preco_retirada],
['bonus', '⭐ Bônus', Configuracao.preco_bonus],
['desconto', '⚠️ Desconto', Configuracao.preco_desconto],
['extraordinaria', '✨ Entrega Extraordinária', Configuracao.preco_extraordinaria]].each do |tipo, label, preco| %>
class="accent-purple-500">
<%= label %><%= moeda(preco) %>
<% end %>
<%# Valor customizado da Extraordinária (opcional) %>
Valor da Extraordinária (opcional — vazio usa o padrão)
Adicionar apontamento ✓
<%# Modal — entrega de termo %>
📄 Entrega de termo
✕
Entrega sem nota fiscal nem código de rastreio. Informe quantos termos foram entregues.
<%# Motorista (contexto da tela) + preço unitário %>
Motorista
🚚 <%= @motorista %>
Preço por termo
<%= moeda(Configuracao.preco_termo) %>
<%# Stepper de quantidade %>
Quantidade de termos
−
+
Adicionar termos ✓
<% 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| %>
<%= label %>
<% 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 %>