Sesion 7

Dia: 06/06/25
Hora de inicio: 09:30
Hora de fin: 11:55
Cantidad de horas trabajadas: 2 horas y 25 min.

Problemas encontrados:

  • Al insertar nuevos empleados saltaba el error 50004 (“Empleado con ValorDocumentoIdentidad ya existe en inserción”) porque el simulador generó cédulas duplicadas.

  • En la primera fecha de operacion.xml, las marcas de asistencia arrojan 50013 (“Marca sin jornada asignada”) al no haberse generado todavía las jornadas semanales.

  • La consulta de eventos (usp_ListarEventos) devolvía “Ambiguous column name 'PostTime'”, porque la tabla Evento y la vista VW_EventoDetalle compartían columnas con ese nombre.

  • Las tablas de planilla (MovimientoPlanilla, SemanaPlanilla) quedaban vacías tras la simulación completa porque nunca se invocaba el SP CerrarSemanaPlanilla.

Cómo fueron resueltos:

  1. Duplicados de cédula

    • En el wrapper Python de llamada a SP (call_sp), añadí un parámetro opcional ignore_errors=[50004,50005] para capturar y descartar duplicados no críticos, registrando un warning en log.

  2. Marca sin jornada

    • Modifiqué el SP InsertarMarcaAsistencia para que, si recibe 50013, inserte la marca en tabla de pendientes y emita un evento de tipo “MarcaPendiente” en lugar de abortar.

  3. Ambigüedad en consulta de eventos

    • En usp_ListarEventos aliasé todas las columnas problemáticas:

      sql
      SELECT ev.Id AS IdEvento, ev.PostTime AS FechaEvento, d.Detalle, ... FROM Evento ev JOIN VW_EventoDetalle d ON ev.Id = d.IdEvento;
  4. CerrarSemanaPlanilla

    • Identifiqué que el SP no se llamaba al final de la simulación. Añadí en el script Python, tras procesar 7 días, la invocación a CerrarSemanaPlanilla(@SemanaActual) para poblar los movimientos de planilla.

Dudas:

  • Definir si la automatización de cierre semanal debe residir en el simulador (Python) o configurarse MSSQL.

Forma que se trabajó:

  • De manera asincrónica; GitHub.

Problemas de la instalación del software:

  • Ninguno.

Problemas de aprendizaje del software:

  • Comprender la gestión de estados “pendiente” en marcas de asistencia.

Investigaciones:

  • MSDN: “Handling custom error codes in T-SQL”

  • Documentación de SQL Server Agent Jobs para programar tareas.

  • Artículo sobre “Design patterns for delayed processing” en SQLShack.

Prueba de concepto:

  • Simulación de 160 días con la nueva lógica incorporada. Resultados:

    • Empleados procesados: 148

    • Semanas cerradas: 23

    • Marcas totales: 15 029 (incluidas 214 pendientes)

    • Eventos generados: 17 676

Comments

Popular posts from this blog

Sesión 12

Seccion 5

Sesión 4