diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 19d5972..7ea022d 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -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); diff --git a/src/app/DRE/teste.tsx b/src/app/DRE/teste.tsx index 64bd40d..88dc0bd 100644 --- a/src/app/DRE/teste.tsx +++ b/src/app/DRE/teste.tsx @@ -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(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); }; diff --git a/src/app/api/analitico-oracle/route.ts b/src/app/api/analitico-oracle/route.ts index f20987b..4401a54 100644 --- a/src/app/api/analitico-oracle/route.ts +++ b/src/app/api/analitico-oracle/route.ts @@ -19,6 +19,10 @@ export async function GET(request: NextRequest) { // Parâmetros para exclusão de valores específicos 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, @@ -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);