Personalización Masiva

Me piden personalizar todas las vistas y todos los reportes de G3W para que donde se informa legajo del alumno, el mismo sea reemplazado por tipo y número de documento.

¿Alguna sugerencia?

Hola, podes probar personalizando la función get_id_legajo_activo() de la clase src/siu/modelo/entidades/persona.php, la cual se invoca de la siguiente manera guarani::persona()->get_id_legajo_activo();.

saludos.

No me convence la idea de perder el legajo… aparte que es más que probable que en varios sitios deba llamar al método original para averiguar el legajo y en vez del documento.

Mi pregunta va más por ¿recomiendan personalizar muchas operaciones? ¿es preferible eso a reemplazar los fuentes originales?

Hola, tenes razón, ademas la función get_id_legajo_activo() no solamente se usa para obtener y mostrar el legajo por pantalla/reporte sino también se esta usando como parámetro de otras funciones, así que no modifiques el método get_id_legajo_activo().

En cuanto a lo segundo, te sugiero que no modifiques los fuentes originales ya que al actualizar a una nueva versión vas a perder los cambios, te recomiendo que personalices y que donde se esta mostrando el legajo muestres el DNI, acá tenes dos funciones que te pueden servir las cuales están en src/siu/modelo/entidades/persona.php:

get_tipo_documento_descripcion()
get_tipo_documento_desc_abreviada()
get_nro_documento()

saludos.

Este cambio de mostrar el tipo y número de documento del alumno en vez de su número de legajo, es en los reportes de la interfaz del alumno o del docente/gerencial…?

Es en casi todos lados, en la UNLaM no se usa el legajo (visualmente hablando) en ningún lado.

En uno de los archivos default.twig tengo:

{{alumno.LEGAJO|raw}}

Quisiera reemplazarlo por algo similar pero que me traiga:

TipoDocumento + ’ ’ + NroDocumento + ’ (Legajo: ’ + Legajo + ‘)’

el twig quisiera escribirlo así:

{{alumno.DNI_LEGAJO|raw}}

les dejo una imagen de como debiera verse:

http://s2.subirimagenes.com/imagen/previo/thump_9461117detalleacta.png

¿Me podrán dar una mano? (lo más detallado posible;-)

Gracias Totales.-

¿Alguna sugerencia?

Me conformo con dejar una operación sola usando el Típo y Número de Documento (y opcionalmente dejar visible al Legajo como muestro en la captura).

