Problema probando Api externa de SIDCER en datosanalitico

Buen dia!

Estamos probando la api externa de sidcer. Ejecutamos el archivo llamado diferenciales.sql y al momento de hacer la siguiente petición a

https://sistemas.unvime.edu.ar/pruebas/sidcer/rest/personas/2594/datosanalitico

Nos muestra lo siguiente:

{
“error”: 500,
“mensaje”: “500 Internal Server Error”,
“descripcion”: “Error Interno en el servidor: SQL ERROR: SQLSTATE[42703]: Undefined column: 7 ERROR: column "plan_codigo" does not exist\nLINE 6: plan_codigo,\n ^\nSELECT\ttitulo_araucano,\n\t\t\t\t\t\ttitulo_nombre,\n\t\t\t\t\t\tresponsable_academica,\n\t\t\t\t\t\tpropuesta,\n\t\t\t\t\t\tpropuesta_nombre,\n\t\t\t\t\t\tplan_codigo,\n\t\t\t\t\t\tplan_nombre,\n\t\t\t\t\t\ttitulo_esta_cumplido,\n\t\t\t\t\t\tnro_resolucion_ministerial,\n\t\t\t\t\t\tnro_resolucion_coneau,\n\t\t\t\t\t\tnro_resolucion_institucion,\n\t\t\t\t\t\tfecha_ingreso,\n\t\t\t\t\t\tfecha_egreso,\n\t\t\t\t\t\ttiene_sanciones,\n\t\t\t\t\t\ttitulo_anterior_nivel,\n\t\t\t\t\t\ttitulo_anterior_origen,\n\t\t\t\t\t\ttitulo_anterior_nacionalidad,\n\t\t\t\t\t\ttitulo_anterior_institucion,\n\t\t\t\t\t\ttitulo_anterior_denominacion,\n\t\t\t\t\t\ttitulo_anterior_revalidado,\n\t\t\t\t\t\ttitulo_anterior_nro_resolucion,\n\t\t\t\t\t\ttitulo_apto_ejercicio,\n\t\t\t\t\t\tplan_vigente,\n\t\t\t\t\t\ttipo,\n\t\t\t\t\t\tactividad_nombre,\n\t\t\t\t\t\tactividad_codigo,\n\t\t\t\t\t\tcreditos,\n\t\t\t\t\t\tfecha,\n\t\t\t\t\t\tnota,\n\t\t\t\t\t\tresultado,\n\t\t\t\t\t\tfolio_fisico,\n\t\t\t\t\t\tacta_resolucion,\n\t\t\t\t\t\tpromedio,\n\t\t\t\t\t\tpromedio_sin_aplazos,\n\t\t\t\t\t\tforma_aprobacion\n\t\t\t\tFROM\tws_datos_analitico (2594, null, true)”
}

Entonces probamos con la consulta SQL en el motor de postgres y encontramos que no existen los siguientes campos:

plan_codigo,
plan_nombre,
tiene_sanciones,
titulo_anterior_origen,

FROM ws_datos_analitico (2594, null, true)

Buenos días. Que versión de gestión tienen? 3.15 o 3.14?
Que versión de la api_externa están usando? 1.0.1 o 1.0.2?

Saludos.

Buen día!

Tenemos SIU Guarani en la version 3.15.1
La api externa que estamos probando tiene la version 1.0.2

Buenas Ezequiel. El archivo que crea nuevamente la función ws_datos_analitico fijate que tiene los campos en el return table.
https://colab.siu.edu.ar/trac/guarani3/browser/nodos/unvime/api_externa/trunk/1.0.2/diferencial.sql

Proba de volver a correr el diferencial y te debería andar la siguiente query.



