Asignar miembros a unidades
Un miembro está en una unidad cuando existe una fila en member_unit_assignments que las vincula. Esa fila es lo que hace que la asistencia se consolide, lo que limita la visibilidad del pastor, lo que permite al mapa saber dónde poner el pin. Sin ella, un miembro es un nombre en una lista sin contexto organizacional.
Esta página cubre cada camino que GCM ofrece para crear esas filas.
La regla uno-por-nivel
Un miembro puede ser asignado a una unidad en cada nivel. Si tus niveles son Sede → Centro → Célula, un miembro puede estar en una sede y un centro y una célula — tres filas en member_unit_assignments, una por nivel. No puede estar en dos sedes al mismo tiempo.
La base de datos lo aplica con un índice único sobre (member_id, level_index) limitado a organization_id. Intentar agregar una segunda fila al mismo nivel ya sea reemplaza la existente (en el flujo de detalle de unidad) o muestra un error de duplicado (insert directo).
Si un miembro legítimamente participa en dos sedes — digamos un líder de alabanza que toca en ambos campus — elige una como su sede principal y usa un campo personalizado para anotar la secundaria.

Desde la página de detalle de una unidad
Este es el flujo más común. Abre la unidad (entra desde el árbol o una página de nivel), desplázate al panel Miembros, y haz clic en Agregar miembro.
El diálogo muestra un desplegable con búsqueda. Escribe dos caracteres y GCM llama al RPC search_members para resultados en vivo a través de toda la organización. Elige un miembro, haz clic en Agregar, y lo verás aparecer en el panel inmediatamente.
Qué pasa bajo el capó:
- GCM revisa la lista actual de miembros del panel para abortar temprano si el mismo id de miembro ya está asignado a esta unidad (toast: "El miembro ya está asignado").
- Inserta una fila en
member_unit_assignmentscon el miembro, la unidad y el id de organización actual (RLS lo refuerza de todos modos). - La insignia de conteo de miembros de la unidad se incrementa en el resto de la app.
El propio panel de Miembros tiene:
- Una caja de búsqueda que filtra por nombre o apellido (insensible a mayúsculas, ambos campos en OR).
- Paginación a 25 / 50 / 100 filas. Las unidades grandes cargan de forma diferida.
- Filas de miembros con avatar, insignia de tipo (visitante / miembro / habitual), teléfono y un chip de completitud.
- Botón Quitar al hacer hover para desasignar sin salir de la página.
Desde el perfil de un miembro
A veces estás trabajando desde el otro lado — acabas de agregar un miembro y quieres asignarlo. Abre su perfil, desplázate a Asignación de unidad organizacional, y elige unidades nivel por nivel.
El selector es en cascada: elige primero una sede de nivel 1, luego las opciones de nivel 2 se reducen a los centros de esa sede, luego el nivel 3 a las células de ese centro. Nunca se te pide elegir una célula cuya sede no seleccionaste.
Si solo tienes una sede el selector se bloquea automáticamente a ella — no hay nada que elegir. Lo mismo para cualquier nivel donde el alcance de miembro o personal deje exactamente una opción.
En lote
Para migraciones, grandes ingresos, o una reestructura parroquial, las inserciones de fila por fila se vuelven tediosas. Dos caminos en lote:
Importación CSV en lote
Los miembros importados vía importación masiva pueden incluir el nombre de la unidad en su columna. La importación coincide por nombre (insensible a mayúsculas) contra org_units en el nivel relevante y crea asignaciones en la misma transacción. Los nombres no coincidentes aparecen en la vista previa de simulación para que puedas arreglar los typos antes de confirmar.
Acciones en lote dentro de la app
Desde Miembros, filtra la lista al subconjunto que quieres, presiona Acciones en lote → Asignar a unidad, y elige el objetivo. GCM hace upsert de las asignaciones — las filas existentes en el mismo nivel se reemplazan, no se duplican.
Quitar una asignación
Tres caminos:
- Desde el panel de Miembros en una página de unidad — haz hover, haz clic en el ícono de basura, confirma.
- Desde el perfil del miembro — limpia el selector para ese nivel.
- Desde acciones en lote — Desasignar de la unidad actual en el nivel N.
Quitar una asignación no elimina al miembro. Solo elimina la fila de member_unit_assignments. El miembro se vuelve "no asignado en ese nivel" y deja de aparecer en los reportes consolidados de esa unidad.
Qué se cuenta dónde
Una vez que un miembro tiene asignaciones, cada conteo en la app las respeta:
| Conteo | Regla de cascada |
|---|---|
| Tarjeta de unidad "N miembros" | Solo asignaciones directas (sin descendientes) |
| Total de subárbol en la página de detalle de una sede | Conteo de miembros + suma del conteo directo de cada descendiente |
| Filtro del dashboard de asistencia | Todos los miembros visibles en el subárbol de la unidad seleccionada |
| Filtro del dashboard de donaciones | Lo mismo — las donaciones del miembro suben por el árbol |
| Pines de mapa por unidad | Las asignaciones directas de cada unidad se agrupan alrededor de las coordenadas de la unidad |
Que el conteo de "tarjeta" y el "total de subárbol" sean diferentes es intencional. Una sede con tres centros y 200 miembros cada uno muestra "0 miembros" en su propia tarjeta si nadie está directamente asignado a la sede (lo cual es normal — la gente usualmente se asigna a células, no a sedes). La página de detalle de la sede muestra "600 miembros" en la estadística de subárbol.
Workflows de auto-asignación
Los workflows pueden crear asignaciones de forma programática. El patrón más común: un workflow de seguimiento de visitantes asigna al visitante a la célula cuyo líder tomó la primera llamada. Consulta Acciones de workflow para la especificación del nodo Asignar a unidad.
Las asignaciones de workflow usan la misma regla de uno-por-nivel
Si el workflow asigna a un miembro a una célula y ya está en una célula diferente, la fila existente se reemplaza. El log de auditoría registra tanto la desasignación como la re-asignación.
Preguntas comunes
¿Qué pasa si un miembro no tiene unidad en absoluto? Entonces está "no asignado" y no se consolida en ninguna sede. Aparece en la lista de todos los miembros y en el dashboard global pero no en ningún reporte filtrado. Este es el predeterminado para miembros nuevos hasta que tú (o un workflow) los coloque.
¿Puedo mover miembros en lote de una célula a otra? Sí — filtra la lista a la célula origen, selecciona todos, ejecuta Acciones en lote → Asignar a unidad con la célula destino. Las asignaciones existentes se reemplazan.
¿Por qué el perfil de un miembro muestra dos asignaciones en el nivel 3? No debería — el índice único lo previene. Si lo ves, algo legado está en la data. Contacta a soporte y refiere el id del miembro.
Próximos pasos
- Asignar líderes y pastores para que los usuarios — no los miembros — obtengan vistas limitadas.
- Archivar unidades cuando la membresía se reorganice.
- Lee la guía de importación masiva si estás sembrando una organización nueva.
