Implementación de funcionalidad: Insertar Movimiento
Fecha: domingo 26 de abril de 2026
Hora de inicio: 9:30 a.m.
Hora de finalización: 1:48 p.m.
Horas trabajadas: 3 h 18 min
El plan para esta sesión era implementar la
funcionalidad completa de insertar movimiento: el SP auxiliar que necesitaba
para el dropdown, las funciones en el modelo, la vista en el controlador y el
HTML.
Actividades realizadas
9:30 a.m. – 10:12 a.m. — SP: ListarTiposMovimiento
Al empezar a pensar en el formulario de
insertar movimiento me di cuenta de que necesitaba un dropdown para que el
usuario escogiera el tipo de movimiento, y para llenarlo necesitaba un SP que
retornara todos los tipos disponibles. Este no estaba pensado originalmente,
pero surgió la necesidad en este momento al diseñar la funcionalidad completa.
10:12 a.m. – 11:45 a.m. — Funciones listar_tipos_movimiento e insertar_movimiento (modelo) + vista insertar_movimiento_view (controlador)
Con el SP listo, implementé las dos funciones
del modelo y la vista del controlador.
insertar_movimiento fue más compleja y es
donde apareció el error más interesante del día. La función ejecuta el SP InsertarMovimiento,
pero al probarlo con un monto que dejaría el saldo negativo, la aplicación
mostraba "Movimiento insertado correctamente" cuando en realidad el
SP no había insertado nada. El código de error 50011 no estaba llegando
correctamente a Python.
Al investigar el problema recordé que InsertarMovimiento
retorna más de un resultset: uno de RegistrarBitacora y dos del SP principal.
Python estaba leyendo el primer resultset que encontraba con columna resultado,
que era el 0 que retorna RegistrarBitacora, y se detenía ahí sin llegar al
código real del SP.
Para confirmar el diagnóstico, probé el SP
manualmente en SSMS, el SP retornó correctamente los tres resultsets: 0 de RegistrarBitacora,
50011 del SP principal y 50011 nuevamente.
Con eso confirmado, modifiqué insertar_movimiento
en el modelo para recorrer todos los resultsets con un loop while True y
quedarse con el último valor de resultado en lugar de detenerse en el primero.
La lógica es que el código relevante es el último, que corresponde al SELECT
@outResultCode final del SP principal.
La vista del controlador insertar_movimiento_view
maneja GET y POST en una sola función usando request.method. En GET carga los
datos del empleado y los tipos de movimiento para el formulario y en POST valida
el monto en capa lógica antes de llamar al SP, redirige según el resultado.
12:45 p.m. – 1:48 p.m. — Vista insertar_movimiento.html + botón en movimientos.html
Igual que con las vistas anteriores, primero
diseñé en Figma siguiendo el diseño base del proyecto y luego programé el HTML.
La vista muestra los datos del empleado en modo lectura, un dropdown con los
tipos de movimiento y un campo de monto numérico.
Al cargar el formulario por primera vez me
encontré con que el dropdown aparecía vacío.
Img2: Dropdown de Tipo de movimiento vacío.
La causa era simple, el SP ListarTiposMovimiento
lo había creado en el script del repositorio pero no lo había ejecutado todavía
en la base de datos de Azure. Lo ejecuté en SSMS y el dropdown se llenó
correctamente.
Forma de trabajo del equipo
Nos mantuvimos en contacto por WhatsApp para
coordinar el estado general del proyecto.
Referencias:
Comentarios
Publicar un comentario