Fix: usar query simple de clientes desde Metabase
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 47s
Cambios: - Crear nueva query "Informe Ingresos - Lista Simple de Clientes" (ID: 55) - SELECT directo de tabla clientes sin filtros ni agregaciones - Actualizar endpoint /api/clientes para usar la nueva query - Eliminar parámetros innecesarios (la query no tiene filtros) - Agregar logs para debugging
This commit is contained in:
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user