fix: correção do filtro de centro custo
This commit is contained in:
parent
08f438c624
commit
e64a87c166
|
|
@ -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<string[]>([]);
|
||||
// Estado para armazenar os códigos dos centros de custo
|
||||
const [codigosCentrosCusto, setCodigosCentrosCusto] = useState<Record<string, string>>({});
|
||||
const [contasSelecionadas, setContasSelecionadas] = useState<string[]>([]);
|
||||
const [isFilterOpen, setIsFilterOpen] = useState(false);
|
||||
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[];
|
||||
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<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
|
||||
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]}` : ''}
|
||||
</Label>
|
||||
</div>
|
||||
))}
|
||||
|
|
|
|||
Loading…
Reference in New Issue