From 44843351ae00f7c08aa11679c5f2f0023e8b1ab0040dbafa61701e641c343e73 Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 16 Jun 2026 03:11:55 -0300 Subject: [PATCH] =?UTF-8?q?Corrige=20tela=20branca=20no=20Passo=203=20+=20?= =?UTF-8?q?erros=20na=20tela=20de=20usu=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Passo 3 (revisar): GROUP BY tipo + ORDER BY created_at é inválido no PostgreSQL (PG::GroupingError → 500/tela branca). reorder(nil) no count. Só ficou acessível depois de corrigir o new? da consolidação. - Usuários: helper badge_status_usuario criado; rota toggle_ativo corrigida para toggle_ativo_admin_usuario_path (PATCH); confirms via turbo_confirm. - Passo 3: contagem mostra entregas distintas + nº de pilares (multi-pilar). Co-Authored-By: Claude Opus 4.8 --- app/controllers/consolidacao_entregas_controller.rb | 3 ++- app/helpers/application_helper.rb | 7 +++++++ app/views/admin/usuarios/index.html.erb | 6 +++--- app/views/consolidacao_entregas/revisar.html.erb | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/app/controllers/consolidacao_entregas_controller.rb b/app/controllers/consolidacao_entregas_controller.rb index 42c8405..b4457f6 100644 --- a/app/controllers/consolidacao_entregas_controller.rb +++ b/app/controllers/consolidacao_entregas_controller.rb @@ -129,7 +129,8 @@ class ConsolidacaoEntregasController < ApplicationController .where(motorista_nome: @motorista) .order(:created_at) - @resumo = @classificacoes.group(:tipo).count + # 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| c.tipo == 'desconto' ? -c.valor_aplicado : c.valor_aplicado end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 3385d3d..f6a3f86 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -43,6 +43,13 @@ module ApplicationHelper tag.span label, class: "inline-flex items-center px-2.5 py-1 rounded-full text-xs font-bold #{cfg[:cor]}" end + # Badge de status ativo/inativo do usuário + def badge_status_usuario(ativo) + cor = ativo ? 'bg-green-600 text-white' : 'bg-red-600 text-white' + label = ativo ? 'Ativo' : 'Inativo' + tag.span label, class: "inline-flex items-center px-2.5 py-1 rounded-full text-xs font-bold #{cor}" + end + # Barra de progresso laranja def progress_bar(percentual, label: nil) pct = percentual.to_i.clamp(0, 100) diff --git a/app/views/admin/usuarios/index.html.erb b/app/views/admin/usuarios/index.html.erb index 8d49f99..b9f6139 100644 --- a/app/views/admin/usuarios/index.html.erb +++ b/app/views/admin/usuarios/index.html.erb @@ -73,10 +73,10 @@ <% end %> <% if policy(usuario).toggle_ativo? %> - <%= button_to toggle_ativo_usuario_path(usuario), method: :post, + <%= button_to toggle_ativo_admin_usuario_path(usuario), method: :patch, class: "p-2 rounded-lg transition-colors #{usuario.ativo? ? 'text-green-400 hover:bg-green-900/30' : 'text-red-400 hover:bg-red-900/30'}", title: usuario.ativo? ? 'Desativar' : 'Ativar', - data: { confirm: "#{usuario.ativo? ? 'Desativar' : 'Ativar'} #{usuario.nome}?" } do %> + form: { data: { turbo_confirm: "#{usuario.ativo? ? 'Desativar' : 'Ativar'} #{usuario.nome}?" } } do %> @@ -88,7 +88,7 @@ <%= button_to admin_usuario_path(usuario), method: :delete, class: 'p-2 text-gray-600 hover:text-red-400 hover:bg-red-900/20 rounded-lg transition-colors', title: 'Excluir', - data: { confirm: "Excluir #{usuario.nome} permanentemente?" } do %> + form: { data: { turbo_confirm: "Excluir #{usuario.nome} permanentemente?" } } do %> diff --git a/app/views/consolidacao_entregas/revisar.html.erb b/app/views/consolidacao_entregas/revisar.html.erb index e8f9d39..0d83c03 100644 --- a/app/views/consolidacao_entregas/revisar.html.erb +++ b/app/views/consolidacao_entregas/revisar.html.erb @@ -30,7 +30,7 @@

Total a pagar — <%= @motorista %>

<%= moeda(@total) %>

-

<%= @classificacoes.size %> entregas classificadas

+

<%= @classificacoes.map(&:tracking_id).uniq.size %> entregas classificadas (<%= @classificacoes.size %> pilares)

<%# Detalhe das classificações %>