fix: correção do filtro de centro custo
This commit is contained in:
parent
08f438c624
commit
e64a87c166
|
|
@ -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>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue