From 0df3fc10eef932458f77cbe6ca39bba059d0820f Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 18 May 2025 02:24:03 +0000 Subject: [PATCH] Fix: Dashboard and Categorias page data The dashboard was not displaying expenses correctly, and the categorias menu was empty. This commit revises the code to ensure expenses are correctly calculated and displayed, and that the categorias menu populates with data. --- src/components/dashboard/CategoryChart.tsx | 2 ++ src/pages/Categorias.tsx | 1 + src/services/transacaoService.ts | 29 ++++++++++++++++------ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/dashboard/CategoryChart.tsx b/src/components/dashboard/CategoryChart.tsx index 0febc49..ebbcee4 100644 --- a/src/components/dashboard/CategoryChart.tsx +++ b/src/components/dashboard/CategoryChart.tsx @@ -11,6 +11,8 @@ interface CategoryChartProps { const CategoryChart: React.FC = ({ categories, isLoading = false }) => { const renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent }: any) => { + if (percent === 0) return null; + const radius = innerRadius + (outerRadius - innerRadius) * 0.5; const x = cx + radius * Math.cos(-midAngle * Math.PI / 180); const y = cy + radius * Math.sin(-midAngle * Math.PI / 180); diff --git a/src/pages/Categorias.tsx b/src/pages/Categorias.tsx index 8de5a58..0651132 100644 --- a/src/pages/Categorias.tsx +++ b/src/pages/Categorias.tsx @@ -77,6 +77,7 @@ const CategoriasPage = () => {

Nenhuma categoria encontrada

+

Verifique se existem transações do tipo 'despesa' cadastradas

) : ( diff --git a/src/services/transacaoService.ts b/src/services/transacaoService.ts index 89fec29..b9194de 100644 --- a/src/services/transacaoService.ts +++ b/src/services/transacaoService.ts @@ -16,16 +16,16 @@ export async function getTransacoes(): Promise { console.log("Transações encontradas:", data); - // Transformar os dados recebidos para o formato esperado + // Transformar os dados recebidos para o formato esperado, normalizando os tipos return data.map((item) => ({ id: item.id.toString(), user: item.user || '', created_at: item.created_at, - valor: item.tipo === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0), + valor: item.tipo?.toLowerCase() === 'receita' ? Math.abs(item.valor || 0) : -Math.abs(item.valor || 0), quando: item.quando || new Date().toISOString(), detalhes: item.detalhes || '', estabelecimento: item.estabelecimento || '', - tipo: item.tipo || 'despesa', + tipo: item.tipo?.toLowerCase() || 'despesa', categoria: item.categoria || 'Outros' })); } @@ -44,11 +44,11 @@ export async function getTransactionSummary() { console.log("Dados para resumo encontrados:", data); const totalReceitas = data - .filter(item => item.tipo === 'receita') + .filter(item => item.tipo?.toLowerCase() === 'receita') .reduce((sum, item) => sum + Math.abs(item.valor || 0), 0); const totalDespesas = data - .filter(item => item.tipo === 'despesa') + .filter(item => item.tipo?.toLowerCase() === 'despesa') .reduce((sum, item) => sum + Math.abs(item.valor || 0), 0); const resultado = { @@ -66,7 +66,7 @@ export async function getCategorySummary() { const { data, error } = await supabase .from('transacoes') .select('categoria, valor, tipo') - .eq('tipo', 'despesa'); + .eq('tipo', 'Despesa'); if (error) { console.error('Erro ao buscar resumo de categorias:', error); @@ -75,6 +75,19 @@ export async function getCategorySummary() { console.log("Dados de categorias encontrados:", data); + // Vamos buscar tanto "Despesa" quanto "despesa" para garantir + const { data: dataLowerCase, error: errorLowerCase } = await supabase + .from('transacoes') + .select('categoria, valor, tipo') + .eq('tipo', 'despesa'); + + if (errorLowerCase) { + console.error('Erro ao buscar despesas minúsculas:', errorLowerCase); + } else if (dataLowerCase) { + data.push(...dataLowerCase); + console.log("Dados adicionais encontrados:", dataLowerCase); + } + // Agrupar por categoria const categorias: Record = {}; data.forEach(item => { @@ -126,14 +139,14 @@ export async function getMonthlyData() { meses[mes] = { receitas: 0, despesas: 0 }; }); - // Agrupar por mês + // Agrupar por mês, normalizando o tipo data.forEach(item => { if (item.quando && item.valor) { const data = new Date(item.quando); const mesIndex = data.getMonth(); const nomeMes = nomesMeses[mesIndex]; - if (item.tipo === 'receita') { + if (item.tipo?.toLowerCase() === 'receita') { meses[nomeMes].receitas += Math.abs(item.valor); } else { meses[nomeMes].despesas += Math.abs(item.valor);