5. Generación de reportes
Anterior | Capítulo 3. Registro de progreso en un colegio colombiano | Siguiente

## 5. Generación de reportes

Comúnmente en un colegio se generan reportes para padres al finalizar cada periodo y al finalizar el año. Esporádicamente podría requerirse un certificado de calificaciones de un año anterior (con información de cierre de año). Labores que se realizan con el programa reporte y scripts que asisten su utilización.

En el directorio reporte/2012 de la plantilla generada quedará un script y archivos para generar reportes periódicos en LaTeX. En el resto de esta sección se presenta como se generarían reportes empleado estas herramientas. Puede modificarlas de acuerdo a los requerimientos de su institución o si lo requiere puede crear un formato completamente diferente (por ejemplo en DocBook o HTML).

### 5.1. Modificaciones a las clases para LaTeX

Los formatos que sugerimos para registros valorativos de periodos (ver el presentado al comienzo del capítulo Sección 2, “Planeando el uso de sigue”) y finales se basan en clases para LaTeX:

`periodo.cls`

  que es empleada para registros valorativos de periodos,

`final.cls`

  que es empleada para registros valorativos de final de año y

`regval.cls`

  que es una clase común empleada por los dos primeros.

Entre las características de estas clases están:

- Generan PostScript para imprimir en papel tamaño oficio.

- Incluye datos de la institución (nombre, slogan, rector(a)).

- Incluye grado, periodo, moderador del grado, nombre de estudiante y observaciones.

- Incluye valoraciones por área y por indicador (en el caso del registro final suponemos que sólo se incluyen indicadores pendientes).

- Cuentan con espacio para la firma del moderador del grupo y el/la rector(a).

Modifíquelas de acuerdo a sus requerimientos, por ejemplo puede comenzar modificando el nombre de la institución, el eslogan y el nombre del rector en la clase `regval.cls`. Con algo de experiencia con LaTeX, con la herramienta reporte, y eventualmente modificando el script imprep.sh podrá adaptarla mucho más para su institución.

### 5.2. Reporte al final de un periodo

Una vez se han valorado todos los indicadores de un periodo pueden generarse reportes de un estudiante o de un grado.

Puede generar el reporte de un estudiante (digamos `robcar` de primero) con la siguiente secuencia de instrucciones (desde el directorio base):

    cd reporte/2012
    ../imprep.sh bprimaria/g1 p2012-1 ../../estudiante/1980/robcar/ > robcar-2012-1.tex

con lo cual creará el archivo TeX `robcar-2012-1.tex` que podrá procesar para obtener un PostScript (`robcar-2012-1.ps`) con:

    latex robcar-2012-1.tex
    dvips -t legal -o robcar-2012-1.ps robcar-2012-1.dvi

e imprimir el PostScript con:

    lpr robcar-2012-1.ps

Si desea especificar una fecha para el reporte indíquela como cuarto parámetro por ejemplo:

    cd reporte/2012
    ../imprep.sh bprimaria/g1 p2012-1 ../../estudiante/1980/robcar/ 10/3/2012 > robcar-2012-1.tex

Si en lugar de generar un archivo LaTeX desea generar XML (para ver la información disponible) puede emplear:

    cd reporte/2012
    XML=1 ../imprep.sh bprimaria/g1 p2012-1 ../../estudiante/1980/robcar/

Para generar los reportes de un grado (digamos `bprimaria/g1`) desde el directorio base ejecute:

    cd reporte/2012
    ../imprep.sh bprimaria/g1 p2012-1

con lo cual generará un reporte en TeX de cada estudiante del grado `bprimaria/g1` en el directorio `/tmp/impresion` con nombres como `/tmp/impresion/repg1-1.tex`, `/tmp/impresion/repg1-2.tex` y así sucesivamente (uno por cada estudiante del grado). En caso de generar un grado, si lo requiere, puede especificar una fecha como tercer parámetro. Para imprimirlos todos puede emplear un script como genps.sh (disponible en el directorio `reporte`) que genera PostScript de cada archivo con extensión `.tex` del directorio `/tmp/impresion`.

#### 5.2.1. Computo de promedios

