Posts

Showing posts from June, 2025

Sesión 15

   Dia: 23/06/25 Hora de inicio: 19:34 Hora de fin: 16:23 Cantidad de horas trabajadas: 16 horas y 47 minutos. Tomamos un descanso de 4 horas para dormir. Problemas encontrados: La simulación y carga de XML, estaban hechos en python, lo cual no fue como se nos pidió. Como fueron resueltos: Haciendo 2 SPs en MSSQL para pasar la lógica a la Base de Datos Dudas: Ninguna. Forma que se trabajó: En reunión por medio virtual. Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Ninguno. Investigaciones: Reafirmamos nuestro conocimiento para usar xml.nodes para el uso que se le dió. Como se usa el CROSS APPLY. Prueba de concepto: Se hicieron varias pruebas para depurar y revisar que todo esté sirviendo bien. Problema solución: La simulación y carga de XML se había implementado en Python, pero se nos dijo que toda la lógica tenía que estar dentro de la base de datos. Para arreglarlo, se migró todo el proceso a SPs, adaptando la lógica que teníamos e...

Sesión 14

  Dia: 23/06/25 Hora de inicio: 8:02 Hora de fin: 11:41 Cantidad de horas trabajadas: 3 horas y 39 min. Problemas encontrados: Estructura un poco compleja y ademas de repeticiones en prints. Como fueron resueltos: Mejorando la estructura en general y el flujo. Dudas: Ninguna. Forma que se trabajó: De manera asincronica Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Ninguno. Investigaciones: Ninguna. Prueba de concepto: Se probó con el XML de ejemplo. Problema solución: Primero se actualizaron el encabezado y los comentarios. Se mejoró la legibilidad en general, mejorando la estructura como tal, se puso el propósito de cada función. Además, se cambio la documentación basado en estos cambios.

Sesión 13

  Dia: 19/06/25 Hora de inicio: 17:02 Hora de fin: 20:25 Cantidad de horas trabajadas: 2 horas y 5 min, no fue seguido. Problemas encontrados: Documentación en código podía ser mejor, además que había un folder de proyecto que no se usaba pues ya no necesitabamos interfaz. Como fueron resueltos: Mejorando comentarios y borrando innecesarios, además de borrar el folder de proyecto. Dudas: Que tanto de la documentación hay que hacer. Forma que se trabajó: De manera asincronica Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Ninguno. Investigaciones: Ninguna. Prueba de concepto: No se hizo. Problema solución: Después de hacer el código, se empezó a hacer la documentación, quedaron dudas de que tanto se tenía que hacer. Además en el código Python se cambió un poco los comentarios para mejorarlo en general. Se borró el folder de proyecto, pues ya no necesitaba de interfaz

Sesión 12

  Dia: 19/06/25 Hora de inicio: 13:20 Hora de fin: 16:00 Cantidad de horas trabajadas: 2 horas y 40 min. Problemas encontrados: Al ejecutar el “SIMULADOR DE OPERACIÓN” en Python, call_sp_with_output fallaba al mapear dos valores de salida ( @id y @rc ) con el placeholder generado. Cómo fueron resueltos: Corregí la construcción de placeholders y el SQL string a: python placeholders = ',' .join([ '?' ] * len (params)) sql = f"DECLARE @id INT, @rc INT; EXEC dbo. {name} {placeholders} , @id OUTPUT, @rc OUTPUT; SELECT @id AS salida, @rc AS codigo;" Aseguré que fetchone() devolviera ambos valores correctamente. Dudas: Si centralizar esta lógica en un helper para todos los SP con output multiple. Forma que se trabajó: De manera asincrónica Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Sintaxis de pyodbc para SPs con varios OUTPUT. Investigaciones: Documentación oficial d...

