Entradas

Mostrando las entradas de noviembre, 2025

Sesión 4 - Sábado 30 de Noviembre

 Horario: 11:00 AM - 3:30 PM Enfoque: Sistema financiero avanzado con manejo de mora y pagos Implementé el corazón financiero del sistema en SP_RegistrarPagoFactura.sql y SP_CalcularInteresesMoratorios.sql: SP_RegistrarPagoFactura: Algoritmo de Aplicación de Pagos: Implementa regla "la factura más antigua vencida primero" (Oldest Due First) con lógica que: Busca facturas vencidas con intereses pendientes Aplica pago a intereses primero, luego capital Si sobra saldo, aplica a siguiente factura vencida Finalmente aplica a facturas corrientes Validaión de Medio de Pago: Verifica que el método (efectivo, tarjeta, transferencia) esté activo y acepte el monto. Reconciliación Automática: Calcula diferencia de centavos y la aplica como ajuste contable registrado. SP_CalcularInteresesMoratorios: Cálculo Diferencial: Tasa base + recargo progresivo según días de mora (1-30 días: 2%, 31-60: 3%, 61+: 5%). Excepciones Inteligentes: Omite cálculo para propiedades en planilla familiar con su...

Sesión 3 - Viernes 29 de Noviembre

Horario: 7 PM - 12 AM Enfoque: Procedimientos almacenados core del sistema de medición y facturación Desarrollé los dos procedimientos más críticos del sistema en SP_RegistrarLecturaAgua.sql y SP_GenerarFacturasMensuales.sql: SP_RegistrarLecturaAgua: Validación compleja: Implementé 5 niveles de validación: existencia de medidor, lectura mayor a anterior, fecha coherente, medidor activo, propiedad habilitada. Cálculo Inteligente de Consumo: Fórmula que considera lecturas parciales, ajustes por fugas reportadas, y conversión a m³. Transaccionalidad Robusta: BEGIN TRANSACTION con TRY...CATCH, rollback automático en errores, y COMMIT explícito solo tras éxito completo. Actualización en Cascada: Al registrar lectura, se actualiza Medidor.LecturaActual, se inserta en MovimientoMedidor, y se disparan cálculos intermedios. SP_GenerarFacturasMensuales: Lógica de Agrupación: Identifica período facturable (últimos 30 días desde última factura). Cálculo Multivariable: Combina concepto fijo (servic...

Sesión 2 - Jueves 28 de Noviembre

 Horario: 7:30 PM - 12:00 PM Enfoque: Tablas de soporte y preparación para triggers Completé la estructura de base de datos con tablas complementarias críticas para el funcionamiento del sistema en DatosPrevioTrigger.sql: Implementaciones Clave: BitacoraCambios: Sistema de auditoría completo que registra timestamp, usuario, tabla afectada, operación (INSERT/UPDATE/DELETE), valores antiguos y nuevos en formato XML para trazabilidad forense. DBErrors: Mecanismo centralizado de logging de errores con severidad, procedimiento origen, número de línea y mensaje técnico para diagnóstico. ParametrosSistema: Tabla de configuración que permite modificar dinámicamente tasas de interés moratorio, días de gracia, límites de consumo, etc., sin modificar código. Desafíos Resueltos: Problema con XML en Bitacora: Tuve que investigar y aplicar FOR XML PATH('') correctamente para serializar cambios en formato legible pero estructurado. Configuración Parametrizada: Diseñé ParametrosSistema con val...

Sesión 1 - Miércoles 27 de Noviembre

Horario: 10:00 AM -  2:30 PM Enfoque: Diseño e implementación del esquema base de datos Inicié el proyecto con la creación del esquema fundamental del sistema de gestión municipal de agua en CreacionBD.sql. El diseño contempló 28 tablas normalizadas hasta 3FN que modelan integralmente el negocio del agua potable. La estructura principal incluyó: Entidades Clave: Propiedad y Propietario con su tabla intermedia PropiedadPropietario para manejar la relación muchos-a-muchos, permitiendo propiedades con múltiples propietarios y propietarios con múltiples propiedades. Factura, FacturaDetalle y Pago para el ciclo completo de facturación financiera. ConceptoCobro y PeriodoMontoCC para modelar el sistema de tarifas diferenciadas por tipo de uso, zona, y temporada. Medidor y MovimientoMedidor para el control preciso de consumo de agua. Desafíos Técnicos Superados: Diseño de la relación Propiedad-Propietario: Implementé una solución elegante con tabla intermedia que soporta propiedad conjunta...