Acceder al Negocio de un Cliente
Exportar contenido
Cambia el contexto activo al negocio del cliente seleccionado para trabajar en su nombre.
- Haz clic en el nombre o tarjeta del cliente
- El sistema carga el entorno del negocio del cliente
- Trabajas como si fueses el propietario (con los permisos delegados)
- Para volver al panel asesor, haz clic en “Volver a mi despacho”
Detalles técnicos — Acceder al negocio de un cliente
Consulta de alertas consolidadas
Sección titulada «Consulta de alertas consolidadas»-- Alertas de todos los clientes del asesorSELECT b.id AS business_id, b.name AS business_name, 'invoice_overdue' AS alert_type, COUNT(*) AS count, MAX(i.due_date) AS latest_dateFROM advisor_delegations adJOIN businesses b ON b.id = ad.business_idJOIN invoices i ON i.business_id = b.idWHERE ad.advisor_id = auth.uid() AND ad.is_active = true AND i.status = 'overdue'GROUP BY b.id, b.name
UNION ALL
SELECT b.id, b.name, 'tax_deadline', COUNT(*), MIN(td.due_date)FROM advisor_delegations adJOIN businesses b ON b.id = ad.business_idJOIN tax_deadlines td ON td.business_id = b.idWHERE ad.advisor_id = auth.uid() AND ad.is_active = true AND td.due_date BETWEEN now() AND now() + INTERVAL '30 days' AND td.status = 'pending'GROUP BY b.id, b.name;Cambio de contexto de negocio
Sección titulada «Cambio de contexto de negocio»async function switchToClientBusiness(businessId: string) { // Verificar delegación activa const { data: delegation } = await supabase .from('advisor_delegations') .select('permissions') .eq('advisor_id', currentUser.id) .eq('business_id', businessId) .eq('is_active', true) .single();
if (!delegation) throw new Error('Sin acceso a este negocio');
// Almacenar contexto en sesión sessionStorage.setItem('active_business_id', businessId); sessionStorage.setItem('advisor_permissions', JSON.stringify(delegation.permissions));
// Redirigir al panel del cliente router.push(`/advisor/client/${businessId}/dashboard`);}