Appearance
Gestion de Miembros
Esta sección documenta el ABM (Alta, Baja, Modificación) completo de miembros del sistema de membresías, incluyendo la gestión de sus relaciones con disciplinas y productos.
Descripción General
El módulo de gestión de miembros es el core del sistema de membresías. Permite:
- Alta de miembros: Registro completo con datos básicos, comerciales y de membresía
- Gestión de estado: Activación, desactivación y reactivación de miembros
- Relaciones: Asignación de disciplinas y productos con ajustes de precio
- Operaciones masivas: Asignación y eliminación masiva de productos a múltiples miembros
- Consultas avanzadas: Filtrado complejo por estado, categoría, disciplina, producto con búsqueda global
Componentes Documentados
ABM de Miembros
- Gestión de Miembros: CRUD completo de miembros
- Listado con paginación server-side y filtros combinados
- Crear miembro con validación Zod
- Editar completo (PUT) y parcial (PATCH)
- Ver detalle con scope 'max' (incluye categoría, disciplinas, productos, grupo familiar)
- Dar de baja con motivo y fecha
- Reactivar miembro con eventos de dominio
Disciplinas del Miembro
- Disciplinas del Miembro: Gestión de disciplinas asignadas
- Listar disciplinas del miembro
- Asignar disciplina con marca de principal
- Editar relación miembro-disciplina
- Eliminar disciplina con confirmación
- Validación de duplicados
Productos del Miembro
- Productos del Miembro: Gestión de productos y asignación masiva
- Listar productos con ajustes de precio
- Asignar producto con ajuste (signo, tipo P/F, valor)
- Editar ajuste de precio
- Eliminar producto con confirmación
- Asignación masiva: Mismo producto a múltiples miembros
- Eliminación masiva: Producto de múltiples miembros
- Reporte de resultados (exitosos/omitidos con razones)
Reglas de Negocio Principales
RN-001: Estados de Miembro
Un miembro puede tener tres estados:
- Activo: Miembro vigente con todos los derechos
- Inactivo: Dado de baja (con fecha y motivo)
- No socio: Cliente sin membresía activa
RN-002: Baja con Grupo Familiar
Si el miembro pertenece a un grupo familiar y es el titular, al darse de baja:
- Opcionalmente se designa nuevo titular
- Automáticamente se elimina del grupo familiar (evento de dominio)
RN-003: Reactivación
La reactivación de un miembro:
- Limpia fecha_baja y motivo_baja
- Dispara evento
MiembroReactivacionEvent - No restaura automáticamente el grupo familiar previo
RN-004: Ajustes de Precio en Productos
Los productos asignados a miembros pueden tener ajustes:
- Signo: Incremento (+) o Descuento (-)
- Tipo: Porcentual (P) o Fijo (F)
- Valor: Monto o porcentaje del ajuste
RN-005: Asignación Masiva
La asignación masiva de productos:
- Aplica el mismo producto con el mismo ajuste a todos los miembros seleccionados
- Omite miembros que ya tienen el producto asignado
- Retorna reporte detallado con exitosos y omitidos
RN-006: Disciplina Principal
Un miembro puede tener múltiples disciplinas, pero solo una marcada como principal.
Flujos de Usuario Comunes
1. Alta de Nuevo Miembro
- Acceder a "Bases > Miembros > Nuevo"
- Completar datos básicos (nombre, identificación, contacto)
- Completar datos comerciales (localidad, condición IVA)
- Completar datos de membresía (categoría, sexo, fecha nacimiento)
- Opcional: Crear grupo familiar, asignar disciplinas, asignar productos
- Guardar
2. Dar de Baja un Miembro
- Desde listado de miembros, seleccionar "Dar de baja"
- Ingresar fecha de baja y motivo
- Si es titular de grupo familiar: Opcionalmente designar nuevo titular
- Confirmar
- Sistema elimina automáticamente del grupo familiar
3. Asignación Masiva de Productos
- Acceder a "Utilidades > Asignación de Productos"
- Seleccionar múltiples miembros (checkboxes)
- Seleccionar producto
- Configurar ajuste de precio (opcional)
- Ejecutar asignación
- Ver reporte de resultados
Vistas Frontend
/bases/miembros- Listado de miembros/bases/miembros/nuevo- Crear miembro/bases/miembros/:id/editar- Editar miembro/utilidades/asignacion-productos- Asignación masiva de productos
Modales
BajaMiembroModal- Dar de baja miembroAltaMiembroModal- Reactivar miembroMiembroDisciplinaListModal- Listar disciplinas del miembroAddMiembroDisciplinaModal- Asignar disciplinaEditMiembroDisciplinaModal- Editar disciplinaConfirmDeleteMiembroDisciplinaModal- Eliminar disciplinaMiembroProductoListModal- Listar productos del miembroAddMiembroProductoModal- Asignar productoEditMiembroProductoModal- Editar productoConfirmDeleteMiembroProductoModal- Eliminar producto
Endpoints API
Miembros
GET /mod-membresia/miembros- Listar con filtros y paginaciónGET /mod-membresia/miembros/{id}- Ver detallePOST /mod-membresia/miembros- CrearPUT /mod-membresia/miembros/{id}- Actualizar completoPATCH /mod-membresia/miembros/{id}- Actualizar parcialDELETE /mod-membresia/miembros/{id}- Dar de bajaPOST /mod-membresia/miembros/{id}/reactivar- Reactivar
Disciplinas del Miembro
GET /mod-membresia/miembros/{id}/disciplinas- ListarPOST /mod-membresia/miembros/{id}/disciplinas- AsignarPUT /mod-membresia/miembros/{id}/disciplinas/{disciplinaId}- ActualizarDELETE /mod-membresia/miembros/{id}/disciplinas/{disciplinaId}- Eliminar
Productos del Miembro
GET /mod-membresia/miembros/{id}/productos- ListarPOST /mod-membresia/miembros/{id}/productos- AsignarPUT /mod-membresia/miembros/{id}/productos/{productoId}- ActualizarDELETE /mod-membresia/miembros/{id}/productos/{productoId}- Eliminar
Operaciones Masivas
POST /mod-membresia/bulk/miembros-productos- Asignar producto a múltiplesDELETE /mod-membresia/bulk/miembros-productos- Eliminar producto de múltiples
Eventos de Dominio
MiembroBajaEvent- Disparado al dar de baja un miembro- Listener:
RemoveMiembroFromGrupoListener(elimina del grupo familiar)
- Listener:
MiembroReactivacionEvent- Disparado al reactivar un miembro- Listener:
ActualizarSistemasExternosListener(notifica sistemas externos)
- Listener:
Dependencias
Funcionalidades Relacionadas
- Grupos Familiares: Al dar de baja o reactivar, se actualiza el grupo familiar
- Categorías de Membresía: Cada miembro debe tener una categoría asignada
- Disciplinas (Catálogo): Las disciplinas asignadas provienen del catálogo base
- Productos (Ventas): Los productos asignados provienen del módulo de Ventas
- Facturación por Lotes: Utiliza los datos de miembros, productos y disciplinas
Módulos Externos
- Ventas: Productos asignados a miembros
- CtaCte: Datos comerciales del cliente (condición IVA, vendedor)
Estadísticas
- 3 documentos de requisitos de negocio
- 45 criterios de aceptación (todos implementados)
- 17 reglas de negocio
- 10 casos de uso detallados
- 11 endpoints API
- 11 modales de interfaz
Estado
✅ Implementado - Todas las funcionalidades están en producción
Última actualización: 2026-01-27