# ZENFUSIONMAPS

<span>Lien vers Google Maps sur les adresses</span>

# 1. PRÉSENTATION DU MODULE

# Présentation du module

[![OIP.webp](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/0BDHgcXfxjVz36eW-oip.webp)](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/0BDHgcXfxjVz36eW-oip.webp)

**ZenFusion Maps** est un module d'interface léger pour ***Dolibarr***. Il ne crée aucune table, aucun menu et aucun écran métier supplémentaire.

Sa seule fonction est de **rendre les adresses postales cliquables :** sur les fiches ***Tiers, Contacts et Adhérents***, l'adresse affichée devient un lien qui ouvre directement Google Maps positionné sur cette adresse. Un petit repère (marqueur) Google Maps est ajouté à droite de l'adresse pour signaler que la fonction est disponible.

Manuel d'utilisation du module ZenFusion Maps — Liens Google Maps sur les adresses

<table id="bkmrk-version-du-module1.2"><colgroup><col></col><col style="width: 579px;"></col></colgroup><tbody><tr><td style="color: rgb(160, 34, 34);">**Version du module**

</td><td>1.2.0 InfraS

</td></tr><tr><td style="color: rgb(160, 34, 34);">**Éditeur**

</td><td>GPC.solutions (module tiers, licence GPL v3)

</td></tr><tr><td style="color: rgb(160, 34, 34);">**Distribution**

</td><td>Dolibarr LTS by InfraS (base Dolibarr 22.0.x)

</td></tr><tr><td style="color: rgb(160, 34, 34);">**Date du manuel**

</td><td>22 septembre 2026

</td></tr></tbody></table>

### **Avantages**

- Localiser un client, un fournisseur, un contact ou un adhérent en un clic.
- Préparer un itinéraire depuis Google Maps sans recopier l'adresse.
- Aucune saisie ni configuration supplémentaire : le module exploite les champs d'adresse déjà renseignés dans ***Dolibarr***.
- Google Maps s'ouvre dans la langue de l'utilisateur ***Dolibarr***.

# 2. PRÉREQUIS ET INSTALLATION

# Installation du module

### **Prérequis**

- **Dolibarr :** 3.5 ou supérieur (validé sur ***Dolibarr*** LTS by InfraS 22.0.x).
- **PHP** 5.3 ou supérieur.
- **Un accès Internet** depuis le poste de l'utilisateur, car Google Maps s'ouvre dans le navigateur.
- Aucun compte Google ni clé d'API n'est nécessaire : le module utilise l'adresse publique `<span class="editor-theme-code">https://maps.google.com/maps</span>`.
- Le module n'a aucune dépendance envers un autre module ***Dolibarr***.

### **Installation et activation**

Manuel d'utilisation du module ZenFusion Maps. Le module est livré dans le répertoire `<span class="editor-theme-code">htdocs/custom/zenfusionmaps/</span>` de l'instance. Pour l'activer :

