[RESPONDIDO] Sincronizacion entre Pilaga y Diaguita con Arai

Hemos instalado el Arai y esta efectuada la sincronización inicial de ambos sistemas… ahora cuando cargamos un proveedor en Pilaga nos da como resultado el siguiente mensaje:

“Información
Los datos fueron guardados en SIU Arai y sincronizados localmente.”

por lo cual asumimos que fueron bien cargados.

Cuando vamos al Diaguita a consultar el catalogo de proveedores no sale el siguiente cartel:

"Se han encontrado los siguientes problemas:
La instalación se encuentra configurada para utilizar catálogos comunes pero las bases Diaguita y Arai no parecen estar sincronizadas, o bien existe actividad realizada en modo desconectado que aún no fué sincronizada. Por favor ejecute el comando sincronización inicial para repararlo. "

que puede estar pasando?

Ademas vimos que en la pag. 6 del manual de instalacion del ARAI dice: (respecto al Diaguita)

“Sincronización: se ejecuta cada vez que hay algún cambio, es decir, se procesan todas las novedades pendientes (altas, bajas y modificaciones en registros de tabla asociadas al catálogo proveedores). También se configura para ejecutarlo en forma programada (CRON) cada 10 minutos (se puede modificar la frecuencia)”

Pero no encontramos esa forma de configurar el CRON… nos pueden indicar como?

Hola Gustavo el post tiene que moverse al foro técnico de Araí que Leo te va asesor desde ya gracias.

Hola,

Te respondo las dos consultas

Esa validación verifica que no haya registros sin sincronizar en el catálogo, por eso recomienda realizar una sincronización inicial cuando aparece este error, es probable que haya registros en la tabla personas o proveedores.
Por favor ejecutá este query y decime que te devuelve:


set search_path to diaguita;

SELECT (SELECT COUNT(anx_personas.persona) FROM anx_personas 
                                        INNER JOIN sau_pr_proveedores ON anx_personas.persona = sau_pr_proveedores.persona 
                                        INNER JOIN anx_personas_x_documentos ON anx_personas.persona = anx_personas_x_documentos.persona
                                        WHERE anx_personas.persona_arai IS NULL AND (substring(anx_personas_x_documentos.numero,1,2) <> '50' AND substring(anx_personas_x_documentos.numero,1,2) <> '55' AND substring(anx_personas_x_documentos.numero,1,2) <> '51')) as persona,
                       (SELECT COUNT(*) FROM anx_domicilios 
                                        INNER JOIN anx_personas_domicilios ON anx_domicilios.domicilio = anx_personas_domicilios.domicilio
                                        INNER JOIN sau_pr_proveedores ON anx_personas_domicilios.persona = sau_pr_proveedores.persona
                                        INNER JOIN anx_personas_x_documentos ON anx_personas_x_documentos.persona = anx_personas_domicilios.persona 
                                        WHERE anx_domicilios.domicilio_arai IS NULL AND (substring(anx_personas_x_documentos.numero,1,2) <> '50' AND substring(anx_personas_x_documentos.numero,1,2) <> '55' AND substring(anx_personas_x_documentos.numero,1,2) <> '51')) as domicilio

El comando que tienen que incluír en el cron es exactamente el mismo comando administrativo que ejecutan desde consola para realizar la sincronización, el como configurarlo puede variar un poco de la distribución linux que usen o como tengan configurado el servidor, les recomiendo consultarle a su administrador de IT para que les diga cual es la forma que les sugiere.

el resultado del script que nos remitieron es:

Persona = 8965
Domicilio = 8999

quedo a la espera para saber como continuamos…

Ese resultado indica que todos esos registros no están sincronizados en Diaguita, por eso se informa el error, los dos resultados deberían devolver 0 (indicando que todos los proveedores están sincronizados con Arai Proveedores).
Tal como informa el mensaje de error, deben realizar una sincronización inicial en Diaguita para que sincronice con Arai Proveedores.

[apache@test ~]$ toba proyecto arai_sinc_inicial –pdiaguita –iproduccion
PHP Notice: Use of undefined constant apex_pa_instancia - assumed ‘apex_pa_instancia’ in /usr/local/siu/diaguita/aplicacion/php/extension_toba/diaguita_comando.php on line 1129

===============================
Actualizaci▒n de secuencias

