1. Requisiti di sistema
Prima di installare, verifica che l'hosting soddisfi questi requisiti minimi:
| Componente | Versione minima | Note |
|---|---|---|
| PrestaShop | 1.7.0.0 | Supportato fino a 8.x |
| PHP | 7.2.5 | Testato fino a 8.3 |
| MySQL | 5.6 | MariaDB 10.3+ compatibile |
| Estensioni PHP | mbstring, ftp, json | Tutte standard su hosting PrestaShop |
| Per XLSX | PhpSpreadsheet (opz.) | Installabile via Composer |
| Spazio disco | 20 MB | Per modulo + logs + uploads temporanei |
| memory_limit | 128 MB | Il modulo alza a 512M durante import |
max_execution_time=30. All'interno delle routine di import chiama set_time_limit(600) per estendere il timeout.2. Installazione
Metodo 1: Back Office PrestaShop (consigliato)
- Scarica il file
excelsyncstock.zipdall'email di conferma acquisto. - Accedi al tuo Back Office PrestaShop.
- Vai in Moduli → Gestione Moduli.
- Clicca su Carica un modulo in alto.
- Seleziona il file ZIP scaricato.
- PrestaShop esegue l'installazione automatica. A fine processo vedrai il modulo nella lista.
- Vai al menu Catalogo → Excel Stock Sync per accedere alla dashboard.
Metodo 2: Upload via FTP
- Estrai il contenuto dello ZIP sul tuo computer.
- Con un client FTP (FileZilla, Cyberduck) collegati al tuo server.
- Naviga a
/modules/. - Carica l'intera cartella
excelsyncstock/. - In Back Office vai in Moduli → Gestione Moduli, cerca "Excel Stock Sync" e clicca Installa.
Post-installazione
A installazione completata, il modulo crea automaticamente:
- Due tabelle nel database:
ps_excelsyncstock_logeps_excelsyncstock_log_detail - Un link nel menu di back office: Catalogo → Excel Stock Sync
- Le cartelle
uploads/elogs/con permessi di scrittura - File
.htaccessdi protezione sulle cartelle sensibili
3. Primo import in 4 step
Il flusso consigliato per il primo utilizzo è sempre: upload → mappatura → simulazione → import reale. Ecco come procedere.
Step 1: Carica il file
- Apri Catalogo → Excel Stock Sync.
- Clicca su Upload File nel menu laterale.
- Seleziona il tuo file CSV o XLSX (max 50 MB per hosting standard).
- Clicca Carica.
Il file viene salvato in uploads/ ed impostato come file corrente.
Step 2: Configura la mappatura
- Vai alla sezione Mappatura.
- Se il delimitatore CSV non è stato rilevato correttamente, selezionalo manualmente (
;,tab o|). - Per ogni colonna del tuo file, associa il campo PrestaShop corrispondente.
- Campi obbligatori: Quantità + almeno un identificativo tra ID, Reference, EAN.
- Clicca Salva Mappatura.
Step 3: Simula l'import
- Vai alla sezione Simulazione.
- Clicca Esegui Simulazione.
- Attendi il completamento (tipicamente 10-30 secondi su file medi).
- Analizza il report: prodotti trovati, non trovati, errori.
- Se tutto è corretto, procedi.
Step 4: Esegui l'import reale
- Dalla pagina simulazione, clicca Esegui Import Reale.
- Oppure dalla Dashboard, clicca Importa Locale.
- Conferma l'operazione.
- Attendi il completamento.
- Verifica il riepilogo finale e il log dettagliato.
4. Mappatura colonne in dettaglio
La mappatura è il cuore del modulo: stabilisce come le colonne del tuo file si traducono nei campi di PrestaShop. Una volta salvata, viene ricordata e riapplicata automaticamente ai file successivi con la stessa struttura.
Campi PrestaShop disponibili
| Campo | Tipo | Descrizione |
|---|---|---|
id_product | int | ID numerico del prodotto base |
id_product_attribute | int | ID della combinazione/variante |
reference | string | SKU / Codice articolo del prodotto (o della combinazione) |
ean13 | string | Codice EAN13 / barcode |
quantity | int | Quantità — obbligatorio |
Ordine di priorità nel matching
Se il file contiene più identificativi, il modulo li usa in questo ordine:
id_product_attribute(match diretto, più veloce)- Coppia
id_product+id_product_attribute referencedi combinazione (ricerca inps_product_attribute)referencedi prodotto (prima cerca nelle combinazioni, poi nei prodotti base)ean13(prima cerca nelle combinazioni, poi nei prodotti base)
reference che ean13, e lo stesso prodotto è identificato da entrambi, il modulo usa reference (priorità più alta). Se il reference non viene trovato, fa fallback su ean13.5. Configurazione FTP
Per far scaricare automaticamente il file da un server remoto:
- Vai in Moduli → Gestione Moduli → Excel Stock Sync → Configura.
- Compila la sezione Configurazione FTP:
- Host: indirizzo server (es.
ftp.tuoserver.com) - Porta: tipicamente 21 per FTP standard
- Username: utente FTP
- Password: password FTP (viene cifrata prima del salvataggio)
- Percorso remoto: cartella dove si trova il file (es.
/stock/) - Nome file: nome esatto del file da scaricare (es.
stock.csv)
- Host: indirizzo server (es.
- Clicca Testa connessione FTP per verificare.
- Se il test è positivo, clicca Salva.
Modalità passiva
Se sei dietro firewall o NAT, attiva la modalità passiva nella configurazione. È quella raccomandata per la maggior parte degli hosting condivisi.
Password sicure
La password FTP non viene mai salvata in chiaro nel database. Il modulo usa cifratura simmetrica con chiave derivata dal _COOKIE_KEY_ del tuo PrestaShop.
6. Schedulazione CRON
Per automatizzare la sincronizzazione a intervalli regolari:
1. Abilita il CRON nel modulo
- Vai nella sezione Configurazione del modulo.
- Attiva Abilita CRON automatico.
- Scegli la frequenza: 15min, 30min, 1h, 2h, 6h, 12h, 24h.
- Scegli la sorgente: FTP remoto o File locale.
- Salva.
2. Configura il crontab del server
Il modulo ti mostra un comando curl pronto da incollare. Esempi:
# Ogni ora alle :00
0 * * * * curl -s "https://tuonegozio.com/module/excelsyncstock/cron?secure_key=TUACHIAVE"
# Ogni 6 ore
0 */6 * * * curl -s "https://tuonegozio.com/module/excelsyncstock/cron?secure_key=TUACHIAVE"
# Ogni giorno alle 6:00
0 6 * * * curl -s "https://tuonegozio.com/module/excelsyncstock/cron?secure_key=TUACHIAVE"
Se il tuo hosting usa cPanel o Plesk, puoi aggiungere questo comando dall'interfaccia grafica dei cron job.
secure_key viene generato automaticamente al primo salvataggio della configurazione. Non condividerlo pubblicamente: chi lo conosce può scatenare un import.7. Uso della simulazione
La simulazione esegue tutto il ciclo di import (download FTP, parsing, matching, calcolo nuove quantità) senza scrivere nel database. È obbligatoria prima di ogni import reale quando cambi il file sorgente o la mappatura.
Il report di simulazione include:
- Numero totale di righe processate
- Prodotti trovati (con quantità vecchia e nuova)
- Prodotti non trovati (con identificativo cercato)
- Eventuali errori di parsing (righe malformate)
- Warning (es. quantità negative su incremento)
Le simulazioni vengono salvate in ps_excelsyncstock_log con is_simulation = 1, per distinguerle dagli import reali.
8. Interpretazione dei log
Tabella ps_excelsyncstock_log
Un record per ogni import (o simulazione). Campi principali:
| Campo | Descrizione |
|---|---|
id_log | ID univoco |
file_name | Nome del file importato |
source | ftp o local |
total_rows | Righe totali processate |
updated_products | Prodotti aggiornati |
updated_combinations | Combinazioni aggiornate |
not_found | Prodotti non trovati |
errors | Errori |
is_simulation | 1 = simulazione, 0 = import reale |
date_add | Data e ora |
Tabella ps_excelsyncstock_log_detail
Un record per ogni riga del file. Permette di ricostruire esattamente cosa è stato fatto su ogni SKU.
Stati possibili
success— il prodotto è stato trovato e aggiornatounchanged— il prodotto è stato trovato ma la quantità era già correttanot_found— l'identificativo non corrisponde a nessun prodotto in catalogoerror— errore durante l'aggiornamento (dettaglio nel campomessage)crash— presente solo in record sintetici creati dallo shutdown handler in caso di crash PHP
9. Risoluzione problemi
Il file CSV mostra una sola colonna
Causa: delimitatore errato o file con righe racchiuse tra virgolette non riconosciute.
Soluzione: seleziona il delimitatore corretto nella mappatura. Il modulo gestisce automaticamente righe quotate con ".
Molti prodotti risultano "not_found"
Verifica:
- Il
reference/eannel file corrisponde esattamente a quello in PrestaShop (attenzione a maiuscole/minuscole, trim spazi) - Per le combinazioni, il file deve contenere il
referencedella combinazione, non del prodotto padre - Il prodotto esiste effettivamente in PrestaShop (non disabilitato né cancellato)
Errore connessione FTP
Verifica:
- Host e porta corretti
- Credenziali valide (prova via FileZilla per conferma)
- Percorso esistente e leggibile dall'utente FTP
- Firewall del server hosting non blocca connessioni FTP in uscita
- Modalità passiva abilitata se necessario
File XLSX non supportato
Soluzione: installa la libreria PhpSpreadsheet nel tuo PrestaShop:
cd /path/to/prestashop
composer require phpoffice/phpspreadsheet
Se non hai accesso alla shell, contattaci: forniamo una versione del modulo con PhpSpreadsheet già embedded.
Il CRON non parte
Verifica:
- Il crontab del server è stato effettivamente salvato (controlla con
crontab -l) - L'URL è accessibile dall'esterno (prova a visitarlo col browser, dovresti vedere una risposta JSON)
- Il
secure_keynell'URL corrisponde a quello salvato nel modulo - Il file di log
logs/sync.logcontiene qualche traccia
10. Aggiornamenti del modulo
Il modulo include un sistema di auto-update che controlla periodicamente la disponibilità di nuove versioni sul nostro server.
Notifica di nuova versione
Quando è disponibile un update, vedi un banner sulla dashboard del modulo con il numero di versione e le note di rilascio.
Procedura di aggiornamento
- Clicca Aggiorna ora sul banner.
- Il modulo crea automaticamente un backup della versione corrente in
backups/. - Scarica la nuova versione dal nostro server.
- Sostituisce i file del modulo mantenendo le configurazioni esistenti.
- Esegue eventuali script di migrazione database (cartella
upgrade/). - Al termine, vedi il messaggio di successo con la nuova versione.
backups/. Dalla dashboard del modulo, sezione Aggiornamenti, vedi la lista dei backup con pulsante "Ripristina".11. Struttura database e API interne
Per sviluppatori che devono integrare il modulo con sistemi esterni o estenderne le funzionalità.
Hook PrestaShop registrati
actionCronJob— per compatibilità con moduli cron manager PrestaShop
Classi principali
classes/ExcelSyncStockImporter.php— parsing e matchingclasses/ExcelSyncStockLogger.php— gestione log su DBclasses/ExcelSyncStockUpdater.php— sistema auto-update
Controller CRON
Endpoint pubblico: /module/excelsyncstock/cron?secure_key=XXXXX
Risponde JSON con l'esito dell'import. Esempio:
{
"success": true,
"total_rows": 4217,
"updated": 4205,
"not_found": 12,
"errors": 0,
"duration_ms": 14234,
"source": "ftp"
}
Tabella ps_stock_available
Il modulo aggiorna esclusivamente questa tabella tramite StockAvailable::setQuantity(). Non scrive su ps_stock_mvt (registro movimenti): se hai bisogno di questo comportamento, contattaci per una versione personalizzata.
Non hai trovato la risposta che cercavi? Scrivici a supporto@i-creativi.com.
Rispondiamo entro 48 ore lavorative.