Generar legajos al cambiar d ePropuesta

Buenos días,

Hoy nos informan desde el Área de Alumnos, que anotaron a un alumno en una nueva propuesta, que ya tenia legajo generado (por ser alumno de otra propuesta), y que al ir a la opción Matrícula -> Actualizaciones -> Generar Legajo (siguiendo los pasos) les sale un error: "ERROR Ejecutando SQL: -UCH-5975-UCH-1343-757".
Lo que vemos es que, al legajo que ya tenía el alumno, le generó uno nuevo concatenando al anterior (en vez de reemplazarlo).


Nosotros estamos actualmente en la versión 3.18.0 de Gestión. Revisando el foro, vi en los Parámetros del Sistema la opción "a los alumnos de la propuesta se les genera un número de legajo" (mat_utiliza_legajo), que según lo que entiendo, hace que por cada propuesta del alumno, se le genere un nuevo nro de legajo, es asi?, por lo que tengo 3 consultas para hacerles concretamente:
  1. cambiando ese parámetro del sistema a “a los alumnos de la propuesta no se les genera un número de legajo”, cuando inscribimos un alumno a otra propuesta, mantiene el nro de legajo que ya tiene?
    [/size]
    [/size]2) como arreglo el error de aquellos alumnos que se les quiso generar nuevo legajo y les sale el error: “[/size]ERROR Ejecutando SQL: -UCH-5975-UCH-1343-757[/size]”? (ya que se concatenó el legajo nuevo con el viejo).
    [/size]
    [/size]3) revisando la tabla sga_alumnos, encuentro que:
    [/size]
    [/size] - hay 813 registros con el campo legajo en NULL y son regulares (select * from sga_alumnos where legajo is null and regular = ‘S’:wink:

    • y 497 de esos 813 son regulares y activos (select * from sga_alumnos where legajo is null and regular = ‘S’ and calidad = ‘A’;

    entre ellos, éstos alumnos que tienen problemas en el punto 2). Como arreglo eso?

    Cabe destacar que la opción de personalizar el legajo nosotros la modificamos, pero solamente le agregamos un guión (“-”) entre el nro de inscripción y el nro de legajo:

             //return  "UCH-".$inscripcion.$res['nro_legajo'];   //línea original
     return  "UCH-".$inscripcion."-".$res['nro_legajo'];
    

    Adjunto imagen con el error al Generar Legajos, y reporte de Legajos no generados.

    Quedo atento a la respuesta, saludos!


Error - SIU Gestion - Generar legajos.jpg

Error - SIU Gestion - Generar legajos.png

Reporte - Legajos no generados.pdf (18.2 KB)

Hola Nicolas, el proceso solo genera y asigna legajos a alumnos que NO tienen legajo asignado. Esta operación no tiene la funcionalidad de cambiar un legajo por otro.
¿Estan seguros que esta asignando legajo a alumnos que ya tenian legajo?
¿Podes enviar el log que genera la aplicación cuando corren este proceso y les da ese error?

Hola!

Según los comentarios del Área de Alumnos, si, esos alumnos ya tenían un legajo armado, y al inscribirlos a otra propuesta y luego ir a generar legajos, le concatena el nuevo legajo al que tenía. Adjunto captura del mail enviado dónde especifica el legajo anterior del alumno.

Fijate que en el 1er mensaje adjunte una captura donde decía que el legajo del alumno era: "UCH-1343-757", y luego del proceso de [b]generar legajo[/b], quedó: "UCH-5975-UCH-1343-757".

Por otro lado, donde busco el log que se genera en el error? desde ya muchas gracias!

Error - SIU Gestion - Generar legajos - captura mail.png

Error - SIU Gestion - Generar legajos - captura mail.png

Bien, no es que se actualiza el legajo e la propuesta donde ya tiene legajo, sino que como tienen el parámetro mat_legajo_alumno_unico con el valor El Número de Legajo es el mismo para todas las propuestas en las que se encuentra el alumno, lo que hace el proceso es buscar en otra propuesta donde ese alumno ya tenga legajo, recuperar el legajo y asignar ese legajo en la propuesta que no lo tiene, y aca esta el problema que indicas ya que concatena dos veces ese nro de legajo y asigna.
Haremos unas pruebas y te avisamos lo que suceda.

Respecto al error “ERROR Ejecutando SQL: -UCH-5975-UCH-1343-757”, se da porque al concatenar esos dos nros de legajos genera el nuevo legajo con una longitud mayor a 20 caracteres y alli es donde al intentar grabar ese nro de legajo en la base da el error.

¿Ese alumno estaba en dos o mas propuestas?
Si esta en dos o mas propuestas, tiene en cada propuesta el mismo legajo o tiene diferentes legajos (Por ejemplo en una propuesta el legajo “UCH-5975” y en la otra “UCH-1343-757” )?

3

¿Probaron generar legajo sin esa personalización?
Intenten esto en alguna instalación de test.

Hola,

No, no hemos probado sin el cambio (personalizacion) en un ambiente de desarrollo, en estos días lo probamos y comento. Disculpen la tardanza, es que siempre las urgencias tapan lo importante.

Respondo para que sepan que seguimos en el tema, saludos!

Buenas tardes,

Estuvimos probando cambiar el parámetro del sistema "mat_legajo_alumno_unico" al valor "El Número de Legajo es el mismo para todas las propuestas en las que se encuentra el alumno", y volver a generar un alumno que esta inscripto 3 propuestas, donde en 1 tiene legajo y en las otras no (esta en NULL), y nos sigue haciendo el mismo problema.

Vamos a ocupar una copia de la base real, para probar la generación de legajos de una alumnos inscriptos en mas de 1 propuesta y que en todos tiene valor NULL de legajo (cambiando la funcion que modificamos en <path_guarani>/personalizacion/php/nucleo/matriculas/actualizaciones/generacion_legajos/legajos.php).

2 Preguntas: 
  1. que hacemos con aquellos alumnos que tienen el legajo en NULL en la tabla sga_alumnos? pueden quedar así?
  2. tiene alguna relación la generación de legajos con los requisitos cumplidos del alumno en alguna otra propuesta? ej: si fue exceptuado en una propuesta, se puede anotar a otra?
Estuvimos probando cambiar el parámetro del sistema "mat_legajo_alumno_unico" al valor "El Número de Legajo es el mismo para todas las propuestas en las que se encuentra el alumno", y volver a generar un alumno que esta inscripto 3 propuestas, donde en 1 tiene legajo y en las otras no (esta en NULL), y nos sigue haciendo el mismo problema.
El parámetro debe estar configurado de esa manera. ¿Esto sucede con/sin la personalización?

Para realizar una prueba, cual de los dos casos es el que estan realizando:

  • Parametro “mat_legajo_alumno_unico” esta configurado con: "El Número de Legajo es el mismo para todas las propuestas en las que se encuentra el alumno
  • Un alumno que esta en tres propuestas (P1, P2, P3), en una de ellas tiene legajo (P1) y en las otras dos no (P2 y P3).

Caso 1: En el mismo proceso intentan generar legajo en P2 y P3.
Caso 2: Primero generan legajo en P2 y luego generan legajo en P3.

1) que hacemos con aquellos alumnos que tienen el legajo en NULL en la tabla sga_alumnos? pueden quedar así?
Si, en algun momento deberán generarles legajo, a menos que no quieran hacerlo y que queden sin un legajo.
2) tiene alguna relación la generación de legajos con los requisitos cumplidos del alumno en alguna otra propuesta? ej: si fue exceptuado en una propuesta, se puede anotar a otra?
Que el alumno tenga legajo en una propuesta no tiene ninguna incidencia en otra propuesta. Como tampoco lo tiene los requisitos de ingreso de una propuesta para generar legajo en otra propuesta. Los requisitos de ingreso solo afectan al alumno en esa propuesta.

