sábado, 4 de abril de 2026

Nuevas Fronteras en GestiónCuotas: UI Reactiva, Seguridad Multi-Tenant y Migración de Datos

Nuevas Fronteras en GestiónCuotas: UI Reactiva, Seguridad Multi-Tenant y Migración de Datos

¡Seguimos avanzando a paso firme en el desarrollo de nuestro motor de gestión SaaS! Durante las últimas semanas, el equipo se ha centrado en tres pilares fundamentales que transforman el proyecto de un motor de backend robusto a una plataforma lista para el despliegue inicial. Estos avances no solo mejoran la experiencia de usuario, sino que también solidifican la arquitectura para garantizar la seguridad, escalabilidad y auditabilidad que nos propusimos desde el inicio.

A continuación, detallamos las tres grandes fases que hemos completado.

1. Fase 1.3: Ficha de Detalle Reactiva con HTMX

La interacción del administrador con el estado de cuenta de un sujeto de facturación (sea un alumno o un copropietario) es una de las tareas más recurrentes. Para hacer este proceso ágil y moderno, hemos implementado una "Ficha de Detalle" que evita las recargas de página completas, ofreciendo una experiencia de usuario fluida y eficiente.

¿Cómo lo logramos?

  • Interactividad con HTMX: Utilizamos la biblioteca HTMX para enviar solicitudes al backend y actualizar solo los fragmentos necesarios del DOM. Al registrar un pago, únicamente la tabla de deudas y el saldo total se actualizan, sin que el navegador deba recargar toda la página.
  • Diseño limpio con Tailwind CSS: La interfaz fue construida con clases utilitarias de Tailwind CSS, logrando un diseño profesional, agnóstico y semántico. Los colores de los estados (Verde para Pagado, Rojo para Vencido) permiten una rápida identificación visual.
  • Feedback al Usuario: Implementamos indicadores de carga (hx-indicator) que muestran un spinner mientras el motor procesa un pago, informando al usuario que una acción está en progreso.

Ejemplo del botón de pago en nuestro template de Django:

<!-- Formulario de Pago con HTMX -->
<form hx-post="{% url 'facturacion:registrar_pago' sujeto.id %}" 
      hx-target="#tabla-deudas-container"
      hx-swap="innerHTML"
      hx-indicator="#pago-loading">
    
    <button type="submit" class="btn-pagar">
        <span id="pago-text">Registrar Pago</span>
        <!-- Indicador de carga -->
        <svg id="pago-loading" class="htmx-indicator animate-spin" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
            <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
            <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8v8H4z"></path>
        </svg>
    </button>
</form>

2. Fase 1.4: Sistema de Seguridad Multi-Tenant (RBAC)

La seguridad y el aislamiento de datos son innegociables en una arquitectura SaaS multi-tenant. Hemos implementado un Control de Acceso Basado en Roles (RBAC) que se integra perfectamente con django-tenants.

Niveles de Acceso Definidos:

  • SuperAdmin (Global): Control total sobre el esquema public, responsable de crear y gestionar los Tenants (los clientes del SaaS).
  • Admin de Tenant: El administrador principal de una escuela o consorcio. Puede configurar su tenant, crear otros usuarios y acceder a reportes.
  • Operador de Caja: Un rol con permisos limitados, enfocado en la operatoria diaria. Solo puede ver estados de cuenta y registrar pagos.

Gracias al middleware de django-tenants, cualquier intento de un usuario de un tenant de acceder a datos de otro es bloqueado a nivel de base de datos, garantizando un aislamiento total.

Adicionalmente, se implementaron decoradores de permisos personalizados (ej. @role_required('admin')) para proteger las vistas y servicios de forma granular. Para una trazabilidad legal completa, se extendió el AbstractAuditModel para registrar el usuario (ID y Rol) que realizó cada cambio, incluyendo una "instantánea" del rol en el momento de la operación.

3. Fase 1.5: Asistente de Importación de Datos Legados

Para facilitar la transición de nuestros primeros clientes, hemos desarrollado un "Asistente de Importación" que permite migrar datos desde archivos Excel/CSV de forma segura y controlada.

