Documentation9 min de lecture

Adresses et localisation : codes postaux, cartes et fuseaux horaires

Dix-sept modules OCA du dépôt `partner-contact` traitent l'adresse dans Odoo 18 Community : `base_location` crée un **référentiel de codes postaux** reliés à une ville, un état et un pays, et `base_location_geonames_import` **l'alimente en masse depuis la base géographique publique Geonames**, pays par pays. Les quinze autres, des régions européennes NUTS aux horaires d'appel d'un contact.

Tours de bureaux vues depuis la rue en contre-plongée

Une adresse saisie à la main contient une faute une fois sur dix : une ville mal orthographiée, un code postal inversé, un département absent. Chacune de ces fautes coûte un courrier retourné ou une livraison retardée.

Dix-sept modules communautaires fiabilisent l'adresse — depuis le référentiel officiel des codes postaux jusqu'aux horaires auxquels il est pertinent d'appeler un contact.

Résumé

Quatre modules construisent le référentiel géographique : un modèle de codes postaux reliés aux villes, états et pays, son import depuis Geonames, les régions statistiques européennes NUTS avec leur import, et les noms d'états rendus traduisibles.

Cinq fiabilisent la saisie : l'état obligatoire pour les pays qui en ont, une troisième ligne d'adresse, la recherche par rue et par ville, un alias de recherche pour les entreprises connues sous un autre nom, et une méthode technique de découpage d'une adresse en composants.

Huit enfin complètent le contact : la langue déduite du pays, le fuseau horaire rendu visible, des adresses par défaut figées pour la livraison et la facturation, une politique d'expédition par contact, les boutons de carte et d'itinéraire, un champ fax, un second numéro de téléphone, et les créneaux d'appel d'un contact.

L'essentiel

  • Un référentiel de codes postaux qui complète automatiquement ville, état et pays.
  • L'import Geonames : les villes et codes postaux d'un pays entier, en une opération.
  • Les régions européennes NUTS, avec leur import — utile pour les statistiques et les aides.
  • L'état rendu obligatoire pour les pays qui en ont.
  • Une troisième ligne d'adresse, nécessaire dans plusieurs pays.
  • La recherche par rue et par ville dans la liste des contacts.
  • Le fuseau horaire visible sur la fiche — il existe mais reste masqué.
  • Des boutons carte et itinéraire vers le service cartographique de votre choix.

Ce que ces modules ajoutent à l'instance

FamilleModulesNombre
Référentiel géographiquebase_location, base_location_geonames_import, base_location_nuts, base_country_state_translatable4
Fiabilité de la saisiepartner_country_state_required, partner_address_street3, partner_street_city_search, partner_search_alias, partner_address_split5
Contact et préférencespartner_country_lang, partner_tz, partner_contact_address_default, partner_shipping_policy4
Communicationpartner_external_map, partner_fax, partner_phone_secondary, partner_phonecall_schedule4

Les menus ajoutés sont groupés dans Contacts ▸ Configuration ▸ Localisation : codes postaux, villes, import Geonames, éléments NUTS et leur import. S'y ajoutent les sites de carte dans les paramètres techniques.

Un référentiel plutôt qu'une saisie libre

Odoo laisse saisir la ville et le code postal en texte libre. Sur dix mille contacts, cela produit « Paris », « PARIS », « paris 15 » et « Paris Cedex 15 » — quatre villes pour la même, et aucune analyse géographique possible.

  1. base_location introduit un référentiel de codes postaux reliant code postal, ville, état et pays. La saisie d'un code complète automatiquement le reste.
  2. base_location_geonames_import importe en masse villes et codes postaux depuis Geonames, la base géographique publique, pays par pays.
  3. base_country_state_translatable rend le nom des états traduisible — ce qu'Odoo ne prévoit pas.
  4. base_location_nuts ajoute les régions statistiques européennes NUTS, sur quatre niveaux hiérarchiques, avec leur import.

Le second est ce qui rend le premier utilisable : constituer un référentiel de codes postaux à la main est un travail de plusieurs semaines par pays. L'import le fait en une opération.

Les régions NUTS servent deux usages précis : les statistiques européennes et les dossiers de subvention, qui raisonnent dans cette nomenclature et non en départements.

Pour la France, les départements et régions sont traités par des modules dédiés, décrits dans identité française.

Fiabiliser la saisie et la recherche

ModuleCe qu'il apporte
partner_country_state_requiredL'état obligatoire pour tout pays qui en possède et pour lequel l'option est activée
partner_address_street3Une troisième ligne d'adresse, nécessaire dans plusieurs pays
partner_street_city_searchLa recherche par rue et par ville dans la liste des contacts
partner_search_aliasUn alias : retrouver une entreprise sous son autre nom, son nom commercial ou son ancien nom
partner_address_splitUne méthode technique de découpage d'une adresse en composants — brique pour d'autres modules

L'alias de recherche résout un agacement quotidien : une entreprise rachetée, une enseigne différente de la raison sociale, une marque plus connue que le groupe. Le commercial cherche le nom qu'il connaît et ne trouve rien.

La recherche par rue et par ville paraît élémentaire, et elle ne figure pas dans la vue de recherche standard. Un livreur qui appelle depuis une adresse ne peut donc pas être aidé — sauf à connaître le nom du client.

