Introduccion
Actualizar precios y stock en una tienda PrestaShop puede convertirse en una tarea compleja si dependes de un proveedor externo o gestionas múltiples canales. Automatizar este proceso desde un archivo CSV externo permite mantener el catálogo actualizado, evitar errores manuales y ahorrar tiempo de gestión.
En este artículo, aprenderás cómo sincronizar precios y stock en PrestaShop de forma segura, eficiente y escalable, leyendo datos desde un archivo CSV alojado en tu servidor o proveniente de una URL externa.
Índice
Introducción 1. ¿Por qué sincronizar desde CSV? 2. Requisitos del archivo CSV y estructura esperada 3. Lógica de actualización: qué campos modificar 4. Script PHP completo para sincronización 5. Cómo proteger y validar el archivo CSV 6. Automatización con cron 7. Comparativa con módulos del marketplace Conclusión- ¿Por qué sincronizar desde CSV?
- 🔁 Algunos proveedores no ofrecen API, pero sí un CSV diario
- ✅ Es una solución simple y ligera frente a integraciones complejas
- 🧩 Permite conectarse con ERPs, Excel, Google Sheets, FTP, etc.
- 🛒 Útil para dropshipping, marketplaces, almacenes externos
- Requisitos del archivo CSV y estructura esperada
Formato recomendado:
reference,price,quantity
REF-001,19.95,24
REF-002,14.50,0
REF-003,33.25,12
- reference: código único del producto en PrestaShop (clave principal)
- price: nuevo precio (float)
- quantity: stock disponible (entero)
💡 El CSV puede estar en el mismo servidor o ser descargado desde una URL externa:
$url = 'https://proveedor.com/data/precios-stock.csv';
- Lógica de actualización: qué campos modificar
Campo | Tabla | Método PHP sugerido |
Precio | ps_product / ps_product_attribute | setPrice() y setRegularPrice() |
Stock | ps_stock_available | StockAvailable::setQuantity() |
Se puede trabajar tanto con productos simples como combinaciones, pero en este ejemplo usaremos productos base identificados por referencia.
- Script PHP completo para sincronización
<?php
require(dirname(__FILE__).'/config/config.inc.php');
require(dirname(__FILE__).'/init.php');
$file = fopen('precios.csv', 'r');
$first = true;
while (($line = fgetcsv($file, 1000, ",")) !== FALSE) {
if ($first) { $first = false; continue; }
list($ref, $price, $qty) = $line;
$id = (int)Product::getIdByReference($ref);
if (!$id) continue;
$product = new Product($id);
$product->setPrice($price);
$product->setRegularPrice($price);
$product->save();
StockAvailable::setQuantity($id, 0, (int)$qty);
}
fclose($file);
echo "Actualización completa.";
?>
- Cómo proteger y validar el archivo CSV
- Verifica el MIME Type del archivo antes de procesarlo
- Usa Tools::file_get_contents() para CSV remoto y asegúrate de que es seguro
- Añade validaciones de tipo y formato antes de procesar cada línea
if (!is_numeric($price) || !is_numeric($qty)) continue;
- Automatización con cron
Puedes programar la sincronización diaria, cada hora o semanalmente:
0 */6 * * * php /var/www/tienda/sincronizar-precios.php
Así el CSV se puede actualizar automáticamente sin intervención manual.
- Comparativa con módulos del marketplace
Método | Ventajas | Inconvenientes |
Script propio | Gratuito, control total | Requiere conocimientos técnicos |
Módulo CSV Pro | Interfaz amigable, soporte | Coste, dependencia externa |
API personalizada | Escalable, integrable | Requiere infraestructura compleja |
Conclusión
Sincronizar precios y stock desde un CSV externo en PrestaShop es una forma efectiva de mantener tu catálogo al día, especialmente si trabajas con proveedores que actualizan sus datos regularmente. La clave está en validar bien la información, automatizar el proceso y asegurarte de que no afecta el rendimiento o la integridad de los productos.