SIU-Arai/proveedores

De SIU
Revisión del 15:54 1 jun 2017 de Lramirez (discusión | contribuciones) (¿Que debo hacer si reinstalo Arai o regenero la BD Arai?)
Saltar a: navegación, buscar
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.

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

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

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

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

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)

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:

Arai 4.png

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.

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:

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

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.


<Volver