Controlador y modelo de planilla semanal

 Fecha: Martes 16 de junio de 2026

Hora de inicio: 3:00 p.m.

Hora de finalización: 4:30 p.m.

Total de horas trabajadas: 1 h 30 min

Objetivo de la sesión

El objetivo de esta sesión fue conectar los SPs correspondientes al requerimiento R04 con las vistas de planilla semanal.

Para esto trabajé en modelo_planilla_semanal.py y controlador_planilla_semanal.py.

Actividades realizadas

Primero desarrollé el modelo, agregando las funciones necesarias para ejecutar los procedimientos:

  • ConsultarPlanillaSemanal
  • DetalleMovimientosSemana
  • DetalleDeduccionesSemanales

Cada función abre la conexión con la base de datos, ejecuta el procedimiento con sus respectivos parámetros y convierte los resultados en diccionarios para facilitar su uso desde las vistas HTML.

También se realiza commit porque los procedimientos registran la consulta en la bitácora de eventos.

Después desarrollé el controlador mediante un Blueprint.

Se agregaron las rutas para:

  • Mostrar las últimas planillas semanales.
  • Consultar los movimientos al presionar el salario bruto.
  • Consultar las deducciones al presionar el total de deducciones.

El controlador también determina cuál empleado debe consultarse. Si un administrador está impersonando, utiliza el identificador del empleado seleccionado; de lo contrario, obtiene el empleado relacionado con el usuario que inició sesión.

Además, valida que exista una sesión activa antes de permitir el acceso a las consultas.


Img. 1: Rutas del controlador para consultar el resumen, movimientos y deducciones semanales.

Finalmente realicé pruebas de navegación para comprobar que cada ruta llamara a la función correcta del modelo y enviara los resultados a su respectiva vista.

Resultado de la sesión

Al finalizar quedó conectada la consulta de planilla semanal con la capa lógica. El usuario puede visualizar sus semanas de planilla y acceder al detalle de movimientos y deducciones. La funcionalidad también toma en cuenta cuando un administrador se encuentra impersonando a un empleado.

Buenas prácticas y aprendizajes

  • Mantener las consultas a la base de datos dentro del modelo evita mezclar responsabilidades con el controlador.
  • Convertir los resultados en diccionarios facilita utilizarlos desde Jinja2.
  • Centralizar la obtención del empleado de la sesión evita repetir la lógica de impersonación en cada ruta.
  • Validar la sesión antes de mostrar información evita el acceso directo a las rutas.

Referencias

  • Stored Procedures ConsultarPlanillaSemanal, DetalleMovimientosSemana y DetalleDeduccionesSemanales.
  • Requerimiento R04 del enunciado del proyecto.
  • Documentación de Flask sobre Blueprint, sesiones, rutas y render_template.
  • Documentación de pyodbc para la ejecución de procedimientos almacenados.
  • Documentación y código de la Tarea 2

 

Comentarios