Modèle de données Odoo Online 👇
Je pars du principe que votre écran correspond à une livraison pharmaceutique (pivot = stock.picking ou une table dédiée créée via Studio).
1️⃣ Bloc « Pharmacien (Interne) »
a) Où accrocher les champs ?
| Bloc UI | Modèle Odoo à étendre | Module / App |
|---|---|---|
| Infos pharmacien sur la livraison | stock.picking (Livraison) ou votre modèle Studio x_synergia_delivery | Inventory / Stock |
| Profil pharmacien | res.partner et/ou res.users | Contacts / Paramètres |
b) Champs à ajouter
Sur res.partner (Contacts) – pour identifier les pharmaciens
- x_is_pharmacist (Boolean) : Est un pharmacien
- x_pharmacy_name (Char) : Nom de l’officine (si différent de la société)
- x_rpps_or_id (Char) : Identifiant professionnel (optionnel)
Sur stock.picking (ou x_synergia_delivery) – informations du bloc UI :
-
x_pharmacist_id (Many2one → res.partner)
- Domaine : [('x_is_pharmacist','=',True)]
-
x_pharmacist_odoo_dossier (Char)
- Contenu : « Dossier Odoo : PH-2024-0012 »
-
x_internal_eta_min (Integer ou Char)
- Exemple : 20 (affiché comme « ~20 min »)
-
x_internal_cost (Monetary)
- Exemple : 3.00
-
x_internal_currency_id (Many2one → res.currency)
- Si vous utilisez déjà la devise de la société, vous pouvez réutiliser company_id.currency_id.
2️⃣ Bloc « Prestataires de flotte externe »
On sépare en deux niveaux :
- Référentiel des prestataires (Uber Direct, Central Courses, Cocolis…)
- Devis/options de livraison pour une livraison donnée.
a) Nouveau modèle : référentiel prestataires
Créé via Studio : x_synergia_fleet_provider
Rattaché à l’app Inventory ou Sales (peu importe, c’est juste le menu).
Champs recommandés :
- name (Char) : nom du prestataire – UBER DIRECT
- x_provider_type (Selection) : internal, external, locker
- x_api_base_url (Char) : base URL de l’API
- x_api_auth_type (Selection) : api_key, oauth2, none
- x_api_key (Char / Password) : clé API chiffrée (Studio permet champ mot de passe)
- x_default_eta_text (Char) : ex ~12 min
- x_default_price (Monetary) : tarif de base indicatif
- x_status (Selection) : active, inactive
- x_color_badge (Selection) : green, orange, red (pour le petit point de couleur dans l’UI)
b) Nouveau modèle : options de livraison pour une course
Modèle Studio : x_synergia_delivery_option
| Utilisation | Modèle relié | Type |
|---|---|---|
| Lignes « UBER DIRECT / CENTRAL COURSES / COCOLIS » | stock.picking (ou x_synergia_delivery) | Many2one |
Champs :
- name (Char) : label affiché (ex. “UBER DIRECT”)
- x_delivery_id (Many2one → stock.picking / x_synergia_delivery)
- x_provider_id (Many2one → x_synergia_fleet_provider)
- x_is_external (Boolean) : coche pour distinguer interne / externe
- x_eta_text (Char) : ~12 min, ~45 min, Indisponible
- x_price (Monetary)
- x_currency_id (Many2one → res.currency)
- x_status (Selection) : quoted, selected, cancelled, unavailable
- x_sort_order (Integer) : ordre d’affichage (Uber en premier, etc.)
Dans l’écran, vous récupérez simplement toutes les x_synergia_delivery_option liées à la livraison, filtrées sur x_is_external = True.
il existe en Île-de-France (et notamment à Paris) plusieurs services de livraison à la demande qui offrent une API ou un point d’entrée automatisable pour qu’une application (votre web-app / back-end) puisse déclencher une livraison en donnant « point A → point B ». Voici quelques exemples pertinents.
4️⃣ Avantages majeurs vs coursiers type Uber
| Critère | Uber Direct | Cocolis |
|---|---|---|
| Urgence | ✅ Très rapide | ❌ délai variable |
| Livraison même jour | ✅ | ❌ |
| Colis volumineux | ⚠️ limité | ✅ excellent |
| Coût | ❌ cher | ✅ souvent −40 à −70% |
| Transport longue distance | ❌ | ✅ |
| API REST | ✅ mature | ✅ mais privée |
| Suivi temps réel | ✅ | ⚠️ limité |
| Transport collaboratif | ❌ | ✅ |
✔ Architecture hybride :
| Type de livraison | Fournisseur |
|---|---|
| Urgent / Paris-IDF | Uber Direct |
| Volumineux / national | Cocolis |
| Course express ponctuelle | Central Courses |
| International | DHL / UPS API |
Uber / Uber Direct
Uber Direct permet à votre appli / site d’appeler directement le réseau de coursiers Uber pour :
- Enlever un colis à une adresse A (magasin, entrepôt, cabinet, etc.)
- Le livrer à une adresse B (client final, autre site…)
- Avec livraison le jour même, express en ≤ 2 h, ou planifiée sur Paris et l’Île-de-France. Uber+1
La partie développeur est sur Uber Developer – Deliveries / Uber Direct : developer.uber.com+1
Les grandes briques :
- Authentification OAuth2 (grant client_credentials) pour récupérer un token d’accès. developer.uber.com
- Create Quote : demander un devis de livraison entre A et B (prix + ETA). developer.uber.com+1
- Create Delivery : créer réellement la livraison à partir du devis (un coursier est alors dispatché). developer.uber.com+1
- Webhooks / statuts : suivre l’évolution (en cours, livré, annulé…) selon la config de votre compte. developer.uber.com+1
La FAQ Uber Direct confirme que l’API permet de livrer “la plupart des articles qu’une personne moyenne peut transporter” – donc typiquement des petits colis, documents, boîtes, petits équipements, etc.
Cocolis
Plateforme de logistique/colis, avec API documentée pour automatiser les expéditions — pratique pour l’envoi de colis ou biens volumineux. Cocolis
Cocolis est recommandé pour :
✅ matériel écolodge
✅ mobilier
✅ équipements techniques
✅ logistique Madag/France
✅ envois non-urgents
✅ grosses pièces
✅ mutualisation économique
Mais pas idéal pour :
❌ urgence
❌ livraison express
❌ documents médicaux
❌ petits colis avec SLA strict
📬 Contacter Cocolis pour accès API
📄 Demander :
- Spécifications API
- Authentification
- SLA / disponibilité
le schéma JSON unifié pour tous les providers (Uber, Central, Cocolis)
📊 Créer un dispatcher intelligent entre :
- Uber
- Central Courses
- Cocolis
🧠 Implémenter la règle :
- urgent → Uber
- volumineux → Cocolis
- nuit / week-end → Central
- hors-France → DHL
si vous aviez un seul “contrat logistique” que NestJS expose à Odoo, et derrière vous routez vers Uber / Central-Courses / Cocolis.
Je vous donne un schéma JSON unifié pour :
3️⃣ Bloc « Locker / Point de retrait »
Ici, on a deux notions :
- Le référentiel des lockers (Bureau de Poste Alésia, Mondial Relay X, etc.)
- L’option “Récupérer au locker (4,90 €)” qui est en réalité une delivery_option particulière.
a) Modéliser les lockers
Deux stratégies possibles, compatibles Odoo Online :
Option 1 – Locker = Contact (le plus simple)
Étendre res.partner :
- x_is_locker (Boolean) : est un point locker
- x_locker_provider_id (Many2one → x_synergia_fleet_provider)
- x_locker_code (Char) : code interne ou code réseau (ex : identifiant Mondial Relay)
Le reste (adresse, ville, CP) utilise déjà les champs natifs street, zip, city.
Option 2 – Locker = Emplacement de stock
Si vous gérez de la logistique plus fine, vous pouvez étendre stock.location avec :
- x_is_locker (Boolean)
- x_locker_partner_id (Many2one → res.partner)
b) Lier le locker à la livraison
Sur le modèle pivot stock.picking / x_synergia_delivery :
-
x_locker_partner_id (Many2one → res.partner)
- Domaine : [('x_is_locker','=',True)]
- x_locker_fee (Monetary) : 4,90 € dans l’exemple
- (Optionnel) x_locker_option_id (Many2one → x_synergia_delivery_option) si vous voulez que le bouton “RÉCUPÉRER AU LOCKER (4,90 €)” pointe vers une ligne d’options.
Et côté x_synergia_delivery_option, vous pouvez utiliser :
-
x_option_type (Selection) : internal, external, locker
- La ligne “Récupérer au locker (4,90 €)” serait une option de type locker liée à x_locker_partner_id.
Prestataire de lockers sur Paris avec des API
1️⃣ Pickup Station / Colissimo (La Poste / Chronopost / DPD)
👉 Adapté si :
tu veux un acteur très “mainstream” France, robuste, bien documenté, avec lockers + relais dans tout Paris, quitte à accepter une API un peu “legacy” (SOAP) + widget JS pour l’UX.
> notre choix possible
Réseau :
- Lockers = consignes Pickup Station, + relais Pickup, + bureaux de poste.
- Très dense à Paris / IDF (réseau n°1 en France). La Poste+1
API & outils :
- La Poste centralise ses APIs sur la plateforme Okapi (hub officiel des APIs La Poste). developer.laposte.fr+1
-
Côté lockers / points retrait, Colissimo fournit :
- un Web Service “choix de livraison / point retrait” (SOAP) pour obtenir la liste des points de retrait (dont consignes Pickup Station) et modes de livraison. Colissimo+1
- un widget JavaScript “Point Retrait / Pick-up Point Widget V2” pour afficher une carte et laisser l’utilisateur choisir son locker. Colissimo+1
URLs utiles :
-
Portail APIs La Poste (Okapi) :
https://developer.laposte.fr/ -
Catalogue APIs La Poste :
https://developer.laposte.fr/catalog-apis -
Redoc Colissimo (tous services & produits, dont point retrait) :
https://www.colissimo.fr/doc-colissimo/redoc-sls/fr -
Web services Colissimo / PickupPoint (WSDL, exemple PHP SDK) :
https://github.com/WsdlToPhp/PackageColissimoPickupPoint
2️⃣ Mondial Relay Lockers (InPost)
👉 Adapté si :
tu veux exploiter un gros réseau lockers + relais avec une API très complète mais plutôt SOAP/WebService, et que tu es à l’aise avec ce style d’intégration (ou via un wrapper Node/PHP).
> notre choix possible
Réseau :
- Mondial Relay (+ InPost) déploie massivement des lockers automatiques en France, notamment en zones urbaines et commerciales ; ils réduisent d’ailleurs le nombre de points relais au profit de lockers. Le Monde.fr
- Présence importante en Île-de-France et autour de Paris.
API & Web Services :
-
Mondial Relay propose des Web Services permettant :
- de récupérer la liste de Points Relais® et Lockers,
- de créer des expéditions,
- d’imprimer les étiquettes,
- de consulter le tracking. Mondial Relay+1
URLs utiles :
-
Page intégrations techniques Mondial Relay (web services) :
https://www.mondialrelay.fr/solutions-professionnels/nos-services-ecommercants/integrations-techniques -
Documentation technique & modules e-commerce :
https://www.mondialrelay.fr/solutions-professionnels/nos-services-ecommercants/documentation-technique-modules -
Spécification Web Service (PDF v5.12) :
https://www.mondialrelay.fr/media/125023/web-service-solution-v512.pdf
3️⃣ InPost (global) – si tu penses multi-pays
👉 Adapté si :
tu vises un scope européen / multi-pays, en complément de Mondial Relay France, et que tu aimes les APIs REST + OpenAPI plus modernes.
> Peux être bien à étudier pour s'inspirer pour faire notre proposition à un réseau de pharmacie
En France, Mondial Relay = filiale d’InPost, mais InPost a aussi sa propre couche API utilisée dans d’autres pays (PL, UK, etc.).
API :
- Documentation InPost pour intégration (création d’envois, lockers, etc.) : inpost.pl
- API UK officielle (OpenAPI, recherche de lockers, création de label / QR code, tracking) : developers.inpost.co.uk+1
URLs utiles :
-
Page “Integration” InPost :
https://inpost.pl/en/integration -
InPost UK API docs (OpenAPI, lockers / tracking) :
https://developers.inpost.co.uk/
Bonne question — à mon sens, pour Paris / Île-de-France et pour un bon équilibre API / réseau / prix / performance, voici les acteurs (lockers / points relais / services colis) que je recommande, classés selon ce qu’ils font le mieux — et mon top 2 pour toi.
✅ Critères clés pour bien choisir
Quand je juge un prestataire “bon”, je regarde :
- 📡 Qualité de l’API / intégrabilité — pour l’automatisation depuis ta web-app / back-end.
- 🗺️ Densité du réseau de lockers / points relais — important à Paris / IDF pour couvrir au maximum de zones.
- 💰 Rapport qualité / prix — coûts raisonnables pour le service, adaptés à des colis variés.
- 🔄 Flexibilité + fiabilité — livraisons ou retraits fiables, avec suivi, retrait facile, bonnes limites colis, etc.
📦 Recommandations pour Paris / IDF — ce que je te conseille
Mondial Relay (lockers & relais)
- Réseau très dense : Mondial Relay revendique des milliers de lockers et points relais en France, et une bonne couverture urbaine (donc Paris / Île-de-France). Mondial Relay+2Mondial Relay+2
- Très bon rapport qualité/prix — le service est souvent cité comme “économique” pour e-commerce ou envois classiques. FRENCHLOG+2Sendcloud+2
- Mode de livraison “locker / point retrait” pratique quand les destinataires ne sont pas disponibles — ce qui réduit les échecs de livraison. FrenchEntrée+2Mondial Relay+2
- Pour un usage logistique comme le tien (mobilier léger, matériel, envois domestiques en France), c’est un très bon “socle”.
👉 Quand l’utiliser : envoi de colis “standard / moyens” / non urgent, volume modéré, et quand le destinataire est flexible (pick-up possible).
Colissimo (via La Poste / Pickup Station / consignes)
- Très large couverture nationale et locale, y compris en zones urbaines comme Paris / IDF. La Poste+2Wikipédia+2
- Offre diverses options : livraison à domicile, point relais, consigne ou retrait — utile si vous voulez proposer de la flexibilité à vos clients. La Poste+2ECN | E-Commerce Nation+2
- Bien adapté aux colis plus volumineux ou si vous avez des contraintes de poids/dimensions — plus flexible que certains lockers orientés e-commerce “standard”. La Poste+1
👉 Quand l’utiliser : colis volumineux, logistique plus “classique”, ou quand le destinataire attend livraison à domicile ou via consigne — c’est un bon “back-up” quand locker / relais n’est pas pratique.
🏆 Mon Top 2 pour tes projets
| Rang | Prestataire / réseau | Pourquoi il sort du lot |
|---|---|---|
| 1 | Mondial Relay | Meilleur équilibre coût / réseau dense / flexibilité “locker + relais”, très adapté aux e-commerces ou envois réguliers depuis Paris. |
| 2 | Colissimo / La Poste | Couverture très large, gros volume possible, bonne flexibilité pour livraison à domicile ou en relais — solide pour des colis plus lourds ou hors-lockers. |
Colissimo peut être plus cher que Mondial Relay pour des envois simples ou petits colis.
Voici la comparaison en colonnes (clair, lisible, copiable) entre Mondial Relay et Colissimo pour Paris / IDF, avec des ordres de grandeur 2025 pour vous aider à décider rapidement.
📊 COMPARAISON DES PRIX — PETITS COLIS (≤ 1 kg)
📦 Envoi Paris → Paris / IDF (relais / domicile)
| Poids | Mondial Relay (locker / relais) | Colissimo (domicile) | Écart |
|---|---|---|---|
| ≤ 250 g | ~ 3,99 € | ~ 5,25 € | Mondial Relay ≈ -25 % |
| ≤ 500 g | ~ 4,30 € | ~ 7,35 € | Mondial Relay ≈ -40 % |
| ≤ 1 kg | ~ 5,40 € | ~ 9,40 € | Mondial Relay ≈ -42 % |
✅ Conclusion petits colis :
Mondial Relay est nettement moins cher pour documents, petits objets, e-commerce léger.
Colissimo n’est pertinent que si vous voulez impérativement livraison domicile rapide.
📊 COMPARAISON DES PRIX — COLIS MOYENS / LÉGERS (2 à 5 kg)
📦 Paris → Paris / IDF
| Poids | Mondial Relay (locker / relais) | Colissimo (domicile) | Écart |
|---|---|---|---|
| 2 kg | ~ 6,60 € | ~ 10,00 € | Mondial Relay ≈ -34 % |
| 5 kg | ~ 12,40 € | ~ 16,60 € | Mondial Relay ≈ -25 % |
✅ Conclusion colis moyens :
Mondial Relay reste plus économique,
Colissimo = plus rapide + plus flexible domicile.
📊 COMPARAISON — GROS COLIS LÉGERS (volumineux mais peu lourds)
(Exemple : carton 60×40×40 cm, poids 4 kg)
| Critère | Mondial Relay | Colissimo |
|---|---|---|
| Acceptation | Souvent refusé / surcoût | Souvent accepté |
| Prix indicatif | Variable / parfois KO | ~ 20–25 € |
| Livraison | Locker / relais | Domicile |
| Fiabilité | Moyenne | Excellente |
| Tracking API | Correct | Très bon |
✅ Conclusion colis volumineux :
Colissimo est plus fiable pour les objets encombrants, même si plus cher.
✅ RECOMMANDATION STRATÉGIQUE POUR VOTRE STACK
🔹 1. Par défaut (logique économique)
→ Mondial Relay pour :
- petits colis
- faible valeur
- clients flexibles (locker / relais)
🔹 2. En premium / contraintes fortes
→ Colissimo pour :
- colis volumineux
- livraison domicile
- fiabilité maximale
- expéditions sensibles
🎯 RÉSUMÉ SYNTHÉTIQUE
| Cas | Recommandation |
|---|---|
| Petit colis pas urgent | ✅ Mondial Relay |
| Envoi économique | ✅ Mondial Relay |
| Livraison domicile demandée | ✅ Colissimo |
| Colis volumineux | ✅ Colissimo |
| Livraison premium | ✅ Colissimo |
| E-commerce “standard” | ✅ Mondial Relay |
Crawler les adresses des lockers sur Paris et ile de France
1️⃣ Ce qui existe en open data (La Poste / Pickup / consignes)
Pour tout ce qui est réseau La Poste / Pickup (relais + certains lockers), tu as un vrai jeu de données national officiel :
- Dataset : “Liste des bureaux de poste, agences postales et relais poste”
- Producteur : La Poste – Branche Réseau
- 13 715 enregistrements, mis à jour tous les mois, incluant adresse + géolocalisation. datanova.laposte.fr
➡️ Tu peux le filtrer sur Île-de-France via l’API Opendatasoft (dataNOVA) :
-
Page dataset :
https://datanova.laposte.fr/datasets/laposte-poincont2 - API (exemple type, à adapter aux bons champs) :
https://datanova.laposte.fr/api/records/1.0/search/ ?dataset=laposte-poincont2 &rows=10000 &refine.region=ILE-DE-FRANCE
Ensuite tu filtres côté code sur les types qui t’intéressent (relais / consigne / pickup station, selon les valeurs de champs).
👉 Ce que tu peux faire :
-
Cron (NestJS ou autre) qui :
- appelle l’API une fois par jour/semaine,
- filtre sur region = Île-de-France,
- garde seulement les lignes “relais / consigne / pickup”
- les synchro dans ta base (table locker_location).
- Tu as alors un référentiel local des lockers / relais La Poste / Pickup pour Paris-IDF.
2️⃣ Mondial Relay, pas d’open data globale
Pour les autres réseaux purement privés :
🔹 Mondial Relay (lockers + points relais)
- Ils fournissent une page de recherche de points et un web service B2B (WebService / API) pour trouver le point relais / locker le plus proche d’une adresse. Mondial Relay+1
- Ils ne publient pas à ce jour une liste complète des lockers en open data sur data.gouv (leurs jeux de données portent sur les véhicules, pas sur les points). data.gouv.fr
Donc pour contrôler tout le maillage Mondial Relay sur IDF, il y a deux options :
- soit tu as un contrat B2B avec eux et ils acceptent de te fournir un dump ou une API “bulk” (idéal, mais contractuel),
- soit tu “quadrilles” la région avec des appels “find points near lat/lon” (mais ça risque d’être contraire à leurs CGU si tu le fais massivement).
Services MCP / cloud “scraping & browsing automatisé”
les services MCP / cloud “scraping & browsing automatisé” sont une option techniquement possible pour aspirer des pages web et en extraire des données (lockers, adresses, horaires), mais ce n’est pas toujours la bonne approche en production. Je te fais un cadre clair : ce qui est possible, ce qui est légal/risqué, et ce que je recommande vraiment dans ton cas.
1) Est-ce qu’un service MCP “qui surfe et aspire” est possible ?
✅ Oui, techniquement.
Des services cloud + agents type MCP permettent :
- navigation automatique sur des sites,
- extraction structurée (HTML → JSON / CSV / DB),
- gestion de captcha, pagination, scroll infini, pages dynamiques,
- enrichissement avec géocodage (adresse → lat/long).
4️⃣ Résumé rapide par bloc
| Bloc écran | Modèle principal | Modèles secondaires | Où ajouter ? |
|---|---|---|---|
| Pharmacien (Interne) | stock.picking ou x_synergia_delivery | res.partner (pharmaciens) | Apps Inventory + Contacts |
| Prestataires externes | x_synergia_delivery_option (lié à la livraison) | x_synergia_fleet_provider | Inventory / Sales (via Studio) |
| Locker | stock.picking / x_synergia_delivery (champ locker + tarif) | res.partner (lockers) ou stock.location | Contacts + Inventory |