Importación de Feeds de Proveedores & Dropshipping para PrestaShop 8 y 9
Instalar, configurar y automatizar la importación multiproveedor (CSV, XML, JSON), los márgenes y la sincronización del stock.
Presentación
El módulo Importación de Feeds de Proveedores & Dropshipping (nombre técnico dfsupplierfeed) importa y sincroniza automáticamente los catálogos de tus proveedores en PrestaShop 8 y 9. Gestiona varios proveedores y varios feeds en formatos CSV, XML y JSON, aplica tus reglas de margen para calcular los precios de venta a partir del coste de compra, sincroniza el stock cada hora mediante cron y arbitra los EAN13 duplicados entre fuentes mediante una prioridad por proveedor.
El módulo no sustituye la importación CSV nativa de PrestaShop (pensada para una carga manual única): industrializa importaciones recurrentes desde varias fuentes, con márgenes y sincronización de stock automáticos.
Instalación
- En el back office, ve a Módulos > Gestor de módulos y luego Subir un módulo.
- Selecciona el archivo
dfsupplierfeed.zipy confirma. - Una vez instalado, haz clic en Configurar.
Al instalarse, el módulo crea cinco tablas (dfsf_supplier, dfsf_feed, dfsf_rule, dfsf_product, dfsf_log) y genera un token de cron único.
Visión general de la interfaz
La página de configuración se organiza en pestañas:
- Dashboard — contadores (proveedores, feeds, productos vinculados, reglas) y recordatorio de funcionamiento.
- Suppliers — creación de proveedores y su prioridad.
- Feeds — definición de los feeds y su mapeo.
- Margin rules — reglas de cálculo de los precios de venta.
- Logs — historial de importaciones.
- Settings & Cron — ajustes generales y URLs de cron listas para copiar.
Paso 1 — Crear tus proveedores
En la pestaña Suppliers, añade un proveedor con:
- Nombre — etiqueta del proveedor.
- Prioridad — entero, siendo
1la prioridad más alta. Sirve para resolver los EAN13 duplicados (ver más abajo). - Activo — un proveedor inactivo es ignorado por el cron.
- Crear el proveedor nativo de PrestaShop — recomendado: asocia un proveedor PrestaShop estándar, lo que también rellena el coste de compra en
product_supplier.
Asigna las mejores prioridades (números más bajos) a tus proveedores más fiables o más baratos: son los que «poseerán» los productos compartidos.
Paso 2 — Configurar un feed
En la pestaña Feeds, cada feed está vinculado a un proveedor e incluye:
- Tipo de origen — URL remota o archivo local (ruta relativa a la raíz de la tienda, restringida a ese directorio por seguridad).
- Origen — la URL o la ruta del archivo. Las respuestas comprimidas con gzip se decodifican automáticamente.
- Formato — CSV, XML o JSON.
- ¿Precios con IVA? y Tipo de impuesto — si el feed proporciona costes con IVA, el módulo los convierte a sin IVA con este tipo.
- Categoría por defecto — categoría de los productos creados sin categoría explícita.
- Crear productos que faltan, Importar imágenes, Incluir en la sync horaria, Activo.
El mapeo de campos
El mapeo es un objeto JSON que relaciona las columnas/nodos de tu feed con campos de producto normalizados. Los 13 campos canónicos disponibles son: name, reference, ean13, cost, quantity, description, description_short, category, manufacturer, weight, tax_rate, image, mpn.
Mapeo CSV
Relaciona cada campo con una cabecera de columna (o un índice de columna desde 0). El delimitador se detecta automáticamente (;, ,, tabulación o |) y se aceptan las comas decimales.
{
"fields": {
"name": "product_name",
"reference": "sku",
"ean13": "ean",
"cost": "price",
"quantity": "stock",
"image": "image_url"
}
}
Mapeo XML
Indica items_path, la ruta de los nodos repetidos (p. ej. products/product), y luego mapea cada campo a una ruta relativa. Un prefijo @ lee un atributo, y los subelementos se separan con barras.
{
"items_path": "products/product",
"fields": {
"reference": "@sku",
"name": "title",
"ean13": "ean",
"cost": "pricing/wholesale",
"quantity": "stock/quantity"
}
}
Mapeo JSON
Indica items_path, la ruta del array de artículos en notación con puntos (p. ej. data.products), y luego mapea cada campo. Los índices de array se escriben como segmentos numéricos (p. ej. images.0).
{
"items_path": "data.products",
"fields": {
"reference": "sku",
"name": "name",
"ean13": "barcode",
"cost": "prices.cost",
"quantity": "inventory.available",
"image": "images.0"
}
}
Una fila se ignora si no tiene ni EAN13 ni referencia de proveedor: son las dos claves de correspondencia. Los EAN se validan y luego se normalizan a 13 dígitos.
Paso 3 — Definir tus márgenes
En la pestaña Margin rules, cada regla calcula el precio de venta sin IVA a partir del coste de compra sin IVA:
- Porcentaje —
coste × (1 + valor/100). Ej. valor 35 → +35 %. - Coeficiente —
coste × valor. Ej. valor 1,8 → ×1,8. - Adición fija —
coste + valor.
A continuación se aplica un redondeo psicológico opcional: x.99, x.95, x.90 o redondeo al entero superior.
Alcance y resolución de reglas
Una regla puede apuntar a un proveedor, a una categoría, a ambos o ser global. Cuando un producto coincide con varias reglas, gana la más específica, en este orden:
- proveedor + categoría
- solo proveedor
- solo categoría
- regla global
Las reglas de categoría se aplican también a las subcategorías: una regla sobre la categoría exacta del producto prevalece sobre una regla en una categoría padre. Si ninguna regla coincide, se usa el margen por defecto (pestaña Settings).
La prioridad EAN entre fuentes
Es el núcleo del módulo en multiproveedor. Cuando el mismo ean13 aparece en varios feeds:
- El proveedor con la mejor prioridad (número más bajo) posee el producto; precios, stock y coste provienen de su feed.
- Las demás fuentes se ignoran para esa referencia (estado «skipped» en los logs).
- Si un proveedor con mejor prioridad aporta después ese EAN, toma automáticamente la propiedad del producto.
Tú decides quién manda ajustando las prioridades: abastecerte de la misma referencia con varios mayoristas se vuelve seguro, sin que los feeds se contradigan.
Lanzar una importación manualmente
En la pestaña Feeds, cada feed dispone de dos botones:
- Importación completa (icono play) — actualiza los productos vinculados y crea los que faltan (si el feed lo permite).
- Sync stock (icono refrescar) — actualiza solo precios y cantidades de los productos ya vinculados.
Automatizar con el cron
La pestaña Settings & Cron muestra dos URLs listas para copiar, protegidas por un token. Configúralas en el planificador de tareas de tu servidor:
# Sync stock cada hora (precios + cantidades de los productos vinculados)
0 * * * * curl -s "https://tutienda.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=TU_TOKEN&mode=stock" > /dev/null
# Importación completa cada noche (creaciones + actualizaciones)
30 3 * * * curl -s "https://tutienda.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=TU_TOKEN&mode=full" > /dev/null
Añade &id_feed=N para procesar un único feed. El endpoint devuelve un informe JSON (creados, actualizados, ignorados, errores por feed).
Si regeneras el token en los ajustes, recuerda actualizar tus tareas cron: la URL antigua devolverá un error 403.
Ajustes generales
- Productos creados activos de inmediato — desactivado por defecto: los productos creados por los feeds quedan en borrador para que los revises antes de publicar.
- Margen por defecto — aplicado cuando ninguna regla coincide.
- Retención de logs — número de días antes de la purga automática.
- Regenerar el token de cron.
Seguimiento y registros
La pestaña Logs lista cada ejecución con el feed implicado, el modo, los contadores (creados / actualizados / ignorados / errores), el tiempo de ejecución y el detalle de los primeros errores encontrados. Los registros se purgan automáticamente según la retención configurada.
Resolución de problemas
«Feed file not found or outside shop directory»
Para un origen de archivo, la ruta debe apuntar a un archivo legible situado dentro del directorio de la tienda. Usa una ruta relativa a la raíz o una URL.
Los productos se crean pero no se ven en el front
Es el comportamiento por defecto: los productos creados están desactivados. Revísalos y actívalos, o activa «Productos creados activos de inmediato» en los ajustes.
Un proveedor nunca sobrescribe un producto compartido
Su prioridad probablemente sea peor (número más alto) que la del proveedor propietario. Ajusta las prioridades en la pestaña Suppliers.
Los precios parecen demasiado altos/bajos
Comprueba si el feed proporciona costes con IVA (opción «¿Precios con IVA?» + tipo de impuesto) y verifica qué regla de margen se aplica realmente mediante el orden de resolución.
Compatibilidad
- PrestaShop 8.0 a 9.x, PHP 7.4 a 8.3.
- Sin sobrescritura del núcleo de PrestaShop.
- Módulo traducido a FR, EN, ES, DE, IT.