import { NextRequest, NextResponse } from 'next/server'; import { executeOracleQuery } from '@/db/oracle'; export async function GET(request: NextRequest) { try { console.log('🔄 Buscando dados analíticos do Oracle...'); console.log('📋 URL completa:', request.url); console.log('🔍 Query params:', request.nextUrl.searchParams.toString()); console.log('📊 Headers:', Object.fromEntries(request.headers.entries())); // Extrair parâmetros de query const searchParams = request.nextUrl.searchParams; const dataInicio = searchParams.get('dataInicio'); const dataFim = searchParams.get('dataFim'); const centroCusto = searchParams.get('centroCusto'); const codigoGrupo = searchParams.get('codigoGrupo'); const codigoConta = searchParams.get('codigoConta'); console.log('🎯 Filtros recebidos:', { dataInicio, dataFim, centroCusto, codigoGrupo, codigoConta }); // Construir query SQL com filtros let sql = `SELECT * FROM DRE_RESULTADO_ANALITICO WHERE 1=1`; const params: any[] = []; let paramIndex = 1; // Filtro por período if (dataInicio && dataFim) { sql += ` AND ANOMESCOMP >= :${paramIndex} AND ANOMESCOMP <= :${paramIndex + 1}`; params.push(dataInicio, dataFim); paramIndex += 2; console.log('📅 Adicionando filtro de período:', dataInicio, 'a', dataFim); } // Filtro por centro de custo if (centroCusto) { sql += ` AND CODIGOCENTROCUSTO = :${paramIndex}`; params.push(centroCusto); paramIndex++; console.log('🏢 Adicionando filtro de centro:', centroCusto); } // Filtro por código do grupo if (codigoGrupo) { sql += ` AND CODGRUPO = :${paramIndex}`; params.push(codigoGrupo); paramIndex++; console.log('📊 Adicionando filtro de grupo:', codigoGrupo); } // Filtro por código da conta if (codigoConta) { sql += ` AND CODCONTA = :${paramIndex}`; params.push(codigoConta); paramIndex++; console.log('💰 Adicionando filtro de conta:', codigoConta); } sql += ` ORDER BY DTVENC, CODFORNEC, CODCONTA`; console.log('🗄️ Query SQL final:', sql); console.log('📋 Parâmetros:', params); const data = await executeOracleQuery(sql, params); console.log('✅ Query executada com sucesso:', data.length, 'registros encontrados'); console.log('📝 Primeiros 3 registros:', data.slice(0, 3)); // Transformar os dados do Oracle para o formato esperado pelo componente const transformedData = data.map((item: any) => { // Debug dos valores monetários console.log('🔍 Item original:', { VLREALIZADO: item.VLREALIZADO, VLPREVISTO: item.VLPREVISTO, VLCONFIRMADO: item.VLCONFIRMADO, VLPAGO: item.VLPAGO, tipo_VLREALIZADO: typeof item.VLREALIZADO }); return { codigo_grupo: item.CODGRUPO || "", codigo_subgrupo: "", // Não existe na tabela Oracle codigo_fornecedor: item.CODFORNEC || "", nome_fornecedor: item.FORNECEDOR || "", id: item.NUMLANC || 0, codfilial: "001", // Valor padrão recnum: item.NUMLANC || 0, data_competencia: item.ANOMESCOMP || "", data_vencimento: item.DTVENC ? new Date(item.DTVENC).toISOString().split('T')[0] : "", data_pagamento: "", // Não existe na tabela Oracle data_caixa: item.DTCAIXA ? new Date(item.DTCAIXA).toISOString().split('T')[0] : "", codigo_conta: item.CODCONTA || "", conta: item.CONTA || "", codigo_centrocusto: item.CODIGOCENTROCUSTO || "", valor: item.VLREALIZADO !== null && item.VLREALIZADO !== undefined ? Number(item.VLREALIZADO) : 0, historico: item.HISTORICO || "", historico2: item.HISTORICO2 || "", created_at: new Date().toISOString(), updated_at: new Date().toISOString(), // Campos adicionais do Oracle entidade: item.ENTIDADE || "", tipo_parceiro: item.TIPOPARCEIRO || "", valor_previsto: item.VLPREVISTO !== null && item.VLPREVISTO !== undefined ? Number(item.VLPREVISTO) : 0, valor_confirmado: item.VLCONFIRMADO !== null && item.VLCONFIRMADO !== undefined ? Number(item.VLCONFIRMADO) : 0, valor_pago: item.VLPAGO !== null && item.VLPAGO !== undefined ? Number(item.VLPAGO) : 0, numero_lancamento: item.NUMLANC || 0, ano_mes_comp: item.ANOMESCOMP || "", codgrupo: item.CODGRUPO || "" }; }); console.log('🔄 Dados transformados:', transformedData.length, 'registros'); console.log('📝 Primeiros 3 transformados:', transformedData.slice(0, 3)); return NextResponse.json(transformedData); } catch (error) { console.error('❌ Erro ao buscar dados analíticos do Oracle:', error); return NextResponse.json( { success: false, error: error instanceof Error ? error.message : 'Erro desconhecido', details: error instanceof Error ? error.stack : undefined }, { status: 500 } ); } }