fix: correção do filtro de centro custo

This commit is contained in:
Alessandro Gonçaalves 2025-10-22 14:54:58 -03:00
parent 08f438c624
commit e64a87c166
1 changed files with 38 additions and 4 deletions

View File

@ -1,7 +1,7 @@
"use client"; "use client";
import { LoaderPinwheel, ChevronDown, ChevronRight, Filter, Maximize2, Minimize2, Download } from "lucide-react"; 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 AnaliticoComponent from "./analitico";
import { Button } from "@/components/ui/button"; import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input"; import { Input } from "@/components/ui/input";
@ -196,6 +196,8 @@ export default function Teste() {
// Estados para multi-seleção // Estados para multi-seleção
const [centrosCustoSelecionados, setCentrosCustoSelecionados] = useState<string[]>([]); const [centrosCustoSelecionados, setCentrosCustoSelecionados] = useState<string[]>([]);
// Estado para armazenar os códigos dos centros de custo
const [codigosCentrosCusto, setCodigosCentrosCusto] = useState<Record<string, string>>({});
const [contasSelecionadas, setContasSelecionadas] = useState<string[]>([]); const [contasSelecionadas, setContasSelecionadas] = useState<string[]>([]);
const [isFilterOpen, setIsFilterOpen] = useState(false); const [isFilterOpen, setIsFilterOpen] = useState(false);
const [dadosFiltrados, setDadosFiltrados] = useState<DREItem[]>([]); const [dadosFiltrados, setDadosFiltrados] = useState<DREItem[]>([]);
@ -259,9 +261,25 @@ export default function Teste() {
const subgruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.subgrupo))].sort() as string[]; const subgruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.subgrupo))].sort() as string[];
setOpcoesSubgrupos(subgruposUnicos); 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[]; 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<string, string> = {};
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 // Extrair contas únicas
const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort() as string[]; const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort() as string[];
@ -499,6 +517,22 @@ export default function Teste() {
setContasSelecionadas([]); 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 = () => { const exportarXLSX = () => {
if (!data.length) { if (!data.length) {
console.log('⚠️ Nenhum dado para exportar'); console.log('⚠️ Nenhum dado para exportar');
@ -1603,7 +1637,7 @@ export default function Teste() {
htmlFor={`centro-${centro}`} htmlFor={`centro-${centro}`}
className="text-sm font-normal cursor-pointer flex-1" className="text-sm font-normal cursor-pointer flex-1"
> >
{centro} {centro}{codigosCentrosCusto[centro] ? ` - ${codigosCentrosCusto[centro]}` : ''}
</Label> </Label>
</div> </div>
))} ))}