diff --git a/src/app/DRE/teste.tsx b/src/app/DRE/teste.tsx index 291c521..02c310a 100644 --- a/src/app/DRE/teste.tsx +++ b/src/app/DRE/teste.tsx @@ -1,7 +1,7 @@ "use client"; import { LoaderPinwheel, ChevronDown, ChevronRight, Filter, Maximize2, Minimize2, Download } from "lucide-react"; -import { useEffect, useState, useCallback, startTransition, memo } from "react"; +import React, { useEffect, useState, useCallback, startTransition, memo } from "react"; import AnaliticoComponent from "./analitico"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; @@ -196,6 +196,8 @@ export default function Teste() { // Estados para multi-seleção const [centrosCustoSelecionados, setCentrosCustoSelecionados] = useState([]); + // Estado para armazenar os códigos dos centros de custo + const [codigosCentrosCusto, setCodigosCentrosCusto] = useState>({}); const [contasSelecionadas, setContasSelecionadas] = useState([]); const [isFilterOpen, setIsFilterOpen] = useState(false); const [dadosFiltrados, setDadosFiltrados] = useState([]); @@ -259,9 +261,25 @@ export default function Teste() { const subgruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.subgrupo))].sort() as string[]; setOpcoesSubgrupos(subgruposUnicos); - // Extrair centros de custo únicos + // Extrair centros de custo únicos com nome e código const centrosCustoUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.centro_custo))].sort() as string[]; - setOpcoesCentrosCusto(centrosCustoUnicos); + + // Filtrar centro de custo com código específico + const centrosCustoFiltrados = centrosCustoUnicos.filter(centro => { + const item = dadosCompletos.find((d: DREItem) => d.centro_custo === centro); + return item?.codigo_centro_custo !== "002.003.017"; + }); + + setOpcoesCentrosCusto(centrosCustoFiltrados); + + // Criar objeto de códigos dos centros de custo + const codigos: Record = {}; + dadosCompletos.forEach((item: DREItem) => { + if (item.centro_custo && item.codigo_centro_custo) { + codigos[item.centro_custo] = item.codigo_centro_custo; + } + }); + setCodigosCentrosCusto(codigos); // Extrair contas únicas const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort() as string[]; @@ -499,6 +517,22 @@ export default function Teste() { setContasSelecionadas([]); }; + // Função auxiliar para obter o código do centro de custo + const obterCodigoCentroCusto = React.useCallback((nomeCentro: string): string => { + if (!data || data.length === 0) { + return ''; + } + + // Buscar o primeiro item que corresponde ao nome do centro de custo + const item = data.find(item => item.centro_custo === nomeCentro); + + if (item && item.codigo_centro_custo) { + return item.codigo_centro_custo; + } + + return ''; + }, [data]); + const exportarXLSX = () => { if (!data.length) { console.log('⚠️ Nenhum dado para exportar'); @@ -1603,7 +1637,7 @@ export default function Teste() { htmlFor={`centro-${centro}`} className="text-sm font-normal cursor-pointer flex-1" > - {centro} + {centro}{codigosCentrosCusto[centro] ? ` - ${codigosCentrosCusto[centro]}` : ''} ))}