Les préférences d'un contact

  • partner_country_lang permet de définir une langue par pays : la langue d'un contact est alors déduite du pays saisi. Sur une base internationale, cela évite d'envoyer des documents en français à un client allemand.
  • partner_tz rend visible le fuseau horaire du contact — champ présent nativement dans le modèle mais non affiché sur le formulaire.
  • partner_contact_address_default permet de figer une adresse de livraison, une adresse de facturation et un contact par défaut, à la place du calcul automatique d'Odoo.
  • partner_shipping_policy définit une politique d'expédition par contact — tout d'un coup ou au fur et à mesure — au lieu de la choisir sur chaque commande.

Le troisième est le plus utile dans les groupes : Odoo déduit l'adresse de facturation selon une logique hiérarchique, qui se trompe dès que l'organisation du client ne correspond pas à l'arborescence saisie. Figer les adresses supprime la discussion.

Le fuseau horaire, lui, est exploité par les modules de créneaux de livraison décrits dans réceptions et lots automatiques.

Joindre un contact : cartes, numéros, créneaux

ModuleCe qu'il ajoute
partner_external_mapDeux boutons : carte de l'adresse et itinéraire depuis votre adresse, vers le service cartographique configuré
partner_phone_secondaryUn second numéro de téléphone — ligne directe, standard, astreinte
partner_faxUn champ fax, encore utilisé par certaines administrations et professions
partner_phonecall_scheduleLes créneaux horaires auxquels il est pertinent d'appeler ce contact

Le premier est précieux pour les métiers d'intervention : ouvrir l'itinéraire depuis la fiche client évite la recopie d'adresse dans une application de navigation — recopie où se glissent les fautes.

Les créneaux d'appel méritent mieux que leur apparence anecdotique : appeler un restaurateur à midi, un artisan à 7 h ou un cabinet médical en consultation est le meilleur moyen de ne jamais le joindre. L'information existe dans la tête du commercial ; la mettre sur la fiche la rend partageable.

Le fax, enfin, n'est pas une plaisanterie : certaines administrations, certains laboratoires et plusieurs professions réglementées l'utilisent encore comme canal officiel.

Limites connues

  • L'import Geonames crée beaucoup de données : un pays complet représente des dizaines de milliers d'enregistrements. À importer pays par pays, selon les besoins.
  • Le référentiel de codes postaux doit être tenu à jour : les communes fusionnent, les codes évoluent.
  • Rendre l'état obligatoire bloque les saisies rapides : à activer pays par pays.
  • Les régions NUTS ont une version datée : l'import correspond à un millésime de la nomenclature.
  • Figer les adresses par défaut annule la logique d'Odoo : c'est le but, et cela surprend si on ne l'attend pas.
  • partner_address_split est une brique technique : sans effet visible seul.

Identité technique

Les dix-sept modules viennent du dépôt OCA partner-contact, branche 18.0, tous en licence AGPL-3. base_location s'appuie sur le module d'adresse étendue d'Odoo, partner_phonecall_schedule sur les calendriers de ressources, et partner_shipping_policy sur sale_stock.

Les familles voisines : doublons et qualité des contacts, identité des personnes et identité, adresses et contacts.

Questions fréquentes

Comment éviter les villes mal orthographiées dans les adresses ?

base_location crée un référentiel de codes postaux reliés aux villes, états et pays : la saisie d'un code complète le reste. Et base_location_geonames_import l'alimente en masse depuis la base publique Geonames, pays par pays — constituer ce référentiel à la main représenterait des semaines.

Qu'est-ce que la nomenclature NUTS ?

Les régions statistiques européennes, sur quatre niveaux hiérarchiques. base_location_nuts les ajoute aux contacts avec leur import. Elles servent aux statistiques européennes et aux dossiers de subvention, qui raisonnent dans cette nomenclature plutôt qu'en départements.

Peut-on chercher un contact par sa rue ou sa ville ?

Pas dans la vue de recherche standard. partner_street_city_search l'ajoute — ce qui permet enfin d'aider un livreur qui appelle depuis une adresse sans connaître le nom du client. partner_search_alias complète en permettant de retrouver une entreprise sous un autre nom : enseigne, marque, ancien nom.

Le fuseau horaire d'un contact existe-t-il dans Odoo ?

Oui, dans le modèle — mais il n'est pas affiché sur le formulaire. partner_tz le rend visible. Il est exploité notamment par les modules de créneaux de livraison, qui comparent l'heure prévue aux préférences du client.

Comment savoir quand appeler un client ?

partner_phonecall_schedule enregistre les créneaux horaires auxquels il est pertinent d'appeler un contact, à partir des calendriers de ressources d'Odoo. Appeler un restaurateur à midi ou un artisan à 7 h est le meilleur moyen de ne jamais le joindre — et cette information vit d'ordinaire dans la tête d'un seul commercial.

Se faire accompagner

L'adresse est la donnée la plus utilisée et la moins contrôlée d'un ERP. Elle sert à livrer, à facturer, à router une facture électronique et à analyser un territoire — et elle est saisie en texte libre par vingt personnes différentes.

Nous posons donc le référentiel avant les contrôles : importer les codes postaux des pays où vous travaillez, puis activer les obligations de saisie. L'inverse produit des blocages sur une base que personne ne peut corriger. Voir les prestations d'Atalios Consulting ou demander un rappel.

Pour aller plus loin

En résumé

Un référentiel de codes postaux importé depuis Geonames plutôt qu'une saisie libre, les régions européennes pour les statistiques et les subventions, la recherche par rue et par ville, et les informations qui permettent de joindre quelqu'un — second numéro, créneaux d'appel, itinéraire. Parlons de la qualité de vos adresses.

Documentation OCAContactsRéférentiel

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo