diff --git a/nuxt4-app/server/api/clientes/index.get.ts b/nuxt4-app/server/api/clientes/index.get.ts index f9e5789..501a028 100644 --- a/nuxt4-app/server/api/clientes/index.get.ts +++ b/nuxt4-app/server/api/clientes/index.get.ts @@ -1,36 +1,38 @@ /** * Get all clients from Metabase - * Uses "Informe Ingresos - Lista de Clientes con Totales" query - * Returns: id, name, ubicacion for use in filters + * Uses "Informe Ingresos - Lista Simple de Clientes" query (ID: 55) + * Returns: id, name, ubicacion, cedula for use in filters */ export default defineEventHandler(async () => { try { // Get all cards to find the clientes query const allCards = await getMetabaseCards('all') - // Find "Informe Ingresos - Lista de Clientes con Totales" query - const card = allCards.find((c: any) => c.name === 'Informe Ingresos - Lista de Clientes con Totales') + // Find "Informe Ingresos - Lista Simple de Clientes" query + const card = allCards.find((c: any) => c.name === 'Informe Ingresos - Lista Simple de Clientes') if (!card) { + console.error('[API] Clientes query not found in Metabase') throw createError({ statusCode: 404, statusMessage: 'Clientes query not found in Metabase' }) } - // Execute the query with empty filters to get all clientes - const result = await executeCardQuery(card.id, [ - { type: 'text', target: ['variable', ['template-tag', 'fecha_desde']], value: '' }, - { type: 'text', target: ['variable', ['template-tag', 'fecha_hasta']], value: '' }, - { type: 'boolean', target: ['variable', ['template-tag', 'incluir_anulados']], value: false }, - { type: 'number', target: ['variable', ['template-tag', 'cliente_ids']], value: [] }, - { type: 'text', target: ['variable', ['template-tag', 'tipos']], value: [] }, - { type: 'text', target: ['variable', ['template-tag', 'estados']], value: [] }, - { type: 'text', target: ['variable', ['template-tag', 'ubicaciones']], value: [] }, - { type: 'text', target: ['variable', ['template-tag', 'calidades']], value: [] } - ]) + console.log('[API] Found clientes card:', card.id, card.name) + + // Execute the query (no parameters needed - it's a simple SELECT) + const result = await executeCardQuery(card.id, []) + + console.log('[API] Clientes query result:', { + hasData: !!result.data, + rows: result.data?.rows?.length, + cols: result.data?.cols?.length, + firstRow: result.data?.rows?.[0] + }) if (!result.data?.rows || !result.data?.cols) { + console.warn('[API] No data returned from clientes query') return [] } @@ -47,13 +49,14 @@ export default defineEventHandler(async () => { id: obj.cliente_id, name: obj.cliente_nombre, ubicacion: obj.cliente_ubicacion, - cedula: obj.cliente_cedula, - // Map any other fields you need from the query result + cedula: obj.cliente_cedula } }) - // Sort by name - return clientes.sort((a: any, b: any) => a.name.localeCompare(b.name)) + console.log('[API] Transformed clientes:', clientes.length, 'records') + + // Already sorted by nombre in SQL query, but return as-is + return clientes } catch (error: any) { console.error('[API] Failed to fetch clientes from Metabase:', error) throw createError({