Personalizar certificado constancia - g311

Buenos días.
Estoy tratando de personalizar un certificado, y quiero tomar como base el de materias desaprobadas, pero no encuentro donde esta el sql de las materias, porque no esta en co_constancias, ni en las vistas. De donde toma el sql de consulta?
La idea después seria hacer un analítico completo, tomando en cuenta los exámenes, cursadas, equivalencias… alguna sugerencia para poder empezar con esto?
Desde ya gracias.

Hola Rocío,
con respecto a la plantilla que señalás: ConstanciaActividadesDesaprobadas.jrxml, la sql de materias se encuentra definida en un subdataset de la misma, identificado como: actividades_alumno. Si abrís el archivo con el iReports vas a poder visualizarlo en el menú de la izquierda y acceder a la query definida para el mismo. En este caso, la query principal del jrxml trae los datos del alumno, utilizados en el encabezado, pie de página etc, y se define adicionalmente otro conjunto de datos, dependiente de uno de esos parámetros, que obtiene el listado de actividades, a partir de la sql:


                       SELECT COALESCE(p.actividad_codigo || ' - ', '') || p.actividad_nombre as actividad_descr,
                                         p.fecha,
                                         p.nota || ' (' || p.nota_descripcion || ')' as nota_completa,
                                         p.origen as origen,
                                         p.tipo,
                                         p.actividad_documento,
                                         p.folio_fisico as folio_fisico
                        FROM
                                        f_certificado_actividades($P{alumno},'R','T','T') as p;

donde $P{alumno} es un parámetro pasado al reporte.
Otro ejemplo que puede servirte para lo que comentás, es el certificado TED1e.jrxml.

Te dejo un link a la wiki donde tenés una introducción para personalizar impresiones en jasper y las estructuras que se utilizaron para definir los certificados del core del sistema.
Recuerden siempre generar plantillas propias incluídas en su directorio de personalizaciones.

Cualquier otra duda nos consultan!
Saludos,
Gabriela.

Que bien Gabriela! muchísimas gracias!
Ahí lo vi, no me había dado cuenta del tamborcito en el jasper…
Estaba mirando que la clave esta en la función " f_certificado_actividades" ya que el primer parámetro indica el resultado, si se toman las aprobadas “A”, desaprobadas “R”, o todas “T”… ademas veo que la función me devuelve otros datos que puedo aprovechar como el folio físico, rebien.
Ahora voy a seguir mirándolo, pero por lo que veo si quisiera traer todas las actividades de los alumnos, tanto las cursadas,las promos y examenes, debería de personalizar esta función no?

Hola Rocío,
la función f_certificado_actividades que, como decís, permite especificarle tanto el alumno, como el resultado y el origen de la actividad (promoción, resolución, examen etc) y plan, ya te trae todas las actividades aprobadas/desaprobadas por el alumno, sea cual fuere su origen, según cómo especifiques dicho parámetro. Si te fijás en la definición de esa función utiliza la vista vw_hist_academica. Esta es la que se utiliza en los certificados estilo analítico (como TED1e, o Certificado de Actividades Rendidas).
Para las cursadas podés utilizar la vista vw_regularidades que, de manera análoga recupera las actividades cursadas por el alumno.
Depende cómo quieras visualizar esto, tal vez te convendría tener dos listados separados en el certificado, cada uno con su subdataset que trae los diferentes datos (cursadas/rendidas), y su query correspondiente que consulta la vista de regularidades o la función. O podrías armar una sola query para todo el listado combinando estos datos (con un UNION de las dos vistas por ejemplo), pero no sería necesario ni conveniente personalizar la función, ya que sólo se agregan estos datos en el nuevo reporte que estás creando, no en todos los lugares del sistema donde se utiliza la misma. Podrías también crear una función nueva propia con los datos que ustedes quieren recuperar, pero si es sólo para este certificado, creo que tampoco tendría mucho sentido.