Los reportes de la plantilla creada por sigue-colegio.sh, emplean un programa escrito en lenguaje `prom` (ver intprom(1)) para calcular promedios por área. Tal programa incluye unas reglas genéricas que pueden modificarse fácilmente. Las reglas para calcular promedios por área periódicamente está en el archivo `periodo.prom` del directorio de reportes, el contenido de este archivo es:

    /* Calcula 'promedio' con base en valoraciones de indicadores (E,B o I).
       Si más del 30% de los indicadores son I el promedio es deficiente.
       Si más del 10% de los indicadores son I el promedio es insuficiente.
       Si no hay indicadores I y el 90% o más son E el promedio es excelente.
       Si no hay indicadores I y entre el 70% (inclusive) y el 90% son E
       el promedio es sobresaliente.
       En el resto de casos el promedio es aceptable.
       Comportamiento es caso especial.

       Dominio público. 2003.
    */

    aserción(ejecutor=="reporte");

    numi=0;
    numb=0;
    nume=0;
    tot=0.0;

    si (id=="Comportamiento") {
            si (val_id[0]=="Comportamiento.Disciplina") {
                    vdis=val[0];
                    vcond=val[1];
            }
            sino {
                    vcond=val[0];
                    vdis=val[1];
            }
            si (vdis=="E" && vcond=="E") {
                    retorna "Excelente";
            }
            si (vdis=="B" && vcond=="E") {
                    retorna "Sobresaliente";
            }
            si (vcond=="B" || vcond=="E") {
                    retorna "Aceptable";
            }
            retorna "Insuficiente";
    }

    max=tamaño(val);
    i=0;
    mientras (i<max) {
    	si (val[i]=="E") {
    		nume=nume+1;
    	}
    	si (val[i]=="B") {
    		numb=numb+1;
    	}
    	si (val[i]=="I") {
    		numi=numi+1;
    	}
    	i=i+1;
    }
    tot=numi+numb+nume;

    si (tot==0) {
    	mensaje("Error calculando promedio: Faltan calificaciones\n");
    	retorna " ";
    }
    pi=numi/tot;
    pb=numb/tot;
    pe=nume/tot;

    si (pi>0.3) {
    	retorna "Deficiente";
    }
    si (pi>0.1) {
    	retorna "Insuficiente";
    }
    si (numi==0.0 && pe>=0.9) {
    	retorna "Excelente";
    }
    si (numi==0.0 && pe>=0.7) {
    	retorna "Sobresaliente";
    }
    retorna "Aceptable";

Este programa es ejecutado por reporte, el cual entre otras (ver reporte(1)) pasa el vector `val` con las valoraciones de los indicadores de todas las asignaturas del área. Note que este programa trata el área Comportamiento de manera especial, para el resto de áreas cuenta la frecuencia de valoraciones excelente, las de bien y las de insuficiente y con base en los porcentajes de cada una devuelve una valoración para el área.

Cuando modifique o haga programas para calcular promedios puede resultarle de utilidad mostrar información de depuración por error estándar, por ejemplo:

      mensaje("El valor de a es" a "y el de b es " b);

También podrá verificar los tipos de su programa prom (suponiendo que retornan un dato de tipo `cadena`) con:

      intprom -C cadena -i periodo.prom

O antes de usar sus reglas para calcular promedios con reporte puede probar con valores inicializados por usted en un prologo (lo cual típicamente sería función de reporte) por ejemplo:

    intprom -prologo "ejecutor=\"reporte\"; val[0]=\"E\"; val[1]=\"B\";" periodo.prom

### 5.3. Reporte al final de un año

Al concluir un año de acuerdo al decreto 230 de 2002 deben computarse promedios por área. Para esto se sugiere usar un nuevo periodo (por ejemplo `p2012-5`) en el cual se agregan valoraciones finales a los archivos de progreso de cada asignatura de cada estudiante, así como unas reglas para computar los promedios por asignatura y unas reglas para computar promedios de área a partir de promedios en asignaturas (ver Sección 5.2.1, “Computo de promedios”) .

| Aviso
En los archivos del plan de estudio, no deben agregarse indicadores de logro nuevos en el periodo añadido para reportes finales.

Para insertar los promedios en los archivos de progreso de cada asignatura puede emplearse la herramienta iniperiodo, por ejemplo así:

    cd planest/2012
    iniperiodo -anota "Fallas:0;Observaciones:" -tipoval Indicador \
      -prom ../../reporte/2012/asig-final.prom -prom_rango "p2012-1:p2012-4" \
      -norec "Recuperable;no" -p p2012-5 -pendiente "I" col.planest

o más breve empleando el script planest/inifinal.sh:

    cd planest/2012
    ../inifinal.sh 2012

Con esto se calculan promedios de las valoraciones más recientes de todos los indicadores valorados entre los periodos p2012-1 y p2012-4, las reglas para promediar están en `../../reporte/2012/asig-final.prom` y los promedios se agregan en cada asignatura en el periodo p2012-5.

Antes de modificar los archivos de progreso, puede experimentar el computo sin agregar valoraciones a los archivos empleando la opción `-noescribir` de iniperiodo (eventualmente junto con las ayudas sugeridas en la sección anterior para depurar programas `prom`). En caso de requerir sobreescribir promedios con reglas nuevas puede emplear la opción `-remplazar`.

Para generar reportes finales también puede usar el script imprep.sh antes presentado, por ejemplo:

    cd reporte/2012
    ../imprep.sh bprimaria/g1 p2012-5

al generar para el periodo p2012-5, este script usará `area-final.prom` para computar promedios con base en las valoraciones finales por asignatura[7]. Este script también empleará para el último periodo la clase de LaTeX `final.cls`[8]

[7] A diferencia de `asig-final.prom` que realiza promedios sobre valoraciones de indicadores del periodo.

[8] En el caso de periodos, `imprep.sh` emplea la clase `periodo.cls`.

Anterior | Subir | Siguiente
4. Administración de la información del colegio | Inicio | 6. Interfaz PHP para profesores