#!/usr/bin/env ruby # frozen_string_literal: true require_relative 'drones/lib/dasu_executor' puts "=== VERIFICAR FECHAS DESPUÉS DEL CAMBIO DE ZONA HORARIA ===" puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}" puts "" ps_script = <<~PSCMD.strip $ErrorActionPreference = "Stop" $connString = "Server=localhost;Database=sysdasuten;Integrated Security=true;TrustServerCertificate=yes;" $conn = New-Object System.Data.SqlClient.SqlConnection($connString) $conn.Open() Write-Host "[1] Zona horaria actual del sistema:" $tz = Get-TimeZone Write-Host " ID: $($tz.Id)" Write-Host " DisplayName: $($tz.DisplayName)" Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)" Write-Host "`n[2] Fecha/hora actual:" Write-Host " Get-Date: $(Get-Date)" Write-Host " UTC: $([DateTime]::UtcNow)" Write-Host "`n[3] Última fecha en BonosAfiliado:" $cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT MAX(fecha) as ultima FROM BonosAfiliado", $conn) $ultima = $cmd.ExecuteScalar() Write-Host " MAX(fecha): $ultima" Write-Host "`n[4] Últimos 10 registros (ordenados por fecha):" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT TOP 10 idsolicitud, CONVERT(varchar, fecha, 103) as fecha_ddmmaaaa, codigoafiliado, dependencia, bono, CONVERT(varchar, __tiempo, 103) + ' ' + CONVERT(varchar, __tiempo, 108) as tiempo_completo FROM BonosAfiliado WHERE fecha IS NOT NULL ORDER BY fecha DESC, idsolicitud DESC ", $conn) $adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd) $ds = New-Object System.Data.DataSet $adapter.Fill($ds) if ($ds.Tables[0].Rows.Count -gt 0) { Write-Host " idsol | fecha (dd/mm/aaaa) | afiliado | dep | bono | __tiempo" Write-Host " " + ("-" * 80) $ds.Tables[0].Rows | ForEach-Object { Write-Host " $($_.idsolicitud.ToString().PadLeft(5)) | $($_.fecha_ddmmaaaa) | $($_.codigoafiliado.ToString().PadLeft(5)) | $($_.dependencia.ToString().PadLeft(2)) | $($_.bono) | $($_.tiempo_completo)" } } Write-Host "`n[5] Registros por día (últimos 5 días):" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT TOP 5 CONVERT(varchar, CAST(fecha AS DATE), 103) as dia_ddmmaaaa, COUNT(*) as cantidad, MIN(idsolicitud) as min_id, MAX(idsolicitud) as max_id FROM BonosAfiliado GROUP BY CAST(fecha AS DATE) ORDER BY CAST(fecha AS DATE) DESC ", $conn) $adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd) $ds = New-Object System.Data.DataSet $adapter.Fill($ds) $ds.Tables[0].Rows | ForEach-Object { Write-Host " $($_.dia_ddmmaaaa): $($_.cantidad) registros | IDs: [$($_.min_id) - $($_.max_id)]" } Write-Host "`n[6] Verificando formato de fecha ISO:" $cmd = New-Object System.Data.SqlClient.SqlCommand(" SELECT TOP 3 fecha, CONVERT(varchar, fecha, 120) as formato_iso, __tiempo FROM BonosAfiliado ORDER BY fecha DESC ", $conn) $adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd) $ds = New-Object System.Data.DataSet $adapter.Fill($ds) $ds.Tables[0].Rows | ForEach-Object { Write-Host " fecha=$($_.fecha) | ISO=$($_.formato_iso)" } $conn.Close() PSCMD DasuExecutor.execute_ps_on_dasu(ps_script) puts "\n✅ Verificación completada"