diff --git a/apps/api/src/controllers/contribuyente.controller.ts b/apps/api/src/controllers/contribuyente.controller.ts index d516d9f..487ed5a 100644 --- a/apps/api/src/controllers/contribuyente.controller.ts +++ b/apps/api/src/controllers/contribuyente.controller.ts @@ -42,7 +42,24 @@ export async function list(req: Request, res: Response, next: NextFunction) { try { const visibleIds = await getEntidadesVisibles(req.tenantPool!, req.user!.userId, req.user!.role); const rows = await contribuyenteService.listContribuyentes(req.tenantPool!, visibleIds, req.user!.tenantId); - return res.json({ data: rows }); + + // Batch lookup de nombres de supervisores + const supervisorIds = [...new Set(rows.map(r => r.supervisorUserId).filter(Boolean))] as string[]; + const supervisorNames: Record = {}; + if (supervisorIds.length > 0) { + const users = await prisma.user.findMany({ + where: { id: { in: supervisorIds } }, + select: { id: true, nombre: true }, + }); + for (const u of users) supervisorNames[u.id] = u.nombre; + } + + return res.json({ + data: rows.map(r => ({ + ...r, + supervisorNombre: r.supervisorUserId ? (supervisorNames[r.supervisorUserId] ?? null) : null, + })), + }); } catch (err) { return next(err); } } diff --git a/apps/web/app/(dashboard)/contribuyentes/page.tsx b/apps/web/app/(dashboard)/contribuyentes/page.tsx index 765b36d..c9b4325 100644 --- a/apps/web/app/(dashboard)/contribuyentes/page.tsx +++ b/apps/web/app/(dashboard)/contribuyentes/page.tsx @@ -131,6 +131,7 @@ export default function ContribuyentesPage() {

{c.nombre}

{c.rfc}

{c.regimenFiscal &&

Régimen: {c.regimenFiscal}

} + {c.supervisorNombre &&

Supervisor: {c.supervisorNombre}

}
{(user?.role === 'owner' || user?.role === 'cfo') && (