From 147501193bf992cc1385fecb9d77a65f9aea67aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Gon=C3=A7aalves?= Date: Thu, 23 Oct 2025 16:57:20 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20corre=C3=A7=C3=A3o=20no=20filtro=20da=20?= =?UTF-8?q?presid=C3=8Ancia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/DRE/analitico.tsx | 8 ++++++++ src/app/DRE/teste.tsx | 24 ++++++++++++++++++++++++ src/app/api/analitico-oracle/route.ts | 24 +++++++++++++++++++++++- 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 0953cf6..b0bbb5d 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -76,6 +76,8 @@ interface AnaliticoProps { codigoSubgrupo?: string; codigoConta?: string; linhaSelecionada?: string; + excluirCentroCusto?: string; + excluirCodigoConta?: string; }; } @@ -368,6 +370,12 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { if (filtrosExternos.codigoConta) { params.append('codigoConta', filtrosExternos.codigoConta); } + if (filtrosExternos.excluirCentroCusto) { + params.append('excluirCentroCusto', filtrosExternos.excluirCentroCusto); + } + if (filtrosExternos.excluirCodigoConta) { + params.append('excluirCodigoConta', filtrosExternos.excluirCodigoConta); + } const url = `/api/analitico-oracle?${params.toString()}`; console.log('🌐 Fazendo requisição para:', url); diff --git a/src/app/DRE/teste.tsx b/src/app/DRE/teste.tsx index ddfdf5a..2aa0fbe 100644 --- a/src/app/DRE/teste.tsx +++ b/src/app/DRE/teste.tsx @@ -219,6 +219,8 @@ export default function Teste() { codigoSubgrupo: "", codigoConta: "", 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 }); const [linhaSelecionada, setLinhaSelecionada] = useState(null); const [isAllExpanded, setIsAllExpanded] = useState(false); @@ -441,6 +443,26 @@ export default function Teste() { } }); + // Determinar exclusões baseado nos filtros aplicados + let excluirCentroCusto = ""; + let excluirCodigoConta = ""; + + // Se o centro de custo "002.003.017" não está selecionado, excluir da consulta + if (!centrosCustoSelecionados.some(centro => { + const item = data.find((d: DREItem) => d.centro_custo === centro); + return item?.codigo_centro_custo === "002.003.017"; + })) { + excluirCentroCusto = "002.003.017"; + } + + // Se a conta "100050" não está selecionada, excluir da consulta + if (!contasSelecionadas.some(conta => { + const item = data.find((d: DREItem) => d.conta === conta); + return item?.codigo_conta?.toString() === "100050"; + })) { + excluirCodigoConta = "100050"; + } + const novosFiltros = { dataInicio: dataInicioFiltro, dataFim: dataFimFiltro, @@ -449,6 +471,8 @@ export default function Teste() { codigoSubgrupo, codigoConta: codigoContaFiltro, linhaSelecionada: row.grupo || row.subgrupo || row.centro_custo || row.conta || "", // Incluir informação da linha selecionada + excluirCentroCusto, + excluirCodigoConta, }; console.log('🎯 Novos filtros para analítico:', novosFiltros); diff --git a/src/app/api/analitico-oracle/route.ts b/src/app/api/analitico-oracle/route.ts index 3774e32..f20987b 100644 --- a/src/app/api/analitico-oracle/route.ts +++ b/src/app/api/analitico-oracle/route.ts @@ -15,13 +15,19 @@ export async function GET(request: NextRequest) { const centroCusto = searchParams.get('centroCusto'); const codigoGrupo = searchParams.get('codigoGrupo'); const codigoConta = searchParams.get('codigoConta'); + + // Parâmetros para exclusão de valores específicos + const excluirCentroCusto = searchParams.get('excluirCentroCusto'); + const excluirCodigoConta = searchParams.get('excluirCodigoConta'); console.log('🎯 Filtros recebidos:', { dataInicio, dataFim, centroCusto, codigoGrupo, - codigoConta + codigoConta, + excluirCentroCusto, + excluirCodigoConta }); // Construir query SQL com filtros @@ -61,6 +67,22 @@ export async function GET(request: NextRequest) { console.log('💰 Adicionando filtro de conta:', codigoConta); } + // Exclusão de centro de custo específico (quando desmarcado) + if (excluirCentroCusto) { + sql += ` AND CODIGOCENTROCUSTO != :${paramIndex}`; + params.push(excluirCentroCusto); + paramIndex++; + console.log('🚫 Excluindo centro de custo:', excluirCentroCusto); + } + + // Exclusão de código de conta específico (quando desmarcado) + if (excluirCodigoConta) { + sql += ` AND CODCONTA != :${paramIndex}`; + params.push(excluirCodigoConta); + paramIndex++; + console.log('🚫 Excluindo código de conta:', excluirCodigoConta); + } + sql += ` ORDER BY DTVENC, CODFORNEC, CODCONTA`; console.log('🗄️ Query SQL final:', sql);