Error de Indice en evento " evt__validar_ingreso($fila, $id=null)"

Hola, estoy intentando hacer una validacion en el Alta/modificacion de una tabla.
entonces en el dt cree el evento :
function evt__validar_ingreso($fila, $id=null) (usando el generador de codigo)

El tema es que me muestra este NOTICE: (yo tengo activado que me muestre todos los errores posible el PHP)

Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 

Este es mi dt:

<?php
class dt_t_titulares extends toba_datos_tabla
{
	function get_listado($filtro=array())
	{
		$where = array();
		if (isset($filtro['apellido'])) {
			$where[] = "apellido ILIKE ".quote("%{$filtro['apellido']}%");
		}
		if (isset($filtro['nombre'])) {
			$where[] = "nombre ILIKE ".quote("%{$filtro['nombre']}%");
		}
		$sql = "SELECT
			t_tt.id,
			t_tt.apellido,
			t_tt.nombre
		FROM
			t_titulares as t_tt
		ORDER BY apellido, nombre";
		if (count($where) > 0) {
			$sql = sql_concatenar_where($sql, $where);
		}
		return toba::db('muni_gis')->consultar($sql);
	}

	function get_descripciones($id)
	{
		if (isset($id)) {
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as ape_nom , 'get_descripciones' as origen FROM t_titulares WHERE id = $id";
		} else {    
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as ape_nom , 'get_descripciones' as origen FROM t_titulares ORDER BY apellido, nombre";
		}    
		return toba::db('muni_gis')->consultar($sql);
	}
	
	function get_tit_apenom($array)
	{
		toba::logger()->debug('array en  get_tit_apenom');
		//var_dump($array);
		if (isset($array['id'])) {
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as tit_ape_nom  FROM t_titulares WHERE id = ".$array['id'];
		} else {    
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as tit_ape_nom  FROM t_titulares ORDER BY apellido, nombre";
		}    
		toba::logger()->debug("sql: ". $sql);
		return toba::db('muni_gis')->consultar($sql);
	}
	
	function get_tit_apenom_masiva($array)
	{
		toba::logger()->debug('array en  get_tit_apenom_masiva'.$array['titular_id']);
		//var_dump($array);
		if (isset($array['titular_id'])) {
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as tit_ape_nom  FROM t_titulares WHERE id = ".$array['titular_id'];
		} else {    
			$sql = "SELECT id, (apellido || ', ' || nombre || '(' || COALESCE(numerodoc,'0') || ')' ) as tit_ape_nom  FROM t_titulares ORDER BY apellido, nombre";
		}    
		toba::logger()->debug("sql: ". $sql);
		return toba::db('muni_gis')->consultar($sql);
	}
	
	function get_titular_apellidoynombre($id)
	{
		//var_dump($id);
		$sql = "SELECT t_titulares.id, (trim(apellido) || ', ' || nombre || ' (' || tdoc.descripcion_corta ||'-' || numerodoc || ')' ) as ape_nom 
			FROM t_titulares 
			LEFT JOIN t_tipodoc tdoc on t_titulares.tpodoc_id = tdoc.id
			Where t_titulares.id=$id 
			ORDER BY apellido, nombre";
		
		toba::logger()->debug(" sql: \n $sql");
		
		return toba::db('muni_gis')->consultar($sql);
	}
	
	function existe_dni($tpodoc, $nrodoc)
	{
		$rs = null;
		if (strlen($nrodoc) > 0 and $nrodoc > 0) {
			$sql = "SELECT id, apellido , nombre FROM t_titulares WHERE numerodoc = $nrodoc and tpodoc_id = $tpodoc";
			$rs = toba::db('muni_gis')->consultar($sql);
		}
		return !empty($rs);
	}

	function existe_duplicado_completo($tpodoc, $nrodoc, $apellido, $nombre)
	{
		$rs = null;
		if (strlen($nrodoc) > 0 and $nrodoc > 0) {
			$sql = "SELECT id, apellido , nombre FROM t_titulares WHERE numerodoc=$nrodoc and tpodoc_id=$tpodoc and apellido=$apellido and nombre=$nombre";
			$rs = toba::db('muni_gis')->consultar($sql);
		}
		return !empty($rs);
	}
	
