Estamos queriendo implementar un cron que detecte y les inicie el trámite de certificacion de manera automatica a aquellos alumnos que estan en condiciones de obtenerla. Este cron se correria diariamente.
La idea principal es reutilizar todo lo que sea posible del funcionamiento estandar de Guarani. Es decir, nos gustaria hacer una combinacion entre la operación de Detectar Egresados en Forma Automatica y la de Solicitar Certificaciones.
Lo que hicimos fue crear una nuva operación de tipo Consola - Procesos Batch.
Para la detección, usamos la funcion pro_deteccion_egresados->procesar()
El problema llega en la solicitud, cuando intentamos hacer uso del evento "guardar() de ci_nav_solicitar_certificaciones
// Array con los alumnos que ya detectamos que estan en condiciones.
$alumnos_en_condiciones;
class cn_deteccion_automatica_UNL extends cn_man_solicitar_certificaciones {
...
}
$deteccion = new cn_deteccion_automatica_UNL;
foreach ($alumnos_en_condiciones as $alumno_en_condicion) {
// Intentamos replicar el evento guardar de ci_nav_solicitar_certificaciones pero tenemos errores de inicializacion del constructor
}
Mas alla del error, el enfoque que tomamos les parece correcto o la estamos complicando demasiado?
Buenas tardes Emiliano.
No nos parece complicado que hacerlo por un crontab que se corra diariamente, pero tengan en cuenta que cuando se corre el proceso actual barre toda la base y el proceso se puede hacer muy pesado. Fíjense de hacerlo correr en un momento en que no haya mucha carga de usuarios. También vemos el problema de hacerlo diariamente en que en los momentos de inscripciones es cuando la base tiene mucha carga. Más allá de eso y si tienen esto ya armado no habría inconvenientes.
Como ayuda puedo sugerirte que podes mirar el servicio web que consume 3w llamando a un ws de gestión para validar si el alumno puede pedir la certificación.
Muchas gracias por la respuesta.
Concretamente lo que hicimos con nuestra clase cn_deteccion_automatica_UNL fue extender a cn_man_solicitar_certificaciones e ir llamando los métodos.
PHP Warning: Missing argument 1 for toba_cn::__construct(), called in /usr/local/siu/guarani/personalizacion/php/operaciones/egresados/actualizaciones/deteccion_egresados/deteccion_automatica_UNL.php on line 67 and defined in /usr/local/siu/guarani/vendor/siu-toba/framework/php/nucleo/componentes/negocio/toba_cn.php on line 17
PHP Notice: Undefined variable: id in /usr/local/siu/guarani/vendor/siu-toba/framework/php/nucleo/componentes/negocio/toba_cn.php on line 19
PHP Warning: array_keys() expects parameter 1 to be array, null given in /usr/local/siu/guarani/vendor/siu-toba/framework/php/nucleo/componentes/toba_componente.php on line 59
Lo que entiendo es que no puedo inicializar ese constructor de toba_cn desde mi clase hija.
Emiliano, el tema es el siguiente, cuando usas la operación desde el browser el cn ya se levanta y se crea un objeto de esa clase. Cuando lo ejecutas al item directamente entiendo que no está haciendo uso del constructor.
Fijate que podes hacer cambiando la línea que se te indica en el warning.
PHP Warning: Missing argument 1 for toba_cn::__construct(), called in /usr/local/siu/guarani/personalizacion/php/operaciones/egresados/actualizaciones/deteccion_egresados/deteccion_automatica_UNL.php on line 67 and defined in /usr/local/siu/guarani/vendor/siu-toba/framework/php/nucleo/componentes/negocio/toba_cn.php on line 17