Integración de ERPs con Web Services: Tipos, Métodos y Desafíos con XML y Excel
La elección de un sistema ERP (Enterprise Resource Planning o Planificación de Recursos Empresariales) es una decisión fundamental para cualquier empresa que busca optimizar su gestión interna. Existen diversos tipos de software ERP, clasificados por su implementación, alcance y funcionalidad, cada uno con sus propias ventajas y adaptaciones a las necesidades específicas de la industria.
Tipos de Implementación de ERP
Al considerar un ERP, es crucial entender los diferentes modos de implementación:
- ERPs On-Premise: Este tipo de ERP se instala directamente en los servidores y equipos de la empresa, ofreciendo un control total sobre los datos y la infraestructura.
- ERPs en la Nube: Estos sistemas están alojados en servidores externos y se accede a ellos a través de Internet. Proporcionan flexibilidad y accesibilidad desde cualquier lugar, sin necesidad de infraestructura propia.
- Modelos Híbridos: Algunas soluciones, como Odoo, ofrecen opciones tanto en la nube como on-premise, permitiendo a las empresas elegir el modelo que mejor se adapte a sus preferencias de control y accesibilidad.
Personalización y Funcionalidad del ERP
La personalización de un ERP es clave para adaptarlo a las necesidades particulares de cada empresa. Odoo, como ERP de código abierto, permite una personalización completa, ajustándose a los procesos y necesidades específicas de cada negocio.
La funcionalidad de un ERP define qué áreas de la empresa cubre y su nivel de integración. Odoo es un ERP integral y modular, lo que significa que puede abarcar múltiples funciones empresariales y permitir una integración fluida entre ellas.
Comunicación e Intercambio de Datos: El Rol de los Web Services
El concepto de Web Service, o servicio web, se refiere a un sistema de comunicación, protocolos y estándares que permiten el intercambio de datos entre dos dispositivos electrónicos o aplicaciones conectadas a la misma red. Uno de los elementos clave de este sistema es el XML (Extensible Markup Language o Lenguaje de Marcado Extensible).
Protocolos y Arquitecturas de Web Services
- SOAP (Simple Object Access Protocol): Es un protocolo basado en el lenguaje XML estándar de comunicación que permite enviar y recibir mensajes del servicio web entre varios sistemas o aplicaciones.
- RESTful: Son aplicaciones de Web Service que proceden de la arquitectura de software REST (Representational State Transfer). A diferencia de SOAP, RESTful no está estructurado bajo estándares definidos, lo que lo hace más ligero y flexible.
- HTTP: El protocolo de transferencia de hipertexto (HTTP) es el protocolo que permite realizar una petición de datos y recursos a un Web Service.
Una de las ventajas más relevantes de los Web Services en el sector industrial es la posibilidad de acceder a programas o aplicaciones sin necesidad de tenerlos instalados localmente. Esto es esencial si una empresa tiene procesos automatizados en red con PLCs, sistemas de supervisión y control de los procesos productivos, o sistemas SCADA.
Integración de ERPs con bFiskur®
bFiskur® es una plataforma que permite conciliar la información registrada en el SAT con los datos de su ERP. Para esto, es necesario alimentar la plataforma con la información de su ERP. bFiskur® ofrece varios métodos para la alimentación de datos:
Métodos de Alimentación de Datos en bFiskur®
- A través de un correo electrónico (Método Manual):
Este es el método más sencillo y requiere el envío de correos por parte del usuario. Consiste en preparar un archivo de datos (layouts) y enviarlo por correo. Un robot recibe automáticamente el archivo, valida la información y la añade a la bóveda de bFiskur®.
Proceso: Envío de layouts por correo a un robot.
- Usando un conector (Método Automático):
Este método sincroniza su ERP directamente con bFiskur® y es automático. Requiere que la base de datos del ERP sea accesible a través de un driver ODBC para que la plataforma pueda extraer los datos. Es ideal para una sincronización sin intervención humana.
- Enviando la información al Web Service de bFiskur®:
Este método es adecuado para ERPs cuyo acceso directo a la base de datos está bloqueado, como puede ser SAP. Permite enviar la información utilizando layouts o enviando los XML individuales de cada CFDI.
- Desarrollar tu propio Web Service:
Para empresas con necesidades específicas, es posible desarrollar un Web Service propio para enviar la información a bFiskur®.
Este documento se enfoca específicamente en el método 3: enviar la información al Web Service de bFiskur®.
Enviando Layouts a bFiskur® a Través del Web Service
Los pasos para enviar información a bFiskur® mediante su Web Service son los siguientes:
Paso 1: Preparar los archivos o layouts con la información a enviar
Lo primero es preparar los layouts de datos, que son archivos con la información a transmitir a bFiskur®. Se recomienda desarrollar un proceso para que su ERP genere estos layouts de manera automática diariamente. Los layouts o archivos pueden ser en formato CSV o XLSX.
Las especificaciones del contenido de cada archivo o layout se detallan para los siguientes tipos:
- ERP Documentos Emitidos
- ERP Documentos Recibidos
- ERP Nómina Detalle
- ERP Pagos Clientes
- ERP Pagos Proveedores
IMPORTANTE: La carga y reemplazo de información en la plataforma se realiza en base al rango de fechas contenido en el layout. Si se incluye un CFDI del 1 de enero de 2023 y un CFDI del 15 de febrero de 2023, bFiskur® borrará primero toda la información existente entre esas dos fechas y la reemplazará por la nueva contenida en el archivo enviado.
Paso 2: Colocar los archivos en un folder
Una vez que se tienen los archivos, se deben colocar en una carpeta específica, por ejemplo: C:\bFiskur\. No es necesario tener todos los archivos; se pueden enviar de manera individual.
Paso 3: Descargar e instalar la herramienta CURL.EXE
El envío de información de los layouts se realiza llamando al Web Service mediante CURL. CURL es una herramienta de línea de comandos y una biblioteca de software utilizada para realizar transferencias de datos a través de diferentes protocolos de red. Si se trabaja desde un servidor LINUX, este comando está disponible de manera natural. Sin embargo, en un servidor o máquina con sistema operativo Windows, esta herramienta no viene preinstalada y debe ser descargada e instalada.
Se recomienda el uso de la versión de código abierto y gratuita de CURL.
Pasos para la instalación en Windows:
- Descargar la última versión disponible para Windows (formato .zip).
- Descomprimir el archivo descargado en una carpeta.
- Copiar los archivos del subdirectorio \bin a la misma carpeta donde se encuentran los layouts.
La aplicación CURL.EXE será la herramienta a ejecutar para el envío de información, por lo que se deben asegurar los permisos necesarios para ejecutar este comando con el usuario de Windows que realizará el envío.
Paso 4: Preparar un BATCH para ejecutar CURL
El siguiente paso es preparar un archivo .BAT que contenga la llamada a CURL.EXE y le pase como parámetros los archivos a enviar junto con la información de seguridad necesaria para que bFiskur® reciba los archivos. Se deben reemplazar los marcadores de posición con la información real:
- [archivo]: Utilizar el nombre real del archivo. El nombre del archivo no debe contener espacios y debe tener extensión .csv o .xlsx.
- [hoja de datos]: El nombre de la hoja que contiene los datos, por ejemplo: Hoja1.
- [id_usuario]: El ID de usuario para la autenticación.
- [contraseña_segura]: La contraseña segura para la autenticación.
Nuevo CFDI descarga Masiva de XML del SAT 2025 de ContadorMx
Desafíos con el Web Service del SAT y la Descarga de XML
En las últimas semanas, miles de contadores y contribuyentes han enfrentado un problema recurrente: la demora del SAT en responder a las peticiones de descarga de XML con e.firma a través de su Web Service. El SAT recibe la solicitud, prepara los paquetes y notifica cuando están listos. La descarga de CFDI mediante e.firma funciona de manera asíncrona. El problema principal es que las solicitudes permanecen “en proceso” durante días antes de liberarse.
En años anteriores, los retrasos eran temporales y duraban uno o dos días, generalmente debido a actualizaciones del sistema. Sin embargo, la situación actual es inédita: los paquetes tardan más de 24 horas e incluso hasta 6 días en entregarse, sin que el SAT haya emitido un comunicado oficial sobre la normalización del servicio. A pesar de estos retrasos, el trabajo no debe frenarse. Existen alternativas, como la descarga de XML con acceso RFC y contraseña, que puede ser una solución provisional.
Comunicación con un Servicio Web XML Mediante ASP.NET desde una Macro de Office
Para comunicarse correctamente con un servicio web XML mediante ASP.NET desde una macro de Office, es necesario que el kit de herramientas SOAP esté instalado en el equipo cliente donde se ejecuta la macro.
Ejemplo de Implementación con Visual Studio .NET
- Iniciar Microsoft Visual Studio .NET.
- Crear un nuevo proyecto: En el menú Archivo, hacer clic en Nuevo y luego en Proyecto.
- Seleccionar "Proyectos de Visual Basic" en "Tipos de proyecto" y "Servicio web XML mediante ASP.NET" en "Plantillas". Asignar al proyecto el nombre "SQLQuery" y hacer clic en Aceptar.
- Presionar F5 para compilar y ejecutar la solución de servicio web.
- Probar el método GetIDs, que devuelve una lista de identificadores de autor extraídos de la base de datos.
- Probar el método QueryDatabase, que devuelve los detalles del autor con un identificador específico.
Nota: Se debe cambiar el id_usuario y la contraseña_segura a los valores correctos antes de ejecutar el código.
Integración con Macros de Word (Ejemplo con Plantilla Fax Elegante)
Este ejemplo utiliza la plantilla "Fax elegante" incluida con Word y requiere la instalación del kit de herramientas SOAP.
- Iniciar Word.
- En el menú Herramientas, hacer clic en Macro y luego en Editor de Visual Basic.
- En el Editor de Visual Basic, en el menú Herramientas, hacer clic en Referencias.
- Si la "Biblioteca de tipos SOAP de Microsoft" no está disponible, hacer clic en Examinar. Navegar al directorio C:\Archivos de programa\Common Files\MSSoap\Binaries y seleccionar mssoap1.dll.
- En el menú Herramientas, hacer clic en Macro y luego en Macros. Ejecutar la macro ShowForm para mostrar la lista de identificadores.
Integración con Macros de Excel (Ejemplo con Plantilla Factura de Ventas)
Este ejemplo utiliza la plantilla "Factura de ventas" incluida con Excel y también requiere el kit de herramientas SOAP.
- Iniciar Excel.
- En el menú Herramientas, hacer clic en Macro y luego en Editor de Visual Basic.
- En el Editor de Visual Basic, en el menú Herramientas, hacer clic en Referencias.
- Si la "Biblioteca de tipos SOAP de Microsoft" no está disponible, hacer clic en Examinar. Navegar al directorio C:\Archivos de programa\Archivos comunes\MSSoap\Binaries y seleccionar mssoap1.dll.
- Modificar la constante sServer para que apunte al servidor que aloja el servicio web.
- Modificar la constante sTemplatePath para que apunte a la ruta correcta del archivo de factura (para Office 2000, la ubicación predeterminada es C:\Microsoft Office\Templates\1033\Invoice.xlt).
- En el menú Herramientas, hacer clic en Macro y luego en Macros. Ejecutar la macro ShowForm para mostrar la lista de identificadores.
Comparativa de los Tipos de ERP
| Característica | ERP On-Premise | ERP en la Nube | ERP Híbrido (Ej. Odoo) |
|---|---|---|---|
| Instalación | En servidores y equipos de la empresa | Alojado en servidores externos (acceso vía Internet) | Opciones On-Premise y en la Nube |
| Control de Datos | Total control por la empresa | Menor control directo, gestionado por proveedor | Flexibilidad según el modelo elegido |
| Accesibilidad | Limitado a la red interna o VPN | Desde cualquier lugar con conexión a Internet | Desde cualquier lugar (en la Nube) o limitado (On-Premise) |
| Costos Iniciales | Altos (hardware, licencias, implementación) | Bajos (suscripción mensual/anual) | Depende de la implementación (licencias o suscripción) |
| Mantenimiento | Responsabilidad de la empresa | Gestionado por el proveedor | Compartido o por el proveedor (en la Nube) |
| Personalización | Alta, pero puede requerir desarrollo interno | Limitada por la arquitectura del proveedor | Muy alta, especialmente con código abierto como Odoo |
| Escalabilidad | Depende de la infraestructura física | Fácilmente escalable según necesidades | Alta, con opciones para adaptarse al crecimiento |
