diff --git a/src/app/DRE/analitico.tsx b/src/app/DRE/analitico.tsx index 1b1b566..f1439f3 100644 --- a/src/app/DRE/analitico.tsx +++ b/src/app/DRE/analitico.tsx @@ -154,10 +154,10 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { header: "Código da Conta", filterFn: "advancedText", }, - { - accessorKey: "conta", - header: "Nome da Conta", - filterFn: "advancedText" + { + accessorKey: "conta", + header: "Nome da Conta", + filterFn: "advancedText", }, { accessorKey: "valor", @@ -205,9 +205,9 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { header: "Histórico 2", filterFn: "advancedText", }, - { - accessorKey: "numero_lancamento", - header: "Número do Lançamento", + { + accessorKey: "numero_lancamento", + header: "Número do Lançamento", filterFn: "advancedText", cell: () => "-", }, @@ -312,32 +312,50 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { React.useEffect(() => { // Usar dados filtrados da tabela em vez dos dados originais - const filteredData = table.getRowModel().rows.map(row => row.original); + const filteredData = table.getRowModel().rows.map((row) => row.original); const newTotal = filteredData.reduce((sum, item) => { - const valor = + const valor = typeof item.valor === "string" ? parseFloat(item.valor) : item.valor; - return sum + (isNaN(valor) ? 0 : valor); - }, 0); - - console.log('🔄 Calculando total:', { + return sum + (isNaN(valor) ? 0 : valor); + }, 0); + + console.log("🔄 Calculando total:", { totalRows: table.getRowModel().rows.length, originalDataLength: data.length, newTotal, columnFilters: columnFilters.length, - globalFilter + globalFilter, }); - + setTotalValor(newTotal); }, [table, data, columnFilters, globalFilter]); + // Calcular totais das colunas de valores para o footer - mesmo princípio do Valor Total + const columnTotals = React.useMemo(() => { + // Usar dados filtrados da tabela em vez dos dados originais - MESMA LÓGICA DO totalValor + const filteredData = table.getRowModel().rows.map((row) => row.original); + const valorRealizado = filteredData.reduce((sum, item) => { + const valor = + typeof item.valor === "string" ? parseFloat(item.valor) : item.valor; + return sum + (isNaN(valor) ? 0 : valor); + }, 0); + + return { + valorRealizado, + valorPrevisto: 0, // Sempre 0 pois não há dados + valorConfirmado: 0, // Sempre 0 pois não há dados + valorPago: 0, // Sempre 0 pois não há dados + }; + }, [table]); + const exportToExcel = () => { if (data.length === 0) return; // Usar dados filtrados da tabela em vez dos dados originais - const filteredData = table.getRowModel().rows.map(row => row.original); - + const filteredData = table.getRowModel().rows.map((row) => row.original); + if (filteredData.length === 0) { - alert('Nenhum dado filtrado para exportar'); + alert("Nenhum dado filtrado para exportar"); return; } @@ -371,7 +389,10 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { const resumoData = [ { Métrica: "Total de Registros", Valor: filteredData.length }, { Métrica: "Valor Total", Valor: totalValor }, - { Métrica: "Filtros Aplicados", Valor: columnFilters.length > 0 || globalFilter ? "Sim" : "Não" }, + { + Métrica: "Filtros Aplicados", + Valor: columnFilters.length > 0 || globalFilter ? "Sim" : "Não", + }, ]; const wsResumo = XLSX.utils.json_to_sheet(resumoData); @@ -383,7 +404,9 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { const now = new Date(); const timestamp = now.toISOString().slice(0, 19).replace(/:/g, "-"); const hasFilters = columnFilters.length > 0 || globalFilter; - const fileName = `analitico${hasFilters ? '_filtrado' : ''}_${timestamp}.xlsx`; + const fileName = `analitico${ + hasFilters ? "_filtrado" : "" + }_${timestamp}.xlsx`; // Fazer download XLSX.writeFile(wb, fileName); @@ -452,17 +475,17 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { Limpar Filtros )} - {data.length > 0 && ( - + )} @@ -472,23 +495,39 @@ export default function AnaliticoComponent({ filtros }: AnaliticoProps) { {/* Table Header */}
Carregando dados...
-Nenhum dado encontrado
- - + + ) : (- Transações encontradas -
-- Soma de todos os valores -
-+ // Transações encontradas + //
+ //+ // Soma de todos os valores + //
+ //