<%# app/views/motorista/dashboard/index.html.erb — Painel do Motorista Uma tela só: período → quanto já está FECHADO, quanto ainda é ESTIMATIVA e de onde vem cada valor. Feita para celular: alvos grandes, número em destaque, sem tabela que precise de zoom. %> <% content_for :title, 'Meu Painel' %> <% mes = Date.current.beginning_of_month..Date.current.end_of_month %> <% mes_ant = (Date.current - 1.month).beginning_of_month..(Date.current - 1.month).end_of_month %> <% tres_meses = (Date.current - 2.months).beginning_of_month..Date.current.end_of_month %> <% atalhos = { 'Este mês' => mes, 'Mês passado' => mes_ant, '3 meses' => tres_meses } %> <% atalhos['Tudo'] = (@faixa_total.first..@faixa_total.last) if @faixa_total %>

Olá, <%= current_user.nome.split.first %>!

Escolha o período e veja quanto você tem a receber.

<%# ── Aviso de pagamento recém-confirmado ───────────────── %> <% if @pagamentos_recentes.any? %>

<%= icone :sucesso, cor: nil, espaco: false %> Pagamento confirmado!

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

Você recebeu <%= moeda(cm.valor_total) %> pela consolidação <%= cm.consolidacao.nome %>

<%= icone :dinheiro %> <%= l cm.pago_em.to_date, format: :short %> <% if cm.forma_pagamento.present? %>· <%= cm.forma_pagamento.humanize %><% end %> <% if cm.nota_fiscal.present? %>· <%= icone :nota_fiscal %> NF <%= cm.nota_fiscal %><% end %>

<% end %>
<% end %> <%# ── Período ─────────────────────────────────────────── Chips grandes para o caso comum e um "outro período" escondido no
(sem JS) para a data exata. %>
<% atalhos.each do |label, faixa| %> <% ativo = @inicio == faixa.first && @fim == faixa.last %> <%= link_to label, motorista_dashboard_path(inicio: faixa.first.strftime('%Y-%m-%d'), fim: faixa.last.strftime('%Y-%m-%d')), class: "px-4 py-3 rounded-xl text-base font-bold min-h-[48px] flex items-center #{ativo ? 'bg-orange-500 text-black' : 'bg-[#0a0a0a] text-gray-300 border border-[#2a2a2a]'}" %> <% end %>
> <%= icone :calendario %> Outro período <%= form_with url: motorista_dashboard_path, method: :get, class: 'flex flex-wrap items-end gap-3 mt-2' do |f| %>
<%= f.date_field :inicio, value: @inicio.strftime('%Y-%m-%d'), class: 'w-full bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-xl px-3 py-3 text-base' %>
<%= f.date_field :fim, value: @fim.strftime('%Y-%m-%d'), class: 'w-full bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-xl px-3 py-3 text-base' %>
<%= f.submit 'Ver', class: 'bg-orange-500 hover:bg-orange-600 text-black font-bold rounded-xl cursor-pointer px-6 py-3 min-h-[48px]' %> <% end %>
<%# ── Card principal: o que já está FECHADO ────────────── %>

<%= icone :sucesso, cor: 'text-green-600', espaco: false %> Fechado pela empresa

<%= l @inicio, format: :short %> a <%= l @fim, format: :short %>

<%= moeda(@valor_consolidado) %>

<%# As duas metades do total: o que já caiu e o que ainda vem. %>

<%= icone :dinheiro, cor: 'text-green-700' %> Já recebido

<%= moeda(@totais.total_pago) %>

<%= icone :parcial, cor: 'text-amber-700' %> A receber

<%= moeda(@totais.total_pendente) %>

<%= @consolidacoes.size %> fechamento(s) no período.

