Personalizacion menu alumno

hola

estamos personalizando el menu de alumno en autogestion

creamos la estructura y copiamos el archivo acc_Alumno.php ( como indica la documentacion)
la idea es que de acuerdo a la calidad del alumno le muestre o no la opcion de inscripcion a cursadas

lo que logro hacer es tomar el alumno( o persona) logueado para realizar la consulta a la base de datos
estoy intentando con

use siu\modelo\datos\catalogo;
use siu\modelo\entidades\parametro;
use SIU\Chulupi\kernel;
use SIU\Chulupi\util\db\db;
use siu\modelo\entidades\persona;
use siu\guarani;

guarani::persona()->get_id(); o kernel::persona()->get_id(); pero da error de php

Tenemos siu 3.15.1

Muchas Gracias

¿Que pasa si un alumno esta cursando dos o mas carreras?
No se si la solucion es crear un nuevo perfil de acceso a autogestion o evaluar la propuesta seleccionada en el combo de propuestas (por defecto cuando se loguea entra con una de las propuestas, no recuerdo si es por el orden en que se recuperan las propuestas del alumno y toma la primera de la lista) y en base a la calidad del alumno en esa propuesta habilitar/deshabilitar la operación de Inscripcion a Actividades.

Otra opcion es activar el control “Ser alumno Activo” para esta operación. Si es que solo lo habilitan para alumnos con calidad activo, entonces si la calidad es Pasivo, no va a dejarlo entrar a la operación, va a estar en el menu y seleccionable pero no va a dejarlo avanzar.

¿Esto también es para la operación de Inscripción a examenes?

hola
consulto bien esta situacion con la parte de alumnos y te respondo

Gracias

Hola Ricardo, agrego a lo de Ale!!!

¿Que error les esta dando?

Para obtener el ID del alumno en la propuesta seleccionada (sección superior derecha de la pantalla), deben usar la siguiente función:

$alumno = kernel::persona()->get_id_alumno_activo();

saludos.

hola

aclaro bien la situacion:
en un principio como dice Ale, depende la la propuesta
si en una propuesta esta como rindiente ( eso lo definimos en la tabla sga_alumnos_motivos_calidad) no puede inscribirse a cursadas y si ademas debe cuotas no puede inscribirse a finales

entonces, esto lo deberia evaluar en el combo de propuestas o se hace de manera diferente ??

Muchas Gracias

Hola Ricardo,

Como dice Ale, la condición de activo o pasivo es a nivel propuesta (alumno), una persona puede ser pasiva en una propuesta y activa en otra.

Para hacer esto del menú debes hacer lo siguiente:

  1. Personalizas la función get_contexto_template del archivo src/siu/extension_kernel/pagina.php, haciendo que cargue la calidad del alumno:

    protected function get_contexto_template()
    {
		$contexto = parent::get_contexto_template();
		$alumno = kernel::persona()->get_id_alumno_activo();
		$contexto['alumno_activo'] = \toba::consulta_php('co_alumnos')->es_alumno_activo($alumno);
		return $contexto;
    }

  1. Luego en los archivos src/siu/operaciones/_comun/templates/header.twig, src/siu/operaciones/_comun/templates/header_celular.twig y src/siu/operaciones/_comun/templates/header_tablet.twig personalizas a la hora de mostrar el menú:

{% for item in menu %}
    {% if item.submenu is defined %}

                                        <li class='dropdown js-menuitem-root {{ item.seleccionado ? 'menu-item-seleccionado' : '' }}'>
                                            {{ _self.recursiveSubmenu(item, true, _context) }}
                                        </li>

    {% else %}
                                            
                                                {% if (item.id == 'cursada') and (not alumno_activo) %}
                                                    <!-- No muesto menú 'Inscripción a Materias' -->
                                                {% else %}
						<li id='{{ item.id }}' class='js-menuitem-root {{ item.seleccionado ? 'menu-item-seleccionado' : '' }}'>
							<a href='{{ item.url }}'>{{ item.nombre|trans }}</a>
						</li>
                                                {% endif %}
    {% endif %}
{% endfor %}

