Fix: Category page total mismatch
Corrected category calculations to align with the dashboard's total expenses, ensuring accurate financial data display.
This commit is contained in:
parent
45e0bd3c71
commit
ea97f94a54
@ -189,6 +189,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
try {
|
try {
|
||||||
const groupIds = await getUserGroups(normalizedEmail);
|
const groupIds = await getUserGroups(normalizedEmail);
|
||||||
|
|
||||||
|
// Use the EXACT same query structure as getResumoFinanceiro
|
||||||
let query = supabase.from('transacoes').select('categoria, valor, tipo');
|
let query = supabase.from('transacoes').select('categoria, valor, tipo');
|
||||||
|
|
||||||
if (groupIds.length > 0) {
|
if (groupIds.length > 0) {
|
||||||
@ -203,7 +204,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
query = query.eq('tipo', tipo);
|
query = query.eq('tipo', tipo);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply month filter if provided
|
// Apply EXACT same month filter as getResumoFinanceiro
|
||||||
if (monthFilter) {
|
if (monthFilter) {
|
||||||
const startDate = `${monthFilter}-01`;
|
const startDate = `${monthFilter}-01`;
|
||||||
const year = parseInt(monthFilter.split('-')[0]);
|
const year = parseInt(monthFilter.split('-')[0]);
|
||||||
@ -231,7 +232,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
|
|
||||||
console.log(`📋 [getCategorySummary] Dados recebidos (${data.length} registros):`, data.slice(0, 5));
|
console.log(`📋 [getCategorySummary] Dados recebidos (${data.length} registros):`, data.slice(0, 5));
|
||||||
|
|
||||||
// Group by category and sum values
|
// Group by category and sum values - use ABSOLUTE values like in getResumoFinanceiro
|
||||||
const categoryMap: { [key: string]: number } = {};
|
const categoryMap: { [key: string]: number } = {};
|
||||||
let total = 0;
|
let total = 0;
|
||||||
|
|
||||||
@ -246,6 +247,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Use the EXACT same calculation as getResumoFinanceiro - absolute values
|
||||||
const valor = Math.abs(Number(transaction.valor || 0));
|
const valor = Math.abs(Number(transaction.valor || 0));
|
||||||
|
|
||||||
if (valor > 0) {
|
if (valor > 0) {
|
||||||
@ -255,7 +257,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
});
|
});
|
||||||
|
|
||||||
console.log(`📋 [getCategorySummary] Categorias encontradas:`, Object.keys(categoryMap));
|
console.log(`📋 [getCategorySummary] Categorias encontradas:`, Object.keys(categoryMap));
|
||||||
console.log(`📋 [getCategorySummary] Total geral: ${total}`);
|
console.log(`📋 [getCategorySummary] Total calculado: ${total}`);
|
||||||
|
|
||||||
// Enhanced color palette with more distinct colors - avoiding white/light colors
|
// Enhanced color palette with more distinct colors - avoiding white/light colors
|
||||||
const colors = [
|
const colors = [
|
||||||
@ -275,6 +277,8 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
.sort((a, b) => b.valor - a.valor);
|
.sort((a, b) => b.valor - a.valor);
|
||||||
|
|
||||||
console.log(`📋 [getCategorySummary] Resultado final (filtrado):`, categoryArray);
|
console.log(`📋 [getCategorySummary] Resultado final (filtrado):`, categoryArray);
|
||||||
|
console.log(`📋 [getCategorySummary] Total final das categorias: ${categoryArray.reduce((sum, cat) => sum + cat.valor, 0)}`);
|
||||||
|
|
||||||
return categoryArray;
|
return categoryArray;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('💥 [getCategorySummary] Erro geral:', error);
|
console.error('💥 [getCategorySummary] Erro geral:', error);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user