SAP Woo Sync: Un plugin gratuíto de Integración ERP para WooCommerce
Todo Empezó con una Necesidad Real
Cuando mi cliente me pidió "algo para conectar la tienda con SAP", pensé que sería un proyecto sencillo. Error. Lo que parecía una simple transferencia de datos se convirtió en uno de los desarrollos más complejos y gratificantes de mi carrera como programador.
El problema real surgió cuando descubrí que necesitaban vender en diferentes países con normativas fiscales completamente distintas. No era solo "pasar un pedido a SAP", sino gestionar automáticamente clientes específicos por región, aplicar tarifas diferentes según el destino, y manejar el IVA de forma inteligente dependiendo de si era una venta nacional, una exportación a Canarias, o una operación intracomunitaria a Portugal.
Ahí me di cuenta de que los plugins existentes en el mercado eran demasiado básicos. Necesitaba crear algo desde cero que realmente entendiera la complejidad del negocio internacional.
¿Por Qué el Service Layer Cambió Todo?
La primera decisión técnica crucial fue apostar por el Service Layer de SAP Business One en lugar de las APIs más antiguas. Esta decisión marcó la diferencia entre tener un plugin más del montón y crear una solución profesional.
Lo que el Service Layer me permitió hacer:
- Conexiones RESTful modernas: Nada de protocolos obsoletos, todo con HTTP/HTTPS estándar
- Autenticación por sesiones: Sistema seguro que maneja automáticamente tokens y renovaciones
- Respuestas JSON estructuradas: Datos limpios y fáciles de procesar
- Compatibilidad garantizada con las versiones futuras de SAP
Pero lo más importante: me permitió crear un sistema que no solo envía datos, sino que conversa con SAP. El plugin puede crear direcciones de envío automáticamente, validar stock en tiempo real, y manejar errores de forma inteligente.
// Ejemplo real de como gestiono la conexión
$client = new SAPWC_API_Client($connection_url);
$login = $client->login($user, $password, $database, $ssl);
if ($login['success']) {
// Ahora puedo hacer cualquier operación: crear pedidos,
// consultar stock, gestionar clientes...
$result = $client->post('Orders', $payload);
}
El Panel de Sincronización: Donde la Magia Ocurre

Una de las partes de las que más orgulloso estoy es el panel de sincronización. No es solo una página de configuración más; es el centro de control donde se define cómo se comporta toda la integración.
Configuración Regional Inteligente
Aquí es donde puedes definir qué cliente SAP usar para cada región, qué tarifa aplicar, y cómo manejar los impuestos. Todo visual, todo intuitivo:
- Clientes por región: Configuras un cliente SAP diferente para península, Canarias, Portugal... cada uno con su configuración fiscal específica
- Tarifas independientes: Cada región puede tener su propia lista de precios SAP
- Gestión de IVA: Checkboxes simples para decidir si incluir IVA o marcarlo como exento según la legislación
Sincronización de Stock en Tiempo Real
El panel permite configurar qué almacenes de SAP sincronizar con WooCommerce. Seleccionas los almacenes, defines la frecuencia, y el plugin se encarga de mantener el stock actualizado automáticamente.

