Modificação na area do motorista

This commit is contained in:
2026-08-26 15:34:56 -03:00
parent 7a8ec1bc16
commit 6c78570658
10 changed files with 261 additions and 54 deletions

View File

@@ -33,8 +33,17 @@ class ConsolidacoesController < ApplicationController
# Filtros
@consolidacoes = @consolidacoes.where(status: params[:status]) if params[:status].present?
@consolidacoes = @consolidacoes.where('nome ILIKE ?', "%#{params[:nome]}%") if params[:nome].present?
@consolidacoes = @consolidacoes.where('data_inicio >= ?', params[:inicio]) if params[:inicio].present?
@consolidacoes = @consolidacoes.where('data_fim <= ?', params[:fim]) if params[:fim].present?
# Datas: a consolidação entra se CRUZA a faixa — mesmo critério do modo "Por
# motorista" e do dashboard financeiro. Com o critério antigo (caber inteira
# dentro do filtro), um fechamento de 01/08 a 31/08 sumia da lista ao filtrar
# 01/0826/08 e as duas abas da MESMA tela contavam coisas diferentes.
if params[:inicio].present? && params[:fim].present?
@consolidacoes = @consolidacoes.cruzando_periodo(params[:inicio], params[:fim])
elsif params[:inicio].present?
@consolidacoes = @consolidacoes.where('data_fim >= ?', params[:inicio])
elsif params[:fim].present?
@consolidacoes = @consolidacoes.where('data_inicio <= ?', params[:fim])
end
if params[:motorista].present?
ids = ConsolidacaoMotorista.where('motorista_nome ILIKE ?', "%#{params[:motorista]}%")
@@ -63,7 +72,7 @@ class ConsolidacoesController < ApplicationController
totais = Analytics::TotaisPorMotorista.new(
inicio: inicio, fim: fim,
motorista: params[:detalhe].presence,
status: params[:status].presence || 'todos',
status: params[:status].presence || 'finalizada',
busca: params[:motorista].presence
)
@@ -484,24 +493,26 @@ class ConsolidacoesController < ApplicationController
private
# Modo "Por motorista": os totais saem do MESMO recorte da lista (período,
# status e busca por motorista), para as duas visões nunca contarem coisas
# diferentes. `detalhe` é o motorista aberto (o clique na linha).
# Modo "Por motorista": mesmo período/busca da lista, mas o recorte de datas e
# o default de status são os do DASHBOARD FINANCEIRO — é com ele que o operador
# compara o número (ver Analytics::TotaisPorMotorista). Sem status na URL vale
# "Consolidado" (só finalizadas): "Geral" (com rascunhos) mostrava um valor
# maior que o do dashboard e parecia erro de conta.
# `detalhe` é o motorista aberto (o clique na linha).
def montar_totais
@inicio, @fim = periodo_totais
@status_totais = params[:status].presence || 'finalizada'
@totais = Analytics::TotaisPorMotorista.new(
inicio: @inicio, fim: @fim,
status: params[:status].presence || 'todos',
status: @status_totais,
busca: params[:motorista].presence
)
@detalhe_motorista = params[:detalhe].presence
@detalhe = @detalhe_motorista ? @totais.consolidacoes_de(@detalhe_motorista) : nil
end
# Período do relatório de totais. Default: o MÊS CORRENTE INTEIRO — o fim é o
# último dia do mês, não "hoje", porque o recorte exige a consolidação inteira
# dentro da faixa (Consolidacao.no_periodo) e um fechamento que vai até 31/08
# sumiria da tela até o dia 31 chegar.
# Período do relatório de totais. Default: o MÊS CORRENTE INTEIRO (o mês é a
# unidade de fechamento; "até hoje" recortaria o mês pela metade sem motivo).
def periodo_totais
inicio = parse_data_totais(params[:inicio]) || Date.current.beginning_of_month
fim = parse_data_totais(params[:fim]) || Date.current.end_of_month