fix: correção de filtro analitico

This commit is contained in:
Alessandro Gonçaalves 2025-10-24 18:27:48 -03:00
parent add83c5d6d
commit 91392ecc4a
3 changed files with 58 additions and 2 deletions

View File

@ -78,6 +78,8 @@ interface AnaliticoProps {
linhaSelecionada?: string;
excluirCentroCusto?: string;
excluirCodigoConta?: string;
codigosCentrosCustoSelecionados?: string;
codigosContasSelecionadas?: string;
};
}
@ -379,6 +381,12 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) {
if (filtrosExternos.excluirCodigoConta) {
params.append('excluirCodigoConta', filtrosExternos.excluirCodigoConta);
}
if (filtrosExternos.codigosCentrosCustoSelecionados) {
params.append('codigosCentrosCustoSelecionados', filtrosExternos.codigosCentrosCustoSelecionados);
}
if (filtrosExternos.codigosContasSelecionadas) {
params.append('codigosContasSelecionadas', filtrosExternos.codigosContasSelecionadas);
}
const url = `/api/analitico-oracle?${params.toString()}`;
console.log('🌐 Fazendo requisição para:', url);

View File

@ -221,6 +221,8 @@ export default function Teste() {
linhaSelecionada: "", // Adicionar informação da linha selecionada
excluirCentroCusto: "", // Para excluir centro de custo específico quando desmarcado
excluirCodigoConta: "", // Para excluir código de conta específico quando desmarcado
codigosCentrosCustoSelecionados: "", // Códigos dos centros de custo selecionados no filtro
codigosContasSelecionadas: "", // Códigos das contas selecionadas no filtro
});
const [linhaSelecionada, setLinhaSelecionada] = useState<string | null>(null);
const [isAllExpanded, setIsAllExpanded] = useState(false);
@ -463,6 +465,24 @@ export default function Teste() {
excluirCodigoConta = "100050";
}
// Obter códigos dos centros de custo selecionados no filtro
const codigosCentrosCustoSelecionados = centrosCustoSelecionados
.map(centro => {
const item = data.find((d: DREItem) => d.centro_custo === centro);
return item?.codigo_centro_custo;
})
.filter(codigo => codigo) // Remover undefined
.join(',');
// Obter códigos das contas selecionadas no filtro
const codigosContasSelecionadas = contasSelecionadas
.map(conta => {
const item = data.find((d: DREItem) => d.conta === conta);
return item?.codigo_conta?.toString();
})
.filter(codigo => codigo) // Remover undefined
.join(',');
const novosFiltros = {
dataInicio: dataInicioFiltro,
dataFim: dataFimFiltro,
@ -473,6 +493,8 @@ export default function Teste() {
linhaSelecionada: row.grupo || row.subgrupo || row.centro_custo || row.conta || "", // Incluir informação da linha selecionada
excluirCentroCusto,
excluirCodigoConta,
codigosCentrosCustoSelecionados,
codigosContasSelecionadas,
};
console.log('🎯 Novos filtros para analítico:', novosFiltros);
@ -480,7 +502,9 @@ export default function Teste() {
centroCusto: novosFiltros.centroCusto,
codigoConta: novosFiltros.codigoConta,
codigoContaType: typeof novosFiltros.codigoConta,
codigoContaLength: novosFiltros.codigoConta?.length
codigoContaLength: novosFiltros.codigoConta?.length,
codigosCentrosCustoSelecionados: novosFiltros.codigosCentrosCustoSelecionados,
codigosContasSelecionadas: novosFiltros.codigosContasSelecionadas
});
setAnaliticoFiltros(novosFiltros);
};

View File

@ -20,6 +20,10 @@ export async function GET(request: NextRequest) {
const excluirCentroCusto = searchParams.get('excluirCentroCusto');
const excluirCodigoConta = searchParams.get('excluirCodigoConta');
// Novos parâmetros para códigos selecionados no filtro
const codigosCentrosCustoSelecionados = searchParams.get('codigosCentrosCustoSelecionados');
const codigosContasSelecionadas = searchParams.get('codigosContasSelecionadas');
console.log('🎯 Filtros recebidos:', {
dataInicio,
dataFim,
@ -27,7 +31,9 @@ export async function GET(request: NextRequest) {
codigoGrupo,
codigoConta,
excluirCentroCusto,
excluirCodigoConta
excluirCodigoConta,
codigosCentrosCustoSelecionados,
codigosContasSelecionadas
});
// Construir query SQL com filtros
@ -83,6 +89,24 @@ export async function GET(request: NextRequest) {
console.log('🚫 Excluindo código de conta:', excluirCodigoConta);
}
// Filtro por códigos de centros de custo selecionados no filtro
if (codigosCentrosCustoSelecionados) {
const codigosArray = codigosCentrosCustoSelecionados.split(',');
const placeholders = codigosArray.map(() => `:${paramIndex++}`).join(',');
sql += ` AND CODIGOCENTROCUSTO IN (${placeholders})`;
params.push(...codigosArray);
console.log('🏢 Filtrando por códigos de centros de custo:', codigosArray);
}
// Filtro por códigos de contas selecionadas no filtro
if (codigosContasSelecionadas) {
const codigosArray = codigosContasSelecionadas.split(',');
const placeholders = codigosArray.map(() => `:${paramIndex++}`).join(',');
sql += ` AND CODCONTA IN (${placeholders})`;
params.push(...codigosArray);
console.log('💰 Filtrando por códigos de contas:', codigosArray);
}
sql += ` ORDER BY DTVENC, CODFORNEC, CODCONTA`;
console.log('🗄️ Query SQL final:', sql);