SELECT	titulo_araucano,
						titulo_nombre,
						responsable_academica,
						propuesta,
						propuesta_nombre,
						plan_codigo,
						plan_nombre,
						titulo_esta_cumplido,
						nro_resolucion_ministerial,
						nro_resolucion_coneau,
						nro_resolucion_institucion,
						fecha_ingreso,
						fecha_egreso,
						tiene_sanciones,
						titulo_anterior_nivel,
						titulo_anterior_origen,
						titulo_anterior_nacionalidad,
						titulo_anterior_institucion,
						titulo_anterior_denominacion,
						titulo_anterior_revalidado,
						titulo_anterior_nro_resolucion,
						titulo_apto_ejercicio,
						plan_vigente,
						tipo,
						actividad_nombre,
						actividad_codigo,
						creditos,
						fecha,
						nota,
						resultado,
						folio_fisico,
						acta_resolucion,
						promedio,
						promedio_sin_aplazos,
						forma_aprobacion
				FROM	ws_datos_analitico ($persona, $tituloAraucano, true)"

Saludos.

Buenas!

Hemos verificado que los campos aparecen en el diferencial, y lo corrimos otra vez. Como resultado tenemos la funcion :

“ws_datos_analitico” en el esquema “negocio”

Luego realizamos la consulta que nos dieron anteponiendo la sentencia “set schema ‘negocio;’”
Y nos sigue indicando que las estas columnas no existen:

plan_codigo,
plan_nombre,
tiene_sanciones,
titulo_anterior_origen,

Entonces buscamos en la definicion de la funcion si encontrabamos esas 4 cadenas de texto en toda la expresion. Y efectivamente no estan.
Quizas se hace un poco extensa esta respuesta pero les adjunto nuestra definicion de la funcion:

– Function: negocio.ws_datos_analitico(integer, integer, boolean)

– DROP FUNCTION negocio.ws_datos_analitico(integer, integer, boolean);

CREATE OR REPLACE FUNCTION negocio.ws_datos_analitico(IN ppersona integer, IN ptituloaraucano integer, IN pdevolverrtf boolean)
RETURNS TABLE(titulo_araucano integer, titulo_nombre character varying, responsable_academica integer, propuesta integer, propuesta_nombre character varying, titulo_esta_cumplido character, nro_resolucion_ministerial character varying, nro_resolucion_coneau character varying, nro_resolucion_institucion character varying, fecha_ingreso character, fecha_egreso character, titulo_anterior_nivel character varying, titulo_anterior_nacionalidad character varying, titulo_anterior_institucion character varying, titulo_anterior_denominacion character varying, titulo_anterior_revalidado character varying, titulo_anterior_nro_resolucion character varying, titulo_apto_ejercicio character varying, plan_vigente character, tipo character, actividad_nombre character varying, actividad_codigo character varying, creditos numeric, fecha character, nota character varying, resultado character varying, folio_fisico integer, acta_resolucion character varying, promedio numeric, promedio_sin_aplazos numeric, forma_aprobacion character) AS
$BODY$

DECLARE
cnt smallint;
_institucion_araucano integer;
_plan_vigente char(2);
_retorno text;
_k integer;
cur_tit record;
cur_act record;
cur_rtf record;
_plan_version integer;
_nro_resolucion_ministerial varchar(100);
_nro_resolucion_coneau varchar(30);
_nro_resolucion_institucion varchar(30);
_titulo_apto_ejercicio varchar(2);
_titulo_anterior_revalidado varchar(30);
_titulo_anterior_resolucion_convalidacion varchar(30);
_titulo_anterior_nacionalidad varchar(10);
_tipo_actividad char(1);
_tipo_trayecto char(1);
_alumno_ant integer;
_SUBTIPO_MODULO_RTF integer;
_modulo_rtf_cumplido boolean;
_modulo_reconocido_total integer;
_fecha char(10);
_acta_resolucion varchar(30);
_codigo_ant varchar(20);
_forma_aprobacion char(1);

BEGIN
/*
forma_aprobacion = Valores posibles: E = Examen / P = Promoción / Q = Equivalencia / R = Resolución
*/
cnt := 0;
_k := 0;
_retorno := NULL;
_nro_resolucion_coneau := ‘’;
_SUBTIPO_MODULO_RTF := 11;
_tipo_actividad = ‘A’;
_tipo_trayecto = ‘T’;
_alumno_ant := NULL;
_institucion_araucano := NULL;

– Si no viene los datos de la identificacion del alumno sale sin devolver datos.
IF pPersona IS NULL THEN
RETURN;
END IF;

– Tabla temporal para registrar las actividades aprobadas por el alumno.
CREATE TEMP TABLE _Taprobadas (elemento integer);

