Propuesta Técnica de Ejecución
Implementación de Redondeo Dinámico por Configuración Local en el Proceso de Facturación
1. Objetivo
Definir y ejecutar una mejora técnica sobre el proceso de cálculo de facturación, tomando como base la Pull Request #8580, con el objetivo de:
- Mejorar la precisión y consistencia de los cálculos financieros.
- Implementar lógica de redondeo dinámico adaptable a distintos escenarios.
- Permitir que la cantidad de decimales sea definida por configuración local (locale), sobrescribiendo el valor por defecto del sistema.
- Corregir errores sintácticos detectados en el servicio de facturación.
- Fortalecer la mantenibilidad y extensibilidad futura del código.
2. Alcance
La propuesta aplica específicamente al componente:
- NubeFactService
E impacta en los siguientes procesos:
- Cálculo de importes y totales de facturación.
- Normalización y redondeo de valores monetarios.
- Configuración regional (local / país).
- Estabilidad del flujo de emisión de comprobantes.
3. Contexto Actual
Actualmente, el proceso de cálculo de facturación presenta las siguientes limitaciones:
- Lógica de redondeo rígida, con un número fijo de decimales.
- Dependencia de un valor por defecto sin posibilidad de sobrescritura por contexto local.
- Riesgo de inconsistencias en cálculos financieros para diferentes países o normativas.
- Existencia de un error sintáctico en
NubeFactServiceque podría provocar fallos en tiempo de ejecución. - Dificultad para extender o ajustar la lógica de redondeo sin afectar otros cálculos.
4. Base Técnica de la Propuesta
La Pull Request #8580 introduce una serie de mejoras que servirán como base para esta ejecución:
-
Merge desde producción
Integración de los cambios más recientes del branch productivo para asegurar estabilidad y compatibilidad (8afc4e6). -
Corrección de error sintáctico
Resolución de un error enNubeFactServiceque podía generar comportamientos inesperados durante el cálculo de facturación (44fd3cd). -
Implementación inicial de redondeo dinámico
Incorporación de lógica que permite manejar diferentes requerimientos de redondeo según el contexto (e5b71ff). -
Mejora de la lógica de redondeo
Refactorización orientada a consistencia, legibilidad y facilidad de mantenimiento (2003307).
5. Propuesta de Implementación
5.1 Configuración de Decimales por Local
Se propone introducir una configuración por local que defina explícitamente:
- Número de decimales permitidos para cálculos monetarios.
- Regla de redondeo asociada (cuando aplique).
Esta configuración deberá:
- Sobrescribir el valor por defecto del sistema.
- Ser fácilmente extensible para nuevos locales.
- Centralizarse en una fuente de configuración clara (config service, base de datos o archivo de configuración).
Ejemplo conceptual:
- Default:
2 decimales - Local
PE:2 decimales - Local
CL:0 decimales - Local
MX:2 o 4 decimalessegún tipo de comprobante
5.2 Lógica de Redondeo Dinámico
La lógica de redondeo deberá:
- Obtener el número de decimales desde la configuración local.
- Aplicarse de forma consistente en todos los cálculos monetarios:
- Subtotales
- Impuestos
- Totales
- Evitar redondeos múltiples innecesarios.
- Centralizarse en un único método o helper reutilizable dentro de
NubeFactService.
5.3 Ajustes en NubeFactService
Las modificaciones sobre NubeFactService incluirán:
- Corrección definitiva del error sintáctico identificado.
- Refactorización de métodos de cálculo para:
- Reducir duplicación de lógica.
- Mejorar legibilidad.
- Facilitar pruebas unitarias.
- Uso explícito de la configuración de decimales por local.
6. Impacto Esperado
Beneficios Técnicos
- Eliminación de inconsistencias de redondeo.
- Mayor control sobre cálculos financieros.
- Código más mantenible y extensible.
- Reducción de riesgos por errores sintácticos.
Beneficios Funcionales
- Cálculos de facturación alineados a normativas locales.
- Mayor confiabilidad de los montos emitidos.
- Flexibilidad ante nuevos requerimientos regulatorios.
7. Riesgos y Consideraciones
-
Compatibilidad hacia atrás
Validar que los cambios no alteren resultados históricos inesperadamente. -
Pruebas exhaustivas
Se requiere cubrir múltiples escenarios de locales y tipos de comprobantes. -
Dependencia de configuración
La ausencia o error en la configuración local debe manejarse con valores seguros por defecto.
8. Estrategia de Validación
- Pruebas unitarias específicas para:
- Redondeo por local.
- Casos límite de decimales.
- Pruebas de integración sobre el flujo completo de facturación.
- Comparación de resultados antes y después del cambio.
- Validación con datos reales de producción (sin impacto en emisión).
9. Conclusión
La ejecución de esta propuesta, basada en la PR #8580, permitirá robustecer el proceso de facturación mediante una lógica de redondeo dinámica, configurable por local y alineada a buenas prácticas financieras. La solución propuesta no solo corrige problemas existentes, sino que establece una base sólida para futuras extensiones y requerimientos regulatorios, mejorando la confiabilidad y calidad del sistema de facturación.