From a1d22d3ac6db1af7062e8aa9360b016939c6b725 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Gon=C3=A7aalves?= Date: Mon, 20 Oct 2025 23:43:13 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20integra=C3=A7=C3=A3o=20da=20consulta=20?= =?UTF-8?q?sintetica=20com=20a=20aplica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/DRE/analitico.tsx | 6 ++--- src/app/DRE/teste.tsx | 2 +- src/app/api/dre-oracle/route.ts | 42 +++++++++++++++++++++++++++++++++ src/app/layout.tsx | 12 +++++----- 4 files changed, 52 insertions(+), 10 deletions(-) create mode 100644 src/app/api/dre-oracle/route.ts diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 1ce3948..121c9ba 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -335,10 +335,10 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { // Usar EXATAMENTE a mesma lógica do totalValor const filteredData = table.getRowModel().rows.map((row) => row.original); const valorRealizado = filteredData.reduce((sum, item) => { - const valor = + const valor = typeof item.valor === "string" ? parseFloat(item.valor) : item.valor; - return sum + (isNaN(valor) ? 0 : valor); - }, 0); + return sum + (isNaN(valor) ? 0 : valor); + }, 0); return { valorRealizado, diff --git a/src/app/DRE/teste.tsx b/src/app/DRE/teste.tsx index 4df3065..f086d82 100644 --- a/src/app/DRE/teste.tsx +++ b/src/app/DRE/teste.tsx @@ -62,7 +62,7 @@ export default function Teste() { try { setLoading(true); setError(null); - const response = await fetch("/api/dre"); + const response = await fetch("/api/dre-oracle"); if (!response.ok) { throw new Error(`Erro ao carregar dados: ${response.status}`); diff --git a/src/app/api/dre-oracle/route.ts b/src/app/api/dre-oracle/route.ts new file mode 100644 index 0000000..a97f8d3 --- /dev/null +++ b/src/app/api/dre-oracle/route.ts @@ -0,0 +1,42 @@ +import { NextRequest, NextResponse } from 'next/server'; +import { executeOracleQuery } from '@/db/oracle'; + +export async function GET(request: NextRequest) { + try { + console.log('🔄 Buscando dados DRE do Oracle...'); + + // Query para buscar dados da tabela DRE_RESULTADO + const sql = `SELECT * FROM DRE_RESULTADO ORDER BY CODGRUPO, CODCONTA, CODCENTROCUSTO`; + + const data = await executeOracleQuery(sql); + + console.log('✅ Query executada com sucesso:', data.length, 'registros encontrados'); + + // Transformar os dados do Oracle para o formato esperado pelo componente + const transformedData = data.map((item: any) => ({ + codfilial: "001", // Valor padrão + data_competencia: item.DATA || "2023-03", // Usar DATA do Oracle + data_cai: item.DATA || "2023-03", // Usar DATA do Oracle + grupo: item.GRUPO || "", // Usar GRUPO do Oracle + subgrupo: item.CENTROCUSTO || "", // Usar CENTROCUSTO como subgrupo + centro_custo: item.CODIGOCENTROCUSTO || "", // Usar CODIGOCENTROCUSTO + codigo_conta: parseInt(item.CODCONTA) || 0, // Converter CODCONTA para número + conta: item.CONTA || "", // Usar CONTA do Oracle + valor: item.VALOR?.toString() || "0", // Converter VALOR para string + })); + + return NextResponse.json(transformedData); + + } catch (error) { + console.error('❌ Erro ao buscar dados DRE 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 } + ); + } +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e5bf306..ce493fe 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,14 +1,14 @@ import type { Metadata } from 'next'; -import { Geist, Geist_Mono } from 'next/font/google'; +import { Inter, JetBrains_Mono } from 'next/font/google'; import './globals.css'; -const geistSans = Geist({ - variable: '--font-geist-sans', +const inter = Inter({ + variable: '--font-inter', subsets: ['latin'], }); -const geistMono = Geist_Mono({ - variable: '--font-geist-mono', +const jetbrainsMono = JetBrains_Mono({ + variable: '--font-jetbrains-mono', subsets: ['latin'], }); @@ -25,7 +25,7 @@ export default function RootLayout({ return ( {children}