Hola
Tengo unos controles para inscripciones a cursadas y exámenes que estan funcionano correctamente en interfaz gestion.
Que tengo que hacer para que funcionen en autogestion?
Son reglas php que convocan a funciones en postges.
Emilio
Hola
Tengo unos controles para inscripciones a cursadas y exámenes que estan funcionano correctamente en interfaz gestion.
Que tengo que hacer para que funcionen en autogestion?
Son reglas php que convocan a funciones en postges.
Emilio
Hola Emilio, primero de todo deberías ir a Gestión en la operación Configurar Requisitos por Operación , allí elegís la operación/acción, luego el requisito y vas a poder seleccionar el comportamiento (Mensaje, Estricto o Advertencia) según la interfaz (Gestión o Autogestión).
Luego deberías agregar el control en el código del 3W , fíjate como se hace por ejemplo en la baja de de una inscripción a cursada:
En src/siu/modelo/transacciones/inscripcion_cursada.php función eliminar_inscripcion se llama a :
list($resultado_controles, $mensajes_controles) = $this->control__eliminar_inscripcion($actividad);
Allí se ejecutan los controles de baja a cursada:
function control__eliminar_inscripcion($actividad)
{
// 1) Se repiten controles anteriores por seguridad y para conocer las advertencias
// (No hay ninguna primitiva del kernel que garantice la secuencia de requests para
// permitir multiples hilos paralelos), por eso esto es necesario.
// el costo es minimo porque esta todo en el cache
if (inscripcion_cursada::ejecutar_controles()) {
// Contoles Anteriores
list($puntos_de_control, $parametros) = $this->agregar_puntos_control_inicial();
list($puntos_de_control, $parametros) = $this->agregar_puntos_control_actividad($actividad, $puntos_de_control, $parametros);
$proceso = $this->nuevo_proceso_control($puntos_de_control, $parametros, $this->operacion_baja);
$resultado_controles_anteriores = $proceso->ejecutar(); //Los mensajes estos no importan, ya se mostraron antes
// Control Baja
list($puntos_de_control, $parametros) = $this->agregar_puntos_control_baja();
$proceso = $this->nuevo_proceso_control($puntos_de_control, $parametros, $this->operacion_baja);
$resultado_controles = $proceso->ejecutar();
$mensajes_controles = $proceso->get_mensajes();
$resultado_controles = proceso_control::get_peor_resultado(array($resultado_controles_anteriores, $resultado_controles));
return array($resultado_controles, $mensajes_controles);
}
return array(\guarani_punto_de_control::autorizado, array());
}
saludos.
Hola Leonel
Donde grabo el archivo con la logica del control/requisito?
Emilio
Hola, por lo general se crea una función dentro de una transacción (src/siu/modelo/transacciones), fíjate como se esta haciendo en src/siu/modelo/transacciones/reinscripcion_carrera.php función disparar_puntos_de_control:
protected function disparar_puntos_de_control($anio_academico)
{
//Se especifican los puntos de control, acá tenes que poner tu punto de control personalizado
$puntos_de_control = array(
\guarani_punto_de_control::persona_operacion,
\guarani_punto_de_control::alumno_operacion,
\guarani_punto_de_control::alumno_anio_academico
);
//Se especifican los parámetros de dicho punto de control
$parametros = array(
'persona' => $this->persona,
'alumno' => $this->alumno,
'plan_version' => $this->plan_version,
'fecha' => \guarani_fecha::get_hoy(),
'anio_academico' => $anio_academico,
);
//Se crea el proceso de control
$proceso = $this->nuevo_proceso_control($puntos_de_control, $parametros);
//Se ejecuta
$resultado_controles = $proceso->ejecutar();
//Se obtienen los mensajes generados por la ejecución
$mensajes_controles = $proceso->get_mensajes();
return array($resultado_controles, $mensajes_controles);
}
Fíjate que se están usando en src/siu/modelo/transacciones/reinscripcion_carrera.php función reinscribir, que luego llama a esta otra función controles_reinscripcion.
saludos.