Line 21:
Line 21:
|status=stable
|status=stable
|prerequisites=PHP >= 7.2
|prerequisites=PHP >= 7.2
−
|minversion=11.0+
+
|minversion=17.0+
- Votre instance doit être sur une URL sécurisée (elle doit commencer par https:// et non par http://)
- Votre instance doit être sur une URL sécurisée (elle doit commencer par https:// et non par http://)
Line 37:
Line 37:
Intègre des fonctions Google dans Dolibarr:
Intègre des fonctions Google dans Dolibarr:
−
*Synchronise les tiers, contacts ou adhérents saisi dans Dolibarr vers Google Contacts.
+
*Synchronise les tiers, contacts ou adhérents saisi dans Dolibarr vers Google Contacts (pas de synchro dans le sens Google vers Dolibarr). Attention, Google impose une limite de 25 000 contacts.
−
*Ajoute un menu avec une vue d'agenda Google dans un onglet à côté de l'onglet vue agenda standard.
+
*Synchronise tout événement saisi dans Dolibarr vers l'agenda Google (automatique dans le sens Dolibarr vers Google, requiert un click sur un lien pour le sens Google version Dolibarr).
−
*Synchronise tout événement saisi dans Dolibarr vers l'agenda Google.
*Ajoute un pictogramme à coté des adresses. Un clic fait apparaître l'adresse au sein d'une carte Google Maps.
*Ajoute un pictogramme à coté des adresses. Un clic fait apparaître l'adresse au sein d'une carte Google Maps.
*Offre une vue sur Google Maps de la position de tous ses clients ou adhérents.
*Offre une vue sur Google Maps de la position de tous ses clients ou adhérents.
Line 55:
Line 54:
==Configuration Google Contacts==
==Configuration Google Contacts==
−
Le module permet de réaliser une synchronisation de vos contacts Dolibarr avec votre annuaire Google contact. Les éléments pouvant être synchronisés sont:
+
Le module permet de réaliser une synchronisation de vos contacts Dolibarr avec votre annuaire Google contact (et uniquement dans ce sens). Les éléments pouvant être synchronisés sont:
*Les tiers
*Les tiers
Line 83:
Line 82:
−
4) Le Google Client ID et le Google Client Secret. Vous pouvez créer votre Google Client ID et Secret depuis la page {{ModuleGoogleUrlToCreateApiAccount}}, menu "API & Services" -> "Identifiants". Cliquer sur "Créer un client ID" et choisir "Web Application", positionner "Allowed Javascript origin" à vide et positionner "URI de Redirection" sur la valeur proposée dans le champ "Note" sur la page de configuration Dolibarr. Ce doit être une valeur du genre http://mycompanydomain/.../google/oauth2callback.php
+
4) Le Google Client ID et le Google Client Secret. Vous pouvez créer votre Google Client ID et Secret (compte OAuth2) depuis la page {{ModuleGoogleUrlToCreateApiAccount}}, menu "API & Services" -> "Identifiants". Cliquer sur "Créer un client ID" et choisir "Web Application", positionner "Allowed Javascript origin" à vide et positionner "URI de Redirection" sur la valeur proposée dans le champ "Note" sur la page de configuration Dolibarr. Ce doit être une valeur du genre https://mycompanydomain/.../google/oauth2callback.php. Si l'URL proposée n'est pas en HTTPS, pensez à vérifier que votre instance est bien accessible en https et que l'entrée $dolibarr_main_url_root commence bien par https:// dans le fichier conf.php de Dolibarr.
−
Ensuite cliquer sur "Créer". Vous obtiendrez un nouveau Client ID et un Code secret du client.
+
+
Ensuite cliquer sur "Créer". Vous obtiendrez un nouveau Client ID et un Code secret du client.
Line 100:
Line 100:
'''Troubleshooting'''
'''Troubleshooting'''
+
+
*[[File:Warning.png]] Note: Si vous avez l'erreur 400: redirect_uri_mismatch, c'est que l'étape 4 de la configuration n'a pas été faite ou mal faite (exemple: une faute de frappe a été faite lors de la saisie de l'URL dans la configuration Google)
*[[File:Warning.png]] Note: Une erreur possible est que Google refuse l'accès même si votre configuration est correcte, juste parce que votre serveur qui héberge Dolibarr ne se situe pas dans le même pays que vous.
*[[File:Warning.png]] Note: Une erreur possible est que Google refuse l'accès même si votre configuration est correcte, juste parce que votre serveur qui héberge Dolibarr ne se situe pas dans le même pays que vous.
Line 117:
Line 119:
L'autre fonctionnalité est d'écrire / mettre à jour un événement dans Google Calendar, chaque fois qu'un événement est ajouté / mis à jour dans Dolibarr.
L'autre fonctionnalité est d'écrire / mettre à jour un événement dans Google Calendar, chaque fois qu'un événement est ajouté / mis à jour dans Dolibarr.
−
La synchronisation se fait par défaut vers un Agenda commun (1 compte Google), mais il est possible de définir un Agenda différent pour chaque utilisateur à conditions que ces agendas soit partagés et accessible au compte de service d'accès qui lui est créé de manière unique (voir plus loin).
+
La synchronisation se fait par défaut vers un Agenda commun (1 compte Google), mais il est possible de définir un Agenda différent pour chaque utilisateur à conditions que ces agendas soit partagés et accessible au compte de service d'accès qui, lui, est créé de manière unique (voir plus loin).
−
Pour synchroniser de Dolibarr vers un agenda, aller sur la page de configuration du module, onglet "Synchro vers Google Agenda", et réglez "Créer un événement Google dans Google Calendar lors de la création d'un événement Dolibarr" sur "Oui".
+
Pour synchroniser Dolibarr vers un ou des agendas, aller sur la page de configuration du module, onglet "Synchro vers Google Agenda", et réglez "Créer un événement Google dans Google Calendar lors de la création d'un événement Dolibarr" sur "Oui".
−
Ensuite, vous devez configurer et entrer les clés API fournies par Google. Ceci se fait en plusieurs étapes.
+
Ensuite, vous devez configurer et entrer les clés API fournies suite à la création d'un compte de service Google. Ceci se fait en plusieurs étapes.
Line 134:
Line 136:
#Cliquer sur le lien "Parametres"
#Cliquer sur le lien "Parametres"
#Cliquer sur le nom de l'Agenda voulu pour en afficher les détails.
#Cliquer sur le nom de l'Agenda voulu pour en afficher les détails.
−
#Trouver la ligne "Adresses de l'URL", vous verrez le texte "ID Agenda : theagendaid@gmail.com" comme sur cet exemple de copie d'écran (cliquer 2 fois pour élargir l'image au maximum)
+
#Trouver la ligne "Adresses de l'URL", vous verrez le texte "ID Agenda : theagendaid@gmail.com" comme sur cet exemple de copie d'écran
[[File:Find your Google Calendar or Agenda ID.png|400px]]
[[File:Find your Google Calendar or Agenda ID.png|400px]]
−
Renseignez cet ID dans le champ "Agenda ID" de la page de configuration de Dolibarr. C'est vers cet agenda que seront synchronisé tous les évènements.
+
Renseignez cet ID dans le champ "Agenda ID" de la page de configuration de Dolibarr (pour une synchro vers un agenda unique partagé). C'est vers cet agenda que seront synchronisé tous les évènements.
−
Vous pouvez toutefois laisser ce champ vide et renseigner à la place l'Agenda ID cible au niveau de la fiche de chaque utilisateur (dans l'onglet "Google setup" ou "Configuration Google" de la fiche utilisateur). Chaque utilisateur pouvant avoir son propre agenda. Dans ce cas, c'est le propriétaire de l'événement Dolibarr qui sera utilisé pour connaitre l'agenda cible de la synchronisation. Chaque événement Dolibarr ne peut donc aller que vers un seul agenda (si il y a plusieurs utilisateurs affectés à l événement, ce sera le propriétaire qui sera déterminant). Notez aussi que dans ce cas, l'étape 5 doit être faite pour chaque compte google.
+
Ou bien, vous pouvez laisser ce champ "Agenda ID" vide et renseigner à la place l'Agenda ID cible au niveau de la fiche de chaque utilisateur (dans l'onglet "Google setup" ou "Configuration Google" de la fiche de chaque utilisateur). Chaque utilisateur pouvant alors avoir son propre agenda Google. Dans ce cas, c'est le propriétaire de l'événement Dolibarr qui sera utilisé pour connaitre l'agenda cible de la synchronisation. Chaque événement Dolibarr ne peut donc aller que vers un et un seul agenda Google (si il y a plusieurs utilisateurs affectés à l'événement, ce sera le propriétaire de l’événement, qui lui est unique, qui sera déterminant). Notez aussi que dans ce cas, l'étape 5 doit être faite pour chaque compte google.
−
3) Vous devez créer un compte/email de service sur la page {{ModuleGoogleUrlToCreateApiAccount}}, menu "Identifiants". Cliquez sur "Créer un identifiant" et choisissez "Compte de service", puis choisir le format "JSON" puis "Créer". Vous obtiendrez:
+
3) Vous devez créer un *compte/email de service* depuis la page {{ModuleGoogleUrlToCreateApiAccount}}, menu "Identifiants". Cliquez sur "Créer un identifiant" et choisissez "Compte de service". Choisir un nom pour ce compte de service et cliquer sur "Valider/Terminer". Ensuite, allez dans l'onglet "Clés" de ce compte de service, créer une clé de type "JSON" puis "Créer" pour obtenir le fichier JSON. Après cette étape vous avez donc:
−
*un nouveau compte de service avec un client ID de ce compte de service client et un e-mail de ce compte de service. Vous devez ici récupérer l''''e-mail''' du compte de service.
+
*un nouveau compte de service avec un e-mail de ce compte de service. Vous devez ici récupérer l''''e-mail''' du compte de service
−
*Un fichier .json a aussi du se télécharger. On utilisera ce fichier téléchargé à l'étape suivante.
+
*Un fichier .json.
−
Note: Que vous ayez mis à l'étape 2 un seul compte Google cible pour la synchronisation ou 1 sur chaque fiche utilisateur, vous n'aurez toujours qu'un seul compte de service à créer. Par contre ce compte devra avoir les droits sur tous les comptes des autres (voir étape 5)
+
Note: Que vous ayez mis à l'étape 2 un seul compte Google cible pour la synchronisation ou un compte Google cible différent sur chaque fiche utilisateur, vous n'aurez toujours qu'un et un seul compte de service à créer. Par contre ce compte devra avoir les droits d'accès sur tous les comptes/agenda des autres (voir étape 5)
Il est aussi possible de créer un compte de service par la page {{ModuleGoogleUrlToCreateApiAccountBis}}.
Il est aussi possible de créer un compte de service par la page {{ModuleGoogleUrlToCreateApiAccountBis}}.
−
4) Soumettez l'email du compte de service ainsi que le fichier .json sur la page de configuration du module sous Dolibarr, onglet "Synchro vers Google Agenda".
+
4) Soumettez l'email du compte de service, ainsi que le fichier .json obtenu à l'étape 3, sur la page de configuration du module sous Dolibarr, onglet "Synchro vers Google Agenda".
Line 167:
Line 169:
'''TroubleShooting'''
'''TroubleShooting'''
−
*Si vous recevez l'erreur "ERROR Error calling POST https://www.googleapis.com/calendar/v3/calendars/yourcalendarid/events: (404) Not Found": Vérifiez que l'étape 5 a été fait.
+
* Si vous recevez l'erreur "Client error: `POST https://oauth2.googleapis.com/token` resulted in a `401 Unauthorized` response: { 'error': 'unauthorized_client', 'error_description': 'Client is unauthorized to retrieve access tokens using this (truncated...)" :
+
** Si vous avez un compte Gmail gratuit, désactivez l'option « Ajouter également la liste des participants à l'événement » (non prise en charge avec ces comptes).
+
** Si vous avez Google Suite, vous pouvez également désactiver l'option « Ajouter également la liste des participants à l'événement » (la version récente de l'API Google ne prend pas très bien en charge cette option), ou vous pouvez essayer d'« autoriser le compte de service à accéder aux données au nom d'un utilisateur » comme expliqué dans la documentation Google : https://support.google.com/a/answer/162106?hl=fr&fl=1&sjid=4000630194749189449-NA, chapitre « Configurer la délégation à l'échelle du domaine pour un client ». Voici le résumé ici : Accédez au menu Sécurité > Contrôle d'accès et de données > Contrôles API > Gérer la délégation à l'échelle du domaine. Cliquez sur Ajouter un nouveau. Saisissez l'ID client pour le compte de service ou le client OAuth2. Dans les étendues OAuth, ajoutez les scopes https://www.googleapis.com/auth/calendar et https://www.googleapis.com/auth/calendar.events. Cliquez sur Autoriser. Si vous obtenez une erreur, il se peut que l'ID client ne soit pas enregistré auprès de Google ou qu'il y ait des scopes en double ou non prises en charge. Attendez 24 heures une fois la modification faite puis tester une synchro.
+
+
*Si vous recevez l'erreur "ERROR { 'error': { 'code': 403, 'message': 'Google Calendar API has not was used in project... before or it is disabled..." : Vérifiez que l'étape 1 a était faite.
+
+
*Si vous recevez l'erreur "ERROR Error calling POST https://www.googleapis.com/calendar/v3/calendars/yourcalendarid/events: (404) Not Found": Vérifiez que l'étape 5 a été faite.
−
*Si vous recevez l'erreur "ERROR Error calling POST https://www.googleapis.com/calendar/v3/calendars/yourcalendarid/events: (403) Forbidden": Vérifiez que l'étape 5 a été fait et que la permission accordée est lire et écrire et non lire seulement.
+
*Si vous recevez l'erreur "ERROR Error calling POST https://www.googleapis.com/calendar/v3/calendars/yourcalendarid/events: (403) Forbidden": Vérifiez que l'étape 5 a été faite et que la permission accordée est lire et écrire et non lire seulement.
−
*[[File:Warning.png]] Note: Une erreur possible est que Google refuse l'accès, même si votre configuration est correcte, simplement parce que le serveur hôte que Dolibarr est situé dans un autre pays/région que le pays/région où vous utilisez Google Suite en général.
+
*[[File:Warning.png]] Note: Une erreur possible est que Google refuse l'accès, même si votre configuration est correcte, simplement parce que le serveur hôte de Dolibarr est situé dans un autre pays/région que le pays/région où vous utilisez Google Suite en général.
Pour vérifier si Google a verrouillé votre accès pour cette raison, aller sur la page https://security.google.com/settings/security/activity?hl=fr après l'échec.
Pour vérifier si Google a verrouillé votre accès pour cette raison, aller sur la page https://security.google.com/settings/security/activity?hl=fr après l'échec.
Si il apparaît que Google a bloqué les tentatives d'accès à partir d'un endroit inhabituel, accepter cette tentative. Ensuite, vous devez attendre 24 heures pour essayer de nouveau.
Si il apparaît que Google a bloqué les tentatives d'accès à partir d'un endroit inhabituel, accepter cette tentative. Ensuite, vous devez attendre 24 heures pour essayer de nouveau.
−
−
*[[File:Warning.png]] Note: Une autre erreur possible est que Google refuse l'accès, même si votre configuration est correcte, parce que vous avez activé l'option Google validation en 2 étapes. Pour vérifier si vous avez effectivement activé cette option, aller à la page: {{GoogleURLToSetup2StepValidation}}
−
−
Si dans "validation en deux étapes," vous avez "On", le problème est trouvé. Vous n'avez pas besoin de désactiver l'option. Vous pouvez résoudre le problème comme suit: Cliquez sur le lien '''Mot de passe d'application''' près de "validation en deux étapes." Cliquez sur le lien "Gérer les mots de passe spécifiques aux applications". Entrez un nom, par exemple "Dolibarr" et validez. Un mot de passe sera généré par Google. Retournez à la page de configuration du module Google Dolibarr, et entrer ce mot de passe dans la page de configuration du module, à la place de votre mot de passe habituel, puis cliquez sur '''Enregistrer'''. Réessayez la synchronisation de test.
*[[File:Warning.png]] Note: Une autre erreur possible est que Google refuse l'accès, même si votre configuration est correcte, parce que le serveur sur lequel tourne Dolibarr ou l'ordinateur avec lequel vous y accédez n'est pas à l'heure.
*[[File:Warning.png]] Note: Une autre erreur possible est que Google refuse l'accès, même si votre configuration est correcte, parce que le serveur sur lequel tourne Dolibarr ou l'ordinateur avec lequel vous y accédez n'est pas à l'heure.
Line 184:
Line 188:
===Synchronisation des événements Google Agenda vers Dolibarr===
===Synchronisation des événements Google Agenda vers Dolibarr===
−
Cette fonction nécessite un acte manuelle à chaque besoin de synchronisation.
+
Cette fonction nécessite un acte manuel à chaque besoin de synchronisation:
Aller dans le menu "Agenda/Événements", sur la vue "Liste". Vous devez cliquez sur le lien "Rafraîchir les événements depuis Google"
Aller dans le menu "Agenda/Événements", sur la vue "Liste". Vous devez cliquez sur le lien "Rafraîchir les événements depuis Google"
Line 235:
Line 239:
==Utilisation fonction Agenda Google==
==Utilisation fonction Agenda Google==
−
−
===Si vous avez activé la synchro Dolibarr vers Google calendar===
*Créer un événement dans Dolibarr et allez voir dans google Calendar (depuis votre smartphone par exemple). L’événement doit apparaître.
*Créer un événement dans Dolibarr et allez voir dans google Calendar (depuis votre smartphone par exemple). L’événement doit apparaître.
Line 247:
Line 249:
[[File:Link for sync from google.png|border]]
[[File:Link for sync from google.png|border]]
</div>
</div>
−
−
===Si vous avez activé la fonction affichage de Google calendar===
−
Aller dans le menu Agenda. Choisissez l'onglet Agenda Google, le ou les agendas Google configurés s'afficheront alors.
−
Si vous avez définis plusieurs agenda, vous pouvez restreindre la vue sur l'un à l'autre uniquement via le menu gauche.
−
Il s'agit ici d'un affichage en lecture seule.
−
Pour faire des ajouts d’événements dans cet agenda, il faut cliquer sur le lien "+ Google calendar" en bas à droite de l'agenda.
−
−
<div class="divforimgcentpercent">
−
[[File:screen_shot_google_view_agenda.png|border]]
−
</div>
−
−
Pour des raisons de sécurité imposées par Google, la vue agenda de Google ne s'affichera correctement que si vous êtes logué sous Google.
−
Afin de faciliter cela, il est possible de configurer une clé pour permettre à l'application de proposer la Logon Google si vous n'êtes pas déjà connecté (Voir pour cela la dernière rubrique de paramètres de l'onglet Agenda de la page de configuration du module Google).
==Utilisation fonction GMaps==
==Utilisation fonction GMaps==
Line 271:
Line 260:
−
De plus, à partir de la version 3.4, vous avez aussi accès à une boite sur la page d'accueil présentant un lien pour voir l'ensemble de vos Tiers, ou Adhérents sur une même carte.
+
De plus, vous avez aussi la possibilité d'activer un widget sur la page d'accueil présentant un lien pour voir l'ensemble de vos Tiers, Contacts ou Adhérents sur une même carte.
<div class="divforimgcentpercent">
<div class="divforimgcentpercent">