/** * GET /api/externos/ingresos * * Obtiene los ingresos del período de cosecha desde Metabase. * Incluye información de estado de vinculación. */ import { getIngresos } from '../../utils/metabase' import { getRegistrosVinculados } from '../../utils/queries' export default defineEventHandler(async (event) => { try { const query = getQuery(event) const periodo = (query.periodo as string) || '25-26' const soloSinVincular = query.sinVincular === 'true' // Obtener ingresos desde Metabase const ingresos = await getIngresos(periodo) // Obtener IDs ya vinculados desde nuestra BD local const vinculados = await getRegistrosVinculados('ingreso', periodo) const vinculadosSet = new Set(vinculados) // Marcar cada ingreso con su estado de vinculación const ingresosConEstado = ingresos.map((ingreso: any) => ({ ...ingreso, vinculado: vinculadosSet.has(ingreso.id), })) // Filtrar si solo se quieren los no vinculados const resultado = soloSinVincular ? ingresosConEstado.filter((i: any) => !i.vinculado) : ingresosConEstado return { success: true, data: resultado, meta: { total: resultado.length, vinculados: ingresosConEstado.filter((i: any) => i.vinculado).length, sinVincular: ingresosConEstado.filter((i: any) => !i.vinculado).length, periodo, }, } } catch (error: any) { console.error('[API] Error obteniendo ingresos:', error) throw createError({ statusCode: error.statusCode || 500, statusMessage: error.message || 'Error obteniendo ingresos', }) } })