Características Clave:

  • Motor de Mapeo Agnóstico: El servicio utiliza la biblioteca Pandas para procesar los archivos. Mapea columnas con nombres genéricos (ej. 'DNI_TUTOR', 'SALDO_ADEUDADO') a los modelos abstractos de nuestro sistema, asegurando la flexibilidad.
  • Creación de Saldos Iniciales: Al importar, el sistema genera automáticamente una "Cuota de Ajuste" o "Saldo Inicial" para cada sujeto, garantizando que su cuenta corriente en el nuevo sistema refleje con precisión su estado anterior.
  • Reporte de Errores Detallado: Si una fila del archivo contiene errores (ej. un CUIT duplicado o un formato de fecha inválido), el proceso no se detiene. En su lugar, se registran los errores y se genera un log para que el usuario pueda corregir solo las entradas problemáticas, mientras se procesan las válidas.
  • Trazabilidad y Auditoría: Cada registro creado mediante este proceso queda marcado en nuestro AbstractAuditModel como una "Carga Masiva Inicial", cumpliendo con nuestros estrictos requisitos de auditabilidad y defendibilidad judicial.
  • Interfaz con HTMX para el progreso: El asistente de importación incorpora una vista simple con HTMX que muestra una barra de progreso o un spinner, manteniendo al usuario informado sobre el estado del procesamiento del archivo.

Conclusión y Próximos Pasos

Con estos avances, GestiónCuotas está más cerca que nunca de su lanzamiento piloto. Hemos sentado las bases de una interfaz de usuario moderna, un sistema de seguridad robusto y una vía de migración eficiente para nuestros futuros clientes e inversores.

El próximo gran paso será el despliegue del Dashboard de Control de Gestión, donde los administradores podrán visualizar métricas de cobrabilidad en tiempo real. ¡El motor está listo y funcionando!

Publicado por el equipo de desarrollo de GestiónCuotas - Mendoza, 2026.

jueves, 12 de marzo de 2026

Sistema de Gestión de Cuotas y Pagos para Instituciones Educativas

Estado Actual de la Aplicación de Gestión de Cuotas

Sistema de Gestión de Cuotas y Pagos para Instituciones Educativas

Esta aplicación web, desarrollada con Django, está diseñada para optimizar la administración financiera de instituciones educativas. Permite gestionar de forma eficiente las cuotas estudiantiles, los pagos recibidos y el estado de cuenta de cada alumno.

Funcionalidades Principales:

  • Gestión Integral de Alumnos: Mantenimiento centralizado de la información de alumnos y sus familias, incluyendo datos de contacto, DNI, fecha de nacimiento, y estado de pago anual o convenios.
  • Administración de Ciclos Lectivos y Cursos: Define y organiza los ciclos lectivos, asignando cursos con montos base de cuota a cada uno. La aplicación se enfoca en el ciclo lectivo activo para reflejar el contexto financiero actual.
  • Inscripciones y Acuerdos de Pago: Registra las inscripciones de alumnos a cursos específicos, estableciendo el monto exacto de la cuota acordada para esa inscripción y permitiendo definir su estado (Activa, Baja, Egresado).
  • Registro Detallado de Pagos: Permite registrar cada pago recibido, especificando el concepto (cuota mensual, matrícula, material, etc.), el método de pago (efectivo, transferencia, mercado pago, etc.), el mes y año correspondiente, y el monto abonado. Soporta movimientos de crédito y débito.
  • Cálculo Automático de Deudas: Basándose en las inscripciones activas y los pagos registrados para el ciclo lectivo actual, la aplicación calcula automáticamente el saldo adeudado por cada alumno, identificando los meses pendientes de pago y el monto total de la deuda.
  • Visión Clara del Estado Financiero: Ofrece perfiles detallados de cada alumno, mostrando su historial de pagos, inscripciones activas, deuda actual, y el próximo mes a abonar. Incluye estadísticas de pagos y cantidad de transacciones.
  • Gestión por Instituto: La aplicación soporta la administración de múltiples instituciones (Institutos), asegurando que los usuarios solo vean la información correspondiente a su entidad.
  • Acceso Web y Navegación Intuitiva: Las funcionalidades son accesibles a través de una interfaz web clara y organizada, con rutas específicas para listar alumnos, ver detalles individuales, registrar pagos y gestionar inscripciones.

