controles personalizados

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.