was successfully added to your cart.

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

  1. Ventas simultáneas en múltiples canales
  2. Recepciones de mercancía actualizadas en el ERP
  3. Ajustes manuales de inventario
  4. Evitar sobreventa (vender stock que no existe)
  5. 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.

[Contacta con David]

David Escudero | Programador freelance, desarrollador paginas web
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.