Buscar en TODAS las actas relacionadas con el docente

Me piden personalizar la búsqueda que ya existe en la operación de carga de notas de manera que:

  1. También busque por número de documento

  2. Busque primero en el acta actual, y de no encontrar coincidencias, busque en todas las actas del docente de las comisiones que sean de la misma materia, o compartan aula con la materia del acta actual y que en caso de encontrar coincidencias permita decidir cambiar de acta.

Para el punto 1) ya me arreglarè solo… el punto 2) estaría buenisimo un poco de asistencia.

La búsqueda por nombre y número de documento la resolví fácilmente… Solo personalicé el sql de la búsqueda de alumnos:

function busqueda_alumno($parametros)
{
    $terminos = explode(' ', str_replace('  ', ' ', strtolower($parametros['term'])));
    $term = array();
    $term_sin_car_esp = array();
    foreach ($terminos as &$termino) {
        $term[] = kernel::db()->quote_like($termino, '%', '%');
        $term_sin_car_esp[] = kernel::db()->quote_like(caracteres_especiales::limpiar($termino), '%', '%');
    }
	
	$sql = "
		SELECT 
			c.acta_regular, c.folio_regular, c.renglon_regular, p.apellido || ', ' || p.nombres
		FROM 
			sga_curs_pendiente as c,
			sga_alumnos as a, 
			sga_personas as p
		WHERE c.comision = {$parametros['comision']}
				AND a.unidad_academica = c.unidad_academica
				AND a.carrera = c.carrera
				AND a.legajo = c.legajo
				AND p.unidad_academica = a.unidad_academica
				AND p.nro_inscripcion = a.nro_inscripcion
				AND (";
    for($i=0; $i<count($term); $i++) {
        $sql .= ($i>0?"AND ":"")."((LOWER(p.apellido) LIKE $term[$i] OR LOWER(p.apellido) LIKE $term_sin_car_esp[$i]) ";
        $sql .= "OR (LOWER(p.nombres) LIKE $term[$i] OR LOWER(p.nombres) LIKE $term_sin_car_esp[$i]) ";
        $sql .= "OR (LOWER(p.nro_documento) LIKE $term[$i] OR LOWER(p.nro_documento) LIKE $term_sin_car_esp[$i]))";
    }
    $sql .= ")";
	return kernel::db()->consultar($sql, db::FETCH_NUM);
}

Básicamente ahora permite buscar más de una palabra a la vez y busca en apellido, nombres y nro_documento en vez de solamente por apellido.
Seguro que si lo pienso más se puede optimizar un poco el SQL pero de momento quedará así…

Me queda pendiente lo complicado… buscar en varias actas en simultáneo y dar la posibilidad de cargar al otro acta “on the fly” :smiley:

Hola Diego, si vas a cargar notas de alumnos a un acta, porque buscar en actas de diferentes materias?
El docente cuando va a cargar las notas, sabe para que materia/comision es esa nota no?
¿O es que por cada materia tienen muchas comisiones y el docente debe buscar en que comisiones que esta el alumno?

Para recuperar todas las comisiones de la misma materia en el mismo periodo lectivo que la comision que tenes seleccionada, a esa consulta deberias sacale la condicion del join por comision y agregarle:

SELECT sga_actas_cursado.unidad_academica, sga_actas_cursado.acta, sga_curs_pendiente.comision, …

FROM sga_actas_cursado …

WHERE sga_actas_cursado.unidad_academica = sga_curs_pendiente.unidad_academica
AND sga_actas_cursado.acta = sga_curs_pendiente.acta_regular
AND sga_curs_pendiente.comision IN (
SELECT dc.comision
FROM sga_comisiones as c1, sga_comisiones as c2 , sga_docentes_com as dc
WHERE c1.comision = {$parametros[‘comision’]}
AND c2.unidad_academica = c1.unidad_academica
AND c2.materia = c1.materia
AND c2.periodo_lectivo = c1.periodo_lectivo
AND dc.comision = c2.comision
AND dc.legajo = {$parametros[‘legajo’]} )

{$parametros[‘legajo’]} → Se refiere al legajo del docente. Es un dato que lo tenes en la sesion.

Básicamente, algunas cátedras (las que se dictan a distancia) en un mismo día se evalúan n comisiones diferentes. Todas esas comisiones tienen asignado minimo un docente coordinador que es el mismo en todas y un segundo docente que es el que está a cargo durante todo el período lectivo.

Una vez tomadas las evaluaciones, mientras varios docentes corrigen… la carga y entrega de notas (que se hace en el momento porque son materias de promoción obligatoria y el examen es casi un final) queda a cargo de un único docente (el coordinador que es el que tiene todas las comisiones visibles). En este caso, es que quiero que directamente buscando por dni, apellido o nombre se pase directamente a la carga de la nota de dicho alumno. pero el alumno puede estar en cualquier comisión.

En cuanto a que el código de materia puede no ser el mismo, se debe a que entre carreras y planes el código de materia puede variar pero ser comisiones que comparten aula (y en consecuencia docente).

¿O es que por cada materia tienen muchas comisiones y el docente debe buscar en que comisiones que esta el alumno?

Sería más un SI a tu última pregunta.

Bueno, este tema ya está resuelto. La solución quedó subida al svn del siu. (rev 3681)