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?

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

TablaContenido
ps_product_attributeCombinación del producto (referencia, precio, etc.)
ps_product_attribute_combinationRelación entre combinación y atributos
ps_stock_availableStock por combinación
ps_product_attribute_shopDatos multitienda
ps_product_attribute_imageImá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.

Ir al contenido