1. Se connecter à ***Dolibarr*** avec un compte administrateur.
2. Ouvrir le menu *Accueil &gt; Configuration &gt; Modules/Applications*.
3. Rechercher ***« ZenFusion Maps »*** (le module apparaît dans la famille configurée par le module Dolinfras, ou dans la famille **« Autres »** si Dolinfras n'est pas actif).
4. Cliquer sur l'interrupteur pour activer le module.

Dès l'activation, les liens Google Maps apparaissent sur les fiches concernées. Aucune autre étape n'est nécessaire. L'icône représentant le module (marqueur de carte) est visible dans la liste des modules et dans l'onglet **« À propos »** du module.

# 3. ACCÈS AU MODULE

# Droits utilisateurs

Le module déclare un seul droit, visible dans la fiche de chaque utilisateur ou groupe, onglet **« Permissions »**<span style="color: rgb(1, 178, 210);"> </span>:

- **« Utiliser ZenFusion Maps »**.

Ce droit est accordé par défaut aux administrateurs. Pour un utilisateur standard, il se coche dans sa fiche (*Accueil &gt; Utilisateurs &amp; Groupes &gt; fiche de l'utilisateur &gt; onglet Permissions &gt; section ZenFusion Maps*).

**Remarque importante :** dans la version actuelle du module, ce droit est déclaré mais n'est pas contrôlé à l'affichage. Le lien Google Maps est donc visible par tout utilisateur autorisé à consulter la fiche Tiers, Contact ou Adhérent, qu'il possède ou non ce droit. La visibilité de l'adresse reste gouvernée par les droits habituels de Dolibarr sur ces fiches.

# 4. CONFIGURATION DU MODULE

# Configuration

Le module ***ne possède aucun paramètre à régler***.

[![h4.png](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/GZdvoFgzgN2GwY1H-h4.png)](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/GZdvoFgzgN2GwY1H-h4.png)

La page de configuration accessible depuis la liste des modules (icône d'engrenage ou lien « Configuration ») **ne contient qu'un onglet « À propos »** qui présente :

- Le nom et la version du module.
- L'éditeur (GPC.solutions) et ses coordonnées.
- La licence (GNU GPL version 3).
- Les crédits de développement et les mentions relatives aux logos utilisés.

# 5. UTILISATION DU MODULE

# Utilisation au quotidien

### **Fiches concernées**

Le module s'active sur les écrans suivants :

<table id="bkmrk-ficheongletcodetiers" style="border-collapse: collapse; width: 100%; margin: 12px 0px 20px;"><colgroup><col style="width: 258px;"></col><col style="width: 264px;"></col><col></col></colgroup><tbody><tr><th class="align-left" style="background: rgb(184, 92, 34); color: rgb(255, 255, 255); text-align: left; padding: 8px 10px; border: 1px solid rgb(204, 208, 224);">Fiche

</th><th class="align-left" style="background: rgb(184, 92, 34); color: rgb(255, 255, 255); text-align: left; padding: 8px 10px; border: 1px solid rgb(204, 208, 224);">Onglet

</th><th class="align-left" style="background: rgb(184, 92, 34); color: rgb(255, 255, 255); text-align: left; padding: 8px 10px; border: 1px solid rgb(204, 208, 224);">Code

</th></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Tiers

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">principal

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">`<span class="editor-theme-code">thirdpartycard</span>`

</td></tr><tr style="background-color: rgb(248, 239, 233);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Tiers

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Client

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">`<span class="editor-theme-code">commcard</span>`

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Tiers

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Fournisseur

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">`<span class="editor-theme-code">suppliercard</span>`

</td></tr><tr style="background-color: rgb(248, 239, 233);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Contact / Adresse

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">—

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">`<span class="editor-theme-code">contactcard</span>`

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">Adhérent

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">—

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">`<span class="editor-theme-code">membercard</span>`

</td></tr></tbody></table>

Sur ces écrans, le champ **« Adresse »** (bloc adresse complète : rue, code postal, ville, pays) est enrichi du lien Google Maps.

Les autres types d'objets (utilisateurs, entrepôts, projets, etc.) ne sont pas traités : le module ignore volontairement ces adresses et laisse l'affichage ***Dolibarr*** standard.

### **Repérer le lien Google Maps**

[![h5.png](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/ho5fTD5Yv6VpwFPY-h5.png)](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/ho5fTD5Yv6VpwFPY-h5.png)

Sur une fiche concernée, dès qu'une adresse est renseignée :

- L'adresse s'affiche avec sa mise en forme habituelle (retours à la ligne conservés).
- Un marqueur Google Maps de 16 pixels apparaît à droite du bloc adresse.
- Au survol de l'adresse, la souris prend la forme d'une main et une infobulle **« Google Maps »** s'affiche.

### **Ouvrir l'adresse dans Google Maps**

[![h6.png](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/pNwkwrTXi3Q9zUSQ-h6.png)](https://wiki.infras.fr/uploads/images/gallery/2026-09/scaled-1680-/pNwkwrTXi3Q9zUSQ-h6.png)

1. Cliquer sur l'adresse ou sur le marqueur.
2. Google Maps s'ouvre dans un nouvel onglet du navigateur, centré sur l'adresse recherchée.
3. Depuis Google Maps, il est ensuite possible de calculer un itinéraire, d'utiliser Street View, de partager la position, etc. Ces fonctions relèvent de Google Maps et non du module.

La fiche ***Dolibarr*** reste ouverte dans l'onglet d'origine.

# 6. FONCTIONNEMENT DU LIEN

# Fonctionnement détaillé du lien

### **Construction de la requête envoyée à Google Maps**

Le module récupère l'adresse telle que ***Dolibarr*** l'a formatée (rue, code postal, ville, pays, selon le format d'adresse du pays), puis :

- Remplace les retours à la ligne par des espaces.
- Remplace les séparateurs « , » par le signe « + » attendu par Google.
- Retire les mentions CEDEX
- Ajoute le code de langue de l'utilisateur.

Le lien final est de la forme :

> https://maps.google.com/maps?q=&lt;adresse&gt;&amp;hl=&lt;langue&gt;

Aucune donnée n'est transmise à Google tant que l'utilisateur ne clique pas sur le lien : le simple affichage de la fiche ne contacte pas Google.

### **Suppression automatique des mentions CEDEX**

Google Maps ne sait pas interpréter les mentions de type **« CEDEX 9 »** qui suivent le nom d'une ville française. Le module ***supprime automatiquement, dans la requête envoyée à Google, tout ce qui suit le mot « CEDEX »*** (insensible à la casse) dans la ligne de ville.

**Exemple :**

- **Adresse saisie :** 2 avenue du Président Pierre Angot, 64053 PAU CEDEX 9
- **Requête Google :** 2 avenue du Président Pierre Angot, 64053 PAU

L'adresse affichée sur la fiche Dolibarr n'est pas modifiée : seule la requête envoyée à Google est nettoyée.

### **Langue d'affichage de Google Maps**

Google Maps ***s'ouvre dans la langue de l'utilisateur connecté à Dolibarr*** (langue définie dans sa fiche utilisateur ou, à défaut, langue par défaut de l'instance). Le module convertit le code de langue ***Dolibarr*** en code Google :

<table id="bkmrk-langue-dolibarrcode-" style="border-collapse: collapse; width: 100%; margin: 12px 0px 20px;"><colgroup><col style="width: 320px;"></col><col></col></colgroup><tbody><tr><th class="align-left" style="background: rgb(20, 116, 130); color: rgb(255, 255, 255); text-align: left; padding: 8px 10px; border: 1px solid rgb(204, 208, 224);">Langue Dolibarr

</th><th class="align-left" style="background: rgb(20, 116, 130); color: rgb(255, 255, 255); text-align: left; padding: 8px 10px; border: 1px solid rgb(204, 208, 224);">Code Google

</th></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fr\_FR, fr\_BE, fr\_CH

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fr

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fr\_CA

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fr-CA

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">en\_US, en\_AU, en\_IN, en\_NZ, en\_SA

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">en

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">en\_GB

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">en-GB

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">es\_ES

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">es

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">es\_AR, es\_HN, es\_MX, es\_PE, es\_PR

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">es-419 (espagnol d'Amérique latine)

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">de\_DE, de\_AT

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">de

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">nl\_NL, nl\_BE

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">nl

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">it\_IT

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">it

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pt\_PT

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pt-PT

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pt\_BR

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pt-BR

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ar\_SA

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ar

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">bg\_BG

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">bg

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ca\_ES

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ca

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">da\_DK

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">da

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">el\_GR

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">el

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">et\_EE

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">et

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fa\_IR

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fa

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fi\_FI

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">fi

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">he\_IL

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">iw

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">hu\_HU

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">hu

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">is\_IS

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">is

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ja\_JP

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ja

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">nb\_NO

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">no

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pl\_PL

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">pl

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ro\_RO

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ro

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ru\_RU, ru\_UA

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">ru

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">sl\_SI

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">sl

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">sv\_SE

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">sv

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">tr\_TR

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">tr

</td></tr><tr><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">zh\_CN

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">zh-CN

</td></tr><tr style="background-color: rgb(232, 241, 243);"><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">zh\_TW

</td><td style="padding: 8px 10px; border: 1px solid rgb(221, 221, 221); vertical-align: top;">zh-tw

</td></tr></tbody></table>

<p class="callout info">Toute autre langue non listée ci-dessus ouvre Google Maps en anglais.</p>

# 7. LIMITES

# Limites et points d'attention

- ***Le module ne géocode pas les adresses et n'affiche pas de carte dans Dolibarr :*** il se limite à un lien vers le site Google Maps.
- ***La précision du positionnement dépend entièrement de la qualité de l'adresse saisie*** et de la base de données Google. Une adresse incomplète (sans code postal ou sans ville) peut aboutir à un résultat approximatif ou à plusieurs propositions dans Google Maps.
- Les adresses des utilisateurs Dolibarr, des entrepôts, des projets et des événements ne sont pas concernées.
- Le lien n'apparaît pas dans les listes, les documents PDF ni les e-mails, uniquement sur les fiches consultées à l'écran.
- Le droit **« Utiliser ZenFusion Maps »** n'est pas vérifié à l'affichage (voir chapitre 4).
- Le module Dolibarr natif **« Google »** propose également une option de carte sur la fiche Tiers. Si les deux sont actifs, ZenFusion Maps remplace l'affichage standard de l'adresse et prend le dessus sur cette option.
- L'usage de Google Maps est soumis aux conditions d'utilisation de Google. Le clic sur le lien transmet l'adresse à Google.

# 8. DÉPANNAGE

# Questions fréquentes et dépannage

#### **Le marqueur n'apparaît pas sur la fiche.**

- Vérifier que le module est bien activé (Configuration &gt; Modules).
- Vérifier que le champ Adresse de la fiche est renseigné : sans adresse, rien n'est affiché.
- Vérifier qu'il s'agit bien d'une fiche Tiers, Contact ou Adhérent.
- Vider le cache du navigateur (Ctrl + F5) si le module vient d'être activé.

#### **Google Maps ne trouve pas l'adresse ou pointe au mauvais endroit.**

- Compléter l'adresse dans ***Dolibarr*** : rue, code postal, ville et pays.
- Éviter les abréviations non standard ou les commentaires dans le champ adresse (« 2e étage », « sonner chez… »), qui perturbent la recherche.
- Les boîtes postales et les mentions CEDEX ne sont pas localisables ; le module retire déjà les mentions CEDEX, mais une adresse constituée uniquement d'une boîte postale renverra un résultat au niveau de la ville.

#### **Google Maps s'ouvre dans la mauvaise langue.**

- Vérifier la langue définie dans la fiche de l'utilisateur (menu Utilisateurs &amp; Groupes &gt; fiche &gt; Langue par défaut). Le module suit cette langue.

#### **Le clic n'ouvre rien.**

- Vérifier que le navigateur autorise l'ouverture de nouveaux onglets ou de fenêtres surgissantes (pop-up) pour l'adresse de l'instance ***Dolibarr***.
- Vérifier que le poste dispose d'un accès à Internet.

<p class="callout info">Un utilisateur sans le droit **« Utiliser ZenFusion Maps »** voit tout de même le lien.</p>

- Comportement normal dans la version actuelle : le droit est déclaré mais non contrôlé (voir chapitre 4).