Autor Tema: Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0  (Leído 89 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jvillar

  • Full Member
  • ***
  • Mensajes: 100
    • Ver Perfil
  • Institución: UCAMI
  • Nombre y apellido: Jason Villar
  • Sistema: SIU Guaraní
  • Utilizo algun sistéma del SIU: Sí
Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« : febrero 15, 2019, 05:07:34 pm »
Hola.

El mensaje de error que aparece es éste "Se actualizaron parcialmente (0 de 277) los recursos de formularios - No se puede continuar" (Adj. Imagen 1)

Metiéndome a leer las lineas de código tanto en guaraní como en kolla me doy cuenta que el error proviene debido a que algún formulario no posee el campo "detalle".
"El campo 'detalle' es obligatoio.array ()" éste mensaje lo obtuve haciendo un ei_arbol() al resultado de realizar la consulta REST a kolla desde guaraní. (Adj. Imagen 2)

Luego me metí en el Swagger UI para ver mas en detalle esto de los datos PUT que pide la api REST de Kolla al momento de actualizar formularios y veo que el campo detalle en formato de array es obligatorio. (Adj. Imagen 3)

Concluyo mostrándoles algunos datos de formularios que Guaraní le está mandando a la API REST de Kolla. Estos datos contienen un campo "detalle" que no contiene dato alguno. (Adj. Imagen 4)

/*------------------------------------------------------------------------------*/

Las preguntas que tengo son:
* En Guaraní. De donde se obtiene este array "detalle"? Me serviría para poder llegar a la raíz de mi problema.
* En Kolla. En que consiste este array "detalle"? Me serviría para poder llegar a la raíz de mi problema.
* Y finalmente... como podría solucionar este problema para que mi habilitación finalmente se vincule con Kolla?

Espero puedan ayudarme. Gracias.

lleonardis

  • Moderador Global
  • *****
  • Mensajes: 901
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: G3W2
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #1 : febrero 18, 2019, 01:06:03 pm »
Hola Jason,

Te voy a pedir los logs de Guaraní Gestión (están en el archivo instalacion/i__desarrollo/p__guarani/logs/sistema.log), te pediría los que se generan al momento del error.

Una vez que vea los mismos te respondo tus dudas.

saludos.

jvillar

  • Full Member
  • ***
  • Mensajes: 100
    • Ver Perfil
  • Institución: UCAMI
  • Nombre y apellido: Jason Villar
  • Sistema: SIU Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #2 : febrero 18, 2019, 02:47:22 pm »
La primer consulta SQL de la función get_formularios($habilitacion) de la clase co_encuestas.php no me trae ningún resultado y los campos elemento y encuesta son usados para generar el campo array() detalle.
Como la consulta no trae datos el guaraní genera el array() detalle pero no entra en el bucle while para llenarlo y entonces queda vacío.

Código: [Seleccionar]
protected function get_formularios($habilitacion)
    {
        $sql = "SELECT  f.formulario,
fi.item as elemento ,
e.kolla_id_encuesta as encuesta

FROM gde_formularios as f,
  gde_formulario_items as fi,
  gde_habilitaciones as h,
  gde_items as i,
  gde_encuestas as e,
  gde_grupos as g,
  gde_subtipos_x_tipo as s
WHERE
h.habilitacion = $habilitacion AND
f.formulario = fi.formulario
AND i.item = fi.item
AND h.habilitacion = f.habilitacion
AND g.habilitacion = i.habilitacion
AND g.encuesta = i.encuesta
AND e.encuesta = g.encuesta
AND s.tipo = h.tipo
AND s.subtipo = e.subtipo
AND i.estado = 'A' -- Activo
AND f.generado_en_kolla = 'N'
ORDER BY
f.formulario asc,
s.orden, -- orden de la encuesta
i.titulo
         ";

        $encuestas_form = guarani_db::consultar($sql);

        // Formularios.
        $sql = "SELECT gde_formularios.formulario as formulario,
gde_formularios.titulo as nombre,
gde_formularios.estado,
gde_formularios.formulario as concepto --el concepto tiene el mismo id que el formulario
FROM gde_formularios
WHERE gde_formularios.habilitacion = $habilitacion
    AND gde_formularios.generado_en_kolla = 'N'
ORDER BY gde_formularios.formulario asc
";
        $formularios = guarani_db::consultar($sql);

        $cant_encuestas = count($encuestas_form);
        $cant_forms = count($formularios);
        $it = 0;

        $form_actual = null;
        for ($f = 0; $f < $cant_forms; $f++) {
            $form_actual = & $formularios[$f];
            $form_actual['detalle'] = array();
            while ($it < $cant_encuestas) { //obs: los datos estan ordenados
                $item_actual = $encuestas_form[$it];
                if ($item_actual['formulario'] == $form_actual['formulario']) {
                    $form_actual['detalle'][] = array(
                        'encuesta' => $item_actual['encuesta'],
                        'elemento' => $item_actual['elemento']
                    );
                    $it++; //avanzo de item
                } else break;
            }
        }
        toba::logger()->info("Formularios procesados: $f /$cant_forms - Items procesados $it/$cant_encuestas");
        return $formularios;
    }

Paso log. En la línea 148 está esa consulta.
Graciass!!!

jvillar

  • Full Member
  • ***
  • Mensajes: 100
    • Ver Perfil
  • Institución: UCAMI
  • Nombre y apellido: Jason Villar
  • Sistema: SIU Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #3 : febrero 18, 2019, 03:07:22 pm »
Encontré el problema!

Los items del formulario están en estado 'B' en la tabla gde_items y por eso el array() detalle se va vació al REST de Kolla.
Paso un registro de la tabla gde_items por si les sirve para ayudarme.
Código: [Seleccionar]
1991;"Informática I";18;21;2018;;;38;1548;;;"B";"N";;;;
La pregunta ahora es.... porqué estos items están en estado baja y que conviene hacer para darlos de alta sin afectar la integridad de la base?

Graciasss!!

lleonardis

  • Moderador Global
  • *****
  • Mensajes: 901
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: G3W2
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #4 : febrero 18, 2019, 03:23:49 pm »
Hola Jason,

Si, parece ser lo que comentabas!!!

Los datos que van en el detalle se sacan de la query get_formularios del archivo php/nucleo/encuestas/co_encuestas.php, y la query filtra los items activos (AND i.estado = 'A').

La verdad no se porque el valor de la columna estado de la tabla gde_items tiene el valor "B", voy a averiguarlo!!!

Igualmente como solución seria cambiarlo de 'B' a 'A', y con eso debería funcionar.

saludos.

lleonardis

  • Moderador Global
  • *****
  • Mensajes: 901
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: G3W2
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #5 : febrero 18, 2019, 04:04:45 pm »
Hola Jason,

Es extraño que la columna estado de la tabla gde_items tenga el valor 'B'. Los únicos lugares donde se modifican registros de la tabla gde_items son en las funciones actualizar_elementos y eliminar_items del archivo php/nucleo/encuestas/act_encuestas_nucleo.php. Pero en ninguna de ellas se modifica la columna estado.

Preguntas, ¿ustedes en algún momento modificaron a mano?, ¿tiene personalizaciones que modifican esa columna?, ¿la base de datos es migrada?

saludos.

jvillar

  • Full Member
  • ***
  • Mensajes: 100
    • Ver Perfil
  • Institución: UCAMI
  • Nombre y apellido: Jason Villar
  • Sistema: SIU Guaraní
  • Utilizo algun sistéma del SIU: Sí
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #6 : febrero 18, 2019, 05:10:16 pm »
No tenemos personalizaciones ni tampoco modificamos nada a mano.

/*----------------------------------------------------------------------------*/

Ejecuté éste UPDATE:

Código: [Seleccionar]
SET search_path = negocio;

UPDATE gde_items SET estado = 'A' WHERE item IN (SELECT gde_items.item
FROM gde_formularios
JOIN gde_formulario_items ON (gde_formulario_items.formulario = gde_formularios.formulario)
JOIN gde_items ON (gde_items.item = gde_formulario_items.item)
WHERE (gde_formularios.habilitacion = 18 OR gde_formularios.habilitacion = 19 OR gde_formularios.habilitacion = 20)
    AND gde_formularios.generado_en_kolla = 'N'
ORDER BY gde_formularios.formulario asc)

Pero no fué suficiente y también ejecuté ésta otro update:
Código: [Seleccionar]
SET search_path = negocio;

UPDATE gde_formularios SET estado = 'A' WHERE formulario IN

(SELECT gde_formularios.formulario
FROM gde_formularios
JOIN gde_formulario_items ON (gde_formulario_items.formulario = gde_formularios.formulario)
JOIN gde_items ON (gde_items.item = gde_formulario_items.item)
WHERE (gde_formularios.habilitacion = 18 OR gde_formularios.habilitacion = 19 OR gde_formularios.habilitacion = 20)
    AND gde_formularios.generado_en_kolla = 'N'
ORDER BY gde_formularios.formulario asc)

Con esto por fin pude habilitar las encuestas.

Por lo visto todo esto que me pasó tiene algo que ver con las vigencias de los formularios o con dar de baja los formularios.
Espero las encuestas puedan verse y completarse sin problemas. Cualquier consulta revivo el tema. Por ahora está solucionado.
« Última Modificación: febrero 19, 2019, 09:32:13 am por lleonardis »

lleonardis

  • Moderador Global
  • *****
  • Mensajes: 901
    • Ver Perfil
  • Institución: SIU
  • Nombre y apellido: Leonel Leonardis
  • Sistema: G3W2
Re:Error al vincular habilitación desde G3.16.1 a Kolla 4.2.0
« Respuesta #7 : febrero 19, 2019, 10:10:26 am »
Hola Jason, me alegro que lo hayan podido solucionar!!!

Encontré donde se puede estar modificando en valor de la columna estado de la tabla gde_items. En la operación Definir Relevamientos, cuando editas uno (icono de la lupa), y luego guardas. Allí se llama a la función evt__guardar de la clase php/operaciones/encuestas/definir_relevamientos/ci_nav_definir_relevamientos.php, esta llama a generar_items de php/nucleo/encuestas/act_encuestas_nucleo.php, la cual finalmente llama a la función f_encuestas_generar_items de Postgres (la misma la podes ver en BD/Ddl/_nucleo/Funciones/f_encuestas_generar_items.sql).

Proba si así funciona todo bien, cualquier cosa nos avisas.

saludos.
« Última Modificación: febrero 19, 2019, 10:14:14 am por lleonardis »