Correção de itens que estão fora do plano valores no dash principal
This commit is contained in:
@@ -78,6 +78,31 @@ class Operacao
|
||||
grupos.sort_by { |titulo, _| ordem[titulo] }.map { |titulo, itens| [titulo, itens] }
|
||||
end
|
||||
|
||||
# Em QUAIS operações cada NF aparece: { '85382' => ['UBS NORTE AGO 2026'] }.
|
||||
# NFs que não estiverem em nenhuma planilha simplesmente não vêm no Hash — é
|
||||
# assim que a tela de pendentes marca "fora da operação" (plano avulso/de
|
||||
# inclusão) sem precisar de uma query por tabela.
|
||||
#
|
||||
# SEGURANÇA: as tabelas vêm de #nomes_validos (catálogo) + quote_table_name;
|
||||
# as NFs entram por conn.quote. Uma query só, com UNION ALL.
|
||||
def por_notas(notas)
|
||||
lista = Array(notas).map(&:to_s).map(&:strip).reject(&:empty?).uniq
|
||||
return {} if lista.empty?
|
||||
|
||||
tabelas = nomes_validos
|
||||
return {} if tabelas.empty?
|
||||
|
||||
valores = lista.map { |n| conn.quote(n) }.join(', ')
|
||||
sql = tabelas.map do |t|
|
||||
"SELECT nota_fiscal, #{conn.quote(label(t))} AS operacao " \
|
||||
"FROM #{conn.quote_table_name(t)} WHERE nota_fiscal IN (#{valores})"
|
||||
end.join(' UNION ALL ')
|
||||
|
||||
conn.select_all(sql).to_a
|
||||
.group_by { |r| r['nota_fiscal'].to_s }
|
||||
.transform_values { |rows| rows.map { |r| r['operacao'] }.uniq.sort }
|
||||
end
|
||||
|
||||
# Dados agregados das entregas das operações informadas, para pré-preencher o
|
||||
# formulário de nova consolidação. Une as NFs de todas as tabelas válidas.
|
||||
def dados(tabelas)
|
||||
|
||||
Reference in New Issue
Block a user