Secuencia sq_anx_personas en base Diaguita esquema Diaguita actualizada correctamente!
Secuencia sq_anx_domicilios en base Diaguita esquema Diaguita actualizada correctamente!
Secuencias en base Diaguita esquema catalogos: Actualizadas las secuencias!
Secuencias en base Arai esquema catalogos: Actualizadas las secuencias!
Secuencias en base Arai esquema sincronizador: Actualizadas las secuencias!
INFO_INSTANCIA: No se encuentra definido el archivo de inicializacion de la INSTANCIA: ‘apex_pa_instancia’ (‘/usr/local/siu/diaguita/instalacion/i__apex_pa_instancia/instancia.ini’)


TIEMPO: 0,099 segundos
[apache@test ~]$

eso es lo que devuelve la sincronizacion inicial en el Diaguita

Cargaron previamente el entorno de Toba?
Si no lo hicieron les copio la parte del manual que indica como hacerlo,


Diaguita
Con Windows
En nuestra instalación de toba, carpeta bin, ejecutamos los siguientes comandos:
entorno_toba_2.6.bat
toba proyecto arai_sinc_inicial –pdiaguita –iproduccion
Con Linux
sudo sh entorno_toba_2.6.sh
sudo sh toba proyecto arai_sinc_inicial –pdiaguita –iproduccion
Aclaración: en la variable -p estamos indicando el proyecto y en la variable -i indicamos la instancia(generalmente es producción o desarrollo)

Srs,
Por lo que informa la terminal, si se ha cargado dicho entorno Diaguita:

$ env
HOSTNAME=test.diaguita.unr.edu.ar
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
PHPRC=/opt/php/etc/php.ini
USER=apache
TOBA_INSTALACION_DIR=/usr/local/siu/diaguita/instalacion
TOBA_INSTANCIA=produccion
PATH=/usr/local/siu/diaguita/toba/bin:…
TOBA_PROYECTO=diaguita
TOBA_DIR=/usr/local/siu/diaguita/toba
LANG=en_US.UTF-8
HOME=/home/apache
LOGNAME=apache
LESSOPEN=||/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env

En nuestra instalación dicho entorno figura en el archivo: /usr/local/siu/diaguita/instalacion/entorno_toba.env cuyo contenido es:
export TOBA_DIR=/usr/local/siu/diaguita/toba
export TOBA_INSTANCIA=produccion
export TOBA_INSTALACION_DIR=/usr/local/siu/diaguita/instalacion
export TOBA_PROYECTO=diaguita
export PATH=“$TOBA_DIR/bin:$PATH”
echo “Entorno cargado.”

Saludos,
Nicodemo.

Es raro, las variables de entorno de Toba están bien cargadas, prueben de ejecutar el comando sin pasarle el parámetro de la instancia para ver si lo toma bien de la variable de entorno.

O sea:


toba proyecto arai_sinc_inicial –pdiaguita

Ejecutan algún otro comando administrativo en Diaguita aparte de este?

Srs,
Al hacer dicho comando se produce el mismo error.

Esto es lo que hace ruido:
PHP Notice: Use of undefined constant apex_pa_instancia - assumed ‘apex_pa_instancia’ in /usr/local/siu/diaguita/aplicacion/php/extension_toba/diaguita_comando.php on line 1129

Al parecer existe algún problema con Toba/Diaguita el cual pueden ver de escalar a quien corresponda.
Para avanzar realice lo siguiente: edite la linea 1129 del archivo en cuestión reemplazando “$instancia = apex_pa_instancia” por “$instancia = produccion;” con lo cual obtuve la sincronización deseada.

Datos del servidor como referencia:
$ php --version
PHP 5.4.45 (cli) (built: Apr 8 2016 07:53:11)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

En alguna ocasión me ha sucedido que los comandos administrativos de toba no tomaban bien las variables de entorno ejecutándolos en algún proyecto, pero esto se solucionaba abriendo una nueva consola o cargando nuevamente el entorno toba, nunca se prolongó por tanto tiempo.

Por el momento con el ajuste que hicieron les va a funcionar, pero en un futuro estaría bueno ver porque no está tomando correctamente el valor de la variable de entorno.

Luego de la sincronización inicial les sigue apareciendo el mismo error en Diaguita?