correção de bugs na area de Dashbord

This commit is contained in:
2026-08-21 01:12:47 -03:00
parent cebd6e2dcd
commit 4965931c13
7 changed files with 361 additions and 41 deletions

View File

@@ -227,6 +227,22 @@ class DashboardController < ApplicationController
# Custo por motorista (todos)
@fin_por_motorista = cms.group(:motorista_nome).sum(:valor_total)
.sort_by { |_, v| -v }
# Ranking CONSOLIDADO (aba "Consolidado" do card Motoristas): o valor REAL
# fechado por motorista + quantas entregas entraram nesse fechamento.
#
# ⚠️ A quantidade é DISTINCT tracking_id, NÃO a contagem de linhas: a mesma
# entrega pode ter vários pilares (Normal + Bônus + Retirada = 3 linhas em
# consolidacao_entregas), e contar linhas inflaria o número de entregas.
#
# Partimos de @fin_por_motorista (que vem de `cms`, já .ativos) e só buscamos
# a quantidade: assim a aba lista exatamente os motoristas do fechamento —
# arquivado não aparece — e a soma bate com o KPI "Custo total" do topo.
qtd_por_motorista = ces.group(:motorista_nome).distinct.count(:tracking_id)
@ranking_consolidado = @fin_por_motorista.map do |nome, valor|
{ nome: nome, valor: valor, entregas: qtd_por_motorista[nome].to_i }
end
end
# `atendidas` já vem filtrado por checkout no período (concluídas + falhadas).

View File

@@ -7,15 +7,27 @@ module Motorista
def index
nome = current_user.nome
# Card 1 — Valor ESTIMADO (mês atual): entregas pagas × preco_entrega
# Card 1 — Valor ESTIMADO (mês atual): entregas ATENDIDAS × preco_entrega.
#
# Atendida = o motorista FOI ao local e fechou a visita, com sucesso
# ('completed') OU insucesso ('failed') — no insucesso o deslocamento
# aconteceu e teve custo, então a empresa paga os dois. É o MESMO recorte do
# dashboard administrativo e da consolidação (ver Entrega::STATUS_ATENDIDO e
# Entrega.contar_atendidas): usava `pagas` (só concluídas) e o motorista via
# um valor MENOR que o do fechamento, sem entender de onde vinha a diferença.
#
# ⚠️ O eixo é o CHECKOUT (data real da visita), não planned_date: falhada TEM
# checkout, e uma entrega planejada em 31/07 mas fechada em 01/08 pertence a
# agosto — igual ao que a consolidação considera elegível.
@estimado_inicio = Date.current.beginning_of_month
@estimado_fim = Date.current
entregas_mes = Entrega.pagas.da_conta_gade
.do_motorista(nome)
.no_periodo(@estimado_inicio, @estimado_fim)
.count
@valor_estimado = entregas_mes * Configuracao.preco_entrega
@entregas_mes = entregas_mes
atendidas = Entrega.atendidas.da_conta_gade
.do_motorista(nome)
.no_periodo_checkout(@estimado_inicio, @estimado_fim)
@entregas_concluidas = atendidas.concluidas.count
@entregas_falhadas = atendidas.falhadas.count
@entregas_mes = @entregas_concluidas + @entregas_falhadas
@valor_estimado = @entregas_mes * Configuracao.preco_entrega
# Card 2 — Valor CONSOLIDADO: soma das consolidações finalizadas
@minhas_consolidacoes = Consolidacao.ativas