PS PrestaShop Intermedio

Importazione Feed Fornitori & Dropshipping per PrestaShop 8 e 9

Installare, configurare e automatizzare l'importazione multi-fornitore (CSV, XML, JSON), i margini, le combinazioni e la sincronizzazione dello stock.

Aggiornato Versione del modulo 1.4.0

Presentazione

Il modulo Importazione Feed Fornitori & Dropshipping (nome tecnico dfsupplierfeed) importa e sincronizza automaticamente i cataloghi dei tuoi fornitori in PrestaShop 8 e 9. Gestisce più fornitori e feed in CSV, XML e JSON, applica le tue regole di margine, costruisce le combinazioni, collega i prodotti tra loro, sincronizza lo stock via cron e arbitra gli EAN13 duplicati tramite una priorità per fornitore.

Il modulo non sostituisce l’importazione CSV nativa di PrestaShop: industrializza importazioni ricorrenti da più fonti, con margini, combinazioni e sincronizzazione automatici.

Installazione

  1. Nel back office, vai su Moduli > Gestore moduli e poi Carica un modulo.
  2. Seleziona il file dfsupplierfeed.zip e conferma.
  3. Una volta installato, clicca su Configura.

All’installazione, il modulo crea cinque tabelle (dfsf_supplier, dfsf_feed, dfsf_rule, dfsf_product, dfsf_log) e genera un token cron univoco.

Panoramica dell’interfaccia

  • Dashboard — contatori e avviso sui feed la cui importazione è in corso.
  • Suppliers — fornitori e priorità.
  • Feeds — feed, analisi, mappatura dei campi e opzioni.
  • Margin rules — regole di calcolo dei prezzi di vendita.
  • Logs — cronologia dettagliata delle importazioni.
  • Settings & Cron — impostazioni generali, cataloghi grandi, URL cron.

Passo 1 — Creare i fornitori

Nella scheda Suppliers, aggiungi un fornitore con il suo nome, la sua priorità (intero, 1 è la più alta e risolve gli EAN13 duplicati), lo stato attivo e l’opzione Crea il fornitore nativo PrestaShop, consigliata perché riempie anche il costo d’acquisto in product_supplier.

Assegna le priorità migliori (numeri più bassi) ai fornitori più affidabili o più economici: saranno loro a “possedere” i prodotti condivisi.

Passo 2 — Creare il feed e lasciarlo analizzare

Nella scheda Feeds, crea il feed con il suo fornitore, il tipo di sorgente (URL remoto o file locale nella directory del negozio) e il formato. Salva, poi clicca sul pulsante lente nella riga del feed.

Il modulo scarica un campione e mostra l’items_path rilevato, l’elenco di tutti i campi realmente presenti con valori di esempio, e una mappatura completa precompilata modificabile prima di applicarla.

Le colonne foto numerate vengono raggruppate automaticamente, le colonne di taglie impacchettate, di colore e di riferimenti correlati riconosciute, e i nomi delle colonne identificati in italiano, inglese, francese, spagnolo e tedesco.

Verifica sempre la proposta prima di applicarla. Molti fornitori inviano un prezzo di vendita consigliato dove il modulo si aspetta un costo d’acquisto.

Passo 3 — La mappatura dei campi

La mappatura è un oggetto JSON che collega le colonne o i nodi del feed a campi normalizzati. I 21 campi canonici sono:

name reference ean13 mpn cost quantity description description_short category manufacturer weight tax_rate image images group_reference attributes variants_stock variants_ean variants_reference variant_attribute related

Solo reference o ean13 è obbligatorio: sono le due chiavi di corrispondenza.

Più sorgenti per uno stesso campo

Il valore di un campo può essere un elenco. Un fornitore che distribuisce le foto su più colonne si mappa così:

{
  "fields": {
    "reference": "id",
    "name": "name",
    "cost": "wholesale_price",
    "images": ["image_1", "image_2", "image_3", "image_4"]
  }
}

Per il campo images vengono importate tutte le colonne valorizzate. Per ogni altro campo si tiene il primo valore non vuoto, il che permette una catena di ripiego.

CSV

Collega ogni campo a un’intestazione di colonna o a un indice di colonna a partire da 0. Il delimitatore viene rilevato automaticamente, i campi multiriga tra virgolette sono gestiti.

{
  "fields": {
    "name": "product_name",
    "reference": "sku",
    "ean13": "ean",
    "cost": "price",
    "quantity": "stock",
    "category": "category",
    "image": "image_url"
  }
}

Una riga il cui numero di colonne non corrisponde all’intestazione viene rifiutata e conteggiata come errore. Senza questo controllo, tutti i valori successivi sarebbero spostati e importati in silenzio.

XML

items_path punta al nodo ripetuto, a qualsiasi profondità. I percorsi dei campi sono relativi a quel nodo e @nome legge un attributo.

{
  "items_path": "products/product",
  "fields": {
    "reference": "@sku",
    "name": "title",
    "ean13": "ean",
    "cost": "pricing/wholesale",
    "quantity": "stock/quantity",
    "image": "images/image"
  }
}

