Este documento describe la arquitectura y funcionamiento de un sistema robusto de sincronización bidireccional de inventario entre una tienda online (PrestaShop) y un sistema ERP de gestión de inventario (Megaventory), diseñado para mantener la consistencia del stock en tiempo real a través de múltiples canales de venta.
🎯 Problema a Resolver
Las empresas con múltiples canales de venta enfrentan un desafío crítico: mantener el inventario sincronizado entre:
- 🛒 Tienda online (ventas web)
- 📦 Almacén físico (ventas en tienda)
- 🌐 Marketplaces (Amazon, eBay, etc.)
- 📊 Sistema ERP (gestión centralizada)
Desafíos Principales
- Ventas simultáneas en múltiples canales
- Recepciones de mercancía actualizadas en el ERP
- Ajustes manuales de inventario
- Evitar sobreventa (vender stock que no existe)
- Sincronización sin pérdida de datos
🏗️ Arquitectura del Sistema
Componentes Principales

🧮 La Metodología: Sistema de Baseline Diferencial
Concepto Fundamental
El sistema utiliza una línea base (baseline) que actúa como «punto de referencia» del stock en el momento de la última sincronización exitosa. Este valor se actualiza en cada ciclo de sincronización, permitiendo calcular las diferencias ocurridas desde la última vez que se sincronizaron los sistemas.
Fórmula de Sincronización
Stock_Nuevo = Stock_PrestaShop_Actual + Stock_ERP_Actual – Baseline
¿Por qué funciona esta fórmula?
La clave está en entender que el baseline representa el estado «conocido» del último momento en que ambos sistemas estaban sincronizados.
Ejemplo Práctico – Ciclo Completo
Estado Inicial (Primera Sincronización):
Baseline: 50 unidades (establecido en sincronización anterior)
PrestaShop: 50 unidades
ERP: 50 unidades
→ Todo sincronizado, no hay cambios
Ciclo 1: Venta en la web (3 unidades)
Antes de la sincronización:
Baseline: 50 unidades (del ciclo anterior)
PrestaShop vende: 3 unidades → ahora tiene 47
ERP sigue en: 50 unidades (sin cambios)
Fórmula: 47 + 50 – 50 = 47 ✅
Resultado: Stock calculado = 47 unidades
Después de la sincronización:
✅ PrestaShop actualizado: 47 unidades
✅ Baseline actualizado: 47 unidades (NUEVO PUNTO DE REFERENCIA)
✅ Tabla mapping actualizada: 47 unidades
✅ ERP actualizado vía API: 47 unidades
Ciclo 2: Recepción en almacén (10 unidades)
Antes de la sincronización:
Baseline: 47 unidades (actualizado en ciclo anterior)
PrestaShop: 47 unidades (sin cambios desde ciclo 1)
ERP recibe: 10 unidades → ahora tiene 57
Fórmula: 47 + 57 – 47 = 57 ✅
Resultado: Stock calculado = 57 unidades
Después de la sincronización:
✅ PrestaShop actualizado: 57 unidades
✅ Baseline actualizado: 57 unidades (NUEVO PUNTO DE REFERENCIA)
✅ Tabla mapping actualizada: 57 unidades
✅ ERP ya tiene: 57 unidades (no necesita actualizar)
Ciclo 3: Movimientos en ambos lados simultáneamente
Antes de la sincronización:
Baseline: 57 unidades (del ciclo anterior)
PrestaShop vende: 2 unidades → ahora 55
ERP recibe: 8 unidades → ahora 65
Fórmula: 55 + 65 – 57 = 63 ✅
Resultado: Stock calculado = 63 unidades
(57 inicial – 2 vendidas + 8 recibidas)
Después de la sincronización:
✅ PrestaShop actualizado: 63 unidades
✅ Baseline actualizado: 63 unidades (NUEVO PUNTO DE REFERENCIA)
✅ Tabla mapping actualizada: 63 unidades
✅ ERP actualizado vía API: 63 unidades
Ventajas de este Método
✅ Sincronización bidireccional real – Respeta cambios en ambos sistemas
✅ No se pierden ventas – La fórmula captura todos los movimientos
✅ Detecta discrepancias automáticamente – Cualquier diferencia se calcula
✅ Escalable a múltiples almacenes – Cada uno con su propio baseline
✅ Auditable – Se puede consultar el histórico de cuándo cambió el baseline
✅ Auto-correctivo – Cada ciclo establece un nuevo punto de referencia válido
🔄 Flujo de Sincronización
Fase 1: Extracción de Datos
1. Conectar con API del ERP
├─ Obtener todos los productos (SKU, ID)
├─ Obtener stock por ubicación:
│ ├─ Location 12: Almacén físico
│ └─ Location 13: Amazon FBA
└─ Generar CSV temporal con los datos
Fase 2: Importación y Mapeo
2. Importar datos a base de datos local
├─ Crear tabla temporal
├─ Cargar CSV masivamente (LOAD DATA LOCAL INFILE)
├─ Actualizar tabla de mapeo:
│ ├─ mv_sku → Código del ERP
│ ├─ id_product → ID de PrestaShop
│ ├─ id_product_attribute → Variante del producto
│ ├─ stock12 → Stock almacén físico
│ └─ stock13 → Stock Amazon
└─ Validación de duplicados (CRÍTICO)
Fase 3: Cálculo Diferencial
3. Calcular diferencias usando Baseline
SELECT
id_product,
sku,
cantidad_prestashop AS stock_web,
stock_erp AS stock_almacen,
baseline AS stock_referencia,
(stock_web + stock_erp – baseline) AS stock_nuevo
FROM productos
WHERE (stock_web + stock_erp – baseline) != baseline
Fase 4: Actualización Sincronizada
4. Aplicar cambios en cascada
Para cada producto con diferencias:
├─ 1. Actualizar PrestaShop (stock_available)
├─ 2. Actualizar Baseline (nueva referencia)
├─ 3. Actualizar Tabla de Mapeo
└─ 4. Enviar actualización al ERP vía API
Si hay error en cualquier paso:
└─ ROLLBACK completo (mantener integridad)
🛡️ Manejo de Errores Críticos
Sistema de Notificaciones Automáticas
El sistema implementa un manejo robusto de errores con notificaciones multi-canal:
Error Detectado
↓
┌─────────────────────────────────────────┐
│ 1. Registrar en LOG con timestamp │
│ 2. Enviar notificación a Google Chat │
│ 3. Enviar email de alerta │
│ 4. Detener sincronización (CRÍTICO) │
│ 5. Ejecutar limpieza de recursos │
└─────────────────────────────────────────┘
🎮 Modos de Operación
El sistema ofrece diferentes modos según la necesidad:
1. Modo UPDATE (Por defecto)
Sincronización inteligente usando baseline.
Características:
- ✅ Usa fórmula diferencial
- ✅ Respeta ventas en ambos sistemas
- ✅ Actualiza solo productos con cambios
- ✅ Envía actualizaciones bidireccionales
2. Modo OVERWRITE – Megaventory
Sobrescribe el stock de PrestaShop con datos del ERP.
Características:
- ⚠️ Ignora diferencias
- ⚠️ Replica exactamente el baseline
- ⚠️ Reinicia todo el stock en base del erp
- ✅ Útil para correcciones masivas
3. Modo OVERWRITE – CSV
Importa stock desde archivo CSV externo.
Características:
- 📁 Lee archivo.csv
- ✅ Valida SKUs contra el sistema
- ✅ Compara valores actuales vs CSV
- ✅actualiza los datos de stock del sistema con los importados del csv
- ✅ Genera reporte detallado de cambios
4. Modo DRY-RUN (Simulación)
Simula cambios sin aplicarlos realmente.
Características:
- 🧪 No modifica ninguna base de datos
- 📊 Genera reporte visual de cambios
- ✅ Perfecto para validar antes de ejecutar
- 🔍 Muestra diferencias detectadas
5. Modo TEST
Prueba con un producto específico.
?test=true
Características:
- 🎯 Actualiza solo SKU predefinido
- ✅ Ideal para debugging
- ✅ Registra logs detallados
📚 Conclusiones
Este sistema de sincronización de inventario representa una solución robusta y escalable para uno de los problemas más complejos del e-commerce moderno: mantener el stock consistente en tiempo real a través de múltiples sistemas y canales de venta.
Logros Clave
✅ Sincronización bidireccional real sin pérdida de datos
✅ Fórmula matemática probada (método baseline)
✅ Manejo robusto de errores con notificaciones multi-canal
✅ Escalable a miles de productos
✅ Auditable con logs detallados
✅ Flexible con múltiples modos de operación
Impacto en el Negocio
- 🎯 Reducción de sobreventa a prácticamente 0%
- ⚡ Tiempo real en actualizaciones de stock
- 📊 Visibilidad completa del inventario
- 🔄 Sincronización automática sin intervención manual
- 💰 ROI positivo en < 3 meses
👥 Referencias
Tecnologías Utilizadas
- PrestaShop – Plataforma e-commerce
- Megaventory – Sistema ERP de gestión de inventario
- PHP – Lenguaje de programación
- MySQL – Base de datos
- Google Chat API – Sistema de notificaciones
- cURL – Cliente HTTP para APIs
Conceptos Aplicados
- Sincronización bidireccional
- Algoritmo de baseline diferencial
- Transacciones ACID
- Manejo de errores críticos
- Logging estructurado
- Importación masiva de datos
- Optimización de consultas SQL
¿Tienes una tienda PrestaShop y problemas con el stock?
Cuéntanos tu caso y te explicamos cómo implementar
este sistema en tu negocio.