Fíjate que agregue el siguiente if:

{% if (item.id == 'cursada') and (not alumno_activo) %}

saludos.

hola

pruebo la solucion que me indican y aviso que paso

muchas gracias

Ricardo, la otra opción de controlar esto en un requisito personalizado lo analizaron?

si en una propuesta esta como rindiente ( eso lo definimos en la tabla sga_alumnos_motivos_calidad) no puede inscribirse a cursadas y si ademas debe cuotas no puede inscribirse a finales
1- Un requisito para lo que consideran "alumno rindiente". Este requisito lo agregarían en la accion "Cursadas" y punto de control nro 2. Este punto de control recibe el id del alumno, con lo cual pueden verificar si es un alumno rindiente y en caso de serlo que el requisito falle y no deje continuar con la inscripción.

2- Un requisito para lo que consideran “alumno rindiente” y si “debe cuotas”.
Este requisito lo agregarían en la accion “Examenes” y punto de control nro 2. Similar al requisito anterior pero ademas de controlar si es un alumno rindiente, verifican si el alumno debe cuotas y en el caso que se cumplan las dos condiciones falle el requisito y no deje continuar con la inscripcion a examen.

Al agregar estos requisitos en el punto de control 2, esto hace que el requisito se evalue al momento de que el alumno selecciona la operación en el menú. Es decir la operación estará habilitada siempre para todos los alumnos pero se evaluarán estos requisitos en cada operación.

hola

no habia pensado en esta ultima solucion
lo voy a probar y luego comento los resultados

muchas gracias

hola
estoy generando la solucion en base a requisitos personalizados ( segui la ayuda de la pagina mas lo que me indicaron en el foro )

desde gestion me esta fuincionando,
pero desde la auto gestion cuando selecciono la materia da un error de conexion a internet ( que segun lei es un error generico)

en el log del apache figura esto:
[b]PHP Fatal error: Class ‘regla_rindiente_cursada_UDE’ not found in /usr/local/proyectos/g3w3/src/siu/modelo_g3/nucleo/_lib/guarani_nucleo.php on line 201, referer: https://192.168.1.223/ude/cursada/elegir_materia/47e61b65b20a4cfdefcb94a3c425c6a7707fe72d[/b]

en el log de auto gestion, sobre el final figura esto:
[b]-- ## CARGAR DB a CACHE ## ---------------------------------------------------
catalogo_g3____ua_UDE__co_reglas__get_info_regla__MTUwMA__

– SQL -----------------------------------------------------------------------
SELECT sga_reglas.regla, sga_reglas.nombre, sga_reglas.descripcion, sga_reglas.regla_tipo, sga_reglas.mensaje_usuario, sga_reglas.php_clase, sga_reglas_tipos.nombre AS regla_tipo_nombre, sga_reglas.nombre || ’ (’ || sga_reglas.regla || ’ - ’ || sga_reglas.php_clase || ‘)’ AS regla_descr
FROM sga_reglas, sga_reglas_tipos
WHERE sga_reglas_tipos.regla_tipo = sga_reglas.regla_tipo AND sga_reglas.regla = ‘1500’
ORDER BY sga_reglas.nombre

– SQL -----------------------------------------------------------------------
SELECT sga_reglas_mensajes.interfaz, sga_reglas_mensajes.mensaje_validacion, sga_reglas_mensajes.mensaje_validacion_not as mensaje_validacion_negado
FROM sga_reglas_mensajes
WHERE sga_reglas_mensajes.regla = ‘1500’ ;

