diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 005d3fe..e4d46ae 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -308,6 +308,26 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { })); }, []); + // Função para contar filtros aplicados + const getFilterCount = React.useCallback(() => { + let count = 0; + + // Contar filtros de coluna + count += Object.keys(columnFilters).length; + + // Contar filtro global + if (globalFilter && globalFilter.trim() !== "") { + count += 1; + } + + // Contar filtros externos (se aplicáveis) + if (filtrosExternos.codigoConta || filtrosExternos.centroCusto) { + count += 1; + } + + return count; + }, [columnFilters, globalFilter, filtrosExternos]); + // Função para limpar todos os filtros const clearAllFilters = React.useCallback(() => { setColumnFilters({}); @@ -477,7 +497,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { currency: "BRL", }).format(numValue); return ( - + {formatted} ); @@ -501,7 +521,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { currency: "BRL", }).format(numValue); return ( - + {formatted} ); @@ -525,7 +545,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { currency: "BRL", }).format(numValue); return ( - + {formatted} ); @@ -549,7 +569,7 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { currency: "BRL", }).format(numValue); return ( - + {formatted} ); @@ -644,6 +664,10 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { }); }, [filteredData, columnSorts]); + // Calcular valor total dos dados filtrados + const valorTotal = React.useMemo(() => { + return sortedAndFilteredData.reduce((sum, item) => sum + (Number(item.valor) || 0), 0); + }, [sortedAndFilteredData]); // Exportação XLSX const exportToExcel = () => { @@ -675,9 +699,9 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { const ws = XLSX.utils.json_to_sheet(exportData); const resumoData = [ - { Métrica: "Total de Registros", Valor: data.length }, - { Métrica: "Valor Total", Valor: "Calculado pelo DataGrid" }, - { Métrica: "Filtros Aplicados", Valor: "Sim" }, + { Métrica: "Total de Registros", Valor: sortedAndFilteredData.length }, + { Métrica: "Valor Total", Valor: valorTotal }, + { Métrica: "Filtros Aplicados", Valor: Object.keys(columnFilters).length > 0 ? "Sim" : "Não" }, ]; const wsResumo = XLSX.utils.json_to_sheet(resumoData); @@ -768,10 +792,15 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { )} {data.length > 0 && ( @@ -784,6 +813,11 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { > Limpar Filtros + {getFilterCount() > 0 && ( + + {getFilterCount()} + + )}