Appearance
Configuración de Límites de Período de Facturación
Módulo: Membresias Tipo: Process Estado: Implementado Fecha Creación: 2026-03-19
Descripción
Problema que resuelve
El proceso de facturación por lotes permite indicar cualquier período (mes y año) al ejecutarse. Sin restricciones, un operador podría facturar por error un período muy alejado del esperado — por ejemplo, facturar el mes de junio del año anterior cuando en realidad debería facturar el mes actual.
Adicionalmente, algunas organizaciones trabajan bajo la modalidad de mes vencido: cobran a sus socios en el mes corriente por el servicio consumido el mes anterior. En este modelo, el período de facturación habitual no es el mes actual sino el mes anterior, y el sistema debe reflejarlo automáticamente.
Sin esta configuración, el sistema no tiene forma de:
- Sugerir el período correcto al abrir el formulario de facturación
- Restringir la selección a un rango razonable de períodos
- Rechazar períodos claramente fuera de lo esperado antes de procesar el lote
Solución implementada
Se implementó un mecanismo de configuración de límites de período que permite:
- Definir el período base: la organización configura si opera en "mes actual" o "mes vencido" (mes anterior). Este valor determina el período que el sistema sugiere por defecto al abrir el formulario de facturación.
- Definir la tolerancia: se configura cuántos meses hacia atrás y hacia adelante del período base son válidos para facturar. Los períodos fuera de este rango son rechazados.
- Restricción visual en el formulario: el selector de período se limita automáticamente al rango permitido, impidiendo que el operador seleccione meses fuera del margen configurado.
- Validación en el servidor: el backend rechaza con un mensaje descriptivo cualquier solicitud de facturación cuyo período esté fuera del rango calculado.
- Configuración por sucursal: cada sucursal puede tener sus propios parámetros, de forma independiente.
Valor de negocio
- Reducción de errores operativos: el operador ya no puede facturar accidentalmente un período incorrecto o muy alejado del esperado
- Soporte para modalidad mes vencido: organizaciones que cobran por el mes anterior tienen el período correcto sugerido por defecto
- Feedback claro ante errores: si se intenta facturar un período inválido, el sistema indica explícitamente cuál es el rango permitido
- Configuración flexible: el administrador puede ajustar los límites según las necesidades operativas de cada sucursal
Proceso de Negocio
Concepto: Período Base
El período base es el mes de referencia para calcular el rango de períodos válidos. Se determina en el momento en que el operador abre el formulario de facturación (no en el momento de la configuración).
| Configuración | Período base calculado | Ejemplo (hoy = marzo 2026) |
|---|---|---|
| Mes actual (0) | El mes en curso | Marzo 2026 |
| Mes vencido (1) | El mes inmediatamente anterior al actual | Febrero 2026 |
Concepto: Rango Permitido
A partir del período base, el sistema calcula un rango de períodos válidos aplicando la tolerancia configurada:
Período mínimo = período base - N meses
Período máximo = período base + N mesesDonde N es la tolerancia configurada (en meses).
Ejemplo completo:
- Configuración: mes vencido, tolerancia 2 meses
- Fecha actual: marzo 2026
- Período base: febrero 2026
- Rango permitido: diciembre 2025 a abril 2026
- Períodos aceptados: 12/2025, 01/2026, 02/2026, 03/2026, 04/2026
- Períodos rechazados: noviembre 2025 o anteriores; mayo 2026 o posteriores
Flujo: Configuración por el Administrador
mermaid
flowchart TD
A["Administrador accede a\nConfig > Membresias"] --> B["Localiza sección de\nlímites de período"]
B --> C["Selecciona modalidad:\nMes actual o Mes vencido"]
C --> D["Ingresa tolerancia\n(cantidad de meses)"]
D --> E["Guarda la configuración"]
E --> F["El sistema persiste los\nparámetros para la sucursal"]
F --> G["Los nuevos parámetros\naplicarán al próximo\nproceso de facturación"]Flujo: Uso por el Operador de Facturación
mermaid
flowchart TD
A["Operador abre el formulario\nde Facturación por Lotes"] --> B["Sistema consulta la configuración\nde límites de período"]
B --> C["Sistema calcula período base\nsegún modalidad configurada"]
C --> D["Campo período se inicializa\ncon el período base"]
D --> E["Selector de período restringido\nal rango permitido"]
E --> F{"Operador selecciona\nun período"}
F -->|Dentro del rango| G["Proceso continúa\nnormalmente"]
F -->|Fuera del rango| H["Sistema rechaza con mensaje:\nindica el rango permitido"]Reglas de Negocio
RN-001: Cálculo del período base según modalidad
Descripción: El período base se determina en el momento de uso (no en el de configuración) según la modalidad activa.
Modalidades:
- Mes actual (0): el período base es el mes en que se ejecuta el proceso
- Mes vencido (1): el período base es el mes inmediatamente anterior al mes en que se ejecuta el proceso
Ejemplo:
- Fecha de ejecución: marzo 2026
- Mes actual → período base: marzo 2026
- Mes vencido → período base: febrero 2026
RN-002: Rango de períodos válidos
Descripción: Solo se pueden facturar períodos dentro del rango [base - N, base + N], siendo N la tolerancia configurada. El rango es inclusivo en ambos extremos.
Condición: El operador indica un período en el formulario de facturación.
Acción:
- Si el período está dentro del rango: el sistema permite continuar
- Si el período está fuera del rango: el sistema rechaza la operación e informa el rango válido
Ejemplo (base = febrero 2026, tolerancia = 2 meses):
- Diciembre 2025 → aceptado (límite inferior)
- Enero 2026 → aceptado
- Febrero 2026 → aceptado (período base)
- Marzo 2026 → aceptado
- Abril 2026 → aceptado (límite superior)
- Noviembre 2025 → rechazado
- Mayo 2026 → rechazado
RN-003: La restricción aplica tanto para facturación como para refacturación
Descripción: Los límites de período se aplican de igual forma independientemente de si la operación es facturación nueva o refacturación.
Justificación: Una refacturación errónea en un período muy alejado es tan problemática como una facturación nueva en ese período. La configuración protege ambas operaciones.
RN-004: Valores por defecto
Descripción: Cuando la configuración no ha sido establecida explícitamente, el sistema opera con valores por defecto conservadores.
Valores por defecto:
- Modalidad: mes actual (0)
- Tolerancia: 2 meses
Resultado con defaults (fecha: marzo 2026):
- Período base: marzo 2026
- Rango permitido: enero 2026 a mayo 2026
RN-005: Configuración independiente por sucursal
Descripción: Cada sucursal puede tener su propia configuración de límites de período, independiente de otras sucursales de la misma empresa.
Justificación: Distintas sucursales pueden operar con modalidades de cobro diferentes. Una sucursal que cobra por adelantado (mes actual) y otra que cobra el mes vencido pueden coexistir en la misma empresa con configuraciones distintas.
Casos de Uso
UC-001: Administrador configura la empresa para modalidad mes vencido
Actor: Administrador del sistema
Objetivo: Configurar la sucursal para que el formulario de facturación sugiera por defecto el mes anterior y restrinja el rango de períodos válidos.
Precondiciones:
- Usuario autenticado con permisos de administración de configuración
- La sucursal opera bajo modalidad mes vencido (cobra lo consumido el mes anterior)
Flujo principal:
- El administrador accede a Config > Membresias
- El administrador localiza la sección de configuración de límites de período
- El administrador selecciona "Mes anterior" en el campo de modalidad
- El administrador establece la tolerancia (ejemplo: 2 meses)
- El administrador guarda la configuración
- El sistema confirma que los parámetros fueron guardados
Postcondiciones:
- La próxima vez que un operador abra el formulario de facturación, el campo período tendrá por defecto el mes anterior al actual
- Solo se podrán seleccionar períodos dentro del rango calculado
UC-002: Operador intenta facturar un período fuera del rango
Actor: Operador de facturación
Objetivo: (No deseado) El operador selecciona manualmente un período incorrecto, fuera del rango permitido.
Precondiciones:
- Configuración: mes vencido, tolerancia 2 meses
- Fecha actual: marzo 2026
- Rango permitido: diciembre 2025 a abril 2026
Flujo:
- El operador abre el formulario de facturación por lotes
- El campo período muestra por defecto febrero 2026
- El operador cambia manualmente el período a octubre 2025
- El sistema detecta que octubre 2025 está fuera del rango permitido
- El sistema rechaza la operación e informa: "El período seleccionado no está dentro del rango permitido. Rango válido: 12/2025 a 04/2026"
- La facturación no se ejecuta
Postcondiciones:
- No se genera ningún lote de facturación
- El operador recibe un mensaje claro indicando el rango válido
UC-003: Operador factura dentro del rango permitido
Actor: Operador de facturación
Objetivo: Ejecutar la facturación mensual con el período sugerido por el sistema.
Precondiciones:
- Configuración: mes vencido, tolerancia 2 meses
- Fecha actual: marzo 2026
Flujo:
- El operador abre el formulario de facturación por lotes
- El campo período muestra automáticamente febrero 2026 (mes vencido)
- El operador ingresa el rango de socios
- El operador confirma la ejecución sin modificar el período
- El sistema valida que febrero 2026 está dentro del rango (diciembre 2025 a abril 2026)
- La facturación se procesa normalmente
UC-004: Administrador amplía la tolerancia para permitir facturación de períodos históricos
Actor: Administrador del sistema
Objetivo: Permitir temporalmente la facturación de un período más lejano de lo usual para corregir una omisión histórica.
Flujo:
- El administrador detecta que no se facturó a un grupo de socios en un período anterior
- El administrador accede a Config > Membresias
- El administrador aumenta la tolerancia de 2 a 5 meses
- El operador puede ahora facturar ese período histórico
- Una vez corregida la omisión, el administrador restablece la tolerancia a 2 meses
Criterios de Aceptación
Configuración
- [ ] AC-001: El administrador puede acceder a la configuración de límites de período desde Config > Membresias
- [ ] AC-002: El sistema permite seleccionar entre "Mes actual" y "Mes anterior" como modalidad
- [ ] AC-003: El sistema permite ingresar un número entero positivo como tolerancia en meses
- [ ] AC-004: El sistema rechaza valores de tolerancia de 0 o negativos con un mensaje de validación
- [ ] AC-005: Los cambios se persisten correctamente y aplican a la próxima apertura del formulario de facturación
Formulario de facturación
- [ ] AC-006: Al abrir el formulario de facturación, el campo período muestra el período base calculado según la modalidad configurada
- [ ] AC-007: Con modalidad "Mes actual", el campo período muestra el mes en curso
- [ ] AC-008: Con modalidad "Mes vencido", el campo período muestra el mes anterior al actual
- [ ] AC-009: El selector de período no permite seleccionar meses fuera del rango
[base - N, base + N]
Validación en el proceso
- [ ] AC-010: Un período dentro del rango es aceptado y el proceso de facturación continúa normalmente
- [ ] AC-011: Un período fuera del rango es rechazado con un mensaje que indica el rango válido
- [ ] AC-012: La restricción aplica tanto para facturación nueva como para refacturación
Dependencias
Funcionalidades relacionadas
- Facturación por Lotes: proceso principal al que aplica esta configuración
- Config > Membresias: sección de configuración del sistema donde se editan los parámetros
Historial de Cambios
| Fecha | Versión | Autor | Descripción |
|---|---|---|---|
| 2026-03-19 | 1.0 | Sistema | Creación del documento — funcionalidad nueva |