From c60bd7def83fed94fd04cb2ba2d33c3b9684d656 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alessandro=20Gon=C3=A7aalves?= Date: Tue, 9 Dec 2025 17:22:48 -0300 Subject: [PATCH] fix: adinicionado ao filtro o compo de filial --- src/app/dre-filial/teste.tsx | 113 +++++++++++++++-------------------- 1 file changed, 47 insertions(+), 66 deletions(-) diff --git a/src/app/dre-filial/teste.tsx b/src/app/dre-filial/teste.tsx index 08a02e7..9460c48 100644 --- a/src/app/dre-filial/teste.tsx +++ b/src/app/dre-filial/teste.tsx @@ -194,22 +194,21 @@ export default function Teste() { const [filtros, setFiltros] = useState({ periodoDe: "", periodoAte: "", - conta: "Todas", + filial: "Todas", }); // Estados para multi-seleção - const [contasSelecionadas, setContasSelecionadas] = useState([]); - const [codigosContas, setCodigosContas] = useState>({}); + const [filiaisSelecionadas, setFiliaisSelecionadas] = useState([]); const [isFilterOpen, setIsFilterOpen] = useState(false); const [dadosFiltrados, setDadosFiltrados] = useState([]); const [filtrosAplicados, setFiltrosAplicados] = useState(false); // Estados para opções dos filtros const [opcoesGrupos, setOpcoesGrupos] = useState([]); - const [opcoesContas, setOpcoesContas] = useState([]); + const [opcoesFiliais, setOpcoesFiliais] = useState([]); // Estados para filtros de busca nos campos de seleção - const [filtroConta, setFiltroConta] = useState(""); + const [filtroFilial, setFiltroFilial] = useState(""); // Estados para analítico const [analiticoFiltros, setAnaliticoFiltros] = useState({ @@ -250,21 +249,12 @@ export default function Teste() { const gruposUnicos = [...new Set(dadosCompletos.map((item: DREItem) => item.grupo))].sort() as string[]; setOpcoesGrupos(gruposUnicos); - // Extrair contas únicas - const contasUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.conta))].sort() as string[]; - setOpcoesContas(contasUnicas); + // Extrair filiais únicas + const filiaisUnicas = [...new Set(dadosCompletos.map((item: DREItem) => item.filial || item.codfilial).filter(Boolean))].sort() as string[]; + setOpcoesFiliais(filiaisUnicas); - // Criar objeto de códigos das contas - const codigosContasObj: Record = {}; - dadosCompletos.forEach((item: DREItem) => { - if (item.conta && item.codigo_conta) { - codigosContasObj[item.conta] = item.codigo_conta.toString(); - } - }); - setCodigosContas(codigosContasObj); - - // Inicializar com todas as contas selecionadas - setContasSelecionadas(contasUnicas); + // Inicializar com todas as filiais selecionadas + setFiliaisSelecionadas(filiaisUnicas); // Inicializar filtros de período com o ano corrente const agora = new Date(); @@ -396,15 +386,6 @@ export default function Teste() { codigoContaFiltro = row.codigo_conta?.toString() || ""; } - // Obter códigos das contas selecionadas no filtro - const codigosContasSelecionadas = contasSelecionadas - .map(conta => { - const item = data.find((d: DREItem) => d.conta === conta); - return item?.codigo_conta?.toString(); - }) - .filter(codigo => codigo) - .join(','); - const novosFiltros = { dataInicio: dataInicioFiltro, dataFim: dataFimFiltro, @@ -416,7 +397,7 @@ export default function Teste() { excluirCentroCusto: "", excluirCodigoConta: "", codigosCentrosCustoSelecionados: "", - codigosContasSelecionadas, + codigosContasSelecionadas: "", }; console.log('🎯 Novos filtros para analítico:', novosFiltros); @@ -435,22 +416,22 @@ export default function Teste() { }); }, []); - const toggleConta = (conta: string) => { - setContasSelecionadas(prev => { - if (prev.includes(conta)) { - return prev.filter(c => c !== conta); + const toggleFilial = (filial: string) => { + setFiliaisSelecionadas(prev => { + if (prev.includes(filial)) { + return prev.filter(f => f !== filial); } else { - return [...prev, conta]; + return [...prev, filial]; } }); }; - const selecionarTodasContas = () => { - setContasSelecionadas(opcoesContas); + const selecionarTodasFiliais = () => { + setFiliaisSelecionadas(opcoesFiliais); }; - const limparContas = () => { - setContasSelecionadas([]); + const limparFiliais = () => { + setFiliaisSelecionadas([]); }; // Função auxiliar para calcular valores por mês @@ -838,10 +819,11 @@ export default function Teste() { }); } - // Filtro por conta (multi-seleção) - if (contasSelecionadas.length > 0) { + // Filtro por filial (multi-seleção) + if (filiaisSelecionadas.length > 0) { dadosFiltrados = dadosFiltrados.filter((item: DREItem) => { - return contasSelecionadas.includes(item.conta); + const filialItem = item.filial || item.codfilial || ""; + return filiaisSelecionadas.includes(filialItem); }); } @@ -889,10 +871,10 @@ export default function Teste() { setFiltros({ periodoDe: `${anoAtual}-01`, periodoAte: periodoAtual, - conta: "Todas", + filial: "Todas", }); - setContasSelecionadas([]); + setFiliaisSelecionadas([]); setData([]); setDadosFiltrados([]); setFiltrosAplicados(false); @@ -973,7 +955,7 @@ export default function Teste() { const resumoData = [ { 'Informação': 'Período', 'Valor': `${filtros.periodoDe} a ${filtros.periodoAte}` }, - { 'Informação': 'Conta', 'Valor': filtros.conta }, + { 'Informação': 'Filial', 'Valor': filtros.filial }, { 'Informação': 'Total de Registros', 'Valor': dadosCompletosExpandidos.length }, { 'Informação': 'Data de Exportação', 'Valor': new Date().toLocaleString('pt-BR') }, ]; @@ -1093,16 +1075,16 @@ export default function Teste() { - {/* Conta */} + {/* Filial */}
- +
setFiltroConta(e.target.value)} + placeholder="Filtrar filiais..." + value={filtroFilial} + onChange={(e) => setFiltroFilial(e.target.value)} className="h-8 text-sm" />
- {opcoesContas - .filter(conta => { - if (!filtroConta) return true; - const termo = filtroConta.toLowerCase(); - const nomeCompleto = `${conta}${codigosContas[conta] ? ` - ${codigosContas[conta]}` : ''}`; - return nomeCompleto.toLowerCase().includes(termo); + {opcoesFiliais + .filter(filial => { + if (!filtroFilial) return true; + const termo = filtroFilial.toLowerCase(); + return filial.toLowerCase().includes(termo); }) - .map(conta => ( -
+ .map(filial => ( +
toggleConta(conta)} + id={`filial-${filial}`} + checked={filiaisSelecionadas.includes(filial)} + onCheckedChange={() => toggleFilial(filial)} />
))}
- {contasSelecionadas.length > 0 && ( + {filiaisSelecionadas.length > 0 && (
- {contasSelecionadas.length} conta(s) selecionada(s) + {filiaisSelecionadas.length} filial(is) selecionada(s)
)}