Fix: Implement category summary endpoint
- Modified `src/services/transacao/summaryService.ts` to address issues with the `getCategorySummary` endpoint. - Implemented handling of NULL categories, transaction type filtering, and month/year filtering. - Ensures the endpoint returns the correct category summaries, including "Sem Categoria" for NULL values, filtered by type and month/year.
This commit is contained in:
parent
9bfdc3efc7
commit
43292f9b17
@ -200,9 +200,10 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
query = query.eq('login', normalizedEmail);
|
query = query.eq('login', normalizedEmail);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply type filter if not 'all'
|
// Apply type filter CORRECTLY - only if not 'all'
|
||||||
if (tipo !== 'all') {
|
if (tipo !== 'all') {
|
||||||
query = query.eq('tipo', tipo);
|
query = query.eq('tipo', tipo);
|
||||||
|
console.log(`📋 [getCategorySummary] Filtro de tipo aplicado: ${tipo}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply EXACT same month filter as getResumoFinanceiro
|
// Apply EXACT same month filter as getResumoFinanceiro
|
||||||
@ -231,15 +232,15 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(`📋 [getCategorySummary] Dados recebidos (${data.length} registros):`, data.slice(0, 5));
|
console.log(`📋 [getCategorySummary] Dados brutos recebidos (${data.length} registros):`, data.slice(0, 5));
|
||||||
|
|
||||||
// Group by category and sum values - use ABSOLUTE values like in getResumoFinanceiro
|
// Group by category and sum values - handle NULL categories properly
|
||||||
const categoryMap: { [key: string]: number } = {};
|
const categoryMap: { [key: string]: number } = {};
|
||||||
let total = 0;
|
let total = 0;
|
||||||
|
|
||||||
data.forEach((transaction) => {
|
data.forEach((transaction) => {
|
||||||
// Tratar categorias vazias, nulas ou indefinidas de forma mais específica
|
// Handle NULL categories properly - use "Sem Categoria" for NULL/empty values
|
||||||
let categoria = 'Despesas Sem Categoria';
|
let categoria = 'Sem Categoria';
|
||||||
|
|
||||||
if (transaction.categoria && typeof transaction.categoria === 'string') {
|
if (transaction.categoria && typeof transaction.categoria === 'string') {
|
||||||
const cleanCategory = transaction.categoria.trim();
|
const cleanCategory = transaction.categoria.trim();
|
||||||
@ -248,7 +249,7 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the EXACT same calculation as getResumoFinanceiro - absolute values
|
// Use absolute values to match getResumoFinanceiro calculation
|
||||||
const valor = Math.abs(Number(transaction.valor || 0));
|
const valor = Math.abs(Number(transaction.valor || 0));
|
||||||
|
|
||||||
if (valor > 0) {
|
if (valor > 0) {
|
||||||
@ -257,9 +258,9 @@ export async function getCategorySummary(tipo: string = 'despesa', monthFilter?:
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
console.log(`📋 [getCategorySummary] Categorias encontradas:`, Object.keys(categoryMap));
|
console.log(`📋 [getCategorySummary] Categorias processadas:`, Object.keys(categoryMap));
|
||||||
console.log(`📋 [getCategorySummary] Total calculado: ${total}`);
|
console.log(`📋 [getCategorySummary] Total calculado: ${total}`);
|
||||||
console.log(`📋 [getCategorySummary] Despesas sem categoria: ${categoryMap['Despesas Sem Categoria'] || 0}`);
|
console.log(`📋 [getCategorySummary] Sem Categoria: ${categoryMap['Sem Categoria'] || 0}`);
|
||||||
|
|
||||||
// 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 = [
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user