Correção de alguns valores no dash principal
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user