Diferencia entre revisiones de «SIU-Arai/proveedores»

De SIU
Saltar a: navegación, buscar
(Resincronización)
(Con Linux)
 
(No se muestran 61 ediciones intermedias de 2 usuarios)
Línea 9: Línea 9:
  
 
== Como instalarlo ==
 
== Como instalarlo ==
 +
 +
A partir de las versiones 3.2 de SIU Pilaga y 2.6 de SIU Diaguita se puede instalar SIU Arai Proveedores utilizando el instalador o actualizador de dichos sistemas, si las versiones de los sistemas que se encuentra utilizando (tanto de SIU Diaguita como SIU Pilaga) son inferiores a las mencionadas, debe continuar con el punto siguiente de este instructivo (Configuración de la Base Arai Proveedores), caso contrario solo debe realizar el paso a continuación:
 +
 +
- Desde SIU Pilaga (a partir de la versión 3.2) ver http://documentacion.siu.edu.ar/wiki/SIU-Pilaga/version3.4.2/consideraciones_tecnicas#Conectar_SIU-Pilag.C3.A1_con_SIU-Arai_Proveedores
 +
 +
- Desde SIU Diaguita (a partir de la versión 2.6) ver http://documentacion.siu.edu.ar/wiki/SIU-Diaguita/version2.7.0/consideraciones_tecnicas#Configuraci.C3.B3n_de_la_base_de_datos_de_Arai_Proveedores
 +
 +
'''Como instalarlo si mi versión de SIU Pilaga es inferior a la v3.2 y mi versión de SIU Diaguita es inferior a v2.6?'''
  
 
Si se descarga la versión con instalador se debe descomprimir el archivo en la ruta utilizada como DocumentRoot de Apache, usando el navegador ir a la URL de esta carpeta y seguir los pasos del asistente de instalación Web.
 
Si se descarga la versión con instalador se debe descomprimir el archivo en la ruta utilizada como DocumentRoot de Apache, usando el navegador ir a la URL de esta carpeta y seguir los pasos del asistente de instalación Web.
  
Si se descarga el dump de la BD simplemente haciendo el restore de la base en un motor Postgresql (es necesaria versión de Postgresql 9.1 o superior).
+
Si se descarga el dump de la BD simplemente haciendo el restore de la base en un motor Postgresql (es necesaria versión de Postgresql 9.5 o superior).
 +
 
 +
'''Como instalarlo/actualizarlo si ya tengo las últimas versiones de SIU Diaguita y SIU Pilaga y no deseo esperar a una próxima actualización de alguno de los sistemas?'''
 +
 
 +
Se puede realizar la instalación/actualización por línea de comando.
 +
 
 +
Completar las variables de entorno que se encuentran en el archivo ''instalador.env''
 +
 
 +
Instalación:
 +
 
 +
<source lang="bash" enclose="div">
 +
 ./bin/instalador arai-proveedores:crear-base
 +
</source>
 +
Actualización:
 +
<source lang="bash" enclose="div">
 +
 ./bin/instalador arai-proveedores:actualizar-base
 +
</source>Para ver el estado de las migraciones de la base SIU Arai Proveedores:<source lang="bash" enclose="div">
 +
 ./bin/instalador arai-proveedores:estado-base
 +
</source>
 +
 
 +
Y luego continuar con los pasos que se encuentran debajo
  
 
== Configuración de la Base Arai Proveedores==
 
== Configuración de la Base Arai Proveedores==
Línea 52: Línea 80:
  
 
== Requisitos previos ==
 
== Requisitos previos ==
1 - Preparar datos de proveedores extranjeros: En el apartado PREGUNTAS FRECUENTES del instructivo ver sección '''¿Como sincronizo los datos de proveedores extranjeros?'''.<br/>
+
1 - Preparar datos de proveedores extranjeros: En el apartado '''PREGUNTAS FRECUENTES''' del instructivo ver sección '''¿Como sincronizo los datos de proveedores extranjeros?'''.<br />
 
2 - Datos de tablas maestras de ubicación geográfica, conceptos, condiciones y rubros deben ser los mismos en las tres bases (Ver comando '''Sincroniza_datos_satelites''' en el instructivo)
 
2 - Datos de tablas maestras de ubicación geográfica, conceptos, condiciones y rubros deben ser los mismos en las tres bases (Ver comando '''Sincroniza_datos_satelites''' en el instructivo)
  
Línea 63: Línea 91:
  
 
===='''Con Windows'''====
 
===='''Con Windows'''====
 +
 +
Definimos el valor de la variable de entorno '''TOBA_INSTALACION_DIR''' indicando la ruta de instalación (ejemplo C:\SIU-Pilaga\instalacion)
 +
 +
'''set  TOBA_INSTALACION_DIR=C:\SIU-Pilaga\instalacion'''
 +
  
 
Ejecutamos el siguiente comando (que se encuentra en la carpeta bin de la instalación de Pilagá):<br />
 
Ejecutamos el siguiente comando (que se encuentra en la carpeta bin de la instalación de Pilagá):<br />
Línea 75: Línea 108:
 
===<u>'''''Diaguita'''''</u>===  
 
===<u>'''''Diaguita'''''</u>===  
 
===='''Con Windows'''====
 
===='''Con Windows'''====
En nuestra instalación de toba, carpeta bin, ejecutamos los siguientes comandos:<br />
+
Definimos el valor de la variable de entorno '''TOBA_INSTALACION_DIR''' indicando la ruta de instalación (ejemplo C:\SIU-Diaguita\instalacion)
 +
 
 +
'''set TOBA_INSTALACION_DIR=C:\SIU-Diaguita\instalacion'''
 +
 
 +
En nuestra instalación de toba, carpeta bin (ejemplo C:\siu\diaguita\toba\bin) , ejecutamos los comandos:<br />
  
'''entorno_toba_2.6.bat <br />'''
+
'''entorno_toba_x.y.bat <br />''' (reemplazar x.y por la versión de toba que se esté utilizando, por ejemplo, si se trata de Toba 2.6 sería entorno_toba_x.y.bat)
'''toba proyecto arai_sinc_inicial –pdiaguita –iproduccion <br />'''
+
 
 +
'''toba proyecto arai_sinc_inicial -pdiaguita -iproduccion <br />'''
  
 
===='''Con Linux'''====
 
===='''Con Linux'''====
'''sudo sh entorno_toba_2.6.sh <br />'''
+
En nuestra instalación de toba, carpeta bin (ejemplo /usr/local/siu/diaguita/toba/bin) , ejecutamos los comandos:
  
'''sudo sh toba proyecto arai_sinc_inicial –pdiaguita –iproduccion <br />'''
+
'''. ./entorno_toba.env<br />'''
 +
 
 +
