docs & tools: Actualización de informes y scripts de migración DASUTEN
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
# ==========================================================
|
||||
# Verificación específica de BONOS - FENIX vs DASU-SQL4
|
||||
# ==========================================================
|
||||
|
||||
require 'tiny_tds'
|
||||
require 'json'
|
||||
require_relative 'drones/lib/dasu_executor'
|
||||
|
||||
puts "=== VERIFICACIÓN DE BONOS (venta de bonos) ==="
|
||||
puts "Fecha: #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"
|
||||
puts ""
|
||||
|
||||
# ==========================================
|
||||
# 1. FENIX - BonosAfiliado y AutorizacionBonosExcepcion
|
||||
# ==========================================
|
||||
puts "\n[1] FENIX (PRODUCCIÓN) - BonosAfiliado..."
|
||||
|
||||
pass_cmd = `ruby adn/tools/candados/candados.rb get utnlarioja.intranet:monlaricardo 2>/dev/null`.strip
|
||||
sql_user = 'UTNlarioja\\monlaricardo'
|
||||
sql_host = '10.0.10.200'
|
||||
|
||||
client_fenix = TinyTds::Client.new(
|
||||
username: sql_user,
|
||||
password: pass_cmd,
|
||||
host: sql_host,
|
||||
timeout: 600,
|
||||
database: 'sysdasuten'
|
||||
)
|
||||
|
||||
# BonosAfiliado - verificar columna de fecha
|
||||
puts " Buscando columna de fecha en BonosAfiliado..."
|
||||
cols = client_fenix.execute("
|
||||
SELECT COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'BonosAfiliado'
|
||||
AND DATA_TYPE IN ('datetime', 'datetime2', 'date', 'smalldatetime')
|
||||
").to_a
|
||||
|
||||
puts " Columnas fecha encontradas: #{cols.map { |c| "#{c['COLUMN_NAME']} (#{c['DATA_TYPE']})" }.join(', ')}"
|
||||
|
||||
# Usar la primera columna fecha encontrada
|
||||
if cols.any?
|
||||
col_fecha = cols.first['COLUMN_NAME']
|
||||
puts " Usando columna: #{col_fecha}"
|
||||
|
||||
# Última fecha exacta
|
||||
ultima = client_fenix.execute("SELECT MAX(#{col_fecha}) as ultima FROM BonosAfiliado").first['ultima']
|
||||
puts " Última fecha: #{ultima}"
|
||||
|
||||
# Registros desde abril 13
|
||||
count_13 = client_fenix.execute("SELECT COUNT(*) as c FROM BonosAfiliado WHERE #{col_fecha} >= '2026-04-13'").first['c']
|
||||
puts " Registros desde 2026-04-13: #{count_13}"
|
||||
|
||||
# Registros por día desde abril 13
|
||||
puts "\n Registros por día (desde 2026-04-13):"
|
||||
por_dia = client_fenix.execute("
|
||||
SELECT CAST(#{col_fecha} AS DATE) as dia, COUNT(*) as cantidad
|
||||
FROM BonosAfiliado
|
||||
WHERE #{col_fecha} >= '2026-04-13'
|
||||
GROUP BY CAST(#{col_fecha} AS DATE)
|
||||
ORDER BY dia DESC
|
||||
")
|
||||
por_dia.each { |r| puts " #{r['dia']}: #{r['cantidad']} registros" }
|
||||
|
||||
# Últimos 10 registros
|
||||
puts "\n Últimos 10 registros de BonosAfiliado:"
|
||||
ultimos = client_fenix.execute("SELECT TOP 10 * FROM BonosAfiliado ORDER BY #{col_fecha} DESC").to_a
|
||||
ultimos.each_with_index do |r, i|
|
||||
puts " #{i+1}. #{col_fecha}=#{r[col_fecha]} - #{r.select { |k,v| k != col_fecha }.to_a.first(3).map { |k,v| "#{k}: #{v}" }.join(', ')}"
|
||||
end
|
||||
end
|
||||
|
||||
# AutorizacionBonosExcepcion
|
||||
puts "\n[2] FENIX (PRODUCCIÓN) - AutorizacionBonosExcepcion..."
|
||||
|
||||
cols = client_fenix.execute("
|
||||
SELECT COLUMN_NAME, DATA_TYPE
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = 'AutorizacionBonosExcepcion'
|
||||
AND DATA_TYPE IN ('datetime', 'datetime2', 'date', 'smalldatetime')
|
||||
").to_a
|
||||
|
||||
if cols.any?
|
||||
col_fecha = cols.first['COLUMN_NAME']
|
||||
puts " Usando columna: #{col_fecha}"
|
||||
|
||||
ultima = client_fenix.execute("SELECT MAX(#{col_fecha}) as ultima FROM AutorizacionBonosExcepcion").first['ultima']
|
||||
puts " Última fecha: #{ultima}"
|
||||
|
||||
count_13 = client_fenix.execute("SELECT COUNT(*) as c FROM AutorizacionBonosExcepcion WHERE #{col_fecha} >= '2026-04-13'").first['c']
|
||||
puts " Registros desde 2026-04-13: #{count_13}"
|
||||
|
||||
puts "\n Registros por día (desde 2026-04-13):"
|
||||
por_dia = client_fenix.execute("
|
||||
SELECT CAST(#{col_fecha} AS DATE) as dia, COUNT(*) as cantidad
|
||||
FROM AutorizacionBonosExcepcion
|
||||
WHERE #{col_fecha} >= '2026-04-13'
|
||||
GROUP BY CAST(#{col_fecha} AS DATE)
|
||||
ORDER BY dia DESC
|
||||
")
|
||||
por_dia.each { |r| puts " #{r['dia']}: #{r['cantidad']} registros" }
|
||||
|
||||
puts "\n Últimos 10 registros:"
|
||||
ultimos = client_fenix.execute("SELECT TOP 10 * FROM AutorizacionBonosExcepcion ORDER BY #{col_fecha} DESC").to_a
|
||||
ultimos.each_with_index do |r, i|
|
||||
puts " #{i+1}. #{col_fecha}=#{r[col_fecha]} - #{r.to_a.first(5).map { |k,v| "#{k}: #{v}" }.join(', ')}"
|
||||
end
|
||||
end
|
||||
|
||||
client_fenix.close
|
||||
|
||||
# ==========================================
|
||||
# 2. DASU-SQL4 - Mismas consultas
|
||||
# ==========================================
|
||||
puts "\n[3] DASU-SQL4 - BonosAfiliado..."
|
||||
|
||||
ps_script = <<~PSCMD.strip
|
||||
$ErrorActionPreference = "Stop"
|
||||
$JSON_PATH = "C:\\temp\\bonos_dasu_output.json"
|
||||
$null = New-Item -ItemType Directory -Force -Path "C:\\temp"
|
||||
|
||||
$connString = "Server=localhost;Database=sysdasuten;Integrated Security=true;TrustServerCertificate=yes;"
|
||||
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
|
||||
$conn.Open()
|
||||
|
||||
# BonosAfiliado
|
||||
Write-Host " Buscando columna de fecha en BonosAfiliado..."
|
||||
$cmdCol = New-Object System.Data.SqlClient.SqlCommand("SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'BonosAfiliado' AND DATA_TYPE IN ('datetime', 'datetime2', 'date', 'smalldatetime')", $conn)
|
||||
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmdCol)
|
||||
$ds = New-Object System.Data.DataSet
|
||||
$adapter.Fill($ds)
|
||||
$cols = $ds.Tables[0].Rows
|
||||
|
||||
if ($cols.Count -gt 0) {
|
||||
$colFecha = $cols[0].COLUMN_NAME
|
||||
Write-Host " Usando columna: $colFecha"
|
||||
|
||||
# Última fecha
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT MAX([$colFecha]) as ultima FROM [BonosAfiliado]", $conn)
|
||||
$ultima = $cmd.ExecuteScalar()
|
||||
Write-Host " Última fecha: $ultima"
|
||||
|
||||
# Registros desde abril 13
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [BonosAfiliado] WHERE [$colFecha] >= '2026-04-13'", $conn)
|
||||
$count13 = $cmd.ExecuteScalar()
|
||||
Write-Host " Registros desde 2026-04-13: $count13"
|
||||
|
||||
# Por día
|
||||
Write-Host " Registros por día:"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT CAST([$colFecha] AS DATE) as dia, COUNT(*) as cantidad FROM [BonosAfiliado] WHERE [$colFecha] >= '2026-04-13' GROUP BY CAST([$colFecha] AS DATE) ORDER BY dia 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): $($_.cantidad) registros" }
|
||||
|
||||
# Últimos 10
|
||||
Write-Host " Últimos 10 registros:"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT TOP 10 * FROM [BonosAfiliado] ORDER BY [$colFecha] DESC", $conn)
|
||||
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
|
||||
$ds = New-Object System.Data.DataSet
|
||||
$adapter.Fill($ds)
|
||||
for ($i = 0; $i -lt $ds.Tables[0].Rows.Count; $i++) {
|
||||
$row = $ds.Tables[0].Rows[$i]
|
||||
Write-Host " $($i+1). $($colFecha)=$($row.$colFecha)"
|
||||
}
|
||||
}
|
||||
|
||||
# AutorizacionBonosExcepcion
|
||||
Write-Host "`n[4] DASU-SQL4 - AutorizacionBonosExcepcion..."
|
||||
$cmdCol = New-Object System.Data.SqlClient.SqlCommand("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'AutorizacionBonosExcepcion' AND DATA_TYPE IN ('datetime', 'datetime2', 'date', 'smalldatetime')", $conn)
|
||||
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmdCol)
|
||||
$ds = New-Object System.Data.DataSet
|
||||
$adapter.Fill($ds)
|
||||
$cols = $ds.Tables[0].Rows
|
||||
|
||||
if ($cols.Count -gt 0) {
|
||||
$colFecha = $cols[0].COLUMN_NAME
|
||||
Write-Host " Usando columna: $colFecha"
|
||||
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT MAX([$colFecha]) as ultima FROM [AutorizacionBonosExcepcion]", $conn)
|
||||
$ultima = $cmd.ExecuteScalar()
|
||||
Write-Host " Última fecha: $ultima"
|
||||
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT COUNT(*) FROM [AutorizacionBonosExcepcion] WHERE [$colFecha] >= '2026-04-13'", $conn)
|
||||
$count13 = $cmd.ExecuteScalar()
|
||||
Write-Host " Registros desde 2026-04-13: $count13"
|
||||
|
||||
Write-Host " Registros por día:"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT CAST([$colFecha] AS DATE) as dia, COUNT(*) as cantidad FROM [AutorizacionBonosExcepcion] WHERE [$colFecha] >= '2026-04-13' GROUP BY CAST([$colFecha] AS DATE) ORDER BY dia 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): $($_.cantidad) registros" }
|
||||
|
||||
Write-Host " Últimos 10 registros:"
|
||||
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT TOP 10 * FROM [AutorizacionBonosExcepcion] ORDER BY [$colFecha] DESC", $conn)
|
||||
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
|
||||
$ds = New-Object System.Data.DataSet
|
||||
$adapter.Fill($ds)
|
||||
for ($i = 0; $i -lt $ds.Tables[0].Rows.Count; $i++) {
|
||||
$row = $ds.Tables[0].Rows[$i]
|
||||
Write-Host " $($i+1). $($colFecha)=$($row.$colFecha)"
|
||||
}
|
||||
}
|
||||
|
||||
$conn.Close()
|
||||
PSCMD
|
||||
|
||||
DasuExecutor.execute_ps_on_dasu(ps_script)
|
||||
|
||||
puts "\n✅ Verificación completada"
|
||||
Reference in New Issue
Block a user