Hola Diego!!!
Estuve haciendo algunas pruebas con el caso que estás planteando, que creo que se refiere al de la operación: ‘Carga de Notas de examen’
En esta operación ya se están trayendo el dato del documento (viene TIPO+ ’ '+ NRO) y el legajo por separado.
Lo que yo haría es lo siguiente:

Twig: operaciones/notas_examen/renglones/default.twig
Modelo: modelo/datos/db/carga_notas_examen.php FUNCIÓN: acta_folio

Acá te copio una sección del twig con comentarios


		{% for alumno in this.data.renglones %}
		...
			<td headers="nombre" class="col-alumno">
				<div class="ficha-alumno clearfix"
					data-url-ficha="{{ alumno.URL_FICHA }}">
					<img src='{{alumno.URL_IMAGEN}}' width='35' height="35" alt='Foto, clic para mostrar ficha' class="pull-left" />
					<div class="pull-left">
						<span class="nombre">{{ alumno.NOMBRE }}</span>
						<span class="legajo_doc"> {{ alumno.DOCUMENTO }} ({{'legajo'|trans|capitalize}}: {{ alumno.LEGAJO }})</span> --> ACÁ ESTÁ TRAYENDO SOLO EL LEGAJO, YO AGREGARÍA EL DOCUMENTO Y LOS PARÉNTESIS
					</div>
				</div>
			</td>
			<td headers="doc" class="alinear col-documento">{{ alumno.DOCUMENTO }}</td> --> ESTA COLUMNA SACARLA
			<td headers="fecha" class="centrar alinear col-fecha">
...

Ahora, el caso de los twigs que traés que tienen el Legajo así:

{{alumno.LEGAJO|raw}} Se trata de actas, y ese dato corresponde al de la columna 'legajo' Deberías comenzar revisando las funciones del modelo: modelo/datos/db/docente.php Que traen datos de actas: detalle_acta_cursada, detalle_acta_examen, detalle_acta_promociones Ver ahí de traer en el cuerpo del acta los datos referidos al tipo de documento y nro de documento. Y después vemos de adaptar el twig. Yo diría del twig adaptarlo haciendo algo así: {{alumno.TIPO_DOC}} : {{alumno.DOCUMENTO}} ({{alumno.LEGAJO|raw}})

Pero tené en cuenta que esto se visualiza dentro de una tabla, cuyo encabezado dice ‘Legajo’

Para personalizar ‘Carga de Notas de comisiones’ es similar a la de Cargas de notas de examen, pero tiene un paso mas porque el modelo no está recuperando el nro de documento.

  1. Personalizar Modelo
    Archivo: modelo/datos/db/carga_notas_cursada.php
    Función: acta_folio
    SP: sp_detActCurDocFol
    Acá tenes que agregar el dato de tipo y nro de documento.

  2. Personalizar Twig
    Archivo: operaciones/notas_cursada/renglones/default.twig


...
                            <div class="pull-left">
                                <span class="nombre">{{nombre}}
                                    {% if alumno.PROMOCIONAL == "S" %}
                                        <span class="acchide">{{"promocionable" |trans|capitalize}}</span><span class="icon-certificate js-tooltip" title="{{"promocionable" |trans|capitalize}}"></span>
                                        {% if not this.data.encabezado.PROM_ABIERTA %}
                                            <span class="icon-exclamation-sign js-tooltip" title="{{"acta_promocion_cerrada" |trans|capitalize}}"></span>
                                        {% endif %}
                                    {% endif %}

                                </span>
                                <span class="legajo">{{'legajo'|trans|capitalize}}: {{ alumno.LEGAJO }}</span> -> ACÁ AGREGAR EL DATO CON EL DOCUMENTO
                            </div>
...


Leído… gracias Juliana.

Nota: el caso del ejemplo de la foto era un acta de cursada, pero tengo que dejar visible el documento en todas las actas así que la solución que proponés también aplica.

En cuanto tengo alguna novedad actualizo la publicación.

Si, fijate que todas las operaciones de carga de notas/actas tienen twigs muy parecidos.
Me parece que la solución va a ser adaptar los stored procedure y funciones del modelo para que traigan también el DNI y ahí modificar los twigs.
Otra cosa que podés hacer, para usar la solución que vos proponés: {{alumno.DNI_LEGAJO|raw}}… es en el modelo cuando se arma el array que devuelve los datos de cada función, armar un dato[DNI_LEGAJO] y concatenar ahí lo que necesitás (pero igualmente vas a tener que modificar los SP para que traiga el dato del tipo y nro de documento).

Avisanos como lo resolviste y consultá cualquier duda que tengas!
Saludos!

Bueno, ya tengo algunas cosas “hechas”…

Modifiqué en la BD al procedimiento sp_detActCurDocFol(ua, acta, folio) para que me devuelva al final de todo tipo y nro de documento todo junto y con formato DOC …#.###.###
Para simular el separador de miles en la BD (informix) usé un bucle FOR…

  ...
  DEFINE vcDocumento varchar(15);
  DEFINE sDocFormato varchar(18);
  DEFINE iAux integer;
  ...
  FOREACH EXECUTE PROCEDURE sp_alumnos_com(iComision, 'MT') 
     INTO l_unidad_academica, l_carrera, l_legajo, l_comision, l_plan, l_version, 
          l_fecha_regular, l_cond_regularidad, l_resultado, l_nota, l_pct_asistencia, l_acta_promocion, l_folio_promocion, l_renglon_promoc,
          l_acta_regular, l_folio_regular, l_renglon_regular, l_promocional, l_controlado, l_apellido_alumno, l_nombre_alumno, l_agregado, l_tiene_nota, vcArchivoFoto  
       
    select td.desc_abreviada||' ', p.nro_documento
      into sDocFormato, vcDocumento
      from sga_personas p
         , mdp_tipo_documento td
         , sga_alumnos a
     where p.tipo_documento=td.tipo_documento
       and p.unidad_academica=a.unidad_academica
       and p.nro_inscripcion=a.nro_inscripcion
       and a.unidad_academica=l_unidad_academica
       and a.carrera=l_carrera
       and a.legajo=l_legajo;

    FOR iAux IN (char_length(vcDocumento) to 1)
       LET sDocFormato = sDocFormato || SUBSTR(vcDocumento, iAux, 1);
       IF MOD(iAux-1, 3) = 0 And iAux>1 THEN
          LET sDocFormato = sDocFormato || '.';
       END IF;
    END FOR;
  ...
  RETURN l_unidad_academica, l_carrera, l_legajo, l_comision, l_plan, l_version, sFechaRegular, l_cond_regularidad, l_resultado, l_nota, l_pct_asistencia,
             l_acta_regular, l_folio_regular, l_renglon_regular, l_promocional, l_apellido_alumno, l_nombre_alumno,
             l_agregado, l_tiene_nota, vcArchivoFoto, sDocFormato  WITH RESUME;
  ...

Al método acta_folio(param) del modelo/datos/db/carga_notas_cursada.php en el foreach que recorre al array resultante del SP le agregué simplemente al final:

    $nuevo[$renglon]['DOCUMENTO'] = $dato[20];

Hasta ahí debo admitir que creo no estar cumpliendo con las normas de personalización de g3w… Una versión nueva me pisa todos los cambios :frowning:

Después sí, agregue un nuevo pagelet_renglones en mi estructura de personalizaciones que hace:

class pagelet_renglones extends \siu\operaciones\notas_cursada\pagelet_renglones
{
	protected function get_renglones()
	{
		$renglones = parent::get_renglones();

		foreach ($renglones as &$renglon) {
			$renglon['LEGAJO'] = $renglon['DOCUMENTO']." (Legajo: ".$renglon['LEGAJO'].")";
		}

        return $renglones;
	}
}

Y adapté el TWIG para:

  • mostrar el documento junto con el legajo del alumno (no agregué una nueva columna).
  • invertir el orden de las columnas nota y condición (primero mostrar la nota ya que si cargamos la nota la condición se actualiza automáticamente***)

*** En este punto noté lo que podría ser un ¿bug?… al elegir nota ‘-’ no se actualiza a condición ausente.

Ya que modificaba el SP cargué la fecha y el porcentaje de asistencia con el valor por defecto:

Para la fecha se devuelve la fecha de fin del período (si esa fecha no les sirve podrían usar la fecha de la asignación del aula; cada quién use la fecha que le pidan;)

Antes del foreach:


  SELECT to_char(pl.fecha_fin, "%d/%m/%Y") INTO sFechaRegularDefault
    FROM sga_periodos_lect pl
       , sga_comisiones c
   WHERE pl.anio_academico = c.anio_academico
     AND pl.periodo_lectivo = c.periodo_lectivo
     AND c.comision = iComision;

Justo antes del return:


      -- si la fecha está en blanco usamos la fecha por defecto
      IF sFechaRegular IS NULL THEN
        LET sFechaRegular = sFechaRegularDefault;
      END IF;
      -- si la asistencia esta en blanco devolvemos 100%
      IF l_pct_asistencia IS NULL THEN
         LET l_pct_asistencia = 100;
      END IF;