Modificação na area do motorista
This commit is contained in:
@@ -3,14 +3,16 @@
|
||||
ali mesmo (sem sair da tela), as consolidações que compõem o valor dele. %>
|
||||
|
||||
<%# Link desta mesma tela preservando filtros — usado pelas linhas e pelos PDFs. %>
|
||||
<% ctx = { nome: params[:nome], motorista: params[:motorista], status: params[:status],
|
||||
<% ctx = { nome: params[:nome], motorista: params[:motorista], status: @status_totais,
|
||||
inicio: @inicio.strftime('%Y-%m-%d'), fim: @fim.strftime('%Y-%m-%d'),
|
||||
visao: 'motoristas' }.compact_blank %>
|
||||
|
||||
<%# ── Resumo do período ────────────────────────────────── %>
|
||||
<div class="grid grid-cols-2 xl:grid-cols-4 gap-3 mb-5">
|
||||
<div class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-xl p-4">
|
||||
<p class="text-gray-400 text-xs uppercase tracking-wide"><%= icone :dinheiro %> Total do período</p>
|
||||
<p class="text-gray-400 text-xs uppercase tracking-wide">
|
||||
<%= icone :dinheiro %> <%= @status_totais == 'finalizada' ? 'Consolidado no período' : 'Total do período' %>
|
||||
</p>
|
||||
<p class="text-orange-500 font-black text-2xl sm:text-3xl mt-1 whitespace-nowrap"><%= moeda(@totais.total_geral) %></p>
|
||||
<p class="text-gray-500 text-xs mt-1"><%= @totais.total_consolidacoes %> consolidação(ões) · <%= @totais.linhas.size %> motorista(s)</p>
|
||||
</div>
|
||||
@@ -120,9 +122,18 @@
|
||||
</div>
|
||||
|
||||
<p class="text-gray-500 text-xs mt-4">
|
||||
<%= icone :dica %> Entram as consolidações
|
||||
<%= params[:status].presence ? "com status #{params[:status]}" : 'de qualquer status' %>
|
||||
cujo período está dentro de <%= l @inicio, format: :short %> → <%= l @fim, format: :short %>.
|
||||
Motoristas arquivados na consolidação não entram no total.
|
||||
<%= icone :dica %>
|
||||
<% if @status_totais == 'finalizada' %>
|
||||
<span class="text-gray-400">Consolidado</span> = só consolidações <strong>finalizadas</strong> —
|
||||
é o mesmo número do card "Consolidado / Pago" do Dashboard no mesmo período.
|
||||
Troque para <span class="text-gray-400">Geral</span> para somar também os rascunhos em andamento.
|
||||
<% elsif @status_totais == 'rascunho' %>
|
||||
Mostrando <span class="text-gray-400">só rascunhos</span> — valores ainda em aberto, que mudam até o fechamento.
|
||||
<% else %>
|
||||
<span class="text-gray-400">Geral</span> = finalizadas <strong>+ rascunhos</strong>, por isso fica acima do
|
||||
"Consolidado / Pago" do Dashboard. Troque para <span class="text-gray-400">Consolidado</span> para comparar com ele.
|
||||
<% end %>
|
||||
Entram as consolidações que cruzam <%= l @inicio, format: :short %> → <%= l @fim, format: :short %> e as pagas dentro do período;
|
||||
motoristas arquivados não entram no total.
|
||||
</p>
|
||||
<% end %>
|
||||
|
||||
@@ -111,9 +111,20 @@
|
||||
class: 'flex-1 basis-48 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5 focus:border-orange-500 focus:outline-none' %>
|
||||
<% end %>
|
||||
|
||||
<%= f.select :status,
|
||||
options_for_select([['Todos os status', ''], ['Rascunho', 'rascunho'], ['Finalizada', 'finalizada']], params[:status]),
|
||||
{}, class: 'flex-1 basis-40 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
|
||||
<% if @visao == 'motoristas' %>
|
||||
<%# "Consolidado" x "Geral" — a pergunta que o número responde muda com isso:
|
||||
Consolidado é o valor JÁ FECHADO (o mesmo do card "Consolidado / Pago" do
|
||||
Dashboard); Geral soma também os rascunhos, que ainda mudam de valor. %>
|
||||
<%= f.select :status,
|
||||
options_for_select([['Consolidado (fechadas)', 'finalizada'],
|
||||
['Geral (com rascunhos)', 'todos'],
|
||||
['Só rascunhos', 'rascunho']], @status_totais),
|
||||
{}, class: 'flex-1 basis-52 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
|
||||
<% else %>
|
||||
<%= f.select :status,
|
||||
options_for_select([['Todos os status', ''], ['Rascunho', 'rascunho'], ['Finalizada', 'finalizada']], params[:status]),
|
||||
{}, class: 'flex-1 basis-40 min-w-0 bg-[#0a0a0a] border border-[#2a2a2a] text-white rounded-lg px-3 py-2.5' %>
|
||||
<% end %>
|
||||
|
||||
<%# "Pagamento" é status DA CONSOLIDAÇÃO (todos os motoristas dela); no modo
|
||||
Por motorista cada linha já mostra pago/a receber, então o filtro sairia
|
||||
|
||||
@@ -103,35 +103,57 @@
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%# ── Card secundário: estimativa (ainda não fechada) ──── %>
|
||||
<div class="bg-orange-500 rounded-2xl p-6 mb-6">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<p class="text-black/80 font-bold uppercase tracking-wide flex items-center gap-2"><%= icone :dinheiro, cor: nil, espaco: false %> Estimativa das entregas</p>
|
||||
<span class="text-black/60 text-sm whitespace-nowrap"><%= l @estimado_inicio, format: :short %> a <%= l @estimado_fim, format: :short %></span>
|
||||
<%# ── 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? %>
|
||||
<div class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-2xl p-6 mb-6">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<p class="text-gray-400 font-bold uppercase tracking-wide flex items-center gap-2"><%= icone :caminhao, espaco: false %> Suas entregas no período</p>
|
||||
<span class="text-gray-500 text-sm whitespace-nowrap"><%= l @estimado_inicio, format: :short %> a <%= l @estimado_fim, format: :short %></span>
|
||||
</div>
|
||||
<p class="text-white font-black text-4xl mt-2 leading-tight"><%= @entregas_mes %></p>
|
||||
<%# "Atendidas" = concluídas + sem sucesso: a empresa paga as duas, porque
|
||||
em ambas o motorista foi até o local. %>
|
||||
<p class="text-gray-300 text-base mt-1">
|
||||
<%= @entregas_concluidas %> entregues · <%= @entregas_falhadas %> sem sucesso (pagas também)
|
||||
</p>
|
||||
<p class="text-gray-500 text-sm mt-3">
|
||||
<%= icone :sucesso, cor: 'text-green-500' %> O valor deste período já foi fechado pela empresa — é o do card branco acima.
|
||||
</p>
|
||||
</div>
|
||||
<p class="text-black font-black text-4xl mt-2 leading-tight whitespace-nowrap"><%= moeda(@valor_estimado) %></p>
|
||||
<%# "Atendidas" = concluídas + sem sucesso. O rótulo NÃO pode voltar a dizer
|
||||
"feitas e confirmadas": o valor acima inclui as visitas sem sucesso, que
|
||||
a empresa também paga (o motorista foi ao local). Sem a segunda linha o
|
||||
motorista não consegue conferir a conta. %>
|
||||
<p class="text-black/80 text-base mt-2"><%= @entregas_mes %> entregas atendidas</p>
|
||||
<p class="text-black/70 text-sm mt-1">
|
||||
<%= @entregas_concluidas %> entregues · <%= @entregas_falhadas %> sem sucesso (pagas também)
|
||||
</p>
|
||||
<p class="text-black/60 text-sm mt-3">
|
||||
<%= icone :alerta, cor: nil %> Valor aproximado. O valor certo é o de cima, quando a empresa fecha o pagamento.
|
||||
</p>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="bg-orange-500 rounded-2xl p-6 mb-6">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<p class="text-black/80 font-bold uppercase tracking-wide flex items-center gap-2"><%= icone :dinheiro, cor: nil, espaco: false %> Prévia (ainda não fechado)</p>
|
||||
<span class="text-black/60 text-sm whitespace-nowrap"><%= l @estimado_inicio, format: :short %> a <%= l @estimado_fim, format: :short %></span>
|
||||
</div>
|
||||
<p class="text-black font-black text-4xl mt-2 leading-tight whitespace-nowrap"><%= moeda(@valor_estimado) %></p>
|
||||
<p class="text-black/80 text-base mt-2"><%= @entregas_mes %> entregas atendidas</p>
|
||||
<p class="text-black/70 text-sm mt-1">
|
||||
<%= @entregas_concluidas %> entregues · <%= @entregas_falhadas %> sem sucesso (pagas também)
|
||||
</p>
|
||||
<p class="text-black/60 text-sm mt-3">
|
||||
<%= 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.
|
||||
</p>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<%# ── Composição: de onde vem o valor fechado ──────────── %>
|
||||
<h2 class="text-white font-bold text-xl mb-1 flex items-center gap-2"><%= icone :composicao, espaco: false %> De onde vem esse valor</h2>
|
||||
<p class="text-gray-400 text-base mb-3">Cada fechamento abaixo entra na soma do card branco.</p>
|
||||
|
||||
<% if @consolidacoes.any? %>
|
||||
<div data-controller="carrossel" data-carrossel-tamanho-value="10">
|
||||
<div class="space-y-3">
|
||||
<% @consolidacoes.each do |cm| %>
|
||||
<% c = cm.consolidacao %>
|
||||
<div class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-2xl p-5">
|
||||
<div data-carrossel-target="item" class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-2xl p-5">
|
||||
<div class="flex flex-col md:flex-row md:items-center md:justify-between gap-4">
|
||||
<div class="min-w-0">
|
||||
<div class="flex items-center gap-2 flex-wrap">
|
||||
@@ -162,6 +184,23 @@
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<%# Setas: alvos grandes (56px) porque a tela é usada de luva/no trânsito.
|
||||
Somem sozinhas quando há uma página só (ver carrossel_controller.js). %>
|
||||
<div data-carrossel-target="controles" class="hidden flex items-center justify-between gap-3 mt-4">
|
||||
<button type="button" data-action="carrossel#anterior" data-carrossel-target="anterior"
|
||||
class="bg-[#1a1a1a] border border-[#2a2a2a] hover:border-orange-500 text-white rounded-2xl w-14 h-14 flex items-center justify-center"
|
||||
aria-label="Fechamentos anteriores">
|
||||
<%= icone :voltar, cor: nil, tamanho: 'w-6 h-6', espaco: false %>
|
||||
</button>
|
||||
<span data-carrossel-target="indicador" class="text-gray-300 text-base font-semibold"></span>
|
||||
<button type="button" data-action="carrossel#proxima" data-carrossel-target="proximo"
|
||||
class="bg-orange-500 hover:bg-orange-600 text-black rounded-2xl w-14 h-14 flex items-center justify-center"
|
||||
aria-label="Próximos fechamentos">
|
||||
<%= icone :avancar, cor: nil, tamanho: 'w-6 h-6', espaco: false %>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<% else %>
|
||||
<div class="bg-[#1a1a1a] border border-[#2a2a2a] rounded-2xl p-10 text-center">
|
||||
<p class="mb-3"><%= icone :vazio, tamanho: 'w-12 h-12', cor: 'text-gray-600', espaco: false %></p>
|
||||
|
||||
Reference in New Issue
Block a user