'''toba proyecto arai_sinc_inicial -pdiaguita -iproduccion <br />'''
  
 
Aclaración: en la variable -p estamos indicando el proyecto y en la variable -i indicamos la instancia(generalmente es producción o desarrollo)<br />
 
Aclaración: en la variable -p estamos indicando el proyecto y en la variable -i indicamos la instancia(generalmente es producción o desarrollo)<br />
  
====Programar la ejecución de la sincronización:====
+
===Programar la ejecución de la sincronización:===
El proceso de sincronización se debe ejecutar por cron cada x minutos, también se ejecuta cada vez que se entra a la operación de abm de proveedores y cuando se modifica un proveedor.<br />
+
El proceso de sincronización se debe ejecutar por cada x minutos (OPCIONAL), también se ejecuta cada vez que se entra a la operación de abm de proveedores y cuando se modifica un proveedor.<br />
 +
 
 +
Ejemplo de script para la ejecución de la sincronización inicial en SIU Diaguita
 +
 
 +
<source lang="bash" enclose="div">
 +
#!/bin/sh
 +
 
 +
#script que carga el entorno de toba y ejecuta una sincronizacion con ARAI. Es para llamarlo desde el CRON.
 +
#tiene que ir en DIAGUITA_DIR/toba/bin
 +
 
 +
cd `dirname $0`"/../../instalacion"
 +
export TOBA_INSTALACION_DIR=`pwd`
 +
 
 +
# cargo el entorno
 +
$TOBA_INSTALACION_DIR/entorno_toba.env
 +
 
 +
# ejecuto la sincronizacion
 +
$TOBA_INSTALACION_DIR/../toba/bin/toba proyecto arai_sincronizacion -i produccion -p diaguita
 +
</source>
 +
 
 +
==== Linux ====
  
 
Para configurar las tareas de sincronización a incluir en el cron (nota: el usuario con el que se realizan estos pasos debe tener permisos de sudo, en el ejemplo se ejecuta cada 20 minutos). Seguir estos pasos:<br />
 
Para configurar las tareas de sincronización a incluir en el cron (nota: el usuario con el que se realizan estos pasos debe tener permisos de sudo, en el ejemplo se ejecuta cada 20 minutos). Seguir estos pasos:<br />
Línea 100: Línea 160:
 
*/20 * * * * sh /PATH_DE_PILAGA/bin/pilaga.sh arai sincronizacion > /dev/null  
 
*/20 * * * * sh /PATH_DE_PILAGA/bin/pilaga.sh arai sincronizacion > /dev/null  
  
*/20 * * * *  sh /PATH_DE_DIAGUITA/bin/toba proyecto arai_sincronizacion -i desarrollo -p diaguita > /dev/null
+
*/20 * * * *  sh /PATH_DE_DIAGUITA/bin/toba proyecto arai_sincronizacion -i produccion -p diaguita > /dev/null
  
 
</source>
 
</source>
 +
 +
==== Windows ====
 +
 +
Dependiendo de la versión de Windows utilizada se puede configurar como tarea programada o programar un servicio.
  
 
==Funciones por linea de Comando==
 
==Funciones por linea de Comando==
  
==='''''Sincronización_inicial'''''===
+
==='''''sincronizacion_inicial'''''===
 
Sincroniza absolutamente todo, hay que correrlo al utilizar por primera vez arai, además lo pide cada vez que se cambie de modo desconectado a conectado (tanto Pilagá como Diaguita informan cuando se debe hacer una sincronización inicial).<br />
 
Sincroniza absolutamente todo, hay que correrlo al utilizar por primera vez arai, además lo pide cada vez que se cambie de modo desconectado a conectado (tanto Pilagá como Diaguita informan cuando se debe hacer una sincronización inicial).<br />
  
Línea 115: Línea 179:
 
<br />Documento: si el proveedor no existe en Arai se toman los documentos de Diaguita y se actualizan en Arai. Si existen documentos en Arai para el proveedor prevalecen éstos. <br />
 
<br />Documento: si el proveedor no existe en Arai se toman los documentos de Diaguita y se actualizan en Arai. Si existen documentos en Arai para el proveedor prevalecen éstos. <br />
  
==='''''Sincronización'''''===
+
==='''''sincronizacion'''''===
 
Se ejecuta cada vez que haya 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).<br />
 
Se ejecuta cada vez que haya 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).<br />
  
==='''''Actualizar_secuencia'''''===
+
==='''''actualizar_secuencias'''''===
 
Actualiza las secuencias de las tablas del catálogo proveedores.<br />
 
Actualiza las secuencias de las tablas del catálogo proveedores.<br />
  
==='''''Sincroniza_datos_satelites'''''===  
+
==='''''sincroniza_datos_satelites'''''===  
El catálogo de proveedores involucra otros catálogos (rubros, conceptos, condiciones, localidades, provincias, países, etc) y estos catálogos aún no cuentan con un mecanismo de sincronización, es por ello que en ciertos casos pueden existir diferencias de datos entre la base de datos del proyecto y la base de arai proveedores. Este comando intenta sincronizar los datos de conceptos, condiciones y rubros. Para usar este comando es requerido contar con la librería dblink de Postgresql instalada (comando disponible en SIU Pilaga a partir de la versión 3.0.0)<br />
+
El catálogo de proveedores involucra otros catálogos (rubros, conceptos, condiciones, localidades, provincias, países, etc) y estos catálogos aún no cuentan con un mecanismo de sincronización, es por ello que en ciertos casos pueden existir diferencias de datos entre la base de datos del proyecto y la base de arai proveedores. Este comando intenta sincronizar los datos de conceptos, condiciones y rubros. Para usar este comando es requerido contar con la librería dblink de Postgresql instalada (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y próximamente en la versión 2.5 de SIU Diaguita)<br />
  
==='''''Resincronización'''''===
+
==='''''resincroniza_base'''''===
 
Resetea el estado de la sincronización de la base del proyecto, y se vuelve a sincronizar de 0 con la base del servidor. Este comando suele utilizarse cuando se realizan cambios en los datos de la base del proyecto o del servidor por fuera del circuito de sincronización (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y SIU Diaguita a partir de la versión 2.4.0)<br />
 
Resetea el estado de la sincronización de la base del proyecto, y se vuelve a sincronizar de 0 con la base del servidor. Este comando suele utilizarse cuando se realizan cambios en los datos de la base del proyecto o del servidor por fuera del circuito de sincronización (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y SIU Diaguita a partir de la versión 2.4.0)<br />
 +
 +
==='''''estado'''''===
 +
Muestra el estado de la BD Arai Proveedores y Pilaga, comando útil para saber si las bases se encuentran sincronizadas correctamente (disponible en las próximas versiones de SIU Diaguita y SIU Pilaga)
  
 
==Estados de Sincronización==
 
==Estados de Sincronización==
Línea 177: Línea 244:
 
==Requisitos a tener en cuenta==
 
==Requisitos a tener en cuenta==
  
Se necesitas unos requisitos mínimos para que funcione ARAI, son los siguientes:<br />
+
Los requisitos para utilizar SIU Arai Proveedores con SIU Diaguita y SIU Pilagá son los siguientes:
 +
 
 +
Versión Diaguita: 2.2.3 o superior
  
[[Archivo:Arai 4.png|marco|centro]]
+
Version Pilaga: 2.3.4 o superior
 +
 
 +
Version Postgres: 9.5 o superior
 +
 
 +
Version PHP:  7.2 o superior
  
 
==Pasos a seguir para pasar a producción==
 
==Pasos a seguir para pasar a producción==
Línea 193: Línea 266:
 
7 - Correr los scripts mencionados en el punto 2.<br />
 
7 - Correr los scripts mencionados en el punto 2.<br />
 
8 - Seguir los pasos de la sección del instructivo '''Cómo sincronizar por primera vez'''.<br />
 
8 - Seguir los pasos de la sección del instructivo '''Cómo sincronizar por primera vez'''.<br />
9 - Activar los parámetros siguiendo la sección del instructivo '''Estados de Sincronización'''.<br />
+
9 - Activar los parámetros siguiendo la sección del instructivo '''Estados de Sincronización'''.
 +
 
 +
== '''API SIU ARAI Proveedores''' ==
 +
 
 +
Se encuentra disponible una API que brinda servicio sobre la funcionalidad que se encuentra disponible en SIU Arai Proveedores, esto facilita la interacción de cualquier sistema que ya contenga información de proveedores, o que necesite consultar información de proveedores.
 +
 
 +
URL del repositorio: https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/tree/v1.0.0-beta
 +
 
 +
Para ver mas información relacionada a la instalación y configuración:  https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/blob/v1.0.0-beta/doc/install/INSTALACION_MANUAL.md
 +
 
 +
Para ver la definición de la API:  https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/blob/v1.0.0-beta/specs/README.md
  
 
=='''PREGUNTAS FRECUENTES'''==
 
=='''PREGUNTAS FRECUENTES'''==
Línea 221: Línea 304:
 
También deben borrarse los datos de sincronización de los sistemas clientes, desde los cuales se actualizan las secuencias:
 
También deben borrarse los datos de sincronización de los sistemas clientes, desde los cuales se actualizan las secuencias:
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
DELETE FROM catalogos.modo_desconectado;
+
delete from catalogos.modo_desconectado;
DELETE FROM catalogos.logs_sincronizacion;
+
delete from catalogos.logs_sincronizacion;
DELETE FROM catalogos.sincronizacion;
+
delete from catalogos.sincronizacion;
 
</source>
 
</source>
  
Línea 229: Línea 312:
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
 
set search_path to catalogos;
 
set search_path to catalogos;
SELECT * from catalogos.mdp_personas_domicilios;
 
 
delete from catalogos.mdp_personas_domicilios;
 
delete from catalogos.mdp_personas_domicilios;
 
delete from catalogos.mdp_personas_x_documentos;
 
delete from catalogos.mdp_personas_x_documentos;
Línea 252: Línea 334:
 
Es recomendado realizar este proceso previo a sincronizar los datos con Arai Proveedores, en dicho caso los pasos serían:<br />
 
Es recomendado realizar este proceso previo a sincronizar los datos con Arai Proveedores, en dicho caso los pasos serían:<br />
  
1 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación '''ABM Personas Arai''').<br />
+
''Si SIU-Diaguita y SIU-Pilagá aún NO se encuentran sincronizados con Arai-Proveedores:''
 +
 
 +
1 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación '''ABM - Personas, proveedores y clientes''').<br />
 
2 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Diaguita (usando operación '''Catálogo de Proveedores''').<br />
 
2 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Diaguita (usando operación '''Catálogo de Proveedores''').<br />
 
3 - Es necesario que el segundo tipo y nro de documento asignado a cada proveedor extranjero coincidan en las bases Diaguita y Pilagá, caso contrario al sincronizar se generarán duplicados.
 
3 - Es necesario que el segundo tipo y nro de documento asignado a cada proveedor extranjero coincidan en las bases Diaguita y Pilagá, caso contrario al sincronizar se generarán duplicados.
  
Si ya se ha realizado una sincronización pero no se actualizaron los datos de proveedores extranjeros consultar en el foro de SIU Arai Proveedores cual es la mejor alternativa de solución.
+
''Si SIU-Diaguita y SIU-Pilagá  YA se encuentran sincronizados con Arai-Proveedores:''
 +
 
 +
1- Modificar el valor del parámetro '''aplicar_sincronizacion_arai_prov''' y setearlo en NO en SIU-Diaguita y SIU-Pilaga
 +
 
 +
2 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación '''ABM - Personas, proveedores y clientes''').<br />
 +
3 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Diaguita (usando operación '''Catálogo de Proveedores''').<br />
 +
4 - Es necesario que el segundo tipo y nro de documento asignado a cada proveedor extranjero coincidan en las bases Diaguita y Pilagá, caso contrario al sincronizar se generarán duplicados.
 +
 
 +
5- Modificar el valor del parámetro '''aplicar_sincronizacion_arai_prov''' y setearlo en SI en SIU-Diaguita y SIU-Pilaga
 +
 
 +
6- Realizar una sincronización inicial  en SIU-Diaguita y SIU-Pilaga
  
 
===Tengo que agregar, modificar o borrar datos de proveedores a través de un script ¿como hago?===
 
===Tengo que agregar, modificar o borrar datos de proveedores a través de un script ¿como hago?===
Línea 278: Línea 372:
 
Los cambios serán replicados en las aplicaciones cliente cuando realicen una sincronización.
 
Los cambios serán replicados en las aplicaciones cliente cuando realicen una sincronización.
  
----
+
===¿Como instalo la extensión de postgresql dblink para poder utilizar el comando administrativo que sincroniza los datos satélites?===
 +
 
 +
Los pasos para instalar la extensión dblink:
 +
 
 +
1-apt-update<br />
 +
2-apt-get install postgresql-contrib<br />
 +
3-Buscar archivo dblink--1.0.sql<br />
 +
4-Ejecutar psql basede_datos_x < /usr/share/postgresql/9.x/extension/dblink--1.0.sql<br />
 +
<br />
 +
Ejecutar este script en las bases Diaguita, Pilaga y Arai:
 +
 
 +
<source lang="php" enclose="div">
 +
DROP extension dblink;
 +
SET search_path to auxiliar_catalogos;
 +
CREATE extension dblink;
 +
</source>
 +
 
 +
Para mas información https://mermamerma.wordpress.com/2013/05/30/crear-dblink-en-postgresql/
 +
 
 +
=== Ajustes de datos frecuentes al momento de sincronizar por primera vez ===
 +
 
 +