– Devuelve las certificaciones obtenidas por la persona.
FOR cur_tit IN (
SELECT
a.alumno, a.plan_version as plan_version_actual,
a.propuesta, prop.nombre as propuesta_nombre, prop.propuesta_tipo,
c.titulo_araucano, c.certificado,
CASE p.sexo WHEN ‘F’ THEN c.nombre_femenino WHEN ‘M’ THEN c.nombre ELSE c.nombre END as titulo_nombre,
(CASE WHEN co.certificado IS NOT NULL THEN ‘SI’ ELSE ‘NO’ END) as titulo_esta_cumplido,
d.documento_numero as nro_resolucion_institucion,
– c.nro_resolucion_ministerio,
pc.nro_resolucion_ministerial,
co.fecha_egreso as dfecha_egreso,
CASE
WHEN co.fecha_egreso IS NOT NULL THEN to_char(co.fecha_egreso, ‘DD/MM/YYYY’)
ELSE ‘’
END as fecha_egreso,
to_char(get_fecha_ingreso_alumno(a.alumno), ‘DD/MM/YYYY’) as fecha_ingreso,
COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 1), ‘’) AS titulo_anterior_denominacion,
COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 2), ‘’) AS titulo_anterior_institucion,
COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 3),‘’) AS titulo_anterior_institucion_nacionalidad,
COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 4), ‘’) AS titulo_anterior_nivel,
co.promedio as promedio, – promedio con aplazos
co.promedio_sin_aplazos as promedio_sin_aplazos
FROM mdp_personas as p
JOIN sga_alumnos as a ON a.persona = p.persona
JOIN sga_propuestas as prop ON prop.propuesta = a.propuesta
JOIN sga_propuestas_aspira as pa ON (pa.propuesta = a.propuesta AND pa.persona = a.persona)
JOIN sga_situacion_aspirante as sa ON (sa.situacion_asp = pa.situacion_asp AND sa.resultado_asp IN (‘A’,‘P’))
JOIN sga_planes_certificados as pc ON pc.plan_version = a.plan_version
JOIN sga_certificados as c ON c.certificado = pc.certificado
LEFT JOIN sga_documentos as d ON d.documento = c.nro_resolucion
LEFT JOIN sga_certificados_otorg as co ON (co.alumno = a.alumno AND co.certificado = c.certificado AND co.anulado = 0)
WHERE p.persona = pPersona
AND (pTituloAraucano IS NULL OR c.titulo_araucano = pTituloAraucano)
ORDER BY a.alumno, c.nombre
)
LOOP

-- Si no se informa por titulo, entonces solo informo una vez por cada alumno y propuesta.
IF pTituloAraucano IS NULL AND _alumno_ant = cur_tit.alumno THEN 
  -- Continuo con el proximo registro.
  _alumno_ant := cur_tit.alumno;	
  CONTINUE;
END IF;
_alumno_ant := cur_tit.alumno;	

-- Obtengo el codigo de institucion araucano de la responsable academica de la propuesta
SELECT ra.institucion_araucano
  INTO _institucion_araucano
  FROM sga_propuestas_ra as pra
       JOIN sga_responsables_academicas as ra ON ra.responsable_academica = ra.responsable_academica
 WHERE pra.propuesta = cur_tit.propuesta
 ORDER BY pra.propuesta
 LIMIT 1;
 
-- Registro las actividades aprobadas del alumno en una tabla temporal si cambio de propuesta.
IF _alumno_ant <> cur_tit.alumno THEN 
  DELETE FROM _Taprobadas;
  INSERT INTO _Taprobadas (elemento)
       SELECT ha.elemento FROM vw_hist_academica_basica as ha
        WHERE ha.alumno = cur_tit.alumno 
          AND ha.resultado = 'A';
END IF;
_alumno_ant := cur_tit.alumno;	


-- Recupero version del plan de estudios en la que se encontraba el alumno al momento del egreso
IF pTituloAraucano IS NULL OR cur_tit.dfecha_egreso IS NULL THEN 
   _plan_version := cur_tit.plan_version_actual;
