cerrar acta cursada y promocion por el docente

Hola:

Queremos hacer que cuando el docente, termine de cargar un acta, y los folios esten 100% cargados, al presionar en el botón “guardar”, las actas de regularidad y promoción se cierren.
Lo teníamos hecho en siu-guarani 2.65, y funcionaba. Ahora estamos migrando a siu-guarani 2.94, y no funciona.
Lo que hicimos fue una personalización (se configuro el config.php, para que tome personalizaciones):
pers/pers_unq/modelo/datos/db/carga_notas_cursada.php, modificamos la “funcion guardar_renglon”, como se muestra en el archivo “cargar_notas_cursada.php”.
Lo que sucede es que ni los toma, viendo el debug.
Los procedimientos los puse en otra función y los muestra.

Que me faltaría?.

Muchas gracias!!!


carga_notas_cursada.php.txt (13 KB)

Hola Pablo,

Por lo que veo en tu personalización, estas queriendo cerrar el acta varias veces, ya que el método guardar_renglon se llama por cada alumno que hay en la comisión (si hay 20 alumnos va a querer cerrar el acta 20 veces).

Para mi la personalización debería estar en la función evt__procesar_folio del archivo src/siu/modelo/transacciones/carga_notas_cursada.php, acá es donde termina haciendo todos los cambios cuando cargas notas a alumnos de una comisión.

Luego del foreach de $renglones podes hacer algo así:


	function evt__procesar_folio($seleccion, $renglones, $param_sistema)
	{
		.......
			
			foreach($renglones as $renglon) {
				...........
			}

			if ($hay_renglones_actualizados){
				$parametros = array('comision' => $acta_cab['COMISION']);
				$ok = catalogo::consultar('carga_notas_cursada', 'actualizar_acta', $parametros);

                                 catalogo::consultar('carga_notas_cursada', 'cerrar_acta', $parametros);   <====> Deberías agregar esta función que cierra el acta

				catalogo::limpiar_cache('carga_notas_cursada', 'porcentaje_carga_notas_comision', $parametros);
			}
			.............
    }

Luego en el catalogo src/siu/modelo/datos/db/carga_notas_cursada.php agregas la función que cierra el acta:


    /**
	 * parametros: comision
	 * cache: no
	 * filas: 1
	 */
	function cerrar_acta($parametros) 
	{
       	       // Acá llamas a los PROCEDURES que cierran el acta cuando se cumple la condición que comentabas (los folios estén 100% cargados)
        }  

Aparte de esto, te voy a pedir los logs que te da cuando estas guardando (si falla mándame también los logs de Apache).

saludos.

Muchas gracias!!! Pruebo y mando lo que me tira.

Hola:

Me tira el siguiente error, como muestra la imagen.
Copie el archivo pers_unq/modelo/transacciones, modifique el “namespace pers_unq\modelo\transacciones;”

Muchas gracias!!!


error_carga_notas_cursada.php.jpg

error_carga_notas_cursada.php.png

carga_notas_cursada.php.txt (7.13 KB)

Habia que agregar tambien “transaccion.php”.
Y dejo de dar el error.

Muchas gracias!!

Hola:

Al querer cerrar el acta me tira el siguiente error, y la imagen es la adjuntada:

================================= ERRORES ==================================

clase: siu\errores\error_guarani
mensaje: CATALGO: no existe la entrada [carga_notas_cursada/cerrar_acta] en los namespaces: pers_unq,siu
traza: [TRAZA]

—[ 0 ]-----------------------------------------

  • function: siu\modelo\datos\catalogo::buscar_metadata_catalogo
  • file: C:\Apache\www\G3W\src\siu\modelo\datos\catalogo.php, linea 231
  • param:
    0: carga_notas_cursada 1: cerrar_acta 2: Array
    (
    )

—[ 1 ]-----------------------------------------

  • function: siu\modelo\datos\catalogo::consultar
  • file: C:\Apache\www\G3W\src\pers\pers_unq\modelo\transacciones\carga_notas_cursada.php, linea 202
  • param:
    0: carga_notas_cursada 1: cerrar_acta 2: Array
    (
    [comision] => 31953
    )

