Diferencia entre revisiones de «SIU-Arai/proveedores»
(→estado) |
(→Tengo que agregar, modificar o borrar datos de proveedores a través de un script ¿como hago?) |
||
Línea 292: | Línea 292: | ||
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: | ||
+ | |||
+ | apt-update | ||
+ | apt-get install postgresql-contrib | ||
+ | Buscar archivo dblink--1.0.sql | ||
+ | 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: | ||
+ | |||
+ | <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 === | === Ajustes de datos frecuentes al momento de sincronizar por primera vez === |
Revisión del 16:08 28 jul 2017
Sumario
- 1 SIU-Arai Proveedores
- 1.1 Donde descargarlo
- 1.2 Como instalarlo
- 1.3 Configuración de la Base Arai Proveedores
- 1.4 Requisitos previos
- 1.5 Cómo sincronizar por primera vez
- 1.6 Funciones por linea de Comando
- 1.7 Estados de Sincronización
- 1.8 Configuración de servicio de AFIP
- 1.9 Librería PHP
- 1.10 Requisitos a tener en cuenta
- 1.11 Pasos a seguir para pasar a producción
- 1.12 PREGUNTAS FRECUENTES
- 1.12.1 ¿Que debo hacer si reinstalo Arai o regenero la BD Arai?
- 1.12.2 ¿Como sincronizo los datos de proveedores extranjeros?
- 1.12.3 Tengo que agregar, modificar o borrar datos de proveedores a través de un script ¿como hago?
- 1.12.4 ¿Como instalo la extensión de postgresql dblink para poder utilizar el comando administrativo que sincroniza los datos satélites?
- 1.12.5 Ajustes de datos frecuentes al momento de sincronizar por primera vez
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:
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:
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
En nuestra instalación de toba, carpeta bin (ejemplo C:\siu\arai\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
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 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.
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_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)
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
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:
Dentro del archivo cliente.ini , deberán copiar textual los siguientes 3 renglones:
;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:
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_domicilios set domicilio_arai=NULL;
En Pilaga
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.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)
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:
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:
apt-update apt-get install postgresql-contrib Buscar archivo dblink--1.0.sql 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:
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:
SET estado_proveedor = (SELECT pe.estado FROM anx_personas pe WHERE pe.persona=pr.persona)
WHERE pr.estado_proveedor is NULL;