ELSE
   -- Obtengo la version del plan de estudios a la fecha de egreso.
   _plan_version := get_plan_version_alumno(cur_tit.alumno, to_char(cur_tit.dfecha_egreso, 'YYYY-MM-DD'));
END IF;	

-- Verifica si el plan de estudios es activo vigente
_plan_vigente := 'SI';
SELECT (CASE sga_planes.estado WHEN 'V' THEN 'SI' ELSE 'NO' END) INTO _plan_vigente
  FROM sga_planes_versiones 
       JOIN sga_planes ON sga_planes.plan = sga_planes_versiones.plan
 WHERE sga_planes_versiones.plan_version = _plan_version;

	
-- Verifica el estado de convalidacion/revalidacion del titulo anterior habilitante cuando es de un pais extranjero
_titulo_anterior_revalidado := '';
_titulo_anterior_resolucion_convalidacion := '';
_titulo_anterior_nacionalidad := '';

IF cur_tit.titulo_anterior_institucion_nacionalidad = 'E' THEN
  _titulo_anterior_revalidado := COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 5), '');
  _titulo_anterior_resolucion_convalidacion := COALESCE(get_titulo_institucion_habilitante(a.alumno, c.certificado, 6), '');
  _titulo_anterior_nacionalidad := 'Extranjero';
ELSEIF cur_tit.titulo_anterior_institucion_nacionalidad = 'N' THEN 
  _titulo_anterior_nacionalidad := 'Argentino';
END IF;

-- Verifica si es apto profesional el titulo
_titulo_apto_ejercicio := 'SI';
IF cur_tit.titulo_anterior_institucion_nacionalidad = 'E' AND cur_tit.propuesta_tipo IN (202, 205) THEN
  -- El titulo es de Posgrado/Postitulo y la institucion del titulo anterior habilitante es de un pais extranjero.
  -- El titulo NO es apto para su ejercicio en el pais.
  _titulo_apto_ejercicio := 'NO';
END IF;


-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Retorno los datos del titulo y actividades aprobadas/desaprobadas relacionadas con el titulo a informar.
-- Se devuelven actividades realizadas hasta la fecha de egreso. por si siguio realizando actividades luego de obtener este titulo.
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RETURN QUERY 
SELECT 
       -- Datos del titulo
       cur_tit.titulo_araucano,
	   cur_tit.titulo_nombre,
	   _institucion_araucano,
	   cur_tit.propuesta,
	   cur_tit.propuesta_nombre,
	   cast(cur_tit.titulo_esta_cumplido as char(2)),
	   cur_tit.nro_resolucion_ministerial,
	   _nro_resolucion_coneau,
	   cur_tit.nro_resolucion_institucion,
       cast(cur_tit.fecha_ingreso as char(10)),
       cast(cur_tit.fecha_egreso as char(10)),
	   cast(cur_tit.titulo_anterior_nivel as varchar(100)),
       _titulo_anterior_nacionalidad,
	   cast(cur_tit.titulo_anterior_institucion as varchar(255)),
	   cast(cur_tit.titulo_anterior_denominacion as varchar(255)),
       _titulo_anterior_revalidado,
       _titulo_anterior_resolucion_convalidacion,
	   _titulo_apto_ejercicio,
       _plan_vigente,

	   -- Datos de las actividades
	   _tipo_actividad,
       ha.actividad_nombre,
       ha.actividad_codigo,
	   ha.creditos,
	   cast(to_char(ha.fecha, 'DD/MM/YYYY') as char(10)) as fecha,
       ha.nota,
       cast(ha.resultado_descripcion as varchar(20)) as resultado,
       --(CASE ha.resultado WHEN 'A' THEN 'Aprobado' WHEN 'R' THEN 'Desaprobado' ELSE '' END) as resultado_descripcion,
       CASE 
	     WHEN ha.origen IN ('P','E') THEN (SELECT af.folio_fisico::integer 
                                              FROM sga_actas_folios as af 
		                                    WHERE af.id_acta = ha.id_acta AND af.folio = ha.folio LIMIT 1)
	     ELSE CAST(NULL as integer)
	   END as folio_fisico,
       cast(CASE ha.origen
	          WHEN 'P' THEN ha.nro_acta
	          WHEN 'E' THEN ha.nro_acta
	          WHEN 'A' THEN ha.nro_resolucion_descripcion  -- Aprobacion x Resolucion
	          WHEN 'B' THEN ha.nro_resolucion_descripcion  -- Equivalencia.
	         END as varchar(30)
           ) as acta_resolucion,
	   cur_tit.promedio,
	   cur_tit.promedio_sin_aplazos,
	   CASE ha.origen
	     WHEN 'A' THEN 'R' -- Resolucion
	     WHEN 'B' THEN 'Q' -- Equiv Total
		 ELSE ha.origen
	   END as forma_aprobacion 
  FROM vw_hist_academica as ha
