diff --git a/.eslintrc.json b/.eslintrc.json index 0149fec..9e7dfb1 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,8 +1,7 @@ { - "extends": "next/core-web-vitals", + "extends": ["next/core-web-vitals"], "rules": { - "@typescript-eslint/no-explicit-any": "off", - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-empty-object-type": "off" + "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/no-explicit-any": "warn" } -} +} \ No newline at end of file diff --git a/eslint.config.mjs b/eslint.config.mjs deleted file mode 100644 index 719cea2..0000000 --- a/eslint.config.mjs +++ /dev/null @@ -1,25 +0,0 @@ -import { dirname } from "path"; -import { fileURLToPath } from "url"; -import { FlatCompat } from "@eslint/eslintrc"; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -const compat = new FlatCompat({ - baseDirectory: __dirname, -}); - -const eslintConfig = [ - ...compat.extends("next/core-web-vitals", "next/typescript"), - { - ignores: [ - "node_modules/**", - ".next/**", - "out/**", - "build/**", - "next-env.d.ts", - ], - }, -]; - -export default eslintConfig; diff --git a/package-lock.json b/package-lock.json index 99c4410..7e99986 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "devDependencies": { "@eslint/eslintrc": "^3", "@types/node": "^20", + "@types/oracledb": "^6.9.1", "@types/pg": "^8.15.5", "@types/react": "^19", "@types/react-dom": "^19", @@ -2211,6 +2212,16 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/oracledb": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@types/oracledb/-/oracledb-6.9.1.tgz", + "integrity": "sha512-rXDnApyfaki0dvHuqzQvfirK6yHbtEO5nJ4CXKHrZYdwNAx4PjddqoCXdN1dZaEnZxXFwCy9xEWyIemL8EI/NQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/pg": { "version": "8.15.5", "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.15.5.tgz", diff --git a/package.json b/package.json index 2c24f01..a5a9ebb 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "devDependencies": { "@eslint/eslintrc": "^3", "@types/node": "^20", + "@types/oracledb": "^6.9.1", "@types/pg": "^8.15.5", "@types/react": "^19", "@types/react-dom": "^19", diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index f9d77e4..ef6d98f 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -308,7 +308,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { const conds = Array.isArray(filters) ? filters : [filters]; // A coluna deve atender a todas as condições aplicáveis a ela - return conds.every((filter) => { + return conds.every((filter: any) => { const raw = row.getValue(columnId); const v = raw == null ? "" : String(raw); const op = filter.operator; @@ -417,8 +417,28 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { // Calcular totais das colunas de valores para o footer - EXATAMENTE o mesmo padrão do Valor Total const columnTotals = React.useMemo(() => { + // Garantir que sempre temos dados para calcular + if (!data || data.length === 0) { + console.log("⚠️ Sem dados para calcular totais das colunas"); + return { + valorRealizado: 0, + valorPrevisto: 0, + valorConfirmado: 0, + valorPago: 0, + }; + } + // Usar EXATAMENTE a mesma lógica do totalValor const filteredData = table.getRowModel().rows.map((row) => row.original); + + console.log("🔄 Calculando totais das colunas - Dados filtrados:", { + totalRows: filteredData.length, + originalDataLength: data.length, + columnFilters: columnFilters.length, + globalFilter, + firstItem: filteredData[0] + }); + const valorRealizado = filteredData.reduce((sum, item) => { const valor = typeof item.valor === "string" ? parseFloat(item.valor) : item.valor; return sum + (isNaN(valor) ? 0 : valor); @@ -455,7 +475,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { valorConfirmado, valorPago, }; - }, [table, columnFilters, globalFilter]); + }, [table, columnFilters, globalFilter, data]); const exportToExcel = () => { if (data.length === 0) return; @@ -840,8 +860,8 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { TOTAL: {table.getRowModel().rows.length} registros
-
-
+
+
@@ -901,7 +921,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { )}
-
+
diff --git a/src/app/DRE/teste.tsx b/src/app/DRE/teste.tsx index 833995f..f3fd760 100644 --- a/src/app/DRE/teste.tsx +++ b/src/app/DRE/teste.tsx @@ -125,23 +125,23 @@ export default function Teste() { const dadosCompletos = await response.json(); // Extrair períodos únicos dos dados - const periodosUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.data_competencia))].sort(); + const periodosUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.data_competencia))].sort() as string[]; setMesesDisponiveis(periodosUnicos); // Extrair grupos únicos - const gruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.grupo))].sort(); + const gruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.grupo))].sort() as string[]; setOpcoesGrupos(gruposUnicos); // Extrair subgrupos únicos - const subgruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.subgrupo))].sort(); + const subgruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.subgrupo))].sort() as string[]; setOpcoesSubgrupos(subgruposUnicos); // Extrair centros de custo únicos - const centrosCustoUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.centro_custo))].sort(); + const centrosCustoUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.centro_custo))].sort() as string[]; setOpcoesCentrosCusto(centrosCustoUnicos); // Extrair contas únicas - const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort(); + const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort() as string[]; setOpcoesContas(contasUnicas); } catch (error) { @@ -418,7 +418,7 @@ export default function Teste() { setFiltrosAplicados(true); // Extrair meses únicos dos dados filtrados - const mesesUnicos = [...new Set(dadosFiltrados.map(item => item.data_competencia))].sort(); + const mesesUnicos = [...new Set(dadosFiltrados.map((item: DREItem) => item.data_competencia))].sort() as string[]; setMesesDisponiveis(mesesUnicos); } catch (error) { diff --git a/src/app/api/dre-oracle/route.ts b/src/app/api/dre-oracle/route.ts index f6efbdf..463dd89 100644 --- a/src/app/api/dre-oracle/route.ts +++ b/src/app/api/dre-oracle/route.ts @@ -69,7 +69,7 @@ function criarGruposCalculados(dados: any[]) { const dadosMes = dadosPorMes[mes]; // Calcular valores por grupo usando código numérico - const valoresPorGrupo = dadosMes.reduce((acc, item) => { + const valoresPorGrupo = dadosMes.reduce((acc: Record, item: any) => { const codgrupo = item.codgrupo; if (!acc[codgrupo]) acc[codgrupo] = 0; acc[codgrupo] += parseFloat(item.valor);