Telefono: +39 392 33 73 731

Prestashop: esportare in CSV tutti i prodotti e relative combinazioni

Se sei in questa pagina è probabile che tu abbia già provato ad usare il bottone "ESPORTA" di Prestashop, quello nella lista prodotti. Purtroppo avrai notato che il file CSV risultato non contiene le varianti dei prodotti (cioè le combinazioni), ed è molto scarno anche di altre informazioni (la marca, gli sconti, le descrizioni). Forse va bene per un riepilogo veloce o per i negozi che hanno prodotti molto semplici, ma non è sufficiente se abbiamo bisogno di sapere le quantità di ogni singola combinazione. Per ottenere questo dobbiamo usare la funzione Sql Manager, come illustrato nell'immagine seguente.


Bisogna aggiungere una nuova istruzione SQL con il bottone "Aggiungi Nuova Query SQL", inserire un nome a piacere nel primo campo, e incollare il codice seguente come query SQL.

SELECT p.active 'Attivo', m.name AS 'Marca', p.id_product AS 'ID', p.reference AS 'Rif.', pl.name AS 'Nome', GROUP_CONCAT(DISTINCT(al.name) SEPARATOR ", ") AS 'Combinazione', s.quantity AS 'Quantità', p.price AS 'Prezzo', IF(pr.reduction_type='amount',pr.reduction,'') AS 'Sconto valuta', IF(pr.reduction_type='percentage',pr.reduction,'') AS 'Sconto percento', pr.from AS 'Sconto da (yyyy-mm-dd)', pr.to AS 'Sconto a (yyyy-mm-dd)', p.weight AS 'Peso', GROUP_CONCAT(DISTINCT(cl.name) SEPARATOR ",") AS 'Categorie', pl.description_short AS 'Desc. breve', pl.description AS 'Desc. lunga'
FROM ps_product p
LEFT JOIN ps_product_lang pl ON (p.id_product = pl.id_product)
LEFT JOIN ps_manufacturer m ON (p.id_manufacturer = m.id_manufacturer)
LEFT JOIN ps_category_product cp ON (p.id_product = cp.id_product)
LEFT JOIN ps_category_lang cl ON (cp.id_category = cl.id_category)
LEFT JOIN ps_category c ON (cp.id_category = c.id_category)
LEFT JOIN ps_product_tag pt ON (p.id_product = pt.id_product)
LEFT JOIN ps_product_attribute pa ON (p.id_product = pa.id_product)
LEFT JOIN ps_specific_price pr ON (p.id_product = pr.id_product)
LEFT JOIN ps_stock_available s ON (p.id_product = s.id_product AND pa.id_product_attribute = s.id_product_attribute)
LEFT JOIN ps_product_attribute_combination pac ON (pac.id_product_attribute = pa.id_product_attribute)
LEFT JOIN ps_attribute_lang al ON (al.id_attribute = pac.id_attribute)
WHERE pl.id_lang = 1
AND cl.id_lang = 1
AND p.id_shop_default = 1
AND c.id_shop_default = 1
GROUP BY pac.id_product_attribute

Fatto questo avrai una nuova funzionalità in Prestashop, puoi esportare il file CSV completo (oppure puoi vedere direttamente una tabella con i dati selezionando "vedi" invece di "esporta").

La tabella che risulta ha le seguenti colonne: stato (i prodotti attivi hanno 1), marca (il produttore), ID, codice riferimento, nome, combinazione, quantità, prezzo, sconto in valuta, sconto percentuale, sconto dal (yyyy-mm-dd), sconto al (yyyy-mm-dd), peso, categorie, descrizione breve, descrizione lunga. Nel file CSV le descrizioni sono già ripulite dai tag html.

Con piccole modifiche alla query è possibile ottenere altri dati.

Lunedì 13 Marzo 2017
(2 commenti)

Commento di Pasquale

Sabato 24 Giugno 2017

Ciao ragazzi, scusatemi, per quale motivo su alcuni siti mi esporta tutti i prodotti e su altri soltanto il primo? Grazie!

Risposta di Marco

E' difficile rispondere con poche informazioni. Potrebbe esserci un errore di interpretazione SQL (versione diversa di MySql nel server), oppure qualcosa non va nei dati esportati (descrizioni troppo lunghe, caratteri speciali, apici che rompono la stringa). Indagherei nel log errori.

Potrebbe anche essere un problema di memoria o tempo di esecuzione script, dovrebbe sempre apparire in log errori, se ciò non fosse sentirei l'hosting.

Commento di Francesca

Lunedì 27 Novembre 2017

Ciao ragazzi.
ho trovato utilissimo questo articolo che mi ha facilitato molto determinate attività.
Ma se avessi bisogno di esportare tutte queste info di un'unica categoria prodotto?
In che punto e cosa va inserito nello script?
Grazie!

Risposta di Marco

Ciao Francesca, devi aggiungere una istruzione WHERE. Quindi alla fine della lista di condizioni aggiungi:

AND cp.id_category = 12

Dove "12" è un ID ipotetico che mi sono inventato, devi mettere quello della categoria che stai filtrando. Non ho testato ma dovrebbe funzionare.

 

Aggiungi un commento

Nome
E-mail (non verrà pubblicata)
Sito Web
Commento
Questo sito web utilizza i cookie. Chiudendo questo banner, o interagendo con questo sito web, acconsenti all’uso dei cookie. Dettagli