<%# app/views/consolidacoes/show.html.erb %> <% content_for :title, @consolidacao.nome %> <% formas_pagamento = [['PIX', 'pix'], ['Transferência', 'transferencia'], ['Dinheiro', 'dinheiro']] %> <% pode_pagar = @consolidacao.finalizada? && policy(@consolidacao).registrar_pagamento? %>
<%= link_to '← Consolidações', consolidacoes_path, class: 'text-gray-500 hover:text-orange-500 text-sm' %>

<%= @consolidacao.nome %>

<%= badge_status(@consolidacao.status) %> <% if @consolidacao.finalizada? %><%= badge_pagamento(@consolidacao.status_pagamento) %><% end %>

📅 <%= l @consolidacao.data_inicio, format: :short %> → <%= l @consolidacao.data_fim, format: :short %> · Criada por <%= @consolidacao.criador.nome_display %> <% if @consolidacao.finalizada? %> · Finalizada por <%= @consolidacao.finalizador&.nome_display %> em <%= l @consolidacao.finalizado_em, format: :short %> <% end %>

<% if @consolidacao.operacoes.present? %>

🗂️ Operação: <% @consolidacao.operacoes_label.each do |op| %> <%= op %> <% end %>

<% end %>
<% if @consolidacao.rascunho? %> <%= link_to '✏️ Continuar validação', wizard_consolidacao_path(@consolidacao), class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-5 py-3 rounded-lg min-h-[48px] flex items-center' %> <% end %> <%= link_to '📊 Relatório financeiro', gerar_pdf_financeiro_consolidacao_path(@consolidacao), data: { turbo: false }, class: 'bg-[#1a1a1a] hover:bg-[#2a2a2a] text-white border border-orange-500 font-semibold px-4 py-3 rounded-lg min-h-[48px] flex items-center' %> <% if policy(@consolidacao).destroy? && !@consolidacao.arquivada? %> <%= button_to '📁 Arquivar', arquivar_consolidacao_path(@consolidacao), method: :post, data: { turbo_confirm: 'Arquivar esta consolidação? Ela não será excluída, apenas movida para o arquivo.' }, class: 'text-gray-400 hover:text-white border border-[#2a2a2a] px-4 py-3 rounded-lg min-h-[48px]' %> <% end %>
<%# ── Pagamento da operação inteira ─────────────────────── %> <% if pode_pagar %>
💵 Operação inteira: <% if @consolidacao.status_pagamento != :pago %> <%= form_with url: registrar_pagamento_consolidacao_path(@consolidacao), method: :post, data: { turbo_confirm: 'Marcar TODOS os motoristas pendentes desta consolidação como PAGOS?' }, class: 'flex items-center gap-2' do |f| %> <%= f.select :forma_pagamento, options_for_select(formas_pagamento, 'pix'), {}, class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5 text-sm' %> <%= f.submit '💰 Marcar tudo como pago', class: 'bg-green-600 hover:bg-green-700 text-white font-bold px-4 py-2.5 rounded-lg text-sm cursor-pointer min-h-[44px]' %> <% end %> <% end %> <% if @consolidacao.status_pagamento != :pendente %> <%= button_to '↩ Estornar tudo', cancelar_pagamento_consolidacao_path(@consolidacao), method: :post, data: { turbo_confirm: 'Estornar o pagamento de TODOS os motoristas?' }, class: 'text-gray-400 hover:text-white border border-[#2a2a2a] px-4 py-2.5 rounded-lg text-sm min-h-[44px]' %> <% end %>
<% end %>
<%# Total geral %>

Valor total da consolidação

<%= moeda(@consolidacao.valor_total) %>

<%# Motoristas + botões de PDF %>

👥 Motoristas

<% @motoristas.each do |cm| %>

<%= cm.motorista_nome %>

<% if @consolidacao.finalizada? %> <%= badge_pagamento(cm.pago? ? :pago : :pendente) %> <% end %>

<%= moeda(cm.valor_total) %>

<% if cm.pago? %>

💰 Pago em <%= l cm.pago_em, format: :short %> <% if cm.forma_pagamento.present? %>via <%= cm.forma_pagamento.humanize %><% end %> <% if cm.pagador.present? %>por <%= cm.pagador.nome_display %><% end %>

<% end %> <% if pode_pagar %>
<% if cm.pago? %> <%= button_to '↩ Estornar pagamento', cancelar_pagamento_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id), method: :post, data: { turbo_confirm: "Estornar o pagamento de #{cm.motorista_nome}?" }, class: 'text-gray-400 hover:text-white border border-[#2a2a2a] px-3 py-2 rounded-lg text-xs min-h-[40px]' %> <% else %> <%= form_with url: registrar_pagamento_consolidacao_path(@consolidacao, consolidacao_motorista_id: cm.id), method: :post, data: { turbo_confirm: "Marcar #{cm.motorista_nome} como pago?" }, class: 'flex items-center gap-2' do |f| %> <%= f.select :forma_pagamento, options_for_select(formas_pagamento, 'pix'), {}, class: 'bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-2 py-2 text-xs' %> <%= f.submit '💰 Marcar pago', class: 'bg-green-600 hover:bg-green-700 text-white font-bold px-3 py-2 rounded-lg text-xs cursor-pointer min-h-[40px]' %> <% end %> <% end %>
<% end %>
<%# Preview abre modal %> <%= link_to '📄 Relatório Individual', gerar_pdf_relatorio_consolidacao_path(@consolidacao, motorista: cm.motorista_nome), data: { turbo: false }, class: 'bg-orange-800 hover:bg-orange-700 text-white font-semibold px-4 py-3 rounded-lg text-sm min-h-[48px] flex items-center' %> <%= link_to '🧾 Gerar Holerite', gerar_pdf_holerite_consolidacao_path(@consolidacao, motorista: cm.motorista_nome), data: { turbo: false }, class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold px-4 py-3 rounded-lg text-sm min-h-[48px] flex items-center' %>
<% end %>
<%# ── Apontamentos manuais (notas que chegaram por fora) ─────────────── %> <% if @apontamentos.present? %> <% pode_editar = !(@consolidacao.finalizada? && current_user.operador?) %>

➕ Apontamentos manuais

<% if pode_editar %><% end %> <% @apontamentos.each do |(motorista, _tracking), pilares| %> <% entrega = pilares.first.entrega_original %> <% total = pilares.sum { |p| p.desconto? ? -p.valor_aplicado : p.valor_aplicado } %> <% if pode_editar %> <% end %> <% end %>
Nota / Motorista Classificações Valor

NF <%= entrega&.numero_nf || '—' %>

<%= motorista %><% if entrega&.vehicle.present? %> · <%= entrega.vehicle %><% end %>

<% pilares.each do |p| %> <%= p.tipo_cor[:label] %> <% end %>
<%= moeda(total) %> <%= button_to '✕ Remover', remover_apontamento_consolidacao_consolidacao_entregas_path(@consolidacao, tracking_id: pilares.first.tracking_id, motorista: motorista), method: :delete, form: { data: { turbo_confirm: "Remover o apontamento da NF #{entrega&.numero_nf} de #{motorista}?" } }, class: 'text-gray-400 hover:text-red-400 border border-[#2a2a2a] hover:border-red-500/50 px-3 py-2 rounded-lg text-xs min-h-[40px]' %>
<% end %>
<%# ── Modal de Preview ─────────────────────────────────── %>