WHERE ha.alumno    = cur_tit.alumno
  AND ha.resultado IN ('A','R')
  AND NOT (ha.resultado = 'R' AND ha.origen = 'P')
  AND (pTituloAraucano IS NULL OR 
       (pTituloAraucano IS NOT NULL AND 
        ha.fecha <= COALESCE(cur_tit.dfecha_egreso, CURRENT_DATE) AND 
        ha.elemento IN (SELECT * FROM get_actividades_certificado(cur_tit.certificado, _plan_version, false)) 
       )
	  ) 
  ORDER BY ha.fecha, ha.actividad_nombre;
  
  
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Recorro los modulos RTF que se encuentran en el titulo y que esten cumplidos (todas sus actividades aprobadas)  
-- Modulos RTF de la version actual del alumno o la version a la fecha de egreso.
-- O modulos RTF que formen parte de algun plan de la propuesta del alumno y que este cumplido por el alumno
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IF pDevolverRTF THEN 
  _modulo_rtf_cumplido := false;
  _codigo_ant := '';
  
  FOR cur_rtf IN SELECT DISTINCT mp.elemento, mp.elemento_revision, mrtf.nombre, mrtf.codigo, mrtf.creditos
                  FROM vw_modulos_plan as mp
                  JOIN sga_modulos_rtf as mrtf ON mrtf.codigo = mp.codigo					  
				 WHERE mp.entidad_subtipo = _SUBTIPO_MODULO_RTF
				   AND mp.plan_version = _plan_version
				   AND (pTituloAraucano IS NULL OR 
                        (pTituloAraucano IS NOT NULL AND 
                         mp.elemento IN (SELECT * FROM get_actividades_certificado(cur_tit.certificado, _plan_version, true))
						)
                       ) 							
				ORDER BY mrtf.codigo 
  LOOP
     IF _codigo_ant = cur_rtf.codigo AND _modulo_rtf_cumplido THEN
	    -- Si ya informe este modulo porque estaba cumplido entonces continuo con el proximo. 
		-- Esto puede darse si es que se consultan diferentes planes de una propuesta. Cada modulo tiene una revision diferente en cada version de plan de estudios
	    CONTINUE;		
	 END IF;

	 
	 _modulo_rtf_cumplido := false;
	 _fecha := NULL;
	 _acta_resolucion := NULL;
	 
	 -- Verifico si el modulo esta reconocido por resolucion.
	 SELECT to_char(r.fecha, 'DD/MM/YYYY'), d.documento_numero 
	   INTO _fecha, _acta_resolucion
	   FROM sga_reconocimiento as r
	        JOIN sga_reconocimiento_act as ra ON ra.nro_tramite = r.nro_tramite
	        LEFT JOIN sga_documentos as d ON d.documento = r.documento
	  WHERE r.alumno = cur_tit.alumno
	    AND r.estado = 'C'
		AND ra.elemento = cur_rtf.elemento
		AND ra.reconocimiento_total = 'S'
		LIMIT 1;
	
	IF FOUND THEN
	    _modulo_rtf_cumplido := true;
	END IF;
		
	IF NOT _modulo_rtf_cumplido THEN 
	   -- Verifico si todas las actividades del modulo RTF estan cumplidas
       FOR cur_act IN (
	     SELECT e_actividad.elemento
          FROM sga_elementos_comp
          JOIN sga_elementos_revision as er_actividad ON er_actividad.elemento_revision = sga_elementos_comp.elemento_hijo
          JOIN sga_elementos as e_actividad ON e_actividad.elemento = er_actividad.elemento
		  JOIN sga_g3entidades_subtipos as s ON s.entidad_subtipo = e_actividad.entidad_subtipo
         WHERE sga_elementos_comp.elemento_padre = cur_rtf.elemento_revision
		   AND s.entidad_tipo    = 2 -- Actividades
		   )
	   LOOP
		  _modulo_rtf_cumplido := true;
		  
	      SELECT COUNT(*) INTO cnt FROM _Taprobadas WHERE elemento = cur_act.elemento;
		  IF cnt = 0 THEN
		    -- No aprobo la actividad del modulo. Salgo y no informo el modulo.
		    _modulo_rtf_cumplido := false;
		    EXIT;
		  END IF;
	   END LOOP; -- Fin actividades del modulo RTF
	 END IF; 
	 
	 IF _modulo_rtf_cumplido THEN
	   -- Devuelvo el modulo RTF que esta cumplido. 
       RETURN QUERY 
	   SELECT 
           -- Datos del titulo
           cur_tit.titulo_araucano,
	       cur_tit.titulo_nombre,
	       _institucion_araucano,
	       cur_tit.propuesta,
	       cur_tit.propuesta_nombre,
	       cast(cur_tit.titulo_esta_cumplido as char(2)),
	       cur_tit.nro_resolucion_ministerial,
	       _nro_resolucion_coneau,
	       cur_tit.nro_resolucion_institucion,
           cast(cur_tit.fecha_ingreso as char(10)),
           cast(cur_tit.fecha_egreso as char(10)),
	       cast(cur_tit.titulo_anterior_nivel as varchar(100)),
           _titulo_anterior_nacionalidad,
	       cast(cur_tit.titulo_anterior_institucion as varchar(255)),
	       cast(cur_tit.titulo_anterior_denominacion as varchar(255)),
           _titulo_anterior_revalidado,
           _titulo_anterior_resolucion_convalidacion,
	       _titulo_apto_ejercicio,
           _plan_vigente,

	       -- Datos modulo RTF
		   _tipo_trayecto,
	       cur_rtf.nombre,
	       cur_rtf.codigo,
		   cur_rtf.creditos,
	       _fecha as fecha,
	       cast(NULL as varchar(10)) as nota,
	       cast('Aprobado' as varchar(20)) as resultado,
	       cast(null as integer) as folio_fisico,
	       _acta_resolucion as acta_resolucion,
	       cast(null as decimal(5,2)) as promedio,
	       cast(null as decimal(5,2)) as promedio_sin_aplazos,
	       cast(null as char(1)) as forma_aprobacion
	     ;		 
	   
	 END IF; -- Modulo RTF cumplido.
  END LOOP; -- Modulos RTF
