Connettore Odoo — Guida completa
Installare, configurare e gestire la sincronizzazione in tempo reale PrestaShop ⇄ Odoo (prodotti, scorte, ordini, clienti) per PrestaShop 8 e 9.
Il Connettore Odoo sincronizza i tuoi prodotti, le scorte, gli ordini e i clienti tra PrestaShop e Odoo in tempo reale e in entrambe le direzioni. Questa guida copre l’installazione, la connessione a Odoo, la scelta della direzione di sincronizzazione, la sincronizzazione iniziale, il cron, il webhook in entrata e la risoluzione dei problemi.
Requisiti
- PrestaShop da 8.0 a 9.x.
- PHP da 7.4 a 8.3 con l’estensione cURL attiva.
- Un’istanza Odoo da 14 a 18 (online o self-hosted) raggiungibile via HTTPS dal tuo server PrestaShop.
- Un utente Odoo con una chiave API e i diritti sui modelli Vendite, Inventario e Contatti.
Il modulo comunica con Odoo tramite JSON-RPC. L’estensione PHP xmlrpc, rimossa in PHP 8, non è necessaria.
Installazione
- Nel back office, apri Moduli > Gestore moduli, poi Carica un modulo e rilascia il file
dfodooconnect.zip. - Una volta installato, apri la pagina di configurazione tramite il pulsante Configura o la scheda Odoo Connector nel menu di amministrazione.
Generare una chiave API in Odoo
- Accedi a Odoo con l’account di servizio dedicato alla sincronizzazione.
- Apri Preferenze > Sicurezza dell’account > Chiavi API e genera una nuova chiave.
- Copia la chiave: sostituisce la password nella configurazione del modulo.
Crea un utente Odoo dedicato (ad esempio «PrestaShop Sync») invece di usare un account amministratore personale. Mantieni così un registro di audit chiaro lato Odoo.
Connessione a Odoo
Nella pagina di configurazione, compila i quattro campi del blocco Connessione Odoo:
- URL Odoo: l’indirizzo completo della tua istanza, ad esempio
https://mio-odoo.com. - Database: il nome esatto del database Odoo.
- Utente: l’identificativo (login) dell’account di servizio.
- Chiave API: la chiave generata al passo precedente.
Fai clic su Testa la connessione. In caso di successo, il modulo mostra la versione di Odoo rilevata e l’identificativo utente (uid). Salva, quindi spunta Attiva la sincronizzazione.
Finché la casella Attiva la sincronizzazione non è spuntata, nessun dato viene inviato a Odoo, anche se la connessione è valida.
Scegliere le entità e la direzione di sincronizzazione
Sono gestite quattro entità. Per ciascuna attivi o disattivi la sincronizzazione; per i prodotti e le scorte scegli anche la direzione.
- Clienti: PrestaShop verso Odoo (contatti
res.partner). - Prodotti: PrestaShop verso Odoo, Odoo verso PrestaShop, o bidirezionale.
- Scorte: PrestaShop verso Odoo, Odoo verso PrestaShop, o bidirezionale.
- Ordini: PrestaShop verso Odoo (ordini di vendita
sale.order).
Due opzioni completano il comportamento degli ordini: Conferma automaticamente l’ordine in Odoo (trasforma il preventivo in ordine di vendita confermato) e Genera la fattura Odoo.
Sincronizzazione iniziale
Prima di attivare il flusso in tempo reale su un negozio esistente, popola Odoo con i tuoi dati attuali dal blocco Sincronizzazione iniziale:
- Esporta tutti i clienti: mette ogni cliente nella coda di esportazione.
- Esporta tutti i prodotti: necessario prima delle scorte e degli ordini, poiché le righe d’ordine e gli aggiustamenti di scorta si basano sulla corrispondenza prodotto.
- Esporta tutti gli ordini: da eseguire dopo i clienti e i prodotti.
Rispetta l’ordine clienti → prodotti → ordini. Il modulo gestisce automaticamente le dipendenze mancanti (mette in coda un prodotto non associato prima di riprovare l’ordine), ma l’ordine corretto riduce il numero di tentativi.
Configurazione del cron
Il cron svuota la coda (riprova gli invii falliti) e importa le scorte da Odoo quando questa direzione è attiva. Pianifica l’URL mostrato nel blocco Endpoints, ogni 1-5 minuti:
curl "https://tuo-negozio.com/module/dfodooconnect/cron?token=TUO_TOKEN"
Il token è generato automaticamente all’installazione e mostrato nella configurazione.
Webhook in entrata (Odoo verso PrestaShop)
Affinché le modifiche fatte in Odoo tornino in tempo reale, crea un’Azione automatizzata in Odoo (azione server di tipo webhook) che invia una richiesta POST JSON all’URL di webhook del modulo.
Aggiornamento di scorta:
{ "token": "TUO_TOKEN", "entity": "stock", "odoo_id": 42, "qty": 17 }
Cambio di stato dell’ordine:
{ "token": "TUO_TOKEN", "entity": "order_state", "odoo_id": 99, "state": "cancel" }
Gli stati riconosciuti sono cancel, sale e done, associati rispettivamente ad Annullato, In preparazione e Consegnato lato PrestaShop.
Il token del webhook deve coincidere con quello mostrato nella configurazione. Una richiesta senza un token valido viene rifiutata con un codice 403.
Cruscotto e registro
Il cruscotto mostra costantemente quattro indicatori della coda (In attesa, Sincronizzati, In errore, Abbandonati), il numero di corrispondenze per entità e un registro attività con marca temporale. Sono disponibili due azioni di manutenzione: Elabora la coda ora e Importa le scorte da Odoo.
La coda resiliente
Ogni modifica in PrestaShop viene prima inviata a una coda, poi mandata a Odoo immediatamente in modalità «best effort». Se Odoo non è raggiungibile, il lavoro resta in coda e il cron lo riesegue automaticamente. Dopo il numero di tentativi configurato (5 per impostazione predefinita), un lavoro definitivamente fallito passa in quarantena (Abbandonato) per non bloccare il resto della coda.
È questo meccanismo a garantire che un’indisponibilità di Odoo non blocchi mai il processo di acquisto dei tuoi clienti.
Campi sincronizzati
Clienti
Nome, email, azienda, referenza, indirizzo predefinito (via, città, codice postale, telefono), partita IVA e paese. La deduplicazione avviene tramite email.
Prodotti
Nome, referenza interna, prezzo di vendita, prezzo di costo, peso, codice a barre, descrizione breve e stato attivo. La deduplicazione avviene tramite referenza.
Scorte
Le quantità disponibili vengono applicate tramite un aggiustamento di inventario sull’ubicazione Odoo configurata (o la prima ubicazione interna se non ne è indicata nessuna).
Ordini
Partner, referenza cliente, righe d’ordine (prodotto, quantità, prezzo unitario al netto delle imposte) e spese di spedizione. Il cliente viene sincronizzato al volo se non lo è già.
Modalità di prova (dry-run)
Attiva la Modalità di prova per convalidare la mappatura senza scrivere nulla in Odoo: ogni operazione viene registrata nel log con la dicitura DRY-RUN, ma nessun dato viene creato o modificato. Ideale per un collaudo prima della messa in produzione.
Risoluzione dei problemi
- Il test di connessione fallisce: verifica l’URL (con https), il nome esatto del database, il login e la chiave API. Assicurati che il server PrestaShop possa raggiungere l’istanza Odoo in uscita.
- Un ordine resta in attesa: probabilmente un prodotto dell’ordine non è ancora associato. Il modulo mette il prodotto in coda; riesegui «Elabora la coda ora» dopo qualche secondo.
- Le scorte non tornano in PrestaShop: verifica che la direzione delle scorte includa Odoo verso PrestaShop e che il cron venga eseguito.
- Duplicati lato Odoo: assicurati che le referenze dei prodotti e le email dei clienti siano compilate; sono le chiavi di corrispondenza.
Disinstallazione
La disinstallazione rimuove le tabelle di corrispondenza, di coda e di registro del modulo. I tuoi dati in Odoo non vengono interessati. Per un semplice aggiornamento, è sufficiente sostituire i file: lo schema e le corrispondenze vengono conservati.