Diferencia entre revisiones de «SIU-Arai/proveedores»

De SIU
Saltar a: navegación, buscar
(Configuración de la Base Araí)
(Configuración de la Base Arai Proveedores)
Línea 13: Línea 13:
 
Modificando el bases.ini<br />
 
Modificando el bases.ini<br />
  
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)<br />
+
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:<br />
  
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">
  
[desarrollo pilaga arai]
+
[produccion pilaga arai]
 
motor = "postgres7"
 
motor = "postgres7"
 
profile = "localhost"
 
profile = "localhost"
Línea 28: Línea 28:
 
</source>
 
</source>
  
Este ejemplo es una base de desarrollo de Pilagá, si fuera una base Diaguita producción,el titulo quedaría de la siguiente manera:
+
Si fuera una base Diaguita en producción, quedaría de la siguiente manera:
  
 
<source lang="php" enclose="div">
 
<source lang="php" enclose="div">

Revisión del 16:19 30 may 2017

Siu-arai iso.png

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.

Forma de trabajo

La distribución de la librería se realiza a través del sitio comunidad, 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)

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

Preparar datos de proveedores extranjeros: En el apartado PREGUNTAS FRECUENTES del instructivo se indican alternativas para modificar los datos de proveedores extranjeros y hacerlos compatibles con los mecanismos de sincronización.

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

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

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)

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.

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 desarrollo -p diaguita > /dev/null

Funciones por linea de Comando

Sincronización_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.

Sincronización

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_secuencia

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.0)

Resincronización

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)

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

Se necesitas unos requisitos mínimos para que funcione ARAI, son los siguientes:

Arai 4.png

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;
SELECT * from catalogos.mdp_personas_domicilios;
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;

¿Debo ejecutar cambios en los datos de proveedores a través de un script sql, como y donde lo hago?

Una vez sincronizado, cualquier cambio sobre datos de proveedores que se ejecute por fuera de las aplicaciones, debe realizarse en la base Arai Proveedores, y al comienzo del script que se desea ejecutar se debe agregar esta línea:

SELECT nextval('sincronizador.sq_sincronizacion_catalogo');

Esto asegura que los clientes tomen las modificaciones del script ejecutado al momento de sincronizarse con el servidor


¿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 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:

1 - Agregar un segundo tipo y número de documento a los proveedores extranjeros en SIU Pilaga (usando operación ABM Personas Arai).
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 - Continuar con la sincronización.

Es importante realizar este procedimiento antes de la sincronización para evitar registros duplicados de proveedores extranjeros durante este proceso, si ya se ha realizado la sincronización para no se han sincronizado los datos de proveedores extranjeros se deben agregar dos pasos adicionales:

4 - Realizar una sincronización inicial en SIU Diaguita y SIU Pilaga
5 - En caso de duplicados borrar aquellos que tenga un id de persona mas alto


Tengo que agregar, modificar o borrar datos masivos, ¿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.


<Volver