Poiché i percorsi sono relativi all’articolo, un valore presente solo su un nodo antenato non può essere letto: la navigazione .. non esiste.

JSON

items_path usa la notazione con punti fino all’array di articoli. Un segmento numerico legge una voce: images.0 è la prima immagine.

{
  "items_path": "data.products",
  "fields": {
    "reference": "sku",
    "name": "name",
    "ean13": "barcode",
    "cost": "prices.cost",
    "quantity": "inventory.available",
    "image": "images.0"
  }
}

La scheda Feeds contiene sedici esempi commentati.

Passo 4 — Definire i margini

Nella scheda Margin rules, ogni regola calcola il prezzo di vendita IVA esclusa a partire dal costo d’acquisto IVA esclusa: percentuale (costo × (1 + valore/100)), coefficiente (costo × valore) o addizione fissa (costo + valore). Viene poi applicato un arrotondamento psicologico opzionale.

Ambito e risoluzione

Una regola può riguardare un fornitore, una categoria, entrambi o essere globale. Vince la più specifica, in questo ordine: fornitore + categoria, solo fornitore, solo categoria, regola globale. Le regole di categoria si applicano anche alle sottocategorie. Senza alcuna regola si usa il margine predefinito.

La priorità EAN tra le fonti

Quando lo stesso ean13 compare in più feed, il fornitore con la priorità migliore possiede il prodotto, le altre fonti vengono ignorate per quel riferimento, e se in seguito un fornitore con priorità migliore porta quell’EAN, subentra automaticamente.

Le combinazioni

Sono gestite due strutture di feed.

Una riga per variante

Attiva Costruisci le combinazioni e mappa group_reference (identico per tutte le varianti di uno stesso prodotto) e attributes (le opzioni, ad esempio Taglia:M|Colore:Rosso). Tra le coppie sono accettati |, , e ;, tra nome e valore : o =.

Una riga per prodotto, taglie impacchettate in una colonna

È la struttura più diffusa tra i grossisti di abbigliamento e lingerie:

sizes_stock : EU 70C | FR 85C:4,EU 70D | FR 85D:2,EU 75A | FR 90A:1
ean_codes   : EU 70C | FR 85C:5901741925360,EU 70D | FR 85D:5901741925377

Attiva Dividi le varianti impacchettate e mappa variants_stock, più variants_ean e variants_reference se il feed li fornisce. Il modulo divide la riga in una combinazione per taglia e abbina stock, EAN e riferimento per etichetta. Tre impostazioni accompagnano la casella: il nome del gruppo di attributi (Taille per impostazione predefinita), il separatore tra le voci (,) e il separatore tra etichetta e valore (:).

La divisione avviene sull’ultima occorrenza del separatore, così un’etichetta come EU 70C | FR 85C resta leggibile.

Spunta la casella prima della prima importazione. Se importi prima senza, i prodotti vengono creati senza group_reference: attivando poi la divisione, il modulo non trova quei prodotti padre e ne crea di nuovi, raddoppiando il catalogo.

Un secondo asse da una colonna del feed

Molti fornitori inviano il colore in una colonna separata mentre le taglie sono impacchettate. Mappa variant_attribute su quella colonna:

{
  "fields": {
    "reference": "id",
    "name": "name",
    "cost": "wholesale_price",
    "variant_attribute": "color",
    "variants_stock": "sizes_stock",
    "variants_ean": "ean_codes"
  }
}

Ogni combinazione del prodotto guadagna allora un secondo asse, sotto il gruppo di attributi della colonna aggiuntiva definito sul feed (Couleur per impostazione predefinita). Ottieni combinazioni di Taglia e Colore, utilizzabili dai filtri.

Poiché ogni riga del feed è un prodotto di un solo colore, il gruppo Colore ha un solo valore per prodotto. I colori non vengono fusi in una scheda unica con selettore: per navigare tra loro, usa i prodotti correlati.

Prodotti correlati

Quando il feed elenca gli altri colori o i modelli associati in una colonna di riferimenti, spunta Importa i prodotti correlati e mappa related:

{
  "fields": {
    "reference": "id",
    "related": "other_colors"
  }
}

La colonna contiene un elenco di riferimenti fornitore separati da virgole. I collegamenti vengono creati come accessori PrestaShop e compaiono nel blocco prodotti correlati del tuo tema.

La risoluzione avviene una volta letto l’intero feed, perché un riferimento punta molto spesso a un prodotto situato più avanti nel file. Tre comportamenti da conoscere:

  • un riferimento che punta al prodotto stesso viene ignorato, cosa frequente perché molti fornitori elencano l’intero gruppo su ogni membro;
  • un riferimento che punta a un prodotto assente dal feed viene ignorato senza contare come errore: su un export filtrato per categoria questo riguarda abitualmente un quinto dei riferimenti;
  • gli accessori esistenti non vengono mai eliminati, quindi i collegamenti aggiunti a mano sopravvivono. In cambio, un raggruppamento modificato dal fornitore lascia in essere i vecchi collegamenti.

Il numero di collegamenti creati appare nel messaggio di fine importazione e nella colonna dedicata del registro.