1 - Valores en null en columna estado_proveedor de sau_pr_proveedores<br />
 +
'''Resolución:''' se toma en el estado que tiene en anx_personas. Ejemplo de resolución (SIU Pilagá), ejecutar el query:
 +
 
 +
<source lang="php" enclose="div">
 +
UPDATE sau_pr_proveedores pr
 +
SET estado_proveedor = (SELECT pe.estado FROM anx_personas pe WHERE pe.persona=pr.persona)
 +
WHERE pr.estado_proveedor is NULL;
 +
</source>
 +
 
 +
----2 - Corregir casos en donde existen proveedores activos y personas inactivas (SIU Pilagá)
 +
 
 +
Resolución: si el proveedor se encuentra activo, la persona asociada también debe estarlo, ejecutar:
 +
 
 +
En la base de SIU Pilaga:
 +
 
 +
<source lang="php" enclose="div">
 +
UPDATE anx_personas SET estado = 'AC' FROM sau_pr_proveedores as pr WHERE pr.persona = anx_personas.persona and estado_proveedor = 'AC';
 +
</source>
 +
 
 +
En la base de SIU Arai Proveedores:
 +
 
 +
<source lang="php" enclose="div">
 +
SELECT nextval('sincronizador.sq_sincronizacion_catalogo');
 +
 
 +
UPDATE catalogos.mdp_personas SET estado = 'AC' FROM catalogos.sau_pr_proveedores as pr WHERE pr.persona = anx_personas.persona and estado_proveedor = 'AC';
 +
</source>
 +
 
 +
=== Al agregar una condición en Pilaga genera un error al grabar un proveedor con esa nueva condición ===
 +
 
 +
Esto se debe a que el catálogo de condiciones aún no se sincroniza automáticamente y se requiere insertar manualmente la condición agregada en las bases de Diaguita y Arai Proveedores, se debe realizar el INSERT (ver ejemplo debajo) completando los datos de la nueva condición
 +
 
 +
<source lang="php" enclose="div">
 +
-- En base Diaguita
 +
INSERT INTO TABLE diaguita.sau_rt_condiciones (concepto, condicion, codigo_afip, nombre, descripcion, retiene, resta_iva) VALUES (VALORES DE LA CONDICION AGREGADA)
 +
-- En base Arai Proveedores
 +
INSERT INTO TABLE catalogos.sau_rt_condiciones (concepto, condicion, codigo_afip, nombre, descripcion, retiene, resta_iva) VALUES (VALORES DE LA CONDICION AGREGADA)
 +
</source>
 +
 
 +
=== En Diaguita o Pilagá me aparece una ventana con el mensaje ''Existen datos de proveedores extranjeros que no pueden sincronizarse'' ===
 +
 
 +
Este mensaje indica que existen proveedores extranjeros que no tienen un tipo y número de documento único (el CUIT asociado a proveedores extranjeros corresponde a su país y puede encontrarse mas de un proveedor con dicho tipo/nro de documento).
 +
Esta validación advierte sobre dicha situación y realiza dos acciones:
 +
 
 +
* Inhabilita las altas/bajas/modificaciones hasta que el problema quede resuelto.
 +
* Guarda en el log de la aplicación (ubicado en ../instalacion/i__produccion/p__{diaguita o pilaga}/logs) la lista de proveedores a los cuales hay que agregarle un tipo/nro documento único.
 +
 
 +
A continuación se explica una secuencia manual para corregir estos proveedores (también se puede realizar el ajuste realizando un script):
 +
 
 +
* Mientras se realiza esta secuencia no se pueden agregar/modificar/eliminar proveedores en SIU Diaguita y SIU Pilaga (tomar los recaudos necesarios para garantizar esta situación).
 +
* Poner el parámetro aplicar_sincronizacion_arai_prov en No tanto en SIU Diaguita como en SIU Pilagá.
 +
* Ingresar a SIU Diaguita y a SIU Pilagá (el orden de ingreso es indistinto) e ir modificando cada uno de los proveedores listados en el log y agregarle un segundo tipo y número de documento (se recomienda usar los tipos NIF o PAS), y guardar los cambios de cada modificación.
 +
* Es fundamental que al momento de agregar el segundo tipo/nro de documento al proveedor,el mismo coincida tanto en SIU Diaguita y SIU Pilagá, caso contrario se generará un duplicado (ejemplo: si al proveedor ABC S.A se le agregó un segundo tipo de documento del tipo NIF con el número 331 en SIU Pilagá, en SIU Diaguita agregarle al mismo proveedor ese mismo tipo y número de documento).
 +
* Poner el parámetro aplicar_sincronizacion_arai_prov en Si tanto en SIU Diaguita como en SIU Pilagá.
 +
* Realizar una sincronización inicial en SIU Diaguita y SIU Pilagá.
 +
 
 +
=== Consulta para obtener la lista de proveedores extranjeros ===
 +
 
 +
'''-- En base Diaguita'''
 +
 
 +
SELECT p.* FROM diaguita.anx_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN diaguita.anx_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad 
 +
 
 +
INNER JOIN diaguita.anx_personas p ON pd2.persona = p.persona
 +
 
 +
WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')
 +
 
 +
'''-- En base Pilaga'''
 +
 
 +
SELECT p.* FROM anx_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN anx_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad
 +
 
 +
INNER JOIN anx_personas p ON pd2.persona = p.persona
 +
 
 +
WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')
 +
 
 +
'''-- En base Arai Proveedores'''
 +
 
 +
SELECT p.* FROM catalogos.mdp_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN catalogos.mdp_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad 
 +
 
 +
INNER JOIN catalogos.mdp_personas p ON pd2.persona = p.persona
 +
 
 +
WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')
 +
 
 +
=== Consulta para obtener la lista de proveedores duplicados ===
 +
'''-- En base Diaguita'''
 +
 
 +
SELECT replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM diaguita.anx_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN diaguita.anx_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 
 +
 
 +
INNER JOIN diaguita.anx_personas p ON pd.persona = p.persona
 +
 
 +
WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')
 +
 
 +
GROUP BY replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1
 +
 
 +
'''-- En base Pilaga'''
 +
 
 +
SELECT replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM anx_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN anx_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 
 +
 
 +
INNER JOIN anx_personas p ON pd.persona = p.persona
 +
 
 +
WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')
 +
 
 +
GROUP BY replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1
 +
 
 +
'''-- En base Arai Proveedores'''
 +
 
 +
SELECT replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM catalogos.mdp_tipos_documento_identidad tdi
 +
 
 +
INNER JOIN catalogos.mdp_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 
 +
 
 +
INNER JOIN catalogos.mdp_personas p ON pd.persona = p.persona
 +
 
 +
WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')
 +
 
 +