	/**
	 * Ventana de validacion que se invoca cuando se crea o modifica una fila en memoria. Lanzar una excepcion en caso de error
	 * @param array $fila Datos de la fila
	 * @param mixed $id Id. interno de la fila, si tiene (en el caso modificacion de la fila)
	 */
	function evt__validar_ingreso($fila, $id=null)
	{
		//toba::logger()->debug("fila: ". print_r($fila));
		if ($fila['tpodoc_id'] <> 0 and $fila['numerodoc'] <> 0 and $id==null) {  //Modificacion
			if ($this->existe_dni($fila['tpodoc_id'],$fila['numerodoc']))
				throw new toba_error('El Numero de Documento y Tipo de Documento ya existe en la base de datos!. Verifique');
		}
		echo ":::AnTES:::";
		var_dump($fila);
		if ($this->existe_duplicado_completo($fila['tpodoc_id'],$fila['numerodoc'], $fila['apellido'],$fila['nombre']) ) {
			throw new toba_error('El Titular ya fue dado de Alta en la base de datos!. Verifique');
		}
		 
		
	}

}
?>

Y esto como veran hay un var_dump, despues del texto “:::anTES:::”
y esto es lo que sale en la primer parte de la pagina:

:::AnTES:::array(4) { ["apellido"]=> string(6) "PARDAL" ["nombre"]=> string(4) "Jose" ["tpodoc_id"]=> string(1) "1" ["numerodoc"]=> string(1) "0" } 
Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 
:::AnTES:::array(1) { ["id"]=> string(2) "22" } Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: numerodoc in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: apellido in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: nombre in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 :::AnTES:::array(1) { ["fecha_alta_reg"]=> NULL } Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: numerodoc in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: apellido in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: nombre in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 :::AnTES:::array(1) { ["usuario_alta_reg"]=> NULL } Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: numerodoc in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: apellido in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: nombre in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 :::AnTES:::array(1) { ["usuario_mod_reg"]=> NULL } Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: numerodoc in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: apellido in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: nombre in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 104 :::AnTES:::array(1) { ["fecha_mod_reg"]=> NULL } Notice: Undefined index: tpodoc_id in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: numerodoc in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: apellido in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 Notice: Undefined index: nombre in /home/nicolas/Descargas/muni_gis/php/datos/dt_t_titulares.php on line 110 

Porque Sucede esto ???

Lo que mas molesta es que hace la validacion!
Si en algun momento no entra al evento con los indices correctos, para que sirve entonces?
Saludos

Hola Ricardo,

podrias adjuntarme el codigo del CI que maneja esta operacion?

Saludos

Perdon, perdon …

estaba modificando un CI pero probaba desde otro …

sin embargo me sigue qedando la duda del evento evt__validar_ingreso($fila, $id=null) en el dt …

porque si tengo un parametro $fila, donde se supone que estan todos lo indices de la tabla … me de ese error ??

Saludos

Bueno Richard, te cuento como lo resolvi.
no se si esta bien…

movi las funciones de busqueda al CI, y las invoco desde el evento ( modificacion y/o alta),
usando $this->

Yo hubiera deseado que funcione el evento en el dt … asi no tenia que copiar y pegar codigo.

Saludos

Hola Ricardo,

Fijate que el evt__validar_ingreso se esta llamando 2 veces, primero con todos los parametros correctos y luego con un arreglo que solo tiene el campo id, las posibilidades son varias:

  • Que haya quedado alguna llamada a set o nueva_fila colgada por ahi cuando no se tienen todos los datos.

  • Que estes usando sin querer la misma subclase para mas de un DT en la operacion

Por eso queria ver el codigo del CI, para determinar en que puntos podiamos colocar algunas llamadas para debuggear mejor esta situacion extraña.

Saludos

No es necesario que muevas las funciones de busqueda al codigo del CI, las podes llamar de manera estatica invocandolas como ‘dt_t_titulares::existe_duplicado_completo’ o tambien mediante la API toba::tabla();

Yo hubiera deseado que funcione el evento en el dt .... asi no tenia que copiar y pegar codigo.

Como te decia mas arriba, me llama la atencion el doble llamado a la funcion… pareciera como si hubiera 2 registros nuevos.