– ## datos ## ---------------------------------------------------------------
Array
(
[regla] => 1500
[nombre] => Inscripcion a Cursadas ( para verificacion de alumno rindiente)
[descripcion] => Inscripcion a Cursadas ( para verificacion de alumno rindiente)
[regla_tipo] => 3
[mensaje_usuario] => No se puede inscribir a cursadas por que es alumno regular rindiente
[php_clase] => regla_rindiente_cursada_UDE
[regla_tipo_nombre] => Procesos
[regla_descr] => Inscripcion a Cursadas ( para verificacion de alumno rindiente) (1500 - regla_rindiente_cursada_UDE)
[mensajes_validacion] => Array
(
[2] => Array
(
[interfaz] => 2
[mensaje] => No se puede inscribir a cursadas por que es alumno regular rindiente
[negado] => No se puede inscribir a cursadas por que es alumno regular rindiente
)

        [1] => Array
            (
                [interfaz] => 1
                [mensaje] => No se puede inscribir a cursadas por que es alumno regular rindiente
                [negado] => No se puede inscribir a cursadas por que es alumno regular rindiente
            )
    )

)

–F<0>:E<1>:W<0>:T<0.347 s>:M<4.69 Mb>–
–REXCAT_CMET<version_base_g3>MEDAT<0.001>–
–REXCAT_CMET<datos_basicos>MEDAT<0.000>–
–REXCAT_CMETMEDAT<0.000>–
–REXCAT_CMETMEDAT<0.000>–
–REXCAT_CMETMEDAT<0.003>–
–REXCAT_CMETMEDAT<0.000>–
–REXCAT_C<unidad_academica>MET<info_institucion>MEDAT<0.001>–
–REXCAT_C<unidad_academica>MET<info_institucion>MEDAT<0.000>–
–REXCAT_C<inscripcion_cursada>MET<lista_materias>MEDAT<0.116>–
–REXCAT_C<inscripcion_cursada>MET<lista_materias>MEDAT<0.001>–
–REXCAT_CMET<inscripciones_cursadas>MEDAT<0.171>–
–REXCAT_CMET<inscripciones_cursadas>MEDAT<0.000>–[/b]

Alguna pista de lo que me puede estar faltando ?? o donde revisar otro log ??

Muichas Gracias

Hola Ricardo,

Claro, vos corriste el comando bin/guarani pers_autoload en Gestión para que genere los archivos de autoload de las clases personalizadas. Pero te esta faltando actualizar en 3W (svn up).

Fíjate al final de todo de esta documentación, donde dice “Generación de archivos de autoload y definición de clases de consultas”, allí te explica como funcionan los svn externals entre Gestión y 3W.

saludos.

hola

no estoy seguro, pero me parece que algo me esta faltando

copie la regla a:
/usr/local/proyectos/g3w3/src/pers_gestion/php/nucleo/_lib/reglas

luego ejecute los comandos que indica la documentacion
/usr/local/proyectos/guarani/bin/guarani autoload
/usr/local/proyectos/guarani/bin/guarani pers_autoload

pero siguio el mismo error

para probar modifique a mano el archivo:
/usr/local/proyectos/g3w3/src/pers_gestion/php/guarani_pers_autoload.php
al final de este le agregue las reglas
y si funciono

lo que faltaria hacer es el svn externals que menciona la documentacion, asi me actualiza ese archivo ( desde gestion) en lugar de editarlo a mano

Muchas gracias

Hola Ricardo,

No deberías de copiar nada. Todo lo que agregues en la carpeta personalizacion de Gestión, lo vas a poder acceder desde src/pers_gestion de 3W. Si te fijas en esta documentación te lo explica.

En cuanto los comandos, no deben correr el comando bin/guarani autoload, el único que deben correr cuando agregan una clase nueva es bin/guarani pers_autoload.

Cada vez que personalizan algo en Gestión, y lo suben (svn commit), luego al actualizar 3W (svn up) van a ver dichos cambios en este ultimo sistema.

Para mi les esta faltando subir la cosas, no veo nada en la carpeta personalizacion/php/nucleo/_lib/reglas de Gestión en la 3.15.1.

saludos.

hola

perdon por la tardanza, pero funciono la solucion de las reglas

muchas gracias