Esta herramienta simplifica la labor administrativa, reduce errores manuales y proporciona una visión precisa y actualizada de las finanzas estudiantiles, facilitando una gestión más ágil y transparente.

martes, 3 de marzo de 2026

Informe de Estado y Proyección: Sistema de Gestión Académica

Fecha: 2 de marzo de 2026
Proyecto: Migración y Escalabilidad del Sistema de Cuotas y Alumnos
Estado: Fase de Infraestructura Core Completada


1. Resumen de lo Realizado hasta la Fecha

Se ha completado con éxito la transición del antiguo modelo de datos (basado en Access) hacia una arquitectura web moderna utilizando Django y PostgreSQL. Este cambio garantiza integridad de datos, capacidad de acceso multiusuario simultáneo y seguridad remota.

Logros Técnicos:

  • Normalización de Base de Datos: Se implementó una jerarquía relacional lógica: Ciclo Lectivo > Curso > Inscripción > Alumno. Esto permite que la academia crezca año tras año manteniendo un histórico impecable sin duplicar fichas de alumnos.
  • Gestión de Ciclos Lectivos: Implementación de una entidad global que permite "activar" o "desactivar" periodos académicos. Esto automatiza la lógica de cobro y asegura que los administrativos siempre trabajen sobre el año vigente por defecto.
  • Módulo de Cobranza Dinámico: Creación de un sistema de seguimiento de cuotas por mes, permitiendo el registro detallado de medios de pago (Efectivo, Transferencia, Mercado Pago) y vinculándolos a una inscripción específica.
  • Interfaz de Administración Avanzada: Configuración de un panel de control con edición anidada (Inlines). Ahora, desde la ficha de un alumno, es posible gestionar sus inscripciones y pagos de forma centralizada.

2. Estructura de Datos Actual

El sistema ha sido diseñado bajo tres pilares de consistencia:

  1. El Ciclo Lectivo: Es el eje temporal (ej. 2025, 2026). Controla cuándo inician las actividades y cuál es el periodo de facturación actual.
  2. El Curso: Está anclado a un Ciclo Lectivo y define la oferta académica y el costo base de la cuota para ese periodo.
  3. La Inscripción: Es el contrato legal/económico. Vincula al alumno con un curso y permite pactar montos especiales (becas o acuerdos por contingencia).

3. Visión de Futuro: Próximos Módulos

El sistema está preparado para evolucionar de una herramienta de gestión administrativa a una Plataforma Educativa Integral.

A. Módulo de Calificaciones (Acceso Docente Seguro)

Este es el próximo hito fundamental. El objetivo es descentralizar la carga de notas manteniendo la máxima seguridad:

  • Roles de Usuario (RBAC): Perfil específico para "Profesores". El docente solo podrá visualizar y editar los datos de los alumnos inscritos en sus cursos asignados.
  • Privacidad de Datos: El personal docente no tendrá acceso a la información financiera ni a datos sensibles de contacto de las familias.
  • Libreta Digital y Actas: Interfaz intuitiva para carga de calificaciones. Incluirá un sistema de "Cierre de Acta" para bloquear las notas una vez finalizado el periodo de carga.

B. Portal para Familias y Alumnos

  • Autogestión: Consulta online de estados de cuenta y descarga de recibos.
  • Boletín de Calificaciones: Visualización en tiempo real de las notas cargadas.

C. Auditoría y Cumplimiento Legal

  • Logs de Actividad: Registro automático de cada cambio realizado en el sistema (quién modificó una nota, quién registró un pago).
  • Protección de Datos: Adaptación de los formularios a los marcos legales de protección de datos personales.

4. Conclusión Técnica

La base actual es sólida y escalable. Gracias al uso de Docker, el sistema es "cloud-ready", permitiendo una migración inmediata a un servidor web cuando se decida abrir el acceso a los profesores. La arquitectura modular garantiza que la incorporación del sistema de notas sea un proceso fluido.