GROUP BY replace(pd.numero, '-', <nowiki>''</nowiki>), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1
  
 
[[SIU-Arai|<Volver]]
 
[[SIU-Arai|<Volver]]

Revisión actual del 13:01 18 may 2021

Siu-arai iso.png

Sumario

SIU-Arai Proveedores

SIU-Arai permite sincronizar catálogos (en esta primera instancia trabaja sobre el catálogo de proveedores) entre distintos clientes (aplicaciones) ya sean SIU o no SIU. Su mecanismo permite que los clientes puedan modificar los catálogos, recibir las novedades, y trabajar en modo desconectado y luego volver a sincronizar.

Donde descargarlo

La distribución de la librería se realiza a través del sitio http://comunidad.siu.edu.ar/herramientas ingresando al repositorio, ir a la ruta Repositorio general / Área de Integración Funcional / SIU Arai / Versiones, el archivo que contiene el instalador es SIU-Arai-1.1-proveedores-instalador.zip, o se puede descargar directamente el dump de la base (arai.sql.tar.gz)

Como instalarlo

A partir de las versiones 3.2 de SIU Pilaga y 2.6 de SIU Diaguita se puede instalar SIU Arai Proveedores utilizando el instalador o actualizador de dichos sistemas, si las versiones de los sistemas que se encuentra utilizando (tanto de SIU Diaguita como SIU Pilaga) son inferiores a las mencionadas, debe continuar con el punto siguiente de este instructivo (Configuración de la Base Arai Proveedores), caso contrario solo debe realizar el paso a continuación:

- Desde SIU Pilaga (a partir de la versión 3.2) ver http://documentacion.siu.edu.ar/wiki/SIU-Pilaga/version3.4.2/consideraciones_tecnicas#Conectar_SIU-Pilag.C3.A1_con_SIU-Arai_Proveedores

- Desde SIU Diaguita (a partir de la versión 2.6) ver http://documentacion.siu.edu.ar/wiki/SIU-Diaguita/version2.7.0/consideraciones_tecnicas#Configuraci.C3.B3n_de_la_base_de_datos_de_Arai_Proveedores

Como instalarlo si mi versión de SIU Pilaga es inferior a la v3.2 y mi versión de SIU Diaguita es inferior a v2.6?

Si se descarga la versión con instalador se debe descomprimir el archivo en la ruta utilizada como DocumentRoot de Apache, usando el navegador ir a la URL de esta carpeta y seguir los pasos del asistente de instalación Web.

Si se descarga el dump de la BD simplemente haciendo el restore de la base en un motor Postgresql (es necesaria versión de Postgresql 9.5 o superior).

Como instalarlo/actualizarlo si ya tengo las últimas versiones de SIU Diaguita y SIU Pilaga y no deseo esperar a una próxima actualización de alguno de los sistemas?

Se puede realizar la instalación/actualización por línea de comando.

Completar las variables de entorno que se encuentran en el archivo instalador.env

Instalación:

 ./bin/instalador arai-proveedores:crear-base

Actualización:

 ./bin/instalador arai-proveedores:actualizar-base
Para ver el estado de las migraciones de la base SIU Arai Proveedores:
 ./bin/instalador arai-proveedores:estado-base

Y luego continuar con los pasos que se encuentran debajo

Configuración de la Base Arai Proveedores

En principio, tenemos que cargar una nueva fuente de datos vinculando la base que utiliza el sistema SIU ARAI en los dos sistemas (este paso sirve tanto para Pilagá como para Diaguita), lo podemos hacer desde el archivo bases.ini de SIU Toba en la instalación de los sistemas

Modificando el bases.ini

Vamos a observar el archivo bases.ini para ver cómo queda configurado. En caso de hacerlo directamente en este archivo, ingresar estos datos (cambiado obviamente el detalle de las variables que están entre comillas). Ejemplo para instalación de SIU Pilagá en producción:

[produccion pilaga arai]
motor = "postgres7"
profile = "localhost"
usuario = "postgres"
clave = "postgres"
puerto = "5432"
encoding = "LATIN1"
schema = "public"
base = "pilaga_arai_trunk"

Si fuera una base Diaguita en producción, quedaría de la siguiente manera:

[produccion diaguita siu_arai]
motor = "postgres7"
profile = "localhost"
usuario = "postgres"
clave = "postgres"
puerto = "5432"
encoding = "LATIN1"
schema = "catalogos"
base = "arai"


NOTA: Si la base del sistema SIU-Arai se encuentra en otro servidor, recordar que puede ser necesario editar el archivo pg_hba.conf para configurar los permisos de acceso a la base desde el/los servidor/es donde se encuentren SIU-Pilagá y SIU-Diaguita.

Requisitos previos

1 - Preparar datos de proveedores extranjeros: En el apartado PREGUNTAS FRECUENTES del instructivo ver sección ¿Como sincronizo los datos de proveedores extranjeros?.
2 - Datos de tablas maestras de ubicación geográfica, conceptos, condiciones y rubros deben ser los mismos en las tres bases (Ver comando Sincroniza_datos_satelites en el instructivo)

Cómo sincronizar por primera vez

En principio tenemos que sincronizar las dos bases con Arai Lo hacemos desde el comando de consola:

Pilagá

Vamos a nuestra instalación de toba, dentro de la carpeta bin de toba:

Con Windows

Definimos el valor de la variable de entorno TOBA_INSTALACION_DIR indicando la ruta de instalación (ejemplo C:\SIU-Pilaga\instalacion)

set TOBA_INSTALACION_DIR=C:\SIU-Pilaga\instalacion


Ejecutamos el siguiente comando (que se encuentra en la carpeta bin de la instalación de Pilagá):

pilaga.bat arai sincronizacion_inicial

Con Linux

Ejecutamos el siguiente comando (que se encuentra en la carpeta bin de la instalación de Pilagá):

sudo sh pilaga.sh arai sincronizacion_inicial

Diaguita

Con Windows

Definimos el valor de la variable de entorno TOBA_INSTALACION_DIR indicando la ruta de instalación (ejemplo C:\SIU-Diaguita\instalacion)

set TOBA_INSTALACION_DIR=C:\SIU-Diaguita\instalacion

En nuestra instalación de toba, carpeta bin (ejemplo C:\siu\diaguita\toba\bin) , ejecutamos los comandos:

entorno_toba_x.y.bat
(reemplazar x.y por la versión de toba que se esté utilizando, por ejemplo, si se trata de Toba 2.6 sería entorno_toba_x.y.bat)

toba proyecto arai_sinc_inicial -pdiaguita -iproduccion

Con Linux

En nuestra instalación de toba, carpeta bin (ejemplo /usr/local/siu/diaguita/toba/bin) , ejecutamos los comandos:

. ./entorno_toba.env

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)

Programar la ejecución de la sincronización:

El proceso de sincronización se debe ejecutar por cada x minutos (OPCIONAL), también se ejecuta cada vez que se entra a la operación de abm de proveedores y cuando se modifica un proveedor.

Ejemplo de script para la ejecución de la sincronización inicial en SIU Diaguita

#!/bin/sh

#script que carga el entorno de toba y ejecuta una sincronizacion con ARAI. Es para llamarlo desde el CRON.
#tiene que ir en DIAGUITA_DIR/toba/bin

cd `dirname $0`"/../../instalacion"
export TOBA_INSTALACION_DIR=`pwd`

# cargo el entorno
$TOBA_INSTALACION_DIR/entorno_toba.env

# ejecuto la sincronizacion
$TOBA_INSTALACION_DIR/../toba/bin/toba proyecto arai_sincronizacion -i produccion -p diaguita

Linux

Para configurar las tareas de sincronización a incluir en el cron (nota: el usuario con el que se realizan estos pasos debe tener permisos de sudo, en el ejemplo se ejecuta cada 20 minutos). Seguir estos pasos:

sudo su
crontab -e

Agregar estas líneas y guardar:

*/20 * * * * sh /PATH_DE_PILAGA/bin/pilaga.sh arai sincronizacion > /dev/null

*/20 * * * *  sh /PATH_DE_DIAGUITA/bin/toba proyecto arai_sincronizacion -i produccion -p diaguita > /dev/null

Windows

Dependiendo de la versión de Windows utilizada se puede configurar como tarea programada o programar un servicio.

Funciones por linea de Comando

sincronizacion_inicial

Sincroniza absolutamente todo, hay que correrlo al utilizar por primera vez arai, además lo pide cada vez que se cambie de modo desconectado a conectado (tanto Pilagá como Diaguita informan cuando se debe hacer una sincronización inicial).

Recorre las tablas comunes del catálogo proveedores de la instalación local , obtiene los registros sin id arai asociado en anx_personas y anx_domicilios, si el registro no existe en arai, lo da de alta y asigna el id_arai en la instalación local, si el registro existe (usa la clave lógica de tipo_documento_numero por prioridad) en arai solo asigna el id_arai en la instalación local.

Lógica para los domicilios/documentos: Se actualizan como parte de la entidad proveedor.
Domicilio: si existen domicilios en arai para el proveedor prevalecen estos (si hay domicilios en Diaguita se actualizan estos domicilios en Arai). Si no existen domicilios en Arai para el proveedor y existen en Diaguita se actualizan estos domicilios en Arai.
Documento: si el proveedor no existe en Arai se toman los documentos de Diaguita y se actualizan en Arai. Si existen documentos en Arai para el proveedor prevalecen éstos.

sincronizacion

Se ejecuta cada vez que haya 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).

actualizar_secuencias

Actualiza las secuencias de las tablas del catálogo proveedores.

sincroniza_datos_satelites

El catálogo de proveedores involucra otros catálogos (rubros, conceptos, condiciones, localidades, provincias, países, etc) y estos catálogos aún no cuentan con un mecanismo de sincronización, es por ello que en ciertos casos pueden existir diferencias de datos entre la base de datos del proyecto y la base de arai proveedores. Este comando intenta sincronizar los datos de conceptos, condiciones y rubros. Para usar este comando es requerido contar con la librería dblink de Postgresql instalada (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y próximamente en la versión 2.5 de SIU Diaguita)

resincroniza_base

Resetea el estado de la sincronización de la base del proyecto, y se vuelve a sincronizar de 0 con la base del servidor. Este comando suele utilizarse cuando se realizan cambios en los datos de la base del proyecto o del servidor por fuera del circuito de sincronización (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y SIU Diaguita a partir de la versión 2.4.0)

estado

Muestra el estado de la BD Arai Proveedores y Pilaga, comando útil para saber si las bases se encuentran sincronizadas correctamente (disponible en las próximas versiones de SIU Diaguita y SIU Pilaga)

Estados de Sincronización

El cambio de los estados se puede hacer manualmente desde los parámetros del sistema, para modificarlo vamos a:

Pilagá

Administración/Configuración de Parámetros (aplicar_sincronizacion_arai_prov)

ARAI conf.png

Modo conectado (valor sí): cada cambio que se realice se sincroniza automáticamente con la base. En Pilagá si se utiliza este estado, solo se podrá cargar personas por la operación ABM - Personas ARAI y no por ABM - Personas

Modo desconectado (valor desconectado): si por algún motivo se cae la conexión con la red, se tendrá que poner este estado para poder cargar proveedores y seguir operando. Una vez que se restablezca la conexión, pedirá que se realice una sincronización inicial

(Valor no): no se utiliza la funcionalidad Arai (en Pilagá), se carga personas, proveedores por ABM - Personas y ABM – Proveedores


Diaguita

Administración/Parámetros

Arai 2.png

Configuración de servicio de AFIP

AFIP tiene una API tipo REST para obtener datos a partir de una CUIT, lo cual es muy útil para evitar demoras al cargar clientes o proveedores

Solo hay que configurar una carpeta (AFIP) y un archivo (cliente.ini)

Directorio genérico: instalacion\instancia\proyecto\rest\AFIP\cliente.ini

Ejemplo de directorio:

C:\SIU-Pilaga\instalacion\i__produccion\p__pilaga\rest\afip\cliente.ini

Dentro del archivo cliente.ini , deberán copiar textual los siguientes 3 renglones:

[conexion]
;Recuerde dejar una barra (/) al finalizar la URL
to = "https://soa.afip.gob.ar/"

Librería PHP

Para utilizar este servicio, tenemos que habilitar la librerías de PHP php_curl y php_pgsql

ACLARACION IMPORTANTE! Para que funcione correctamente la sincronización, las tablas países,provincias,departamentos, localidades y códigos postales, deberán tener los mismos datos, caso contrario no se podrá efectuar el 100% de la sincronización de los registros.

Requisitos a tener en cuenta

Los requisitos para utilizar SIU Arai Proveedores con SIU Diaguita y SIU Pilagá son los siguientes:

Versión Diaguita: 2.2.3 o superior

Version Pilaga: 2.3.4 o superior

Version Postgres: 9.5 o superior

Version PHP: 7.2 o superior

Pasos a seguir para pasar a producción

Se detallan los pasos recomendados para el pasaje a producción, esta guía detalla solo una opción posible.