—[ 2 ]-----------------------------------------

  • function: pers_unq\modelo\transacciones\carga_notas_cursada->evt__procesar_folio

  • file: C:\Apache\www\G3W\src\siu\operaciones\notas_cursada\controlador.php, linea 228

  • param:
    0: 01917adb1d40fe7b849da8672c6fe54502f85f95 1: Array
    (
    [1] => Array
    (
    [ID] => c3b364f7a9906045bdaef0609fe76302b5328d42
    [CARRERA] => K
    [LEGAJO] => 43342
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 1
    [PROMOCIONAL] => S
    [APELLIDO] => AZUA
    [NOMBRE] => MARIANO GABRIEL
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [2] => Array
    (
    [ID] => 77012de325154f270d8cbd6607fa1464da121e0f
    [CARRERA] => J
    [LEGAJO] => 43733
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 2
    [PROMOCIONAL] => S
    [APELLIDO] => CANIZA
    [NOMBRE] => FIAMMA MAGALI
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [3] => Array
    (
    [ID] => 8a5cad2fb00f96a8fb815ab25c0f85627e5bd978
    [CARRERA] => E
    [LEGAJO] => 44341
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 3
    [PROMOCIONAL] => S
    [APELLIDO] => DICHANO
    [NOMBRE] => MARÍA CELESTE
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [4] => Array
    (
    [ID] => 0def0c7553d8b297b20ff997ce7856c3340c6a81
    [CARRERA] => I
    [LEGAJO] => 35213
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 4
    [PROMOCIONAL] => S
    [APELLIDO] => GAGLIERO
    [NOMBRE] => RODRIGO EDUARDO
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [5] => Array
    (
    [ID] => 1b29decb904313e1066b669f0a2b8d422dc16332
    [CARRERA] => L
    [LEGAJO] => 45144
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 5
    [PROMOCIONAL] => S
    [APELLIDO] => GONZALEZ
    [NOMBRE] => NICOLAS AGUSTIN
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [6] => Array
    (
    [ID] => 4f6d1cd14afe97682e0aa9e47acf1c3338c896f8
    [CARRERA] => I
    [LEGAJO] => 40265
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 6
    [PROMOCIONAL] => S
    [APELLIDO] => LEZCANO
    [NOMBRE] => CANDELA AILEN
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [7] => Array
    (
    [ID] => a9f28d4f59225f1170de155c0dde749947aab21a
    [CARRERA] => Q
    [LEGAJO] => 40189
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 7
    [PROMOCIONAL] => S
    [APELLIDO] => PADULO
    [NOMBRE] => MIRIAM ANTONIETA
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [8] => Array
    (
    [ID] => 61c60bfa5665f4290cd840693935c8cf5b1e174f
    [CARRERA] => I
    [LEGAJO] => 41373
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 8
    [PROMOCIONAL] => S
    [APELLIDO] => PENZZI
    [NOMBRE] => EVELYN
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [9] => Array
    (
    [ID] => 34a5de201b41d103983af3c559f16f658ea4598f
    [CARRERA] => L1
    [LEGAJO] => 35675
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 9
    [PROMOCIONAL] => S
    [APELLIDO] => RODRIGUEZ FON
    [NOMBRE] => MILAGROS
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [10] => Array
    (
    [ID] => edad75829db52fb19a6237c33b5f5f26373ed697
    [CARRERA] => I
    [LEGAJO] => 34652
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 10
    [PROMOCIONAL] => S
    [APELLIDO] => ROSO
    [NOMBRE] => CANDELA AGUSTINA
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [11] => Array
    (
    [ID] => cff77a38c117f8efe0e37676cae0213313531bf1
    [CARRERA] => I
    [LEGAJO] => 40057
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 11
    [PROMOCIONAL] => S
    [APELLIDO] => SILVERA RODRIGUEZ
    [NOMBRE] => LUCIANA BELEN
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [12] => Array
    (
    [ID] => a7ec6668051609a0e15a37f7740aa0e1ebad3948
    [CARRERA] => I
    [LEGAJO] => 41197
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 12
    [PROMOCIONAL] => S
    [APELLIDO] => STEGER
    [NOMBRE] => EZEQUIEL
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [13] => Array
    (
    [ID] => 1da007234c874d91c3586267e85f3b4c3b396581
    [CARRERA] => K
    [LEGAJO] => 41770
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 13
    [PROMOCIONAL] => S
    [APELLIDO] => STURLA
    [NOMBRE] => SELVA MABEL
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [14] => Array
    (
    [ID] => bc71afcb12adddbf875e3c94cc8c998562c8df80
    [CARRERA] => V1
    [LEGAJO] => 46219
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 14
    [PROMOCIONAL] => S
    [APELLIDO] => TORRES
    [NOMBRE] => LOURDES CAMILA
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

    [15] => Array
    (
    [ID] => 6be655ab92fc145c552f2343732010a08d5a6a3f
    [CARRERA] => V1
    [LEGAJO] => 41120
    [COMISION] => 31953
    [FECHA] => 01/09/2018
    [CONDICION] => 5
    [RESULTADO] => P
    [NOTA] => 10
    [ASISTENCIA] => 100
    [ACTA_REG] => 41940
    [FOLIO] => 1
    [RENGLON] => 15
    [PROMOCIONAL] => S
    [APELLIDO] => TORRESAN
    [NOMBRE] => FRANCO ANTONIO
    [AGREGADO_A_ACTA] => N
    [TIENE_NOTA] => S
    [ID_IMAGEN] =>
    [URL_IMAGEN] => /grado29x/img/iconos/mm.png
    [URL_IMAGEN_GRANDE] => /grado29x/img/iconos/mm_grande.png
    )

)
2: Array
(
[asentar_notas_actas_regulares] => N
[cierre_parcial] =>
[cierre_parcial_modifica_notas] =>
[cargar_notas_promocion] => N
)

—[ 3 ]-----------------------------------------

  • function: siu\operaciones\notas_cursada\controlador->guardar_folio

  • file: C:\Apache\www\G3W\src\siu\operaciones\notas_cursada\controlador.php, linea 82

  • param:
    0: Array
    (
    [1] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [2] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [3] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [4] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [5] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [6] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [7] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [8] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [9] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [10] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [11] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [12] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [13] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [14] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

    [15] => Array
    (
    [fecha] => 01/09/2018
    [asistencia] => 100
    [condicion] => 5
    [nota] => 10
    )

)

—[ 4 ]-----------------------------------------

  • function: siu\operaciones\notas_cursada\controlador->accion__guardar
  • file: C:\Apache\www\G3W\src\siu\lib\kernel\nucleo\controlador.php, linea 413

—[ 5 ]-----------------------------------------

  • function: kernel\nucleo\controlador->invocar_accion

  • file: C:\Apache\www\G3W\src\siu\lib\kernel\nucleo\controlador.php, linea 145

  • param:
    0: guardar
    —[ 6 ]-----------------------------------------

  • function: kernel\nucleo\controlador->procesar_accion

  • file: C:\Apache\www\G3W\src\siu\lib\kernel\nucleo\acceso_web.php, linea 108

—[ 7 ]-----------------------------------------

  • function: kernel\nucleo\acceso_web::procesar_request
  • file: C:\Apache\www\G3W\src\siu\lib\kernel\nucleo\acceso_web.php, linea 26

—[ 8 ]-----------------------------------------

  • function: kernel\nucleo\acceso_web::procesar
  • file: C:\Apache\www\G3W\src\siu\www\index.php, linea 4

########################################################################################################################
La function esta definida en “src/siu/modelo/datos/db/carga_notas_cursada.php”.

Muchas gracias!!!


error.jpg

error.png

function.jpg

function.png

Hola Pablo,

Ese error se debe a que cada vez que agregas o modificas una función de un catalogo (clases que están dentro de la carpeta src/pers/<nombre_pers>/modelo/datos/db/), debes correr el comando bin/guarani generar_catalogo <bloque_acceso>.

Osea, en una consola te paras en el directorio raíz de autogestión y corres bin/guarani generar_catalogo <bloque_acceso>, donde <bloque_acceso> es el ACC_ID del alias de Apache (archivo instalacion/alias.conf). Esto te va a generar el archivo src/pers/<nombre_pers>/modelo/datos/_info_catalogo.php, dicho archivo agregalo a SVN y commitealo.

Recorda que en las funciones del catalogo tenes que agregar annotations para que funcionen (ver ejemplos en las clases del SIU):


       /**
	 * parametros: comision
	 * cache: no
	 */
	public function insertar_instancias_acta($parametros)
        {
                  $comision = $parametros['comision'];
        }

Cuando en los logs de Guaraní te muestra el error que me enviaste en la captura…


clase: kernel\error_kernel
mensaje: SHUTDOWN

… es porque tenes que mirar en los logs de Apache.

saludos.

Hola:

Hice lo que me dijeron, pero sigue sin cerrar el acta:

en “src/pers/pers_unq/modelo/datos/db/carga_notas_cursada.php”, cree la funcion:

/**
* parametros: _ua, comision
* cache: no
* filas: 1
*/
function cerrar_acta($parametros)
{

////////////////////////////////////////////////
// INICIO – Cerrar acta promoción y cursadas
////////////////////////////////////////////////
// maxima cantidad de folios del acta
$sql = “SELECT SUM(CASE resultado WHEN NULL THEN 0 ELSE 1 END) * 100 / COUNT(*) AS porcentajes
FROM sga_curs_pendiente
WHERE comision = {$parametros[‘comision’]}”;

 $porcentaje = current(kernel::db()->consultar_fila($sql, db::FETCH_NUM));
	
$sqlActas = "select SUM(CASE fecha_regularidad WHEN NULL THEN 0 ELSE 1 END) * 100 / COUNT(*) AS porcentajef from sga_curs_pendiente where comision = {$parametros['comision']}";
$fechasRegularidad = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);	
 
 if ($porcentaje[0] == $fechasRegularidad[0]){

$sqlActas = "select acta_promocion, acta_regular from sga_curs_pendiente where comision = {$parametros['comision']}";
$datos = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);


$sqlGrabarPromo = "EXECUTE PROCEDURE sp_cerrar_actaprom_294_unq({$parametros['_ua']},'".$datos[0]."')";
kernel::db()->consultar_fila($sqlGrabarPromo, db::FETCH_NUM);
    
$sqlGrabarCursado = "EXECUTE PROCEDURE sp_cerrar_actareg_294_unq({$parametros['_ua']},'".$datos[1]."')";  
kernel::db()->consultar_fila($sqlGrabarCursado, db::FETCH_NUM);

} 

////////////////////////////////////////////////
// FIN – Cerrar acta promoción y cursadas
////////////////////////////////////////////////

}  		

Los procedimientos por separado, cierran el acta, ejecuto primero promocion y despues cursado.

Q me puede estar faltando?. Muchas gracias!!!

Hola Pablo,

A ver si entendí bien, vos decís que los procedures los corres por separado y cierran el acta. Entonces es extraño que no se estén ejecutando en el código, verifica lo siguiente:

  1. Que en la función evt__procesar_folio de la clase src\pers\pers_unq\modelo\transacciones\carga_notas_cursada.php estés llamando a la función catalogo::consultar(‘carga_notas_cursada’, ‘cerrar_acta’, $parametros);.

  2. Ver que la condición $porcentaje[0] == $fechasRegularidad[0] de true, sino nunca va a invocar a los procedures sp_cerrar_actaprom_294_unq y sp_cerrar_actareg_294_unq.

Nose bien lo que hacen estos procedures personalizados, pero si ustedes dicen que están cerrando el acta cuando lo corren a mano, lo mismo debería hacer cuando lo ejecutan desde la aplicación.

Un detalle, veo el segundo parámetro de los procedures los pasas entre comillas, en lugar de eso te sugiero que utilices la función kernel::db()->quote($parametro) , quedaría:


$param1 = kernel::db()->quote($datos[0]);
$sqlGrabarPromo = "EXECUTE PROCEDURE sp_cerrar_actaprom_294_unq({$parametros['_ua']}, $param1)";
$param2 = kernel::db()->quote($datos[1]);
$sqlGrabarCursado = "EXECUTE PROCEDURE sp_cerrar_actareg_294_unq({$parametros['_ua']}, $param2)";  

saludos.

hola:

Hice las modificaciones recomendadas pero sigue sin funcionar, donde llama a la función para cerrar acta, lo hago acá (en negrita):
\pers_unq\modelo\transacciones\carga_notas_cursada.php

//---------------------------------------------
//	EVENTOS
//---------------------------------------------

function evt__procesar_folio($seleccion, $renglones, $param_sistema)
{
	$acta_cab = $this->info__acta_cabecera($seleccion);
	$error = new error_guarani_procesar_renglones('Error cargando notas');
	$error_acta = new \siu\errores\error_guarani_acta_cursada_cerrada('Error cargando notas - Acta no disponible');
	
	//array('asentar_notas_actas_regulares' => $asentar_notas_actas_regulares, 'cierre_parcial' => $cierre_parcial)
	//		N = No Obligatoria, O = Obligatoria, S = Sin Notas
	if ($this->acta_regular_activa($seleccion)) {
		$hay_renglones_actualizados = false;
		
		foreach($renglones as $renglon) {
			try {
				$renglon['LEGAJO_DOCENTE'] = kernel::persona()->get_legajo_docente();
				$renglon['FECHA_INICIO'] = $acta_cab['FECHA_INICIO'];
				$renglon['COMISION'] = $acta_cab['COMISION'];
				
				if(!empty($renglon['CONDICION']))
				{
					$parametros = array('condicion' => $renglon['CONDICION']);
					$resultado = catalogo::consultar('carga_notas_cursada', 'get_resultado_condicion', $parametros);
				}
				else
				{
					$resultado = "";
				}

				//	validacion sobre el renglon
				//	$param_sistema = array('asentar_notas_actas_regulares', 'cierre_parcial')
				$error_nota = false;
				
				if ($param_sistema['cierre_parcial']){ //Si está en cierre parcial
				
					if ($resultado == "P" && $renglon['PROMOCIONAL'] == "S"){ //CONTROLO PARÁMETRO cargar_notas_promocion PARA ALMUNOS PROMOCIONALES
						if ($renglon['CONDICION'] != "" && $renglon['FECHA'] != "" ){
							switch($param_sistema['cargar_notas_promocion']){
								case "O":
									if (empty($renglon['NOTA'])){
										$error_nota = true;										
										$error->add_renglon($renglon['RENGLON'], "Debe ingresar la nota de la promoción", $renglon);
									}
									break;
							}
						} else {
							$error_nota = true;
							$error->add_renglon($renglon['RENGLON'], "Debe ingresar la condición de regularidad y la fecha", $renglon);
						}
					}
				
				//Obligo a cargar todos los datos del alumno  
					if ($renglon['CONDICION'] != "" && $renglon['FECHA'] != ""){
						switch($param_sistema['asentar_notas_actas_regulares']){
							case "O":
								if (empty($renglon['NOTA']) && ($resultado != "U") ){
									$error_nota = true;										
									$error->add_renglon($renglon['RENGLON'], "Debe ingresar la nota de la regularidad", $renglon);
								}
								break;
							case "S":
								if($renglon['PROMOCIONAL'] == "S" && $param_sistema['cargar_notas_promocion'] == 'O')
								{
									$renglon['NOTA'] = $renglon['NOTA'];
								}
								else
								{
									$renglon['NOTA'] = "";
								}
								break;
						}
					} else {
						if ($renglon['CONDICION'] == "" && $renglon['FECHA'] == "" && $renglon['ASISTENCIA'] == "" && $renglon['NOTA'] == "")
						{
							$renglon['RESULTADO'] = "";
						}
						else
						{
							$error_nota = true;
							$error->add_renglon($renglon['RENGLON'], "Debe ingresar la condición de regularidad y la fecha", $renglon);								
						}
					}
				}

				if (!$error_nota){
					$ok = catalogo::consultar('carga_notas_cursada', 'guardar_renglon', $renglon);						
					if($ok[0]==1) {
						$hay_renglones_actualizados = true;
					} else {
						$error->add_renglon($renglon['RENGLON'], $ok[1], $renglon);
					}
				}
			} catch (error_kernel $e) {					
				$error->add_renglon($renglon['RENGLON'], $e->getMessage(), $renglon);
				//kernel::log()->add_error($e);
			}
		}
		if ($hay_renglones_actualizados){
			$parametros = array('comision' => $acta_cab['COMISION']);
			$ok = catalogo::consultar('carga_notas_cursada', 'actualizar_acta', $parametros);

// INICIO - Cerrar acta
catalogo::consultar(‘carga_notas_cursada’, ‘cerrar_acta’, $parametros); //<====> Deberías agregar esta función que cierra el acta
// FIN - Cerrar acta

catalogo::limpiar_cache(‘carga_notas_cursada’, ‘porcentaje_carga_notas_comision’, $parametros);
}
if($error->hay_renglones()) {
throw $error;
}
} else {
throw $error_acta;
}
}

Paso los procedimientos, pero funcionan por separado.

En “pers\pers_unq\modelo\datos\db\carga_notas_cursada.php”, quedo como me recomendaste:

/**
* parametros: _ua, comision
* cache: no
* filas: 1
*/
function cerrar_acta($parametros)
{

////////////////////////////////////////////////
// INICIO – Cerrar acta promoción y cursadas
////////////////////////////////////////////////
// maxima cantidad de folios del acta
$sql = “SELECT SUM(CASE resultado WHEN NULL THEN 0 ELSE 1 END) * 100 / COUNT(*) AS porcentajes
FROM sga_curs_pendiente
WHERE comision = {$parametros[‘comision’]}”;

 $porcentaje = current(kernel::db()->consultar_fila($sql, db::FETCH_NUM));
	
$sqlActas = "select SUM(CASE fecha_regularidad WHEN NULL THEN 0 ELSE 1 END) * 100 / COUNT(*) AS porcentajef from sga_curs_pendiente where comision = {$parametros['comision']}";
$fechasRegularidad = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);	
 
 if ($porcentaje[0] == $fechasRegularidad[0]){


$sqlActas = "select DISTINCT acta_promocion, acta_regular from sga_curs_pendiente where comision = {$parametros['comision']}";
$datos = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);

$param1 = kernel::db()->quote($datos[0]);
$sqlGrabarPromo = "EXECUTE PROCEDURE sp_cerrar_actaprom_294_unq({$parametros['_ua']},$param1)";
kernel::db()->consultar_fila($sqlGrabarPromo, db::FETCH_NUM);
    
$param2 = kernel::db()->quote($datos[1]);
$sqlGrabarCursado = "EXECUTE PROCEDURE sp_cerrar_actareg_294_unq({$parametros['_ua']},$param2)";  
kernel::db()->consultar_fila($sqlGrabarCursado, db::FETCH_NUM);

} 

////////////////////////////////////////////////
// FIN – Cerrar acta promoción y cursadas
////////////////////////////////////////////////

}

Donde le estoy errando?.Muchas gracias!!!


sp_cerrar_actareg_294_unq.sql (14 KB)

sp_cerrar_actaprom_294_unq (copia).sql (13.3 KB)

Hola Pablo,

Esto lo vas a tener que ir debugeando para ver cual es el problema. También depende de los datos que vos tengas para saber si se dan las condiciones para cerrar el acta o no.

Te recomiendo lo siguiente:

  1. Ver los logs, en la carpeta instalacion/log de 3W vas a encontrar los logs que genera la aplicación. Se genera uno por cada petición la servidor. Cuando vayas a cerrar el acta, fíjate y vas a ver que se genera un nuevo archivo de log, revisalo para ver los datos que devuelven la queries.

  2. Podes agregar mas información a los logs: podes usar la función klog2(“=== Resultado ===”, $resultado);, esto va a escribir en el log el valor de la variable $resultado. Así podes debugear distintas variables para saber porque no te esta funcionando la función.

  3. En cuando a los procedures, podes correrlos a mano e ir modificandolos para que funcionen como ustedes quieren.

Por favor, sigan estos lineamientos que le van a servir para encontrar errores en personalizaciones existentes o desarrollar nuevas.

Espero que les sirva, saludos.

Hola:

Segui tus recomendaciones, hicimos algunos cambios:
En “pers\pers_unq\modelo\datos\db\carga_notas_cursada.php”, quedo:

/**
* parametros: _ua, comision
* cache: no
* filas: 1
*/
function cerrar_acta($parametros)
{

////////////////////////////////////////////////
// INICIO – Cerrar acta promoción y cursadas
////////////////////////////////////////////////
// maxima cantidad de folios del acta

 $sqlActas = "select DISTINCT acta_promocion from sga_curs_pendiente where comision = {$parametros['comision']}";
 $datosPromo = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);
 $datosPromo1 = kernel::db()->quote($datosPromo[0]);


 $sqlActas = "select DISTINCT acta_regular from sga_curs_pendiente where comision = {$parametros['comision']}";
 $datosCurs = kernel::db()->consultar_fila($sqlActas, db::FETCH_NUM);
 $datosCurs1 = kernel::db()->quote($datosCurs[0]);

        	                $sqlGrabarPromo = "EXECUTE PROCEDURE sp_cerrar_actaprom_294_unq({$parametros['_ua']},$datosPromo1)";
        	                kernel::db()->consultar($sqlGrabarPromo, db::FETCH_NUM);
            
        	                $sqlGrabarCursado = "EXECUTE PROCEDURE sp_cerrar_actareg_294_unq({$parametros['_ua']},$datosCurs1)";  
        	                kernel::db()->consultar($sqlGrabarCursado, db::FETCH_NUM);

// klog2(“=== sqlGrabarCursadoDentroIf ===”, $sqlGrabarCursado);
////////////////////////////////////////////////
// FIN – Cerrar acta promoción y cursadas
////////////////////////////////////////////////

}  		

Los controles para verificar si se cargaron el 100% de notas y fechas en la tabla “sga_curs_pendiente” se hizo en los procedimientos (Adjuntados).

Muchas gracias!!!


sp_cerrar_actaprom_294_unq.sql (14.1 KB)

sp_cerrar_actareg_294_unq.sql (14.7 KB)