viernes, 21 de marzo de 2025

Mejoras en el Software de Gestión de Cuotas

 El software sigue funcionando. No está roto. No ha colapsado. Pero la deuda técnica está ahí, acumulándose como una pila de tareas pendientes que nunca encuentran su momento. Ha llegado la hora de hacer algo al respecto.

El objetivo para lo que queda del año es claro: mejorar lo que ya está, saldar deudas técnicas y dejar el código en un estado más sólido y mantenible. No se trata de una revolución, sino de pequeños ajustes, optimizaciones y rediseños que hagan la diferencia.

¿Qué cambios se vienen?

👉 Refactorización del código: Hay fragmentos que funcionan, sí, pero con un nivel de rudeza que duele ver. La idea es hacerlos más eficientes, más organizados y más fáciles de mantener.

👉Optimización de la gestión de cuotas: Mejorar la estructura de los datos y los reportes para hacer el seguimiento de pagos más claro y ágil.

👉Automatización de tareas repetitivas: Reducir el trabajo manual con VBA y macros, permitiendo que el sistema haga más con menos intervención.

👉Interfaz más intuitiva: Sin necesidad de una revolución estética, pequeños ajustes pueden hacer que el uso del software sea más fluido y amigable.

El dilema de siempre

Este es un proyecto sin un retorno económico directo. No hay una retribución esperándome al final del camino. Hacerlo es una cuestión de convicción, de satisfacción personal, de la certeza de que algo que fue útil puede ser mejor y más duradero.

Y aunque el código pueda mejorar y el sistema pueda optimizarse, hay un límite: no puedo hacerlo público. No es un software para compartir abiertamente, sino una herramienta con información sensible que debe mantenerse en su contexto.

Conclusión

Se vienen meses de trabajo silencioso. No será un desarrollo frenético ni un rediseño total, pero cada mejora sumará a la estabilidad del sistema. Quizás, en el futuro, este software pueda trascender más allá de su uso actual y convertirse en algo más grande. Pero por ahora, lo que toca es seguir adelante, mejorar lo que se pueda y disfrutar del proceso. 👍



miércoles, 19 de marzo de 2025

Todo software tiene una historia, pero no todas las historias de software comienzan con un plan claro. Algunas surgen en medio de la incertidumbre, sin un objetivo del todo definido, avanzando a tientas, buscando su rumbo. Así nació este proyecto: sin un destino claro, pero con la certeza de que debía existir.

Al principio, la pregunta era siempre la misma: ¿hacia dónde debería ir esto? No había respuestas definitivas, solo un proceso de prueba y error, de ideas que parecían buenas hasta que dejaban de serlo, de soluciones improvisadas que con el tiempo demostraban su valor. Y en ese andar incierto, sin saberlo, se estaba aplicando una de las ideas más poderosas del desarrollo de software moderno: el agilismo.

Años después, cuando Alistair Cockburn presentó en Mendoza su visión sobre el agilismo, quedó claro que este método no es solo una estrategia consciente, sino también una forma natural de crear. Construir sin tener todos los datos de antemano. Permitir que la propia necesidad del proyecto vaya tirando de la cuerda, en lugar de esperar a que todo esté perfectamente planeado antes de empezar.

Muchos proyectos nacen bajo un aura de contradicciones y dudas. Pero el secreto no está en resolver todas esas dudas antes de dar el primer paso, sino en avanzar a pesar de ellas. No dudes. Ve hacia adelante.

Quien construye algo con verdadera determinación lo hace a cualquier costo. Desafía obstáculos, aprende en el camino y encuentra maneras de seguir adelante cuando todo parece indicar lo contrario. No espera el momento perfecto, porque sabe que nunca llegará. Y en esa constancia, tarde o temprano, hay una recompensa. No siempre es el reconocimiento externo, ni siquiera el éxito comercial. A veces, la mayor satisfacción es poder mirarse al espejo y ver a alguien que defendió, cuidó y valoró una idea a lo largo del tiempo. Un año, dos… o toda una vida.

 

