From 50166686f8380d3387d64dad48b9b88c3a0cd2212acd72139224b7d62225c793 Mon Sep 17 00:00:00 2001 From: victor Date: Wed, 17 Jun 2026 16:34:29 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=A3o=20da=20fun=C3=A7=C3=A3o=20fi?= =?UTF-8?q?ltro=20de=20Pagamentos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/dashboard_controller.rb | 27 ++++-- app/views/dashboard/index.html.erb | 110 ++++++++++++++++-------- 2 files changed, 90 insertions(+), 47 deletions(-) diff --git a/app/controllers/dashboard_controller.rb b/app/controllers/dashboard_controller.rb index 6e91a95..f56ec92 100644 --- a/app/controllers/dashboard_controller.rb +++ b/app/controllers/dashboard_controller.rb @@ -88,17 +88,26 @@ class DashboardController < ApplicationController end def carregar_dados_pagamentos - finalizadas = @consolidacoes_mes.where(status: :finalizada) - cms = ConsolidacaoMotorista.where(consolidacao_id: finalizadas.select(:id)) + intervalo = @periodo_inicio.beginning_of_day..@periodo_fim.end_of_day - @pag_pago_qtd = cms.pagos.count - @pag_pend_qtd = cms.pendentes.count - @pag_pago_valor = cms.pagos.sum(:valor_total) - @pag_pend_valor = cms.pendentes.sum(:valor_total) + # PAGOS: filtrados pela DATA DO PAGAMENTO (pago_em) dentro do período do topo + # — "quanto foi pago neste período". + pagos = ConsolidacaoMotorista + .joins(:consolidacao) + .where(consolidacoes: { status: :finalizada, deleted_at: nil }) + .where(pago_em: intervalo) + @pag_pago_qtd = pagos.count + @pag_pago_valor = pagos.sum(:valor_total) - @tabela_pagamentos = finalizadas.recentes.map do |c| - { consolidacao: c, status: c.status_pagamento, pago: c.valor_pago, pendente: c.valor_pendente } - end + # PENDENTES: consolidações finalizadas cujo PERÍODO cruza o filtro, ainda sem + # pagamento (pendente não tem data de pagamento para filtrar). + finalizadas_ids = @consolidacoes_mes.where(status: :finalizada).select(:id) + pendentes = ConsolidacaoMotorista.where(consolidacao_id: finalizadas_ids).pendentes + @pag_pend_qtd = pendentes.count + @pag_pend_valor = pendentes.sum(:valor_total) + + @pagamentos_feitos = pagos.includes(:consolidacao, :pagador).order(pago_em: :desc) + @pagamentos_pendentes = pendentes.includes(:consolidacao).order(consolidacao_id: :desc) end def build_grafico_diario(entregas, preco_entrega) diff --git a/app/views/dashboard/index.html.erb b/app/views/dashboard/index.html.erb index 0783e8e..4620042 100644 --- a/app/views/dashboard/index.html.erb +++ b/app/views/dashboard/index.html.erb @@ -144,12 +144,12 @@ <%# Rosca pago vs a pagar (por valor) %>

💵 Pagamentos

-

Consolidações finalizadas no período

+

Pagos por data de pagamento · pendentes no período

<% if (@pag_pago_qtd + @pag_pend_qtd).zero? %>
🧾
-

Nenhuma consolidação finalizada no período

+

Nenhum pagamento ou pendência no período

<% else %>
@@ -157,9 +157,9 @@
- ● Pago + ● Pago no período - <%= moeda(@pag_pago_valor) %> · <%= @pag_pago_qtd %> motorista(s) + <%= moeda(@pag_pago_valor) %> · <%= @pag_pago_qtd %> pagamento(s)
@@ -172,42 +172,76 @@ <% end %>
- <%# Tabela de consolidações com status de pagamento %> -
-

📋 Status de pagamento por consolidação

+ <%# Tabelas: pagamentos realizados (com data) + pendentes %> +
- <% if @tabela_pagamentos.any? %> -
- - - - - - - - - - - <% @tabela_pagamentos.each do |linha| %> - - - - - + <%# Pagamentos realizados no período (filtrados por pago_em) %> +
+

✅ Pagamentos realizados no período

+ <% if @pagamentos_feitos.any? %> +
+
ConsolidaçãoStatusPagoA pagar
- <%= link_to linha[:consolidacao].nome, consolidacao_path(linha[:consolidacao]), - class: 'text-white hover:text-orange-500 font-medium' %> - <%= badge_pagamento(linha[:status]) %><%= moeda(linha[:pago]) %><%= moeda(linha[:pendente]) %>
+ + + + + + + - <% end %> - -
Pago emMotoristaConsolidaçãoFormaValor
-
- <% else %> -
-
📋
-

Nenhuma consolidação finalizada no período

-
- <% end %> + + + <% @pagamentos_feitos.each do |cm| %> + + <%= l cm.pago_em.to_date, format: :short %> + <%= cm.motorista_nome %> + + <%= link_to cm.consolidacao.nome, consolidacao_path(cm.consolidacao), + class: 'text-gray-300 hover:text-orange-500' %> + + <%= cm.forma_pagamento&.humanize || '—' %> + <%= moeda(cm.valor_total) %> + + <% end %> + + +
+ <% else %> +

Nenhum pagamento realizado neste período.

+ <% end %> +
+ + <%# Pendentes (consolidações finalizadas do período sem pagamento) %> +
+

🕗 Pagamentos pendentes

+ <% if @pagamentos_pendentes.any? %> +
+ + + + + + + + + + <% @pagamentos_pendentes.each do |cm| %> + + + + + + <% end %> + +
MotoristaConsolidaçãoValor
<%= cm.motorista_nome %> + <%= link_to cm.consolidacao.nome, consolidacao_path(cm.consolidacao), + class: 'text-gray-300 hover:text-orange-500' %> + <%= moeda(cm.valor_total) %>
+
+ <% else %> +

Nenhuma pendência no período. 🎉

+ <% end %> +