Agregar sede de UA en certificado_alumno_regular

Hola,

Necesito si me pueden guiar  para que en vez de mostrar la "localidad" de la UA, muestre la [b]sede[/b] del alumno, de esta manera podemos dejar como finalizado el certificado de alumno regular.

Por lo que vi, se podría cambiar en el archivo "controlador.php" en la línea 471: "$parametros['parametros']['localidad'] = guarani::ua()->get_localidad_institucion();" por algo así: "$parametros['parametros']['localidad'] = $carrera_activa['sede'];

teniendo en cuenta esto en “src/pers/udc/operaciones/solicitud_certificado/controlador.php”:
linea 448: $carrera_activa = guarani::persona()->get_info_carrera_activa();

Ésto ya lo probé igualmente, pero no salió, se genera el PDF pero con ese campo vacío (porque evidentemente no lo esta buscando en la base de datos). La verdad que no se bien por donde empezar para poder cambiar la SEDE en el certificado de alumno regular, espero una guia o posibles soluciones, desde ya muchas gracias!

Hola Guillermo, lamentablemente guarani::ua()->get_localidad_institucion() termina llamando al procedure sp_unidadAcademica el cual no trae datos sobre la sede.

Ahora voy a armar una query para que la agreguen, la cual traerá las sedes de una determinada UA.

saludos.

Hola Guillermo, podes agregar la siguiente query en tus personalizaciones:

En el archivo src/pers/udc/modelo/datos/db/unidad_academica.php agrega la siguiente función:


	/**
	 * parametros: _ua
	 * cache: memoria
	 * filas: n
	 */
	function sedes_by_ua($parametros) 
	{
		$sql = "SELECT sga_sedes.sede, sga_sedes.nombre
				FROM sga_sedes
				JOIN sga_sedes_ua ON (sga_sedes.sede = sga_sedes_ua.sede)
				WHERE sga_sedes_ua.unidad_academica = {$parametros['_ua']}";
				
		return kernel::db()->consultar($sql);
	}

luego corre el siguiente comando sobre el directorio raíz de 3W: bin/guarani generar_catalogo .

Con esto podes obtener las Sedes de la UA de la siguiente forma: $sedes = catalogo::consultar(‘unidad_academica’, ‘sedes_by_ua’);

Espero que te sirva!!!

saludos.

Hola,

Tu ejemplo me guió bastante. Le hice una modificación: En tu ejemplo, la consulta devuelve todas las sedes de la UA (quizas me exprese mal en el Asunto del mensaje), yo necesito la [b]sede del alumno[/b].
Igualmente, realicé los pasos que pusiste, aunque en el modelo [b]alumno[/b] (src/pers/udc/modelo/datos/db/alumno.php), agregando la función sede_by_legajo():

    /**
 * parametros: legajo
 * cache: memoria
 * filas: n
 */
function sede_by_legajo($parametros) 
{		
	$sql = "SELECT sga_sedes.nombre
			FROM sga_alumnos, sga_sedes
			WHERE 
			sga_alumnos.sede = sga_sedes.sede AND
			sga_alumnos.legajo = {$parametros['legajo']}";  //el sql lo probé con un nro de legajo con el SQLEditor y funciona
	
	return kernel::db()->consultar($sql);
	
}

Ejecuto el comando PathProyecto3W/bin ./guarani generar_catalogo des01  (des01 es nuestro acceso) => devuelve OK.

y en el archivo personalizado "src/pers/udc/operaciones/solicitud_certificado/controlador.php" agrego las líneas:

                    $sede = catalogo::consultar('alumno','sede_by_legajo',$parametros);
		if(!empty($sede)){
			$parametros['parametros']['localidad'] = $sede;
		}else{
			$parametros['parametros']['localidad'] = guarani::ua()->get_localidad_institucion()."_".$sede."_";  //el "_$sede_" es para ver si agrega algo
		}

 y a pesar de todas las pruebas, me genera el PDF con la palabra "Array" como si la sacara de la base de datos. Adjunto captura de pantalla del certificado.

Realmente no se cual es el error. Supuse que la función del archivo [b]alumno.php[/b] no estaba funcionando con el legajo como parametro, asi que al $sql le agregue un nro de legajo válido, y me sale el mismo resultado.

También probé solo ejecutando el $sql en el [b]controlador.php[/b], como para hacer la consulta ahí directamente, sin embargo queda la variable vacía en el PDF.

Espero alguna idea, saludos! 

udc.rar (131 KB)

Hola Guillermo, claro, te esta devolviendo un array:

La función kernel::db()->consultar($sql); te devuelve un array multidimensional, si el alumno tiene dos sedes te va a devolver algo como lo siguiente:


array(
    array('nombre' => 'Sede 1'),
    array('nombre' => 'Sede 2'),
)

Si sabes que solo te va a devolver una fila, usa mejor la función kernel::db()->consultar_fila($sql);, la cual te va a devolver algo como sigue:

array('nombre' => 'Sede 1')

saludos.