Hola,

En entorno de  prueba, simulando el caso del alumno anotado en 3 propuestas, 2 sin legajo (NULL) y 1 con legajo (UCH-1343-757), teniendo el parámetro del sistema en "El Número de Legajo es el mismo para todas las propuestas en las que se encuentra el alumno" y quitando la personalización, hice el caso 1:

- Generó un legajo, pero simplemente porque no supera los 20 caracteres. Lo volvió  a concatenar, dejando el nuevo legajo como: UCH-1033UCH-1343-757 (o sea, le agregó la parte del "UCH-1033" al legajo que ya tenía).

No probé el caso 2, creo que haría lo mismo, pero si quieren puedo cargar nuevamente la base y probar el caso 2. Revisé la función en la Base de datos, y analizándola, veo lo siguiente:
//FUNCION
static function get_nuevo_nro_legajo($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion)
	{
		$unico_legajo = toba::db()->quote($unico_legajo);
		$sql = "SELECT f_generar_legajo_alumno($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion) as nro_legajo;";

		$res = guarani_db::consultar_fila($sql);
		return  "UCH-".$inscripcion.$res['nro_legajo'];
	}
1) se busca si esta el parámetro de único legajo en p/todas las propuestas: $unico_legajo = toba::db()->quote($unico_legajo);
2) se genera un nuevo legajo (si no tiene en ninguna otra propuesta) o se copia el que ya tiene en la variable:  $res['nro_legajo']
3) ya sea nuevo o no, se le concatena la cadena "UCH-".$inscripcion al número de legajo.

Obviamente ahi esta el error. No se como es la función original del archivo <path_guarani>/personalizacion/php/nucleo/matriculas/actualizaciones/generacion_legajos/legajos.php, si pudieran pasarmelo, y veo como podemos arreglar ésto para que no pase más.

Puede ser una opción?:
//FUNCION
static function get_nuevo_nro_legajo($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion)
	{
		$unico_legajo = toba::db()->quote($unico_legajo);
		$sql = "SELECT f_generar_legajo_alumno($unico_legajo, $inscripcion, $persona, $propuesta, $ubicacion) as nro_legajo;";

		$res = guarani_db::consultar_fila($sql);

                if( substr($res['nro_legajo'],0,2) == 'UCH'){
                         return  $res['nro_legajo'];
                } else {
                         return  "UCH-".$inscripcion.$res['nro_legajo'];
                }
	}

Adjunto los archivos de la carpeta \php\nucleo\matriculas\actualizaciones\generacion_legajos


generacion_legajos.rar (3.23 KB)