Correção de alguns valores no dash principal

This commit is contained in:
2026-08-24 12:07:56 -03:00
parent 7b3ec3e407
commit 04b78bc7de
12 changed files with 690 additions and 50 deletions

View File

@@ -92,19 +92,39 @@ class Entrega < ApplicationRecord
# Aceita: "95907" (uma) | "95907,12345" (várias) | "all" ou vazio (sem filtro).
# Use "95907," (vírgula no fim) para incluir também registros de conta vazia/NULL.
scope :da_conta_gade, -> {
contas = ENV.fetch('DB_EXISTING_ACCOUNT_ID', '95907').to_s.strip
if contas.empty? || contas.casecmp?('all')
all
else
valores = contas.split(',', -1).map(&:strip)
# Token vazio (ex.: "95907,") → inclui também as linhas sem conta (NULL).
valores << nil if valores.any?(&:empty?)
where(account_id: valores)
end
valores = contas_gade
valores.nil? ? all : where(account_id: valores)
}
# ── Métodos de classe ────────────────────────────────────────
# Contas aceitas (DB_EXISTING_ACCOUNT_ID), normalizadas. `nil` = sem filtro
# ("all"/vazio); um token vazio ("95907,") inclui também as linhas sem conta.
def self.contas_gade
contas = ENV.fetch('DB_EXISTING_ACCOUNT_ID', '95907').to_s.strip
return nil if contas.empty? || contas.casecmp?('all')
valores = contas.split(',', -1).map(&:strip)
valores << nil if valores.any?(&:empty?)
valores.uniq
end
# A MESMA condição do scope :da_conta_gade, como fragmento SQL — para as
# queries cruas de Analytics (que montam UNION por operação e não passam pelo
# ActiveRecord) usarem exatamente o mesmo recorte de conta do dashboard.
# Devolve nil quando não há filtro. `apelido` é o alias da tabela na query.
def self.condicao_conta_sql(apelido = table_name)
valores = contas_gade
return nil if valores.nil?
coluna = "#{connection.quote_table_name(apelido)}.account_id"
listadas = valores.compact
partes = []
partes << sanitize_sql_array(["#{coluna} IN (?)", listadas]) if listadas.any?
partes << "#{coluna} IS NULL" if valores.include?(nil)
"(#{partes.join(' OR ')})"
end
# Lista motoristas únicos (para selects, consolidações)
def self.motoristas_ativos(inicio: nil, fim: nil)
base = da_conta_gade