Modo B2B vs Ecommerce
Una funcionalidad que me enorgullece especialmente: el plugin puede trabajar en dos modos completamente diferentes:
- Modo Ecommerce: Usa clientes genéricos de SAP y gestiona las direcciones automáticamente
- Modo B2B: Cada usuario de WordPress tiene su código de cliente específico en SAP
Las Funcionalidades que Marcan la Diferencia
Gestión Automática de Direcciones
Cuando llega un pedido nuevo, el plugin no solo lo envía a SAP. Automáticamente:
- Crea una nueva dirección de envío en el cliente SAP correspondiente
- Le asigna un ID único:
WEB-{número_pedido}
- Incluye ese ID en los comentarios del pedido para trazabilidad total
Esto significa que en SAP tienes un historial completo de todas las direcciones de envío de tus clientes web.
Detección Regional Automática
El sistema es lo suficientemente inteligente para detectar automáticamente la región del cliente basándose en su código postal y país. Una vez detectada la región, aplica automáticamente:
- El cliente SAP correcto
- La tarifa de precios apropiada
- La configuración fiscal correspondiente
Sistema de Logs Detallado
Cada transacción queda registrada con un nivel de detalle que permite rastrear cualquier problema:
[REGIONAL_DEBUG] Pedido: 7108 | Región: Portugal | Cliente: Cliente_PT | Tarifa: 5
[BUILD_ITEMS_VAT] SKU: 12345 | Tarifa: 5 | Incluir IVA: SÍ
[BP PATCH] Dirección WEB-7108 añadida correctamente
Manejo de Promociones Complejas
Una de las funcionalidades más complejas que desarrollé es el soporte para promociones tipo "4+2" (compra 4 y llévate 6). El plugin:
- Detecta automáticamente cuando un producto es promocional
- Separa las unidades pagadas de las regaladas
- Crea líneas diferentes en SAP para cada tipo
- Aplica el código de producto correcto para productos sin cargo
Los Retos Técnicos que me Hicieron Crecer
Gestión de Errores Inteligente
Una cosa es enviar datos a SAP cuando todo funciona bien. Otra muy distinta es manejar errores de forma elegante. Desarrollé un sistema de reintentos automáticos que:
- Detecta errores temporales vs errores permanentes
- Reintenta automáticamente tras fallos de conexión
- Almacena pedidos fallidos para revisión manual
- Envía notificaciones cuando algo necesita atención humana
Sincronización Sin Duplicados
Un problema típico en las integraciones es enviar el mismo pedido varias veces. Mi solución incluye:
- Sistema de marcas que evita duplicados
- Validación de estados antes del envío
- Recuperación automática tras interrupciones
Actualizaciones Automáticas
Integré un sistema de actualizaciones automáticas desde GitHub que permite desplegar nuevas versiones sin intervención manual. Esto es crucial para mantener todos los sitios actualizados con las últimas mejoras y correcciones.
El Panel de Control: Visibilidad Total
Desarrollé un panel de administración que da visibilidad completa sobre el estado de la integración:
Estado en Tiempo Real
En la admin bar de WordPress se muestra constantemente:
- Estado de la conexión con SAP (verde/rojo)
- Última sincronización realizada
- Próxima ejecución automática programada
- Acceso rápido para forzar una sincronización manual
Gestión de Pedidos Fallidos
Una página dedicada donde se pueden revisar y reenviar manualmente los pedidos que no se procesaron automáticamente, con información detallada sobre el motivo del fallo.
Tabla de Últimos Pedidos
Una vista consolidada que muestra los últimos pedidos enviados a SAP, permitiendo verificar rápidamente que todo está funcionando correctamente.
Lo que Aprendí en el Proceso
Este proyecto me enseñó que desarrollar una integración real va mucho más allá de conocer APIs. Necesitas entender:
- Procesos de negocio: Cómo funciona realmente una empresa day-to-day
- Legislación fiscal: Diferencias entre IVA nacional, exenciones, e IVA intracomunitario
- Gestión de errores: Qué puede fallar y cómo recuperarse elegantemente
- Experiencia de usuario: Hacer que algo complejo se sienta simple
Pero lo más valioso fue entender que una buena integración debe ser invisible para el usuario final. Si funciona bien, nadie se da cuenta de que está ahí. Solo cuando falla te das cuenta de lo importante que es.
El Resultado: Más que un Plugin
Después de más de 80 versiones iterativas y meses de refinamiento, SAP Woo Sync se ha convertido en una solución integral que gestiona automáticamente:
- Sincronización bidireccional de pedidos y stock
- Gestión automática de clientes por región
- Aplicación inteligente de tarifas y configuraciones fiscales
- Manejo de promociones complejas
- Trazabilidad completa de direcciones de envío
- Sistema robusto de recuperación ante errores
El código fuente está disponible en GitHub, y aunque es un proyecto comercial, me enorgullece mantener una arquitectura limpia y documentada que otros desarrolladores puedan entender y extender.
Reflexión Final
SAP Woo Sync representa todo lo que me gusta del desarrollo de software: resolver problemas reales de forma elegante. No es el plugin más flashy del mercado, pero hace su trabajo de forma silenciosa y eficiente, permitiendo que los negocios crezcan sin preocuparse por la sincronización entre sus sistemas.
Cada línea de código fue escrita pensando en que alguien, en algún lugar, podría depender de que funcionara correctamente. Esa responsabilidad es lo que convierte la programación en algo más que escribir código: es crear herramientas que mejoran la vida de las personas.
Para más información:
Comparte este trabajo en las redes sociales!