1 - Se asume que ya se cuenta con la sincronización funcionando en un entorno de desarrollo, habiendo realizado las pruebas con copias de las BDs tomadas de producción.
2 - De la puesta en marcha en el paso 1 seguramente existan scripts SQLs que generan INSERTs de datos como conceptos, condiciones, rubros, y tablas de ubicación geográfica, para hacer que estas tablas tengan los mismos datos en las bases SIU Pilaga, SIU Diaguita y SIU Arai Proveedores.
3 - Poner en modo mantenimiento SIU Diaguita y SIU Pilaga (poner en 1 el parámetro modo_mantenimiento en el archivo proyecto.ini).
Esto significa que a partir de este paso los sistemas no estarán disponibles en producción hasta la finalización de los pasos que siguen a continuación.
4 - Realizar backups de las bases SIU Diaguita y SIU Pilaga.
5 - Crear una base SIU Arai Proveedores de cero en producción, ya sea utilizando el instalador o restaurando el backup.
6 - En las instalación de producción de SIU Pilaga y SIU Diaguita, configurar los archivos bases.ini tal como lo indica la sección del instructivo Configuración de la Base Arai Proveedores.
7 - Correr los scripts mencionados en el punto 2.
8 - Seguir los pasos de la sección del instructivo Cómo sincronizar por primera vez.
9 - Activar los parámetros siguiendo la sección del instructivo Estados de Sincronización.

API SIU ARAI Proveedores

Se encuentra disponible una API que brinda servicio sobre la funcionalidad que se encuentra disponible en SIU Arai Proveedores, esto facilita la interacción de cualquier sistema que ya contenga información de proveedores, o que necesite consultar información de proveedores.

URL del repositorio: https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/tree/v1.0.0-beta

Para ver mas información relacionada a la instalación y configuración: https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/blob/v1.0.0-beta/doc/install/INSTALACION_MANUAL.md

Para ver la definición de la API: https://gitlab.siu.edu.ar/siu-arai/proveedores-api/-/blob/v1.0.0-beta/specs/README.md

PREGUNTAS FRECUENTES

¿Que debo hacer si reinstalo Arai o regenero la BD Arai?

Se puede realizar de dos maneras:

Opción 1 (RECOMENDADA): A través del comando administrativo Resincronización que resetea el estado de la sincronización de la base del proyecto, y se vuelve a sincronizar de 0 con la base del servidor. Este comando suele utilizarse cuando se realizan cambios en los datos de la base del proyecto o del servidor por fuera del circuito de sincronización (comando disponible en SIU Pilaga a partir de la versión 3.0.2 y en SIU Diaguita a partir de la versión 2.4.0).

Opción 2: Manualmente, se deben borrar las referencias en las bases de los sistemas cliente conectado a dicha BD Arai, y volver a realizar una sincronización inicial.

Dichas referencias se guardan en el campo persona_arai de la tabla anx_personas y domicilio_arai de la tabla anx_domicilios. Las consultas SQL a ejecutar en las BDs de los sistemas clientes entonces serían:

En Diaguita

update diaguita.anx_personas set persona_arai=NULL;
update diaguita.anx_domicilios set domicilio_arai=NULL;

En Pilaga

update anx_personas set persona_arai=NULL;
update anx_domicilios set domicilio_arai=NULL;

También deben borrarse los datos de sincronización de los sistemas clientes, desde los cuales se actualizan las secuencias:

delete from catalogos.modo_desconectado;
delete from catalogos.logs_sincronizacion;
delete from catalogos.sincronizacion;

Para borrar los datos cargados en la Base de Datos Arai (ESTO BORRA TODOS LOS DATOS SINCRONIZADOS EN LA BASE ARAI PROVEEDORES)

set search_path to catalogos;
delete from catalogos.mdp_personas_domicilios;
delete from catalogos.mdp_personas_x_documentos;
delete from catalogos.sau_pr_proveedor_rubro;
delete from catalogos.sau_rt_conceptos_proveedor;

delete from catalogos.sau_pr_proveedores;
delete from catalogos.mdp_personas;
delete from catalogos.mdp_domicilios;

set search_path to sincronizador;
delete from sincronizador.operacion_x_tabla;
delete from sincronizador.logs_errores;
delete from sincronizador.log_cambios;

¿Como sincronizo los datos de proveedores extranjeros?

Para que los proveedores extranjeros sean sincronizados deben tener un tipo y nro de documento que no se trate de un CUIT comenzado en 50, 51 o 55 (ya que estos códigos son asignados por AFIP para un país en particular y pueden existir proveedores que compartan el mismo código).

Es recomendado realizar este proceso previo a sincronizar los datos con Arai Proveedores, en dicho caso los pasos serían:

Si SIU-Diaguita y SIU-Pilagá aún NO se encuentran sincronizados con Arai-Proveedores:

1 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación ABM - Personas, proveedores y clientes).
2 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Diaguita (usando operación Catálogo de Proveedores).
3 - Es necesario que el segundo tipo y nro de documento asignado a cada proveedor extranjero coincidan en las bases Diaguita y Pilagá, caso contrario al sincronizar se generarán duplicados.

Si SIU-Diaguita y SIU-Pilagá YA se encuentran sincronizados con Arai-Proveedores:

1- Modificar el valor del parámetro aplicar_sincronizacion_arai_prov y setearlo en NO en SIU-Diaguita y SIU-Pilaga

2 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación ABM - Personas, proveedores y clientes).
3 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Diaguita (usando operación Catálogo de Proveedores).
4 - Es necesario que el segundo tipo y nro de documento asignado a cada proveedor extranjero coincidan en las bases Diaguita y Pilagá, caso contrario al sincronizar se generarán duplicados.

5- Modificar el valor del parámetro aplicar_sincronizacion_arai_prov y setearlo en SI en SIU-Diaguita y SIU-Pilaga

6- Realizar una sincronización inicial en SIU-Diaguita y SIU-Pilaga

Tengo que agregar, modificar o borrar datos de proveedores a través de un script ¿como hago?

Una vez sincronizados, todas las modificaciones deben realizarse sobre la base Arai Proveedores, y estos cambios serán replicados en las bases de las aplicaciones clientes. Al script que uno desea ejecutar sobre la base se le debe agregar siempre una linea que incrementa una secuencia de la base, sin dicha línea las aplicaciones clientes no detectan estas novedades.

Por ejemplo, si quisiéramos borrar un proveedor el script debería ser:

SELECT nextval('sincronizador.sq_sincronizacion_catalogo');

DELETE FROM catalogos.sau_pr_proveedor_rubro where persona = ???;
DELETE FROM catalogos.sau_rt_conceptos_proveedor where proveedor = ???;
DELETE FROM catalogos.sau_pr_proveedores where persona = ???;
DELETE FROM catalogos.mdp_personas_x_documentos where persona = ???;
DELETE FROM catalogos.mdp_personas_domicilios where persona = ???;
DELETE FROM catalogos.mdp_personas where persona = ???;

Los cambios serán replicados en las aplicaciones cliente cuando realicen una sincronización.

¿Como instalo la extensión de postgresql dblink para poder utilizar el comando administrativo que sincroniza los datos satélites?

Los pasos para instalar la extensión dblink:

1-apt-update
2-apt-get install postgresql-contrib
3-Buscar archivo dblink--1.0.sql
4-Ejecutar psql basede_datos_x < /usr/share/postgresql/9.x/extension/dblink--1.0.sql

Ejecutar este script en las bases Diaguita, Pilaga y Arai:

DROP extension dblink;
SET search_path to auxiliar_catalogos;
CREATE extension dblink;

Para mas información https://mermamerma.wordpress.com/2013/05/30/crear-dblink-en-postgresql/

Ajustes de datos frecuentes al momento de sincronizar por primera vez

1 - Valores en null en columna estado_proveedor de sau_pr_proveedores
Resolución: se toma en el estado que tiene en anx_personas. Ejemplo de resolución (SIU Pilagá), ejecutar el query:

UPDATE sau_pr_proveedores pr
        SET estado_proveedor = (SELECT pe.estado FROM anx_personas pe WHERE pe.persona=pr.persona)
        WHERE pr.estado_proveedor is NULL;

2 - Corregir casos en donde existen proveedores activos y personas inactivas (SIU Pilagá)

Resolución: si el proveedor se encuentra activo, la persona asociada también debe estarlo, ejecutar:

En la base de SIU Pilaga:

UPDATE anx_personas SET estado = 'AC' FROM sau_pr_proveedores as pr WHERE pr.persona = anx_personas.persona and estado_proveedor = 'AC';

En la base de SIU Arai Proveedores:

SELECT nextval('sincronizador.sq_sincronizacion_catalogo');

UPDATE catalogos.mdp_personas SET estado = 'AC' FROM catalogos.sau_pr_proveedores as pr WHERE pr.persona = anx_personas.persona and estado_proveedor = 'AC';

Al agregar una condición en Pilaga genera un error al grabar un proveedor con esa nueva condición

Esto se debe a que el catálogo de condiciones aún no se sincroniza automáticamente y se requiere insertar manualmente la condición agregada en las bases de Diaguita y Arai Proveedores, se debe realizar el INSERT (ver ejemplo debajo) completando los datos de la nueva condición

-- En base Diaguita
INSERT INTO TABLE diaguita.sau_rt_condiciones (concepto, condicion, codigo_afip, nombre, descripcion, retiene, resta_iva) VALUES (VALORES DE LA CONDICION AGREGADA)
-- En base Arai Proveedores
INSERT INTO TABLE catalogos.sau_rt_condiciones (concepto, condicion, codigo_afip, nombre, descripcion, retiene, resta_iva) VALUES (VALORES DE LA CONDICION AGREGADA)

En Diaguita o Pilagá me aparece una ventana con el mensaje Existen datos de proveedores extranjeros que no pueden sincronizarse

Este mensaje indica que existen proveedores extranjeros que no tienen un tipo y número de documento único (el CUIT asociado a proveedores extranjeros corresponde a su país y puede encontrarse mas de un proveedor con dicho tipo/nro de documento). Esta validación advierte sobre dicha situación y realiza dos acciones:

  • Inhabilita las altas/bajas/modificaciones hasta que el problema quede resuelto.
  • Guarda en el log de la aplicación (ubicado en ../instalacion/i__produccion/p__{diaguita o pilaga}/logs) la lista de proveedores a los cuales hay que agregarle un tipo/nro documento único.

A continuación se explica una secuencia manual para corregir estos proveedores (también se puede realizar el ajuste realizando un script):

  • Mientras se realiza esta secuencia no se pueden agregar/modificar/eliminar proveedores en SIU Diaguita y SIU Pilaga (tomar los recaudos necesarios para garantizar esta situación).
  • Poner el parámetro aplicar_sincronizacion_arai_prov en No tanto en SIU Diaguita como en SIU Pilagá.
  • Ingresar a SIU Diaguita y a SIU Pilagá (el orden de ingreso es indistinto) e ir modificando cada uno de los proveedores listados en el log y agregarle un segundo tipo y número de documento (se recomienda usar los tipos NIF o PAS), y guardar los cambios de cada modificación.
  • Es fundamental que al momento de agregar el segundo tipo/nro de documento al proveedor,el mismo coincida tanto en SIU Diaguita y SIU Pilagá, caso contrario se generará un duplicado (ejemplo: si al proveedor ABC S.A se le agregó un segundo tipo de documento del tipo NIF con el número 331 en SIU Pilagá, en SIU Diaguita agregarle al mismo proveedor ese mismo tipo y número de documento).
  • Poner el parámetro aplicar_sincronizacion_arai_prov en Si tanto en SIU Diaguita como en SIU Pilagá.
  • Realizar una sincronización inicial en SIU Diaguita y SIU Pilagá.

Consulta para obtener la lista de proveedores extranjeros

-- En base Diaguita

SELECT p.* FROM diaguita.anx_tipos_documento_identidad tdi

INNER JOIN diaguita.anx_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad 

INNER JOIN diaguita.anx_personas p ON pd2.persona = p.persona

WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')

-- En base Pilaga

SELECT p.* FROM anx_tipos_documento_identidad tdi

INNER JOIN anx_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad

INNER JOIN anx_personas p ON pd2.persona = p.persona

WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')

-- En base Arai Proveedores

SELECT p.* FROM catalogos.mdp_tipos_documento_identidad tdi

INNER JOIN catalogos.mdp_personas_x_documentos pd2 ON tdi.tipo_de_documento_de_identidad = pd2.tipo_de_documento_de_identidad 

INNER JOIN catalogos.mdp_personas p ON pd2.persona = p.persona

WHERE (substring(pd2.numero,1,2) = '50' OR substring(pd2.numero,1,2) = '55' OR substring(pd2.numero,1,2) = '51')

Consulta para obtener la lista de proveedores duplicados

-- En base Diaguita

SELECT replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM diaguita.anx_tipos_documento_identidad tdi

INNER JOIN diaguita.anx_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 

INNER JOIN diaguita.anx_personas p ON pd.persona = p.persona

WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')

GROUP BY replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1

-- En base Pilaga

SELECT replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM anx_tipos_documento_identidad tdi

INNER JOIN anx_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 

INNER JOIN anx_personas p ON pd.persona = p.persona

WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')

GROUP BY replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1

-- En base Arai Proveedores

SELECT replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad, count(*) as repeticiones FROM catalogos.mdp_tipos_documento_identidad tdi

INNER JOIN catalogos.mdp_personas_x_documentos pd ON tdi.tipo_de_documento_de_identidad = pd.tipo_de_documento_de_identidad 

INNER JOIN catalogos.mdp_personas p ON pd.persona = p.persona

WHERE (substring(pd.numero,1,2) <> '50' AND substring(pd.numero,1,2) <> '55' AND substring(pd.numero,1,2) <> '51')

GROUP BY replace(pd.numero, '-', ''), tdi.tipo_de_documento_de_identidad HAVING COUNT(*) > 1

<Volver