Sesión 11

  Dia: 17/06/25 Hora de inicio: 09:45 Hora de fin: 12:15 Cantidad de horas trabajadas: 2 horas y 30 min. Problemas encontrados: La simulación completa de 160 días tardaba más de 12 minutos, principalmente por los cursores del SP CierreSemanalPlanilla . Cómo fueron resueltos: Implementé un versionado alternativo del SP que reemplaza cursores por operaciones set-based usando CTE y SUM() para cada empleado. Dejé ambas versiones en ramas separadas ( optimize-cierre ) para comparar rendimiento. Dudas: Accidentalmente se usaron cursores que hubo que quitar Forma que se trabajó: Pair programming remoto via Teams con un compañero; documentamos diferencias de tiempos. Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Set-based vs procedural en T-SQL. Investigaciones: Blog de SQLShack: “Replacing cursors with set-based operations”. Ejemplos en StackOverflow de CTE para agregaciones. Prueba de concept...

Sesión 10

  Dia: 14/06/25 Hora de inicio: 15:00 Hora de fin: 17:30 Cantidad de horas trabajadas: 2 horas y 30 min. Problemas encontrados: Al probar el SP InsertarMarcaAsistencia , el cálculo de horas extras normales y dobles no coincidía con el spec: el DATEDIFF(...)/60.0 truncaba minutos. Cómo fueron resueltos: Ajusté la línea sql SET @HorasTrabajadas = DATEDIFF( MINUTE , @inHoraEntrada , @inHoraSalida ) / 60.0 ; a sql SET @HorasTrabajadas = DATEDIFF( SECOND , @inHoraEntrada , @inHoraSalida ) / 3600.0 ; para conservar decimales correctos. Dudas: Si usar ROUND(...,2) tras el cálculo para estandarizar a dos decimales. Forma que se trabajó: Reunión Virtual Discord Breve Problemas de la instalación del software: Ninguno. Problemas de aprendizaje del software: Diferencia entre DATEDIFF(MINUTE) y DATEDIFF(SECOND) para cálculos precisos. Investigaciones: MSDN: “DATEDIFF (Transact-SQL)” en docs.microsoft.com. Prueba de concepto: Creé ...

Sesión 9

  Dia: 13/06/25 Hora de inicio: 10:00 Hora de fin: 12:00 Cantidad de horas trabajadas: 2 horas Problemas encontrados: Al ejecutar el script de inicialización DDL, detecté que algunas tablas con FK a SemanaPlanilla se creaban antes de insertar registros en MesPlanilla , lo que originaba errores “referencia a objeto no existente”. Cómo fueron resueltos: Reordené la sección de “2. TABLAS” para crear primero MesPlanilla , luego SemanaPlanilla , y recién después las tablas que referencian a ellas. Validé en SSMS que ya no salieran errores de dependencia. Dudas: Si vale la pena incluir ON DELETE CASCADE en las FK de planilla para simplificar limpiezas futuras. Forma que se trabajó: De manera asincrónica. stalación del software: Ninguno. Todo funcional Problemas de aprendizaje del software: Familiarizarme con el orden correcto de creación de tablas con claves foráneas circulares. Investigaciones: Documentación de Microsoft: “CREATE TABLE Transa...

Sesion 8

 Día: 12/06/25 Hora de inicio: 09:40 Hora de fin: 13:10 Cantidad de horas trabajadas: 3 horas y 30 minutos Problemas encontrados: Detección de generación de cédulas duplicadas en el XML de catálogo. Marcas de asistencia generadas para empleados sin jornada asignada. Jornadas asignadas que no se aplicaban correctamente desde el viernes. Inserción de empleados estaba limitada a condiciones específicas de fecha. Errores potenciales por sobreescritura de jornadas anteriores al eliminar empleados. Cómo fueron resueltos: Se implementó la función generate_unique_cr_id(existing_ids) para asegurar unicidad de las cédulas generadas. Se agregó validación para solo generar MarcaDeAsistencia si el empleado tiene jornada asignada. Se controló que la jornada asignada el jueves solo comience a aplicarse a partir del viernes. Se modificó la lógica para permitir la inserción de nuevos empleados cualquier día. Se limpió correctamente la estructura jornadas_semana_...

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: 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 d...