END IF; -- Devolver modulos RTF cumplidos.
-- +++++++++++++++++++++++++++++++++ Fin modulos RTF ++++++++++++++++++++++++++++++++++++++++++++++++

END LOOP; – FIN titulos a consultar

– Borro tabla temporal.
DROP TABLE IF EXISTS _Taprobadas;

END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION negocio.ws_datos_analitico(integer, integer, boolean)
OWNER TO unvimetobasiu;
GRANT EXECUTE ON FUNCTION negocio.ws_datos_analitico(integer, integer, boolean) TO public;
GRANT EXECUTE ON FUNCTION negocio.ws_datos_analitico(integer, integer, boolean) TO unvimetobasiu;

¡Hola Ezequiel! Ya estamos verificando este inconveniente, a la brevedad subiremos el ajuste necesario
¡Saludos!

Buenas,

Los molesto para consultar si han podido realizar el ajuste para que funcione? ya que estamos en la misma condicion con una instalacion en las mismas versiones.

Gracias.

Guillermo.

Si
http://foro.comunidad.siu.edu.ar/index.php?topic=15222.0

Hola,

La instalacion la hicimos en estos dias, (bajando la api desde SIU) asi que estimo que el parche ya esta aplicado, pero por a y lguna razon, no estaria funcionando en nuestra instalacion.
Como podemos saber si estamos en lo correcto? la instalacion de la api es: 1.0.2 y la version de guarani 3.15.1, como se menciona al inicio del hilo.

Gracias.

Guillermo.

