Personalizar regla

Hola! Buenas tardes.
Necesito modificar el código de las reglas de correlatividades para agregar una nueva lógica de levantamiento de correlatividades.
Los archivos que tengo que modificar son “regla_correlativas_de_cursada” y “regla_correlativas_de_aprobacion”. Pude hacer funcionar el levantamiento modificando los archivos originales, pero no pude personalizarlos.
El código del archivo personalizado es el siguiente:

<?php

class regla_correlativas_de_cursada_U840 extends regla_correlativas_de_cursada
{
    function validar()
    {
        $alumno = $this->get_parametro('alumno');
        $elemento = $this->get_parametro('elemento');
        $fecha = $this->get_parametro('fecha');

        $persona = toba::consulta_php('co_alumnos')->get_persona_alumno($alumno);
        $plan_version = toba::consulta_php('co_alumnos')->get_plan_version($alumno, $fecha);

        $grupos = toba::consulta_php('co_condiciones')->get_opciones_elemento_plan_version_tipo($elemento, $plan_version, condicion::tipo_cursar);

        $grupo_cumplido = true;
        $cant_requisitos_no_cumplidos = 0;
        $txt_requisitos_no_cumplidos = '';
        foreach ($grupos as $grupo) {
            $requisitos = toba::consulta_php('co_condiciones')->get_requisitos_opcion($grupo['grupo_condicion']);
            $grupo_cumplido = true;
            foreach ($requisitos as $requisito) {
                $regla = guarani::regla($requisito['regla']);
                $regla->set_parametros($requisito['parametros']);
                $regla->set_operador_not($requisito['operador_not']);
                $regla->set_parametros_contexto(array(	'alumno' => $alumno,
                    'persona' => $persona,
                    'plan_version' => $plan_version,
                    'elemento' => $requisito['elemento'],
                    'fecha' => $fecha));
                if (! $regla->validar()) {
                    $grupo_cumplido = false;
                    $cant_requisitos_no_cumplidos++;
                    // Se detallan hasta 3 requisitos no cumplidos...
                    if ($cant_requisitos_no_cumplidos < 4) {
                        $txt_requisitos_no_cumplidos .= ($cant_requisitos_no_cumplidos == 1) ? $requisito['requisito_nombre'] : ", {$requisito['requisito_nombre']}";
                    } else {
                        $txt_requisitos_no_cumplidos .= ' y otras...';
                        continue 2;
                    }
                }
            }
            if ($grupo_cumplido) {
                break;
            }
        }

        $resultado = $this->resultado_final($grupo_cumplido);

        if (!$resultado) {
            $esta_levantada = toba::consulta_php('co_levantamiento_correlativas_U840')->es_correlativa_levantada($plan_version,$elemento);
            if ($esta_levantada) {
                $resultado = $this->resultado_final(true);
            } else {
                $nombre_alumno = toba::consulta_php('co_alumnos')->get_alumno_nombre($alumno);
                $this->set_parametros_mensaje_validacion(array($nombre_alumno, $txt_requisitos_no_cumplidos), true);
            }
        }
        return $resultado;
    }
}

?>

Y el nombre del archivo es “regla_correlativas_de_cursada_U840.php”.
Intenté con el nombre original en el archivo y en la clase, extendiendo de regla y no funciono, y tambien con el nombre de archivo orginal pero el nombre de la clase con “_U840” y tampoco.

Alguna idea de como se haría?
Vi que la referencia a estos archivos php están en la base, pero no veo como modificarlos.

Desde ya, Gracias!

Felipe

Cambiaste el nombre de estos métodos en la tabla sga_reglas, no?


UPDATE sga_reglas  SET php_clase = 'regla_correlativas_de_cursada_U840' WHERE regla = 307;
UPDATE sga_reglas  SET php_clase = 'regla_correlativas_de_aprobacion_U840' WHERE regla = 308;

O insertar dos nuevas reglas en la tabla sga_reglas y cambiar en cada requisito (sga_requisitos) el nuevo id de regla en cada caso.
Recordar que si agregan nuevas reglas o requisitos el id debe ser a partir del nro 1000. La secuencia esta seteada en ese valor, pero si envian un valor menor igual lo insertará. El SIU se reserva los primeros 1000 ids…

Hola Alejandro.
Cambié el nombre de las clases en sga_reglas, pero no encuentra la clase.

Fatal error: Class 'regla_correlativas_de_cursada_U840' not found in C:\guarani_3_10_2\php\nucleo\_lib\guarani_nucleo.php on line 137 

Hola Felipe, probá agregar la regla en el archivo /personalizacion/php/guarani_pers_autoload.php

Hola! Así si funciona, pero es correcto modificarlo a mano??

Gracias!

Hola Felipe,

Cada vez que agregan archivos nuevos a su personalización deben ejecutar el comando “guarani pers_autoload” que actualiza el archivo de autoload.

Saludos, Florencia.

Lo había corrido y no las agregaba, las termine agregando a mano.