Creación de SPs: AplicarDeducciones, AbrirMes y ActualizarPlanillaMensual

Fecha: Lunes 08 de junio de 2026
Hora de inicio: 18:00
Hora de finalización: 23:00
Horas trabajadas: 4 horas (efectivas)

Actividades Realizadas:

  • Se ejecutaron pruebas para los cuatro SPs creados hasta ese momento y se identificó un error en el SP Login para el caso en que el usuario no existe en la base de datos.
  • Se modificó la tabla BitacoraEvento para que la columna idUsuario admita NULL, lo que permite registrar eventos de usuarios no autenticados sin violar la integridad referencial.
  • Se corrigió el SP Login para pasar NULL en lugar de 0 como idUsuario en los casos donde no hay sesión activa (usuario inexistente o cuenta bloqueada).
  • Se escribió el SP AplicarDeducciones, que calcula y aplica las deducciones mensuales de cada empleado según su tipo: para las deducciones fijas distribuye el monto entre los jueves del mes, y para las porcentuales aplica el porcentaje sobre el salario bruto. Para este SP fue necesario investigar varias funciones de manejo de fechas en T-SQL.
  • Se escribió el SP AbrirMes, que inicializa el encabezado de la planilla mensual para el período que comienza.
  • Se escribió el SP ActualizarPlanillaMensual, que toma los totales de la planilla semanal recién cerrada y los acumula en la planilla del mes correspondiente.
  • Se realizaron pruebas a los nuevos SPs del día.

Errores encontrados:

Al intentar hacer login con un usuario inexistente, el SP llamaba a RegistrarBitacora pasando @inIdUsuario = 0. Como BitacoraEvento tiene una FK hacia Usuario(id) y no existe ningún usuario con id = 0, la constraint se violaba, el CATCH hacía ROLLBACK y se retornaba el código de error genérico 50008 en lugar del 50001 esperado (usuario no encontrado).

Solución encontrada:

  • Se modificó la columna idUsuario en BitacoraEvento para admitir NULL (ALTER TABLE BitacoraEvento ALTER COLUMN idUsuario INT NULL).
Img1: Cambio en la tabla BitacoraEvento

  • En el SP Login, se reemplazaron los casos donde se pasaba @inIdUsuario = 0 por NULL mediante NULLIF.
Img2: Cambios en Login

Forma de Trabajo en Equipo

Coordinación con Johana mediante WhatsApp.

Referencias consultadas:

Comentarios

Entradas más populares de este blog

Creación del repositorio y estructura básica del proyecto