Guillermo buenos días
Has probado la query que está en la respuesta #3 para saber si ahora te funciona la función?
Si la query está funcionando, podes probar el servicio entrando a:

<path_server>/<alias>/rest/personas?pais=<pais>&numero_documento=<nro_documento>&tipo_documento=<tipo_documento>

Saludos.

Hola Jose, sip en la primer consulta con el nro de documento funciona perfecto, pero cuando hace la consulta datos analitico, da el siguiente error:

“Error Interno en el servidor: SQL ERROR: SQLSTATE[42703]: Undefined column: 7 ERROR: column "plan_codigo" does not exist\nLINE 6: plan_codigo AS plan_alumno,\n ^\nSELECT\ttitulo_araucano,\n\t\t\t\t\t\ttitulo_nombre,\n\t\t\t\t\t\tresponsable_academica,\n\t\t\t\t\t\tpropuesta,\n\t\t\t\t\t\tpropuesta_nombre,\n\t\t\t\t\t\tplan_codigo AS plan_alumno,\n\t\t\t\t\t\ttitulo_esta_cumplido,\n\t\t\t\t\t\tnro_resolucion_ministerial,\n\t\t\t\t\t\tnro_resolucion_coneau,\n\t\t\t\t\t\tnro_resolucion_institucion,\n\t\t\t\t\t\tfecha_ingreso,\n\t\t\t\t\t\tfecha_egreso,\n\t\t\t\t\t\ttiene_sanciones,\n\t\t\t\t\t\ttitulo_anterior_nivel,\n\t\t\t\t\t\ttitulo_anterior_origen,\n\t\t\t\t\t\ttitulo_anterior_nacionalidad,\n\t\t\t\t\t\ttitulo_anterior_institucion,\n\t\t\t\t\t\ttitulo_anterior_denominacion,\n\t\t\t\t\t\ttitulo_anterior_revalidado,\n\t\t\t\t\t\ttitulo_anterior_nro_resolucion,\n\t\t\t\t\t\ttitulo_apto_ejercicio,\n\t\t\t\t\t\tplan_vigente,\n\t\t\t\t\t\ttipo,\n\t\t\t\t\t\tactividad_nombre,\n\t\t\t\t\t\tactividad_codigo,\n\t\t\t\t\t\tcreditos,\n\t\t\t\t\t\tfecha,\n\t\t\t\t\t\tnota,\n\t\t\t\t\t\tresultado,\n\t\t\t\t\t\tfolio_fisico,\n\t\t\t\t\t\tacta_resolucion,\n\t\t\t\t\t\tpromedio,\n\t\t\t\t\t\tpromedio_sin_aplazos,\n\t\t\t\t\t\tforma_aprobacion\n\t\t\t\tFROM\tws_datos_analitico (40, null, true)”

La consulta que corremos:

http://<ip_servidor>/apisidcer/rest/personas/<nro_persona>/datosanalitico

Saludos.

Guillermo.

Hola Guillermo, por favor ingresa una solicitud y te enviaremos nuevamente la función ws_datos_analitico para la version 3.15

Buenos dias,

Gracias por la funcion, ya la instale pero sigue dando el mismo error:

