Paso a detallar un ejemplo para que se entienda el caso, cuando se crea una mesa, y se pone una fecha y hora
Se guarda correctamnete en el sistema.
Lo mismo con las inscripciones a examen. (es decir en base se guardan con las fechas correctas)
Pero para inscribirse a la mesa lo toma como está desfasado 3 horas. No lo deja inscribir si faltan tres horas para la mesa y los comprobantes salen con tres horas de diferencia.
paso adjunto como está en la base y como se visualiza en el guarani.
Tengo todo en docker, cada uno tiene bien configurado el huso horario a Argentina/BuenosAires
corroboro dentro de cada docker y están bien, tanto el jasper como los guarani como el postgres.
no se si guaraní tiene otra configuración interna en donde tome un timezone, porque los convierte?
alguno se le puede ocurrir qeu nos pueden estar pasando?
Perdón por la demora, se me había traspapelado el tema
veo en el log que cuando trae el dato de autogestión lo trae con la hora+3
envío log al momento de hacerlo por autogestion (hace lo mismo en gestión, suma +3)
foto de como sale el comprobante y como está en la base.
Al traerlos en las consultas desde gestión y autogestión con +3 hace que no pueda darse de baja en las inscripciones a las mesas si tiene
mas de tres horas de diferencia porque toma como que la mesa ya pasó.
Ya revisamos la configuración de timezone tanto del docker de postgres, tanto como el de gestión y el de autogestión y el de japer, están todos en BsAs Argentina. El servidor debian que tiene los docker también, ya no sabemos donde revisar, jaja
Espero su ayuda, la semana que viene hay mesas y va a ser todo un problema si no podemos remediar esto. Millones de gracias
Por favor también limpien cache de autogestión (bin/guarani limpiar_cache) y envíen los log de la aplicación al ingresar al reporte “Mis inscripciones” de ese alumno
Viendo en los logs observo que viene mal desde Postgres:
-- CATALOGO: inscripcion_examen/info_comprobante_inscripcion | cache [false] - tipo [no]
Array
(
[parametros] => Array
(
[inscripcion] => '945405'
)
[metadata] => Array
(
[parametros] => Array
(
[0] => inscripcion
)
[cache] => no
[filas] => n
)
[force_cache] => Array
(
)
)
-- SQL -----------------------------------------------------------------------
SELECT
sga_propuestas.nombre as propuesta_nombre,
sga_propuestas.codigo as propuesta,
vw_personas.apellido || ' ' || vw_personas.nombres as alumno_nombre,
vw_personas.tipo_nro_documento as identificacion,
sga_alumnos.legajo as legajo,
sga_instancias.nombre as instancia_nombre,
sga_elementos.codigo as actividad_codigo,
sga_elementos_plan.nombre as actividad_nombre,
sga_elementos_plan.nombre_abreviado as actividad_nombre_abreviado,
vw_mesas_examen.anio_academico as anio_academico,
vw_mesas_examen.turno_examen_nombre as turno_examen_nombre,
vw_mesas_examen.llamado_nombre as llamado_nombre,
vw_mesas_examen.mesa_examen_nombre as mesa_examen_nombre,
sga_inscripciones_estados.nombre as estado_inscripcion,
to_char(sga_insc_examen.fecha_inscripcion, 'DD/MM/YYYY HH24:MI') as fecha_inscripcion,
sga_insc_examen.nro_transaccion as nro_transaccion,
to_char(vw_mesas_examen.mesa_examen_fecha, 'DD/MM/YYYY') as fecha_mesa_examen,
to_char(date '2001-01-01' + vw_mesas_examen.mesa_examen_hora_inicio, 'HH24:MI') as hora_inicio,
to_char(date '2001-01-01' + vw_mesas_examen.mesa_examen_hora_finalizacion, 'HH24:MI') as hora_finalizacion,
sga_catedras.nombre as catedra_nombre,
sga_ubicaciones.nombre as ubicacion_nombre,
f_espacios_llamado_mesa(vw_mesas_examen.llamado_mesa, 1) as espacio_nombre
FROM
sga_insc_examen
JOIN sga_alumnos ON sga_alumnos.alumno = sga_insc_examen.alumno
JOIN vw_personas ON vw_personas.persona = sga_alumnos.persona
JOIN sga_propuestas ON sga_propuestas.propuesta = sga_alumnos.propuesta
JOIN vw_mesas_examen ON vw_mesas_examen.llamado_mesa = sga_insc_examen.llamado_mesa
JOIN sga_elementos ON sga_elementos.elemento = vw_mesas_examen.mesa_examen_elemento
JOIN sga_elementos_revision ON sga_elementos_revision.elemento = sga_elementos.elemento
JOIN sga_elementos_plan ON (sga_elementos_plan.plan_version = sga_insc_examen.plan_version AND sga_elementos_plan.elemento_revision = sga_elementos_revision.elemento_revision)
JOIN sga_ubicaciones ON sga_ubicaciones.ubicacion = vw_mesas_examen.mesa_examen_ubicacion
JOIN sga_instancias ON sga_instancias.instancia = sga_insc_examen.instancia
JOIN sga_inscripciones_estados ON sga_inscripciones_estados.estado = sga_insc_examen.estado
LEFT JOIN sga_catedras ON sga_catedras.catedra = vw_mesas_examen.mesa_examen_catedra
WHERE
sga_insc_examen.inscripcion = '945405'
-- DATOS ---------------------------------------------------------------------
Array
(
[propuesta_nombre] => Licenciatura en Enfermer\EDa
[propuesta] => 301
[alumno_nombre] => Alt Cristian Marcelo
[identificacion] => DNI 36273712
[legajo] => 915170933010
[instancia_nombre] => Trabajo Final / Tesina
[actividad_codigo] => 209-00031
[actividad_nombre] => TRABAJO FINAL
[actividad_nombre_abreviado] => TRABAJO FINAL
[anio_academico] => 2021
[turno_examen_nombre] => TRABAJO FINAL/PRACT. EN TERRENO
[llamado_nombre] => TRABAJO FINAL/PRACT. EN TERRENO
[mesa_examen_nombre] => TF Enf.
[estado_inscripcion] => Aceptada
[fecha_inscripcion] => 01/10/2021 11:58
[nro_transaccion] => 1558787
[fecha_mesa_examen] => 01/10/2021
[hora_inicio] => 12:30
[hora_finalizacion] => 20:00
[catedra_nombre] =>
[ubicacion_nombre] => FCSA-CdelU
[espacio_nombre] =>
)
¿que te devuelven la siguiente query?
SELECT fecha_inscripcion, to_char(sga_insc_examen.fecha_inscripcion, 'DD/MM/YYYY HH24:MI') as fecha_inscripcion_formateada FROM sga_insc_examen WHERE sga_insc_examen.inscripcion = '945405';
Puede ser que la función to_char de Postgres cambie la hora, revisa también la anterior respuesta que te envié.
Hola Leonel, como estas, te cuento que hcie lo que me decis, reinicié apache, compilé
y nada, sigue saliendo en el comprobante de inscripción la hora de la base + 3 horas.
Viendo en detalle noto algo extraño, la fecha_inscripcion te viene de la siguiente manera “2021-10-01 08:58:12.132 -0300”, en mi caso viene así “2021-04-27 22:29:33.112419-03” (-03 y sin espacio).
¿que tipo de dato te dice que es la columna fecha_inscripcion de la tabla sga_insc_examen? En mi caso dice “timestamp with time zone”.
¿si generas una nueva inscripción con el cambio que te pase como se guarda la fecha_inscripcion?
el error lo tenemos en el ambiente de producción y ese es el tema.
en otro ambiente que está con la copia de la base de producción no tengo el error de hora, y el campo está configurado igual
y sin embargo si trae la hora bien.
Para mi es a otro nivel el problema. pero no lo encuentro.
el php.ini está fijado el date.timezone= America/Argentina/Buenos_Aires
The “timestamp” data type ignores the offset (‘+05:00’) from the original value.
The “timestamptz” data type takes into account the offset (‘+05:00’) from the original value.
La pregunta es ¿como se te creo con ese tipo? ¿ustedes lo cambiaron en algún momento? ¿en el ambiente que te funciona bien que tipo te devuelve?
Hola Leonel, el tema terminó siendo un tema de configuración
cuando se creaba el docker de postgres, se pasaba por parámetro la configuración del postgresql.conf
desde el adm de bases de datos figuraba la configuración del timezone bien, pero después de tanta vuelta, entré dentro del docker de postgres y revisé la configuración del postgresql.conf, descubrí que las inserciones hechas al momento de crear el contenedor no figuraban. No tenía el cambio de timezone y otras cosas
lo acomodé y quedó funcionando. Lo único es que tuvimo que modificar todas las mesas creadas porque las cambio a -3 horas jaja
pero bueno fue el mal menor
Saludos!