<% if @consolidacoes.any? %> <%= link_to rotulo(:baixar, 'Baixar meu relatório do período (PDF)', cor: nil), motorista_totais_pdf_path(inicio: @inicio, fim: @fim), data: { turbo: false }, class: 'w-full bg-orange-500 hover:bg-orange-600 text-black font-bold text-base px-6 py-4 rounded-xl min-h-[52px] flex items-center justify-center text-center mt-4' %> <% end %>
<%# ── Card secundário: entregas do período ────────────── REGRA: valor estimado e valor fechado NUNCA aparecem juntos. Quando a empresa já fechou o período, o número certo é o de cima; mostrar ao lado uma estimativa (entregas × preço, sem descontos/bônus e sem as regras de classificação) fazia o motorista ver dois valores diferentes para o mesmo mês — e o estimado costuma ser MAIOR, o que vira cobrança. Com fechamento: só a CONTAGEM de entregas (o trabalho, sem prometer valor). Sem fechamento: a prévia em R$, que é a única informação que ele tem. %> <% if @consolidacoes.any? %>

<%= icone :caminhao, espaco: false %> Suas entregas no período

<%= l @estimado_inicio, format: :short %> a <%= l @estimado_fim, format: :short %>

<%= @entregas_mes %>

<%# "Atendidas" = concluídas + sem sucesso: a empresa paga as duas, porque em ambas o motorista foi até o local. %>

<%= @entregas_concluidas %> entregues · <%= @entregas_falhadas %> sem sucesso (pagas também)

<%= icone :sucesso, cor: 'text-green-500' %> O valor deste período já foi fechado pela empresa — é o do card branco acima.

<% else %>

<%= icone :dinheiro, cor: nil, espaco: false %> Prévia (ainda não fechado)

<%= l @estimado_inicio, format: :short %> a <%= l @estimado_fim, format: :short %>

<%= moeda(@valor_estimado) %>

<%= @entregas_mes %> entregas atendidas

<%= @entregas_concluidas %> entregues · <%= @entregas_falhadas %> sem sucesso (pagas também)

<%= icone :alerta, cor: nil %> Conta simples (entregas × valor da entrega). O valor certo sai quando a empresa fechar o período — bônus, retiradas e descontos entram só no fechamento.

<% end %> <%# ── Composição: de onde vem o valor fechado ──────────── %>

<%= icone :composicao, espaco: false %> De onde vem esse valor

Cada fechamento abaixo entra na soma do card branco.

<% if @consolidacoes.any? %>
<% @consolidacoes.each do |cm| %> <% c = cm.consolidacao %>

<%= c.nome %>

<%= badge_pagamento(cm.pago? ? :pago : :pendente) %>

<%= icone :calendario %> <%= l c.data_inicio, format: :short %> a <%= l c.data_fim, format: :short %>

<%= moeda(cm.valor_total) %>

<% if cm.pago? %>

<%= icone :dinheiro, cor: 'text-green-400' %> Pago em <%= l cm.pago_em.to_date, format: :short %> <% if cm.forma_pagamento.present? %>via <%= cm.forma_pagamento.humanize %><% end %>

<% if cm.nota_fiscal.present? %>

<%= icone :nota_fiscal %> Nota Fiscal: <%= cm.nota_fiscal %>

<% end %> <% else %>

<%= icone :parcial, cor: 'text-amber-400' %> Ainda não pago

<% end %>
<%= link_to rotulo(:baixar, 'Extrato deste fechamento', cor: nil), gerar_pdf_extrato_consolidacao_path(c, motorista: current_user.nome), data: { turbo: false }, class: 'w-full md:w-auto bg-[#0a0a0a] border border-[#2a2a2a] hover:border-orange-500 text-white font-bold text-base px-5 py-4 rounded-xl min-h-[52px] flex items-center justify-center text-center' %>
<% end %>
<%= render 'shared/carrossel_controles', anterior: 'Fechamentos anteriores', proximo: 'Próximos fechamentos' %>
<% else %>

<%= icone :vazio, tamanho: 'w-12 h-12', cor: 'text-gray-600', espaco: false %>

Nenhum fechamento neste período.

<% if @faixa_total %> Toque em Tudo para ver todos os seus fechamentos. <% else %> Quando a empresa fechar um período com suas entregas, ele aparece aqui. <% end %>

<% end %>