SIU-Arai/proveedores

De SIU
Revisión del 12:16 23 nov 2018 de Lramirez (discusión | contribuciones) (Configuración de la Base Arai Proveedores)
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

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.2.1/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.6.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 v.2,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.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

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_x.y.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 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_sinc_inicial -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 desarrollo -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:

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:

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 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 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 Arai).
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.1/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á.

<Volver