Cosa il feed può sovrascrivere

Cinque caselle per feed decidono quali campi vengono sincronizzati: prezzi, stock, nome, descrizioni, immagini. Per impostazione predefinita solo prezzi e stock sono selezionati.

Se riscrivi le schede per il posizionamento, deseleziona nome e descrizioni dopo la prima importazione.

Prodotti ritirati dal catalogo del fornitore

Ogni feed sceglie il proprio comportamento: non fare nulla, azzerare lo stock, disattivarli o entrambe le cose. L’azione si applica al termine di un’importazione completa conclusa e solo ai prodotti di quel feed.

Nel dropshipping, azzerare lo stock è la scelta più sicura: il prodotto non è più vendibile ma conserva URL e posizionamento.

Categorie e valute

Il campo category accetta un nome semplice o un percorso completo, ad esempio Home > Ufficio > Sedie. Il separatore è configurabile per feed e l’opzione Crea le categorie mancanti crea i livelli assenti.

Se il fornitore fattura in un’altra valuta, selezionala sul feed: i costi vengono convertiti nella valuta predefinita del negozio.

Cataloghi grandi

I feed vengono letti in streaming: la memoria usata non dipende dalla dimensione del file. L’elaborazione è divisa in lotti ripristinabili. Due impostazioni: punto di ripristino ogni N articoli (2000 per impostazione predefinita) e budget di tempo per passata (120 s).

La divisione moltiplica il volume: un feed di 7.300 prodotti con varianti produce oltre 33.000 combinazioni, quindi circa 41.000 oggetti alla prima importazione completa. Prevedi più passaggi e prova su un negozio di test.

Lanciare un’importazione manualmente

  • Importazione completa (icona play) — aggiorna i prodotti collegati e crea quelli mancanti se il feed lo consente.
  • Sync stock (icona aggiorna) — aggiorna solo prezzi e quantità dei prodotti già collegati.

Dal back office una passata è limitata a 45 secondi per non superare il timeout del server web.

Automatizzare con il cron

# Sync stock ogni ora
0 * * * * curl -sL "https://iltuonegozio.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IL_TUO_TOKEN&mode=stock" > /dev/null

# Importazione completa ogni notte
30 3 * * * curl -sL "https://iltuonegozio.tld/index.php?fc=module&module=dfsupplierfeed&controller=cron&token=IL_TUO_TOKEN&mode=full" > /dev/null

Parametri opzionali: &id_feed=N e &budget=600.

Se rigeneri il token, aggiorna i tuoi cron: il vecchio URL restituirà un errore 403.

Impostazioni generali

  • Prodotti creati attivi immediatamente — disattivato per impostazione predefinita.
  • Disattivare i prodotti esauriti presso il fornitore, con riattivazione al ritorno dello stock.
  • Margine predefinito quando nessuna regola corrisponde.
  • Ritenzione dei registri e purga automatica.
  • Alla disinstallazione — eliminare i dati o conservare tutto.
  • Svuotare la cache dei feed e i cursori nel pannello di manutenzione.

Monitoraggio e registri

La scheda Logs elenca ogni esecuzione: feed, modalità, articoli elaborati, creati, aggiornati, ignorati, in errore, scomparsi, collegamenti tra prodotti creati, indicatore di completamento con il punto di ripresa, tempo di esecuzione e dettaglio dei primi errori.

Risoluzione dei problemi

“Malformed CSV row: 23 columns instead of 22”

La riga contiene un separatore o una virgoletta non protetti in un campo di testo. Viene rifiutata.

“Feed file not found or outside shop directory”

Per una sorgente file, il percorso deve puntare a un file leggibile nella directory del negozio.

L’analisi non trova articoli

Indica items_path manualmente nella mappatura e rilancia l’analisi.

I prodotti vengono creati ma non si vedono nel front

È il comportamento predefinito: i prodotti creati sono disattivati.

Le combinazioni non vengono create

Verifica che la casella corrispondente sia attiva, che i campi necessari siano mappati e che i separatori corrispondano al file.

Il mio catalogo è raddoppiato dopo aver attivato la divisione

L’importazione è stata lanciata prima di spuntare la casella. Elimina i prodotti creati da quel feed, svuota i cursori e rilancia.

Pochi o nessun prodotto correlato creato

I collegamenti vengono risolti solo al termine di un’importazione completa conclusa: su un feed grande elaborato in più passate, compaiono all’ultima. Verifica anche che i riferimenti della colonna corrispondano al campo mappato su reference.

I prezzi sembrano troppo alti o troppo bassi

Verifica i costi IVA inclusa, la valuta, quale regola di margine si applica e che il campo mappato su cost sia un costo d’acquisto.

L’importazione non finisce mai

È normale su un feed molto grande: avanza per passate.

Compatibilità

  • PrestaShop 8.0 fino a 9.x, PHP 7.4 fino a 8.3.
  • Senza override del core PrestaShop.
  • Multinegozio: i prodotti creati vengono associati ai negozi del contesto.
  • Interfaccia tradotta in inglese e francese.
Questa pagina ti è stata utile?

Ancora bloccato? Contatta l'assistenza