Estabamos teniendo un problema a la hora de rectificar un acta de examen.
En particular, nos decia que el alumno al que le estabamos rectificando la nota no tenia diferencias en la nota entre el acta original y la rectificada.
Tanto en el sistema como en la base nos mostraba que si habia esa diferencia (en el acta original estaba como ausente y en la rectificativa como aprobado).
Revisando un poco el codigo encontre que en el archivo “cn_ent_cerrar_acta_examen.php” que esta en “php/nucleo/examenes/actas/cerrar_acta” en la linea 93 habia un filtro bastante sospechoso:
Ese filtro pertenece a la funcion “validar_datos” que, justamente, era la funcion donde el log me mostraba que saltaba el error.
La cosa es que, con ese filtro, me traia todas las actas en existencia y, la que usaba para validar dependia del azar.
Ademas, la funcion no contemplaba la existencia de mas de un alumno en el acta rectificativa.
Asique le agregue un for para que recorra todos los alumnos.
La funcion quedo definida de esta forma:
function validar_datos($mesa_examen, $alumnos, $datos_acta)
{
$this->validar_acta_vacia($alumnos);
$this->validar_campos_completados($alumnos);
$this->validar_notas_cargadas($alumnos);
if ($datos_acta['tipo_acta'] == acta::tipo_rectificativa) {
foreach ($alumnos as $alumno) {
$acta_original = $datos_acta['acta_referencia'];
$acta_rectificativa = toba::db()->quote($datos_acta['id_acta']);
$filtro = "vw_actas.llamado_mesa = $mesa_examen and vw_actas.alumno = ".$alumno['alumno'] . " and vw_actas.estado <> 'B' order by vw_actas.id_acta desc";
$detalles_acta_original = toba::consulta_php('co_actas')->get_detalles_ultima_rectificacion_acta($acta_original, $filtro);
$this->validar_cambios_rectificativa($alumnos, $detalles_acta_original);
}
}
$this->validar_inscripciones_pendientes($mesa_examen);
$this->validar_acta_impresa($datos_acta);
if ($this->hay_errores()) {
throw guarani::error($this->errores);
}
}
Con esto se solucionaron los problemas y pudimos trabajar sin indicios de errores hasta el momento.
Quería consultarles porque estamos teniendo este mismo error de hace años, al querer cerrar un acta rectificativa de examen nos salta un error de que hay estudiantes en el acta que no tienen diferencias con el acta original. En el acta original el estudiante tiene Ausente y el la rectificativa tiene nota.
Recién hicimos un caso de prueba, rectificamos un acta de examen indicando a un alumno que en el acta original estaba ausente y aquí le pusimos nota y resultado aprobado.
El sistema permitió cerrarla sin inconvenientes.
En el acta original, el alumno en cuestión estaba inscripto en la mesa? o lo agregaron desde la solapa de “otros alumnos”?
De casualidad tienen montada alguna personalización que toque la función de “validar datos”?
Vamos a ver con los técnicos si se puede armar una consulta a la base para ver por qué el sistema no detecta los cambios.
La estudiante estaba inscripta en la mesa, no la agregamos al acta directamente.
No es la única estudiante en el acta original, si en la rectificativa.
No tenemos ninguna personalización.
No es la primera vez que cambiamos un ausente por una nota en una rectificativa, pero es la primera vez que lo hacemos después de actualizar a la versión que estamos ahora del sistema.
Por favor generen un GDS referenciando a este foro y adjunten en el mismo los documentados de ambas actas (la original y la rectificativa), así podemos compararlos.