Appearance
Categorias de Membresia
Modulo: Membresias Tipo: Resource Estado: Implementado Fecha: 2026-01-27
Descripcion
Problema que resuelve
Las instituciones que gestionan membresias (clubes, gimnasios, asociaciones) necesitan clasificar a sus miembros en diferentes categorias segun criterios como edad, tipo de actividad o plan contratado. Sin un sistema de categorias, la administracion se vuelve caótica: no es posible segmentar miembros para facturacion diferenciada, no se puede automatizar el cambio de categoria cuando un miembro alcanza cierta edad, y la asignacion individual de categorias a grandes volumenes de miembros resulta impracticable.
Solucion implementada
Se implemento un sistema completo de gestion de categorias de membresia que permite:
- Administrar categorias: Crear, consultar, modificar y eliminar categorias de membresia con sus datos asociados
- Asociar producto de facturacion: Cada categoria tiene un producto vinculado que determina el monto a facturar a los miembros de esa categoria
- Cambio automatico por edad: Configurar rangos de edad para que el sistema pueda migrar automaticamente miembros de una categoria a otra cuando alcanzan cierta edad
- Categoria por defecto: Marcar una categoria como predeterminada para nuevos miembros
- Asignacion masiva: Asignar una categoria a multiples miembros en una sola operacion
Valor de negocio
- Segmentacion: Permite clasificar miembros para facturacion diferenciada y gestion administrativa
- Automatizacion: El cambio automatico por edad elimina la necesidad de reclasificar manualmente a cada miembro
- Eficiencia operativa: La asignacion masiva reduce drasticamente el tiempo de gestion cuando se necesita reclasificar grandes grupos
- Consistencia de facturacion: El producto asociado garantiza que todos los miembros de una categoria se facturen al mismo valor
Contexto del sistema
Este recurso forma parte del modulo de Membresias y se relaciona con:
- Miembros: Cada miembro tiene asignada una categoria de membresia
- Productos: Cada categoria tiene un producto asociado que determina el monto de facturacion
- Grupos Familiares: Las categorias pueden variar entre miembros de un mismo grupo familiar
- Facturacion por Lotes: El proceso de facturacion masiva utiliza la categoria del miembro para determinar el producto y monto a facturar
Frontend (Perspectiva de Usuario)
Vistas
- Listado de categorias: Tabla con todas las categorias existentes, mostrando codigo, nombre, producto asociado y marca de defecto. Accesible desde el menu Inicio > Bases > Categorias
- Formulario de alta/edicion: Modal para crear o modificar una categoria, con dos secciones: datos basicos y configuracion de cambio automatico por edad
- Modal de eliminacion: Dialogo de confirmacion que solicita una categoria de reemplazo antes de eliminar
- Vista de asignacion masiva: Pantalla dedicada con tabla de miembros seleccionables, filtro por categoria y accion de asignacion. Accesible desde Inicio > Utilidades > Asignacion de Categorias
Interacciones del usuario
- Consultar categorias: El usuario visualiza la tabla completa de categorias con sus datos principales
- Crear categoria: El usuario abre el formulario, completa los datos obligatorios (nombre, producto) y opcionalmente configura el cambio automatico por edad
- Editar categoria: El usuario selecciona una categoria existente, modifica los campos deseados y guarda los cambios
- Eliminar categoria: El usuario solicita eliminar una categoria; el sistema presenta un dialogo que solicita seleccionar una categoria de reemplazo para los miembros afectados
- Alternar categoria por defecto: El usuario activa o desactiva la marca "por defecto" directamente desde la tabla mediante un interruptor
- Asignacion masiva: El usuario navega a la vista de asignacion, selecciona miembros de la tabla (con opcion de filtrar por categoria actual), presiona "Asignar Categoria" y selecciona la categoria destino en un modal de confirmacion
Estados de UI
- Estado inicial: Tabla cargada con todas las categorias disponibles
- Estado cargando: Indicador de carga mientras se obtienen los datos
- Estado exito: Notificacion de confirmacion al crear, editar, eliminar o asignar masivamente
- Estado error: Mensaje de error descriptivo cuando falla una operacion (ej: "Error al guardar la categoria")
- Estado vacio: Tabla sin registros cuando no hay categorias configuradas
- Asignacion masiva - resultado: Notificacion detallada con cantidad de miembros asignados exitosamente y cantidad omitidos (ya tenian la categoria)
Backend (Perspectiva de Datos de Negocio)
Entidades de negocio
Categoria de Membresia: Representa una clasificacion o tipo de membresia que agrupa a los miembros de la institucion.
Datos necesarios
Cada categoria de membresia debe almacenar:
| Dato | Descripcion | Restricciones |
|---|---|---|
| Codigo | Identificador unico de la categoria | Generado automaticamente, solo lectura |
| Nombre | Denominacion de la categoria (ej: "Socio Pleno", "Cadete", "Jubilado") | Requerido, maximo 50 caracteres |
| Producto asociado | Producto del catalogo vinculado para facturacion | Requerido, debe existir en el catalogo de productos |
| Categoria por defecto | Indica si esta categoria se asigna automaticamente a nuevos miembros | Valor booleano (si/no) |
| Edad desde | Limite inferior del rango de edad para cambio automatico | Opcional, entre 0 y 120 |
| Edad hasta | Limite superior del rango de edad para cambio automatico | Opcional, entre 0 y 120, debe ser mayor que "edad desde" |
| Categoria de cambio automatico | Categoria destino cuando el miembro alcanza el rango de edad configurado | Opcional, debe ser una categoria existente diferente a la actual |
Label cantidad (label_cantidad) | Etiqueta semántica que describe la unidad del campo cantidad en la relación miembro-categoría (ej: "sesiones", "horas") | Opcional, VARCHAR 50, nullable |
Código de reporte (cod_reporte) | Código que determina el template de PDF que se usa al generar el cupón de pago para miembros de esta categoría. Sigue el mismo patrón de dispatch que formul.repfor en Ventas. NULL = usa el template por defecto del sistema. | Opcional, VARCHAR 15, nullable |
Relaciones de negocio
- Categoria - Producto: Cada categoria tiene exactamente un producto asociado del catalogo general de productos
- Categoria - Miembros: Una categoria puede tener multiples miembros asignados
- Categoria - Categoria (cambio automatico): Una categoria puede referenciar a otra categoria como destino del cambio automatico por edad
Validaciones de negocio
- Nombre requerido: El nombre de la categoria no puede estar vacio y tiene un maximo de 50 caracteres
- Producto requerido: Toda categoria debe tener un producto asociado valido
- Consistencia del cambio automatico: Si se configura el cambio automatico, los tres campos (categoria destino, edad desde, edad hasta) deben estar completos o todos vacios
- Rango de edad valido: La edad desde debe ser menor que la edad hasta
- Categoria destino diferente: La categoria de cambio automatico no puede ser la misma categoria que se esta configurando
- Eliminacion con reemplazo: Al eliminar una categoria, se debe indicar una categoria alternativa para reasignar los miembros existentes
Reglas de negocio
RN-001: Categoria por defecto
Descripcion: Una categoria puede marcarse como "por defecto" para que se asigne automaticamente a nuevos miembros.
Condicion: El usuario activa la marca de defecto en una categoria.
Accion: La categoria se marca como predeterminada. Pueden existir multiples categorias marcadas como defecto; el sistema utiliza esta marca como indicador configurable.
RN-002: Cambio automatico por edad
Descripcion: Una categoria puede configurarse para que los miembros sean automaticamente migrados a otra categoria cuando alcanzan un rango de edad determinado.
Condicion: La categoria tiene configurados los campos de edad desde, edad hasta y categoria destino.
Accion:
- Los tres campos (edad desde, edad hasta y categoria destino) deben estar todos completos o todos vacios
- La edad desde debe ser estrictamente menor que la edad hasta
- La categoria destino debe ser diferente a la categoria actual
- El rango de edad debe estar entre 0 y 120 anos
RN-003: Eliminacion con reasignacion obligatoria
Descripcion: No se puede eliminar una categoria sin antes reasignar a los miembros que la tienen asignada.
Condicion: El usuario solicita eliminar una categoria.
Accion:
- El sistema solicita al usuario que seleccione una categoria alternativa de reemplazo
- La categoria de reemplazo no puede ser la misma que se esta eliminando
- Todos los miembros de la categoria eliminada son reasignados a la categoria de reemplazo
- La eliminacion y la reasignacion se ejecutan como una operacion atomica
RN-004: Asignacion masiva de categoria
Descripcion: Se permite asignar una categoria a multiples miembros en una sola operacion.
Condicion: El usuario selecciona uno o mas miembros y elige una categoria destino.
Accion:
- El sistema procesa cada miembro seleccionado
- Los miembros que ya tienen la categoria seleccionada son omitidos (no se duplica la asignacion)
- El sistema reporta al usuario: cantidad total procesada, cantidad asignada exitosamente y cantidad omitida
- Los detalles de cada miembro procesado (exito u omision con razon) estan disponibles en el resultado
RN-005: Producto asociado obligatorio
Descripcion: Toda categoria de membresia debe tener un producto del catalogo asociado.
Condicion: Al crear o modificar una categoria.
Accion: El sistema valida que se haya seleccionado un producto existente y valido del catalogo de productos.
Casos de uso
Caso 1: Crear nueva categoria de membresia
Actor: Usuario administrativo
Precondiciones:
- El usuario esta autenticado en el sistema
- Existen productos configurados en el catalogo
Flujo principal:
- El usuario accede al listado de categorias desde Inicio > Bases > Categorias
- El usuario selecciona "Nva. Categoria"
- El sistema presenta el formulario con las secciones de datos basicos y cambio automatico
- El usuario completa el nombre de la categoria (ej: "Socio Cadete")
- El usuario busca y selecciona un producto del catalogo
- Opcionalmente, el usuario marca la categoria como "por defecto"
- Opcionalmente, el usuario expande la seccion de cambio automatico y configura:
- Selecciona la categoria destino (ej: "Socio Pleno")
- Ingresa edad desde (ej: 13)
- Ingresa edad hasta (ej: 17)
- El usuario confirma la creacion
- El sistema valida los datos y crea la categoria
- El sistema muestra una notificacion de exito
Postcondiciones:
- La categoria queda registrada y disponible para asignar a miembros
- Si se configuro cambio automatico, queda vinculada con la categoria destino
Flujos alternativos:
- Error: nombre vacio: El sistema muestra "El nombre es requerido" y no permite guardar
- Error: producto no seleccionado: El sistema muestra "El producto es requerido" y no permite guardar
- Error: cambio automatico incompleto: Si el usuario completa solo algunos campos del cambio automatico, el sistema muestra "Para configurar cambio automatico debe completar: categoria destino, edad desde y edad hasta"
- Error: rango de edad invalido: Si edad desde es mayor o igual a edad hasta, el sistema muestra "La edad desde debe ser menor a la edad hasta"
Caso 2: Eliminar categoria con reasignacion
Actor: Usuario administrativo
Precondiciones:
- El usuario esta autenticado en el sistema
- Existe la categoria a eliminar
- Existe al menos una categoria alternativa
Flujo principal:
- El usuario accede al listado de categorias
- El usuario selecciona la opcion de eliminar en la categoria deseada
- El sistema presenta un dialogo de confirmacion que indica: "Esta seguro que desea eliminar la categoria [Nombre]?" con una advertencia: "Los socios asociados a esta categoria seran reasignados a la categoria de reemplazo seleccionada"
- El usuario selecciona una categoria de reemplazo del selector (que excluye la categoria que se esta eliminando)
- El usuario confirma la eliminacion
- El sistema reasigna todos los miembros a la categoria de reemplazo y elimina la categoria
- El sistema muestra una notificacion de exito
Postcondiciones:
- La categoria queda eliminada del sistema
- Todos los miembros que pertenecian a esa categoria ahora pertenecen a la categoria de reemplazo
Flujos alternativos:
- Cancelacion: El usuario cierra el dialogo sin confirmar y la categoria permanece sin cambios
- Unica categoria: Si solo existe una categoria en el sistema, el boton de eliminar esta deshabilitado
Caso 3: Asignacion masiva de categoria a miembros
Actor: Usuario administrativo
Precondiciones:
- El usuario esta autenticado en el sistema
- Existen categorias y miembros registrados
Flujo principal:
- El usuario accede a la vista de asignacion desde Inicio > Utilidades > Asignacion de Categorias
- El sistema muestra la tabla de miembros activos con casillas de seleccion
- Opcionalmente, el usuario filtra la tabla por categoria actual usando el selector de categorias
- El usuario selecciona los miembros deseados marcando sus casillas
- El sistema muestra el contador de "Miembros seleccionados: N"
- El usuario presiona "Asignar Categoria"
- El sistema presenta un modal donde el usuario selecciona la categoria destino
- El usuario confirma la asignacion
- El sistema procesa la asignacion y reporta: "Categoria asignada a X miembro(s)"
- Si hubo miembros omitidos: "N miembro(s) ya tenian la categoria seleccionada"
- La seleccion se limpia automaticamente y la tabla se refresca
Postcondiciones:
- Los miembros seleccionados tienen asignada la nueva categoria
- Los miembros que ya tenian la categoria no fueron modificados
Flujos alternativos:
- Sin seleccion: El boton "Asignar Categoria" permanece deshabilitado si no hay miembros seleccionados
- Error de proceso: El sistema muestra un mensaje de error y los miembros no son modificados
- Cambio de filtro: Al cambiar el filtro de categoria, la seleccion de miembros se limpia automaticamente
Consideraciones
Seguridad
- El acceso a la gestion de categorias requiere autenticacion en el sistema
- Las operaciones de eliminacion y asignacion masiva son operaciones sensibles que requieren confirmacion explicita del usuario
Auditoria
- Las operaciones de creacion, modificacion y eliminacion de categorias deben registrarse en el sistema de auditoria
- La asignacion masiva debe registrar la cantidad de miembros procesados y el usuario que ejecuto la operacion
Rendimiento
- La asignacion masiva debe procesar multiples miembros en una unica transaccion para garantizar atomicidad
- El listado de categorias es un conjunto reducido de datos (tipicamente menos de 20 registros) y debe responder de forma inmediata
Dependencias
Funcionalidades relacionadas
- Gestion de Miembros: Los miembros tienen una categoria asignada; al crear un miembro se selecciona su categoria
- Productos: Las categorias dependen del catalogo de productos para vincular el producto de facturacion
- Facturacion por Lotes: El proceso de facturacion masiva utiliza la categoria del miembro para determinar el monto a facturar
- Grupos Familiares: Miembros de un mismo grupo pueden tener diferentes categorias
Criterios de aceptacion
La funcionalidad se considera completa cuando:
- [x] AC-001: El usuario puede consultar el listado completo de categorias con codigo, nombre, producto asociado y marca de defecto
- [x] AC-002: El usuario puede crear una nueva categoria con nombre, producto asociado y opcionalmente marca de defecto
- [x] AC-003: El usuario puede configurar cambio automatico por edad especificando categoria destino, edad desde y edad hasta
- [x] AC-004: El sistema valida que los tres campos de cambio automatico esten todos completos o todos vacios
- [x] AC-005: El sistema valida que la edad desde sea menor que la edad hasta
- [x] AC-006: El usuario puede editar todos los campos de una categoria existente
- [x] AC-007: Al eliminar una categoria, el sistema solicita una categoria de reemplazo y reasigna los miembros
- [x] AC-008: El usuario puede alternar la marca "por defecto" directamente desde la tabla
- [x] AC-009: El usuario puede asignar masivamente una categoria a multiples miembros seleccionados
- [x] AC-010: La asignacion masiva reporta cantidad de miembros asignados exitosamente y cantidad omitidos
- [x] AC-011: El filtro por categoria en la vista de asignacion masiva limpia la seleccion al cambiar
- [x] AC-012: El sistema muestra notificaciones de exito y error para todas las operaciones
Notas adicionales
- La eliminacion de una categoria requiere seleccionar una categoria de reemplazo, lo cual garantiza que nunca queden miembros sin categoria asignada
- El cambio automatico por edad es una configuracion declarativa en la categoria; el proceso que efectivamente ejecuta la migracion de miembros se maneja en otra funcionalidad del modulo
- La asignacion masiva reemplaza la categoria actual del miembro por la nueva categoria seleccionada; no se acumulan multiples categorias por miembro
label_cantidades un atributo de la categoría, no de la relación miembro-categoría. Define la semántica del campocantidadpara toda la categoría.cod_reportepermite personalizar el template del cupón de pago por categoría sin modificar la lógica del generador.
Historial de cambios
| Fecha | Version | Autor | Descripcion |
|---|---|---|---|
| 2026-01-27 | 1.0 | Sistema | Creacion del documento de requisitos de negocio (funcionalidad ya implementada) |
| 2026-06-05 | 1.1 | Sistema | Campo label_cantidad (VARCHAR 50, nullable): etiqueta semántica para la unidad del campo cantidad en la relación miembro-categoría. |
| 2026-06-10 | 1.2 | Sistema | Campo cod_reporte (VARCHAR 15, nullable): código que determina el template PDF del cupón de pago por categoría, siguiendo el patrón de dispatch de formul.repfor. |