Introducción
En tiendas multitienda o cuando gestionas varios entornos (producción, staging, marketplaces), mantener sincronizadas las combinaciones de productos en PrestaShop puede volverse una tarea crítica.
Las combinaciones —como talla, color o versión— se gestionan a través de múltiples tablas conectadas entre sí. Cualquier desajuste puede romper el stock, los precios o incluso impedir añadir productos al carrito.
En este artículo aprenderás cómo sincronizar las combinaciones entre dos tiendas PrestaShop usando MySQL y PHP, con control total sobre atributos, stock, precios y referencias.
Índice
- 1. ¿Qué es una combinación en PrestaShop?
- 2. Tablas involucradas en las combinaciones
- 3. Estrategias de sincronización entre tiendas
- 4. Consultas SQL para extraer combinaciones
- 5. Insertar combinaciones en tienda destino
- 6. Consideraciones sobre IDs, stock y precios
- 7. Conclusión
1. ¿Qué es una combinación?
Una combinación en PrestaShop es una variación de un producto basada en atributos (ej. Camiseta Roja – Talla L). Se gestionan como entradas únicas con su propio stock, referencia y precio adicional.
2. Tablas involucradas
Tabla | Contenido |
---|---|
ps_product_attribute | Combinación del producto (referencia, precio, etc.) |
ps_product_attribute_combination | Relación entre combinación y atributos |
ps_stock_available | Stock por combinación |
ps_product_attribute_shop | Datos multitienda |
ps_product_attribute_image | Imágenes asociadas a la combinación |
3. Estrategias de sincronización
- 🟢 Sincronización puntual → script manual que clona combinaciones de una tienda a otra
- 🔄 Sincronización continua → cron PHP o trigger que compara cada X horas
- 🔁 Sincronización bidireccional → más compleja, se recomienda usar APIs
4. Consultas SQL para extraer combinaciones
Ejemplo para clonar combinaciones del producto con ID 123:
SELECT pa.id_product_attribute, pa.reference, pa.price, pac.id_attribute FROM ps_product_attribute pa JOIN ps_product_attribute_combination pac ON pa.id_product_attribute = pac.id_product_attribute WHERE pa.id_product = 123;
💡 Puedes exportar este resultado a CSV o JSON para insertarlo en la otra tienda.
5. Insertar combinaciones en tienda destino
Usando PHP, puedes clonar combinaciones así:
<?php require(dirname(__FILE__).'/config/config.inc.php'); require(dirname(__FILE__).'/init.php'); $id_product = 123; $combinacion = new Combination(); $combinacion->id_product = $id_product; $combinacion->reference = 'SKU123-L'; $combinacion->price = 0.00; $combinacion->default_on = 1; $combinacion->add(); Attribute::addAttributeCombination($combinacion->id, [1, 4]); // IDs de atributos StockAvailable::setQuantity($id_product, $combinacion->id, 10); ?>
💡 Repite este proceso para cada combinación del producto origen.
6. Consideraciones clave
- Los ID de atributos deben existir previamente en ambas tiendas
- Evita duplicados: comprueba combinaciones antes de insertarlas
- Valida el stock y precios específicos por combinación
- En multitienda: asegúrate de insertar en
ps_product_attribute_shop
7. Conclusión
Sincronizar combinaciones entre dos tiendas PrestaShop puede evitar errores de stock, duplicidades y pérdida de ventas.
Con SQL y PHP puedes automatizar el proceso y garantizar coherencia entre catálogos.
📩 ¿Quieres que preparemos un sistema de sincronización por cron o con Google Sheets? Escríbenos.