Saludos,
Gabriela.

Que bien Gabriela esto que me comentas, me orientaste un monton, miles de gracias!! :slight_smile:
Ahí pude traer los exámenes de la función y las cursadas de la vista, mediante la unión, voy a seguir trabajando con esto y refinando un poquito mas…
Estoy intentando ordenarlo por fecha, pero me lo toma como un campo de texto y me lo ordena con el preformato de la función… no soy muy lucha con jasper y las conversiones no me las toma, alguna idea?

SELECT COALESCE(p.actividad_codigo || ' - ', '') || p.actividad_nombre as actividad_descr,
                                         p.fecha,
                                         p.nota || ' (' || p.nota_descripcion || ')' as nota_completa,
                                         p.origen as origen,
                                         p.tipo,
                                         p.actividad_documento,
                                         p.folio_fisico as folio_fisico
FROM
                                        f_certificado_actividades($P{alumno},'T','T','T') as p
UNION
SELECT  COALESCE(vw.actividad_codigo || ' - ', '') || vw.actividad_nombre as actividad_descr,
		to_char(vw.fecha, 'DD/MM/YYYY') as fecha,
		vw.resultado || ' (' || vw.resultado_descripcion || ')' as nota_completa,
		vw.origen as origen,
		vw.tipo,
		vw.nro_acta as actividad_documento,
                0 as folio_fisico
 FROM
		vw_regularidades as vw
WHERE
		vw.alumno = $P{alumno}
ORDER BY fecha

Hola Rocío,
el tema de los formatos que señalás de las fechas y el ordenamiento tiene que ver con la SQL propiamente dicha y no con jasper, podés probar los resultados de las diferentes queries directamente en postgres para ir viendo si obtenés lo que deseás.

Con respecto a lo que decís, el campo fecha que retorna la función f_certificado_actividades es de tipo CHAR, se está retornando de esa forma para utilizarlo directamente en su formato visual y no con el tipo DATE de postgres, por lo que no podrás utilizar ese campo para ordenar comparando por las fechas si no por el texto del formato dd/mm/aaaa (el campo fecha de la vista vw_regularidades, en cambio, si es de tipo DATE).
Si deseás obtener el campo con el tipo DATE para el ORDER BY, deberías agregarlo a la query. Estimo que te conviene mantener ambos, ya que para mostrarlo en el reporte seguirás necesitando el formato visual. Podés modificar la query agregando algo así:


SELECT COALESCE(p.actividad_codigo || ' - ', '') || p.actividad_nombre as actividad_descr,
                 to_date(p.fecha,  'DD/MM/YYYY')  as fecha,
                 p.fecha as fecha_visual,
                 p.nota || ' (' || p.nota_descripcion || ')' as nota_completa,
                 p.origen as origen,
                 p.tipo,
                 p.actividad_documento,
                 p.folio_fisico as folio_fisico
FROM
                 f_certificado_actividades($P{alumno},'T','T','T') as p
UNION
SELECT  COALESCE(vw.actividad_codigo || ' - ', '') || vw.actividad_nombre as actividad_descr,
                vw.fecha,
		to_char(vw.fecha, 'DD/MM/YYYY') as fecha_visual,
		vw.resultado || ' (' || vw.resultado_descripcion || ')' as nota_completa,
		vw.origen as origen,
		vw.tipo,
		vw.nro_acta as actividad_documento,
                0 as folio_fisico
 FROM
		vw_regularidades as vw
WHERE
		vw.alumno = $P{alumno}
ORDER BY fecha

(el order by puede ser ascendente o descendente).

Saludos,
Gabriela.

Buena idea, mil gracias Gabriela por la ayuda.
Sigo con los detalles por mi parte.
Saludos

Hola Rocío,
buenísimo que les sirva, recuerden guiarse con la wiki como guía general para personalizar cualquier impresión y cualquier cosa nos consultan.

Saludos,
Gabriela.