martes, 18 de marzo de 2025

Introducción

 Todo software tiene una historia. Nace con una idea, crece con el esfuerzo de quienes lo construyen y, con el tiempo, se transforma en algo más grande de lo que sus creadores imaginaron en un principio. Este es el relato de una aplicación que comenzó como un simple experimento y terminó convirtiéndose en una herramienta utilizada en diversas instituciones. Su código evolucionó, se adaptó a nuevas necesidades y sobrevivió a los cambios tecnológicos y organizativos que tantas veces dejan atrás a proyectos similares.

Este libro no es un manual técnico, ni una guía para programadores. Es la historia de un sistema que nació, creció y aún sigue funcionando, sorteando obstáculos y aprovechando cada oportunidad de mejora. No se trata solo de líneas de código, sino de decisiones, aprendizajes y dilemas que todo software atraviesa en su camino.

A lo largo de sus capítulos, se explorará cómo se gestó la idea original, los desafíos técnicos y humanos que surgieron en su desarrollo, los momentos de crisis en los que casi fue abandonado y las decisiones clave que permitieron su continuidad. También se abordará el contexto en el que se implementó, los cambios que experimentó con el tiempo y la visión de futuro que hoy se proyecta sobre él.

Este libro es para quienes disfrutan las historias de creación y evolución tecnológica. Para los curiosos que alguna vez se preguntaron cómo un conjunto de archivos en una computadora puede convertirse en una herramienta esencial en la vida de muchas personas. Para quienes saben que el software no es solo código, sino también historia.


viernes, 17 de enero de 2025

Reflexiones Sobre un Proyecto Literario

Hoy quiero compartir con ustedes una idea que viene rondando mi cabeza desde hace un tiempo: la posibilidad de escribir un libro sobre la experiencia de desarrollar una aplicación que lleva años funcionando, evolucionando, y adaptándose a nuevas necesidades. Este software, que comenzó como una herramienta sencilla para gestionar las cuotas en un instituto, ha crecido conmigo, tanto a nivel técnico como personal.

No planeo entrar en muchos detalles por ahora, pero sí me entusiasma explorar este proyecto desde una perspectiva reflexiva. ¿Qué significó empezar sin grandes planes? ¿Cómo las pequeñas soluciones se convirtieron en algo más grande? ¿Qué enseñanzas me dejó este viaje como programador, como colaborador, y como alguien que trata de construir algo útil y duradero?

Pero más allá de la idea técnica, creo que este libro también sería una forma de enfrentar una época personal complicada. El estrés, las molestias cervicales, y las consecuencias de algunos hábitos negativos, me han hecho reflexionar sobre cómo encontrar formas más saludables de canalizar la energía y el pensamiento. A veces, escribir puede ser una válvula de escape poderosa, y siento que compartir este proyecto podría ser una manera de sanar mientras me conecto con otros que quizás estén en un camino similar.

Quiero que este libro, si llega a ver la luz, sea algo más que un manual técnico. Quiero que sea una conversación sobre creatividad, errores, aprendizajes y la relación que tenemos con nuestro trabajo, especialmente en un campo como el desarrollo de software, que avanza a una velocidad vertiginosa.

Me gustaría escuchar sus opiniones: ¿les parece interesante un libro de este tipo? ¿Qué aspectos les gustaría leer en una obra que hable sobre la construcción de software desde cero y sobre el impacto que tiene en nuestras vidas?

Espero que esta idea sea el inicio de un diálogo y, quizás, el comienzo de un proyecto que no solo cuente una historia, sino que inspire a otros a compartir las suyas.

Gracias por tomarse el tiempo de leer esto, y por cualquier comentario o sugerencia que quieran dejar. Estoy atento y con muchas ganas de escuchar sus devoluciones. 😊

Nuevas Fronteras en GestiónCuotas: UI Reactiva, Seguridad Multi-Tenant y Migración de Datos

Nuevas Fronteras en GestiónCuotas: UI Reactiva, Seguridad Multi-Tenant y Migración de Datos ¡Seguimos avanza...