Conectar PrestaShop con SAP Business One implica sincronizar artículos, stock, precios, pedidos, clientes y estados de envío entre dos sistemas con modelos de datos muy diferentes. SAP B1 trabaja con Business Partners, Items y Documents. PrestaShop trabaja con customers, products y orders. La integración traduce entre ambos mundos y gestiona las diferencias.

Hay dos formas principales de acceder a los datos de SAP Business One desde un sistema externo: la Service Layer (API REST moderna, disponible desde SAP B1 9.2) y la DI API (librería COM/.NET, más potente pero más compleja). Para la mayoría de integraciones con eCommerce, la Service Layer es la opción recomendada por su accesibilidad y rendimiento.

Qué datos sincronizar y en qué dirección

No todo necesita sincronizarse. Y no todo se sincroniza en la misma dirección. Los flujos típicos:

  • Artículos (Items): SAP → PrestaShop. El ERP es maestro de producto. Se sincronizan nombre, descripción, referencia, peso, categoría.
  • Stock: SAP → PrestaShop. El ERP controla el stock real. Se sincroniza cantidad disponible por almacén.
  • Precios: SAP → PrestaShop. Las listas de precios del ERP se mapean a los grupos de clientes de PrestaShop.
  • Clientes: Bidireccional. Nuevos clientes de PrestaShop se crean como Business Partners en SAP. Datos fiscales del ERP se sincronizan a PrestaShop.
  • Pedidos: PrestaShop → SAP. Cada pedido confirmado genera un Sales Order en SAP B1.
  • Estados de envío: SAP → PrestaShop. Cuando se genera la Delivery Note en SAP, se actualiza el estado del pedido en PrestaShop con el número de seguimiento.

Métodos de conexión con SAP Business One

Service Layer (SL) — API REST

La Service Layer es un servidor web (basado en Apache/oData) que expone los objetos de SAP B1 como endpoints REST. Funciona sobre HTTPS, devuelve JSON y soporta autenticación por sesión. Es la forma recomendada para integraciones modernas.

Endpoints principales que usarás:

  • POST /b1s/v1/Login — autenticación, devuelve cookie de sesión
  • GET /b1s/v1/Items — listado de artículos con filtros oData
  • GET /b1s/v1/Items('ARTCODE') — artículo específico por código
  • POST /b1s/v1/Orders — crear pedido de venta
  • GET /b1s/v1/BusinessPartners — clientes y proveedores
  • PATCH /b1s/v1/Orders(123) — actualizar pedido existente

Limitaciones de la Service Layer: no soporta todos los objetos de SAP B1 (algunos solo son accesibles via DI API), las sesiones expiran tras 30 minutos de inactividad, y las consultas complejas pueden requerir vistas SQL personalizadas expuestas como User Queries.

DI API — Acceso directo

La DI API (Data Interface API) es una librería COM que se ejecuta en la máquina donde está instalado SAP B1. Accede directamente a la base de datos y permite operaciones más complejas: transacciones, aprobaciones, documentos compuestos. El inconveniente es que requiere un servicio intermediario (un wrapper .NET o similar) que exponga estas funciones como API REST consumible por el middleware.

Se usa cuando la Service Layer no cubre el caso: campos de usuario (UDFs) complejos, procedimientos almacenados, operaciones que requieren transaccionalidad estricta o acceso a objetos no expuestos en SL.

Mapeo de campos: SAP B1 ↔ PrestaShop

El mapeo de campos es la parte más crítica y la que más tiempo lleva. Los campos principales:

Artículos

  • ItemCode (SAP) → reference (PS)
  • ItemName (SAP) → name (PS)
  • QuantityOnStock (SAP) → quantity (PS)
  • ItemPrices (SAP) → price / specific_prices (PS)
  • SWeight1 (SAP) → weight (PS)
  • U_WebCategory (SAP UDF) → id_category_default (PS)

Pedidos

  • id_order (PS) → NumAtCard (SAP — referencia externa)
  • id_customer (PS) → CardCode (SAP — Business Partner)
  • product.reference (PS) → ItemCode (SAP — líneas del pedido)
  • product_quantity (PS) → Quantity (SAP — línea)
  • unit_price_tax_excl (PS) → UnitPrice (SAP — línea, siempre sin IVA)
  • total_shipping_tax_excl (PS) → línea adicional con item de portes en SAP

Tiempos de implementación reales

Basándonos en proyectos reales de integración PrestaShop-SAP B1:

  • Semana 1-2: Auditoría de datos, mapeo de campos, definición de reglas de negocio
  • Semana 3-4: Configuración de conectores, desarrollo de transformaciones, mapeo de categorías
  • Semana 5-6: Testing con datos reales, ajustes de mapeo, gestión de excepciones
  • Semana 7-8: Puesta en producción, monitorización intensiva, ajustes finos

Proyectos con más de 20.000 referencias, múltiples listas de precios B2B o multi-idioma pueden extenderse a 10-12 semanas. El factor que más tiempo consume no es la conexión técnica, sino el mapeo de datos y la resolución de inconsistencias entre lo que tiene el ERP y lo que espera la tienda.

Problemas técnicos frecuentes

Los problemas que aparecen con más frecuencia en integraciones PrestaShop-SAP B1:

  • IVA: SAP trabaja con importes sin IVA y lo calcula con tax codes. PrestaShop puede trabajar con o sin IVA según configuración. Las diferencias de redondeo generan céntimos de descuadre que se acumulan.
  • Caracteres especiales: Nombres de producto con tildes, eñes o símbolos que fallan en la Service Layer si no se codifican correctamente en UTF-8.
  • Límite de sesiones: La Service Layer tiene un límite de sesiones simultáneas (por defecto 20). Si el middleware no reutiliza sesiones correctamente, se saturan y la integración se bloquea.
  • Campos obligatorios: SAP B1 puede tener campos obligatorios (UDFs configurados como required) que PrestaShop no tiene. El middleware debe proporcionar valores por defecto o mapear desde otro campo.

Un middleware especializado como Integrafy tiene estos problemas resueltos con reglas predefinidas para la combinación PrestaShop + SAP B1, lo que reduce significativamente el tiempo de implementación y los errores en producción.