Connecteur Odoo — Guide complet
Installer, configurer et exploiter la synchronisation temps réel PrestaShop ⇄ Odoo (produits, stock, commandes, clients) pour PrestaShop 8 et 9.
Le Connecteur Odoo synchronise en temps réel et dans les deux sens vos produits, votre stock, vos commandes et vos clients entre PrestaShop et Odoo. Ce guide couvre l’installation, la connexion à Odoo, le choix du sens de synchronisation, la synchronisation initiale, le cron, le webhook entrant et le dépannage.
Prérequis
- PrestaShop 8.0 à 9.x.
- PHP 7.4 à 8.3 avec l’extension cURL active.
- Une instance Odoo 14 à 18 (en ligne ou auto-hébergée) accessible en HTTPS depuis votre serveur PrestaShop.
- Un utilisateur Odoo disposant d’une clé API et des droits sur les modèles Ventes, Inventaire et Contacts.
Le module communique avec Odoo via JSON-RPC. L’extension PHP xmlrpc, retirée de PHP 8, n’est pas nécessaire.
Installation
- Dans le back-office, ouvrez Modules > Module Manager puis Téléverser un module et déposez le fichier
dfodooconnect.zip. - Une fois installé, ouvrez la page de configuration via le bouton Configurer ou l’onglet Odoo Connector dans le menu d’administration.
Générer une clé API dans Odoo
- Connectez-vous à Odoo avec le compte de service dédié à la synchronisation.
- Ouvrez Préférences > Sécurité du compte > Clés API et générez une nouvelle clé.
- Copiez la clé : elle remplace le mot de passe dans la configuration du module.
Créez un utilisateur Odoo dédié (par exemple « PrestaShop Sync ») plutôt que d’utiliser un compte administrateur personnel. Vous gardez ainsi un journal d’audit clair côté Odoo.
Connexion à Odoo
Dans la page de configuration, renseignez les quatre champs du bloc Connexion Odoo :
- URL Odoo : l’adresse complète de votre instance, par exemple
https://mon-odoo.com. - Base de données : le nom exact de la base Odoo.
- Utilisateur : l’identifiant (login) du compte de service.
- Clé API : la clé générée à l’étape précédente.
Cliquez sur Tester la connexion. En cas de succès, le module affiche la version d’Odoo détectée et l’identifiant utilisateur (uid). Enregistrez, puis cochez Activer la synchronisation.
Tant que la case Activer la synchronisation n’est pas cochée, aucune donnée n’est envoyée à Odoo, même si la connexion est valide.
Choisir les entités et le sens de synchronisation
Quatre entités sont gérées. Pour chacune, vous activez ou désactivez la synchronisation ; pour les produits et le stock, vous choisissez en plus le sens.
- Clients : PrestaShop vers Odoo (contacts
res.partner). - Produits : PrestaShop vers Odoo, Odoo vers PrestaShop, ou bidirectionnel.
- Stock : PrestaShop vers Odoo, Odoo vers PrestaShop, ou bidirectionnel.
- Commandes : PrestaShop vers Odoo (bons de commande
sale.order).
Deux options complètent le comportement des commandes : Confirmer automatiquement la commande dans Odoo (passe le devis en bon de commande confirmé) et Générer la facture Odoo.
Synchronisation initiale
Avant d’activer le flux temps réel sur une boutique existante, peuplez Odoo avec vos données actuelles depuis le bloc Synchronisation initiale :
- Exporter tous les clients : place chaque client dans la file d’export.
- Exporter tous les produits : nécessaire avant le stock et les commandes, car les lignes de commande et les ajustements de stock s’appuient sur la correspondance produit.
- Exporter toutes les commandes : à lancer après les clients et les produits.
Respectez l’ordre clients → produits → commandes. Le module gère automatiquement les dépendances manquantes (il met un produit non mappé en file avant de réessayer la commande), mais l’ordre réduit le nombre de relances.
Configuration du cron
Le cron vide la file d’attente (relances des envois en échec) et importe le stock depuis Odoo lorsque ce sens est activé. Planifiez l’URL fournie dans le bloc Endpoints, toutes les 1 à 5 minutes :
curl "https://votre-boutique.com/module/dfodooconnect/cron?token=VOTRE_TOKEN"
Le jeton est généré automatiquement à l’installation et affiché dans la configuration.
Webhook entrant (Odoo vers PrestaShop)
Pour que les changements faits dans Odoo redescendent en temps réel, créez une Action automatisée dans Odoo (action serveur de type webhook) qui envoie une requête POST JSON vers l’URL de webhook du module.
Mise à jour de stock :
{ "token": "VOTRE_TOKEN", "entity": "stock", "odoo_id": 42, "qty": 17 }
Changement d’état de commande :
{ "token": "VOTRE_TOKEN", "entity": "order_state", "odoo_id": 99, "state": "cancel" }
Les états reconnus sont cancel, sale et done, mappés respectivement vers Annulée, En préparation et Livrée côté PrestaShop.
Le token du webhook doit être identique à celui affiché dans la configuration. Une requête sans jeton valide est rejetée avec un code 403.
Tableau de bord et journal
Le tableau de bord affiche en permanence quatre indicateurs de file (En attente, Synchronisés, En erreur, Abandonnés), le nombre de correspondances par entité, ainsi qu’un journal d’activité horodaté. Deux actions de maintenance sont disponibles : Traiter la file maintenant et Importer le stock depuis Odoo.
La file d’attente résiliente
Chaque changement dans PrestaShop est d’abord poussé dans une file, puis envoyé immédiatement à Odoo en « best effort ». Si Odoo est injoignable, le travail reste en file et le cron le rejoue automatiquement. Après le nombre de tentatives configuré (par défaut 5), un travail définitivement en échec passe en quarantaine (Abandonné) pour ne pas bloquer le reste de la file.
C’est ce mécanisme qui garantit qu’une indisponibilité d’Odoo ne bloque jamais le tunnel de commande de vos clients.
Champs synchronisés
Clients
Nom, email, société, référence, adresse par défaut (rue, ville, code postal, téléphone), numéro de TVA et pays. Le rapprochement anti-doublon se fait par email.
Produits
Nom, référence interne, prix de vente, prix d’achat, poids, code-barres, description courte et état actif. Le rapprochement anti-doublon se fait par référence.
Stock
Les quantités disponibles sont reportées via un ajustement d’inventaire sur l’emplacement Odoo configuré (ou le premier emplacement interne si aucun n’est précisé).
Commandes
Partenaire, référence client, lignes de commande (produit, quantité, prix unitaire hors taxe) et frais de port. Le client est synchronisé à la volée s’il ne l’a pas encore été.
Mode test (dry-run)
Activez Mode test pour valider le mappage sans rien écrire dans Odoo : chaque opération est enregistrée dans le journal avec la mention DRY-RUN mais aucune donnée n’est créée ni modifiée. Idéal pour une recette avant la mise en production.
Dépannage
- Le test de connexion échoue : vérifiez l’URL (avec https), le nom exact de la base, le login et la clé API. Assurez-vous que le serveur PrestaShop peut joindre l’instance Odoo en sortie.
- Une commande reste en attente : un produit de la commande n’est probablement pas encore mappé. Le module met le produit en file ; relancez « Traiter la file maintenant » après quelques secondes.
- Le stock ne remonte pas dans PrestaShop : vérifiez que le sens du stock inclut Odoo vers PrestaShop et que le cron s’exécute.
- Doublons côté Odoo : assurez-vous que les références produits et les emails clients sont renseignés ; ce sont les clés de rapprochement.
Désinstallation
La désinstallation supprime les tables de correspondance, de file et de journal du module. Vos données dans Odoo ne sont pas affectées. Pour une simple mise à jour, remplacer les fichiers suffit : le schéma et les correspondances sont préservés.