error 500
mensaje “500 Internal Server Error”
descripcion “Error Interno en el servidor: SQL ERROR: SQLSTATE[42703]: Undefined column: 7 ERROR: column "plan_codigo" does not exist\nLINE 6: plan_codigo AS plan_alumno,\n ^\nSELECT\ttitulo_araucano,\n\t\t\t\t\t\ttitulo_nombre,\n\t\t\t\t\t\tresponsable_academica,\n\t\t\t\t\t\tpropuesta,\n\t\t\t\t\t\tpropuesta_nombre,\n\t\t\t\t\t\tplan_codigo AS plan_alumno,\n\t\t\t\t\t\ttitulo_esta_cumplido,\n\t\t\t\t\t\tnro_resolucion_ministerial,\n\t\t\t\t\t\tnro_resolucion_coneau,\n\t\t\t\t\t\tnro_resolucion_institucion,\n\t\t\t\t\t\tfecha_ingreso,\n\t\t\t\t\t\tfecha_egreso,\n\t\t\t\t\t\ttiene_sanciones,\n\t\t\t\t\t\ttitulo_anterior_nivel,\n\t\t\t\t\t\ttitulo_anterior_origen,\n\t\t\t\t\t\ttitulo_anterior_nacionalidad,\n\t\t\t\t\t\ttitulo_anterior_institucion,\n\t\t\t\t\t\ttitulo_anterior_denominacion,\n\t\t\t\t\t\ttitulo_anterior_revalidado,\n\t\t\t\t\t\ttitulo_anterior_nro_resolucion,\n\t\t\t\t\t\ttitulo_apto_ejercicio,\n\t\t\t\t\t\tplan_vigente,\n\t\t\t\t\t\ttipo,\n\t\t\t\t\t\tactividad_nombre,\n\t\t\t\t\t\tactividad_codigo,\n\t\t\t\t\t\tcreditos,\n\t\t\t\t\t\tfecha,\n\t\t\t\t\t\tnota,\n\t\t\t\t\t\tresultado,\n\t\t\t\t\t\tfolio_fisico,\n\t\t\t\t\t\tacta_resolucion,\n\t\t\t\t\t\tpromedio,\n\t\t\t\t\t\tpromedio_sin_aplazos,\n\t\t\t\t\t\tforma_aprobacion\n\t\t\t\tFROM\tws_datos_analitico (5707, null, true)”

Alguna idea de donde puedo buscar la falla?

Gracias.

Guillermo.

Guillermo, te paso nuevamente la funcion. Es raro porque la función devuelve el dato “plan_codigo”.
Si corres lo siguiente, da error o devuelve el dato “plan_codigo”:

SELECT  plan_codigo, * FROM ws_datos_analitico (5707, NULL, true)

Fijate que en la funcion que te envie por GDS, la misma que te envio por este mensaje tiene esa columna.
La base donde corriste el diferencial, es la misma donde esta buscando los datos el WS? Esto lo podes ver en el archivo de parametros.ini del file system del ws donde hiciste el svn co


ws_datos_analitico_v315.sql (25.3 KB)

Hola Ale,

Corri el select y me da el siguiente error:

ERROR: relation “mdp_personas” does not exist
LINE 35: FROM mdp_personas as p

Saludos.

Guillermo.

Correlo seteando el esquema antes:

SET search_path = negocio;
SELECT  plan_codigo, * FROM ws_datos_analitico (5707, NULL, true);

Ahi dio el mismo error que da desde la api:

ERROR: column “plan_codigo” does not exist
LINE 2: SELECT plan_codigo, * FROM ws_datos_analitico (5707, NULL, … ^

SQL state: 42703
Character: 36

Buenos días Guillermo, por los errores que nos posteas acá podemos darnos cuenta que parece que has corrido la función, que te paso por GDS Ale, en el schema public.
Te pido si por favor podes correr nuevamente el script que te enviamos por gds pero como primer línea agregarle.

SET search_path = negocio;

Saludos.

Buenas, les comento lo que hemos descubierto hasta ahora, cuando hicimos la instalacion de sidcer en una version de guarani de 3.14, no encontraba esa funcion, por lo que entre otras le copie las fuciones de un guarani 3.15.1, donde esa funcion tiene las 3 columnas.
Al momento de hacer dicha tarea me di cuenta de que la funcion existia, pero esta parametrizada con dos columnas sin el plan_codigo.
Al poner la funcion nueva, (con las 3 colmunas), no dio error a pesar de que esta dusplicada.

Pero dejo de andar el circuito de egreso, ya que este usa la funcion get_actividades_certificado, pero no tiene las 3 columnas.

O sea que basicamente, si tenemos que hacer circuitos de egreso, desactivamos la funcion con las 3 columnas y activamos la de dos.
Y si tenemos que hacer cosas con sidcer activamos la funcion de 3 columnas y desactivamos la de dos.

No se si se entendio, pero si es necesario puedo ver de redactarlo mejor.

Saludos.

Guillermo.

Hola Guillermo

La api externa que tiene los servicios que utiliza SIDCER, se conecta a una base de Guaraní Gestión, ¿en que versión se encuentra esa base? ¿En que versión de guaraní están?


SELECT * FROM negocio.app_versiones

Saludos