Corrige dashboard por período, CRUD de usuário, PDFs e paginação na revisão

- Dashboard: no_periodo passa a cobrir o dia inteiro (planned_date é timestamp),
  corrigindo período que zerava ao terminar no dia dos dados
- Dashboard: card de consolidações filtra por sobreposição de datas (não created_at)
- Usuários: adiciona helper role_options_for_select (corrige edição/criação)
- Consolidação: set_consolidacao nas actions de PDF/preview (corrige
  Pundit::NotDefinedError em Relatório Individual, Gerar Holerite e Preview)
- Revisão: paginação com Pagy (20/página + seletor 20/50/100)
- Nova consolidação: veículos filtrados pelo(s) motorista(s) no período
This commit is contained in:
2026-06-16 14:45:06 -03:00
parent aad167873f
commit fedf5bfcc9
17 changed files with 14917 additions and 24 deletions

View File

@@ -125,15 +125,19 @@ class ConsolidacaoEntregasController < ApplicationController
authorize @consolidacao, :show?
@motorista = params[:motorista]
@classificacoes = @consolidacao.consolidacao_entregas
.where(motorista_nome: @motorista)
.order(:created_at)
todas = @consolidacao.consolidacao_entregas.where(motorista_nome: @motorista)
# reorder(nil): GROUP BY tipo + ORDER BY created_at é inválido no PostgreSQL
@resumo = @classificacoes.reorder(nil).group(:tipo).count
@total = @classificacoes.sum do |c|
# Agregados calculados sobre o conjunto COMPLETO (não só a página exibida)
@resumo = todas.group(:tipo).count
@total = todas.sum do |c|
c.tipo == 'desconto' ? -c.valor_aplicado : c.valor_aplicado
end
@total_pilares = todas.count
@total_classificadas = todas.distinct.count(:tracking_id)
# Paginação só da tabela exibida — 20 padrão, com seletor 20/50/100
@por_pagina = [20, 50, 100].include?(params[:por_pagina].to_i) ? params[:por_pagina].to_i : 20
@pagy, @classificacoes = pagy(todas.order(:created_at), limit: @por_pagina)
# Próximo motorista pendente (para botão "Próximo Motorista")
nomes_completos = @consolidacao.consolidacao_motoristas.map(&:motorista_nome)