Une expédition ne s'arrête pas au quai. Le client veut savoir où est son colis, le service client veut une preuve de livraison quand il réclame, et la comptabilité veut savoir ce que le transport a réellement coûté.
Quinze modules communautaires branchent les transporteurs et récupèrent ce qu'ils renvoient.
Résumé
Deux modules traitent le suivi : un état transporteur avec dates d'expédition et de livraison, preuve de livraison en pièce jointe et e-mail de confirmation paramétrable par société ; et la possibilité de corriger cet état à la main quand le transporteur ne répond plus.
Huit modules sont des connecteurs : un socle générique s'appuyant sur la bibliothèque Python roulier, l'intégration UPS, Sendcloud, Easypost, PostLogistics — avec sa déclaration de marchandises dangereuses —, et quatre transporteurs européens : CTT Express, Correos Express, Dachser et DB Schenker.
Deux modules sortent les identifiants de la base vers un fichier d'environnement serveur. Un module enfin ajoute les points relais : un référentiel de sites de dépôt géolocalisés avec leurs horaires, un destinataire final distinct du point de retrait, et l'obligation de choisir un site selon le mode d'expédition.
L'essentiel
- Un état transporteur et des dates d'expédition et de livraison sur le transfert.
- La preuve de livraison stockée en pièce jointe.
- Un e-mail automatique au client quand le colis est marqué livré.
- L'état corrigeable à la main quand le transporteur ne répond plus.
- Un socle générique (
roulier) et sept connecteurs transporteurs. - Les identifiants hors base, dans un fichier d'environnement serveur.
- Les points relais géolocalisés, avec horaires et destinataire final.
- Quatre connecteurs visent des transporteurs non français : CTT, Correos, Dachser, Schenker.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Version |
|---|---|---|
| Suivi | delivery_state | 18.0.1.2.2 |
| Suivi | delivery_state_manual | 18.0.1.0.0 |
| Socle | delivery_roulier | 18.0.1.0.1 |
| Connecteur | delivery_ups_oca | 18.0.1.5.1 |
| Connecteur | delivery_sendcloud_oca | 18.0.1.0.0 (LGPL-3) |
| Connecteur | delivery_easypost_oca | 18.0.1.0.0 |
| Connecteur | delivery_postlogistics | 18.0.2.0.0 |
| Connecteur | delivery_postlogistics_dangerous_goods | 18.0.1.0.0 |
| Connecteur | delivery_cttexpress | 18.0.1.0.0 |
| Connecteur | delivery_correos_express | 18.0.1.0.0 |
| Connecteur | delivery_dachser | 18.0.1.0.0 |
| Connecteur | delivery_schenker | 18.0.1.0.0 |
| Identifiants | delivery_postlogistics_server_env | 18.0.1.0.0 |
| Identifiants | server_environment_delivery | 18.0.1.0.0 |
| Points relais | delivery_dropoff_site | 18.0.1.0.0 |
Les menus ajoutés : Inventaire ▸ Configuration ▸ Livraison ▸ Sites de dépôt et PostLogistics Licenses, Inventaire ▸ Analyse ▸ CTT Express Manifest, Ventes ▸ Configuration ▸ Commandes clients ▸ Sites de dépôt, et un menu racine Sendcloud avec sa configuration.
Le suivi et la preuve de livraison
delivery_state est le module à installer d'abord : six des connecteurs en dépendent. Il ajoute au transfert un état transporteur et un état de suivi, les dates d'expédition et de livraison, le flux de suivi brut renvoyé par le transporteur, et trois champs de preuve de livraison : fichier, nom de fichier, erreur.
Au niveau société, deux réglages activent un e-mail de confirmation au client dès que le colis est marqué livré, avec son modèle de message.
La preuve de livraison est l'argument qui clôt une réclamation. Sans elle, une contestation de réception se règle à la parole — et se règle généralement en faveur du client. La stocker sur le transfert, au moment où le transporteur la fournit, coûte un module.
delivery_state_manual répond au cas inverse : le transporteur ne renvoie rien, ou se trompe. Le module rend l'état modifiable à la main, ce qui évite de laisser une expédition livrée depuis trois semaines affichée « en transit ».
Les connecteurs
Le socle Roulier
delivery_roulier n'est pas un connecteur mais un socle : il s'appuie sur la bibliothèque Python roulier — développée par Akretion — et enrichit quatre modèles, dont le colis, à qui il ajoute un transporteur, un numéro de suivi et son URL de suivi.
Le suivi au niveau du colis, et non du transfert, est la bonne granularité : une expédition de six colis a six numéros de suivi, et c'est le troisième qui se perd.
Les intégrations directes
| Module | Transporteur | Remarque |
|---|---|---|
delivery_ups_oca | UPS | Le plus mûr du lot (version 1.5.1) ; dépend de delivery_price_method et delivery_package_number |
delivery_sendcloud_oca | Sendcloud | Plateforme multi-transporteurs ; menu racine dédié, LGPL-3 |
delivery_easypost_oca | Easypost | Plateforme multi-transporteurs, orientée marché nord-américain |
delivery_postlogistics | La Poste suisse | Étiquettes via le service Barcode ; licences gérées en configuration |
delivery_cttexpress | CTT Express | Transporteur espagnol ; manifeste d'expédition |
delivery_correos_express | Correos Express | Transporteur espagnol |
delivery_dachser | Dachser | Transporteur allemand ; dépend du volume des transferts |
delivery_schenker | DB Schenker | Transporteur allemand |
Le dépôt ne contient aucun connecteur pour Colissimo, Chronopost, DPD France, GLS ou Geodis en module dédié : c'est le socle Roulier qui les couvre, via la bibliothèque Python. Une PME française qui attend un module au nom de son transporteur cherchera longtemps.
delivery_postlogistics_dangerous_goods ajoute la déclaration de marchandises dangereuses aux étiquettes PostLogistics, en s'appuyant sur le référentiel ADR européen.
Les identifiants
server_environment_delivery et delivery_postlogistics_server_env permettent de sortir les identifiants de connexion de la base et de les placer dans un fichier d'environnement serveur, par environnement — production, recette, développement.
Ce n'est pas une préférence d'administrateur : sans eux, restaurer une copie de production pour recette signifie restaurer les identifiants réels, et une expédition de test part pour de vrai.
Les points relais
delivery_dropoff_site est le module le plus structurant du lot. Il crée un modèle site de dépôt — géolocalisé, avec ses horaires d'ouverture gérés comme une ressource — et le relie au mode d'expédition.
- Sur le mode d'expédition : une case indiquant qu'il fonctionne avec des sites de dépôt, et la liste des sites concernés.
- Sur la commande : un destinataire final distinct de l'adresse de livraison, et l'obligation de choisir un site.
- Sur le contact : la possibilité d'être soi-même un site de dépôt, et le site habituel.
- Sur le transfert et le mouvement : le destinataire final, propagé depuis la commande.
La distinction entre adresse de livraison et destinataire final est ce qui manque au standard : un colis livré en point relais est adressé au relais et destiné au client. Confondre les deux produit des étiquettes au nom du commerçant et des factures au nom du relais.
La géolocalisation et les référentiels d'adresses sont traités dans adresses et localisation.
Limites connues
- Quatre connecteurs sur huit visent des transporteurs non français : CTT Express et Correos Express sont espagnols, Dachser et Schenker allemands, PostLogistics suisse.
- Aucun connecteur dédié aux transporteurs français : passer par le socle
roulieret sa bibliothèque Python, dont les versions évoluent indépendamment d'Odoo. - Les connecteurs dépendent de services externes : une évolution d'API côté transporteur casse l'intégration, et la correction vient du dépôt communautaire, à son rythme.
delivery_easypost_ocaetdelivery_roulieront des READMEs minimaux : leur portée réelle se lit dans les champs relevés, pas dans la documentation.- L'e-mail automatique de livraison part sur l'état renvoyé par le transporteur : un état erroné envoie un message faux.
- Les points relais demandent un référentiel maintenu : les sites ouvrent et ferment.
Identité technique
Les quinze modules viennent du dépôt OCA delivery-carrier, branche 18.0, en licence AGPL-3 — sauf delivery_sendcloud_oca, en LGPL-3. delivery_roulier exige la bibliothèque Python roulier (> 0.2.0) ; les couches d'environnement exigent server_environment ; les points relais s'appuient sur base_geolocalize et resource.
Voir aussi grilles tarifaires, options et contraintes et étiquettes de transport, colis et impression.
Questions fréquentes
Existe-t-il un module OCA pour Colissimo, Chronopost ou DPD France ?
Pas de module portant leur nom dans le dépôt delivery-carrier en 18.0. Ces transporteurs passent par le socle delivery_roulier et la bibliothèque Python roulier d'Akretion. Les connecteurs dédiés du dépôt visent UPS, Sendcloud, Easypost, PostLogistics, CTT Express, Correos Express, Dachser et DB Schenker.
Comment conserver une preuve de livraison dans Odoo ?
delivery_state ajoute au transfert trois champs de preuve de livraison — fichier, nom de fichier, erreur — remplis par le connecteur transporteur. C'est l'argument qui clôt une réclamation : sans elle, une contestation de réception se règle à la parole, et généralement en faveur du client.
Peut-on prévenir le client automatiquement quand son colis est livré ?
Oui : delivery_state ajoute deux réglages de société — activation de l'e-mail de confirmation et modèle de message — déclenchés quand le transfert passe à l'état livré. Attention, le message part sur l'état renvoyé par le transporteur : un état erroné envoie un message faux.
Comment gérer une livraison en point relais ?
delivery_dropoff_site crée un référentiel de sites de dépôt géolocalisés avec leurs horaires, et distingue l'adresse de livraison — le relais — du destinataire final — le client. Sans cette distinction, les étiquettes partent au nom du commerçant et les factures au nom du relais.
Où mettre les identifiants d'API transporteur ?
Dans un fichier d'environnement serveur, grâce à server_environment_delivery ou delivery_postlogistics_server_env. Sans eux, restaurer une copie de production pour recette restaure les identifiants réels — et une expédition de test part pour de vrai.
Se faire accompagner
Brancher un transporteur est la partie visible du travail ; la partie utile est ce qu'on fait de ce qu'il renvoie. Un numéro de suivi par colis, une preuve de livraison classée, un état corrigeable à la main : c'est ce qui fait baisser les appels au service client, pas l'étiquette automatique.
Nous commençons donc par le suivi et la preuve, puis nous branchons le transporteur — et nous disons franchement quand un transporteur français n'a pas de connecteur dédié et qu'il faut passer par le socle Roulier. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
- Grilles tarifaires, options et contraintes transporteur
- Étiquettes de transport, colis et impression
- Transport et logistique avec Odoo
En résumé
Ce que les transporteurs renvoient et comment Odoo le garde : état de suivi par colis, preuve de livraison classée, e-mail automatique au client, points relais avec destinataire final — et la liste franche des transporteurs qui ont un connecteur dédié, ou pas. Parlons de votre suivi d'expéditions.