Avant de décrire le code Deluge nécessaire, je suppose que vous avez les connaissances suivantes avant de lire cet article : 

– connaissance des Modèles d’automatisation (Blueprint in English)

– connaissance basique de Deluge

– connaissance basique de l’écriture d’une fonction

– bonnes connaissance de la personnalisation des modules (création de champs).

  

Voici mon cas d’usage,  j’ai un nouveau client et j’ai créé un champ "Qualif. Client" dans lequel j’ai deux valeurs : 1 pour "froid" et 2 pour "chaud.

Lorsqu’un client est 2, je souhaiterais que Zoho CRM crée automatiquement une affaire.

Et dans cette affaire, je voudrais que Zoho CRM mettent automatiquement le nom de la société de l’affaire.

  

Autrement dit je voudrais que lorsque je change la valeur du champ "Qualif. Client" de 1 à 2 , Zoho CRM travaille pour moi….

  

Voici le code Deluge qu’il faut écrire.

Je créée une fonction

Comme argument de la fonction, je souhaite l’ID du module de départ, c’est à dire la société (Nom API : Accounts).

  

Puis j’écris le code suivant: 

1 ClientDetails = zoho.crm.getRecordById("Accounts",ClientID.tolong());

  /*Cette première ligne sert à récupérer dans une variable de type collections (ClientDetails) l’ensemble des données étant dans l’enregistrement correspondant à l’ID voulu en argument.  */

2 Mp="map();

/*   je créé une Map qui va me servir à faire voyager une copie des données d’une module à un autre  

   pour ajouter une donnée existante dans le module de départ  */

3 mp.put("Societe",ifnull(ClientDetails.get("Account_Name"),""));

  /*J’appelle donc le module de départ "Societe", je vais chercher la valeur du champ du nom de la société dans le module de départ et je fais cela que si il existe une valeur dans ce champ.  */

4 mp.put("Deal_Name","Affaire Automatique");

  /*j’ajoute un nom à l’affaire. Ce nom est une constante (pour l’instant). Autrement dit toues les affaires auront ce nom là.*/  

5 createIt="zoho.crm.createrecord("Deals",mp);

/* je créee une affaire.

  

Pour une société qui aurait comme nom "Société Test", voici ce que cela donne : 

 

Évidemment le fait que toutes les affaires ainsi créées se nommeraient toutes "Affaire Automatique" n’est pas souhaitable.

 

Comment changer la ligne de code concernée : 

 

4 mp.put("Deal_Name","Affaire Automatique");

 

En fait il suffit d’appeler la valeur du champ Société, valeur que l’on vient d’appeler la ligne au dessus, donc à la place de "Affaire Automatique" je place le code suivant : 

mp.put("Deal_Name",(ClientDetails.get("Account_Name")) + "/" + "Affaire Automatique");

Attention de bien rajouter les parenthèses entrantes et sortantes autour de : ClientDetails.get("Account_Name")

Sinon vous aurez une erreur.

 

Voici la ligne corrigée

mp.put("Deal_Name",(ClientDetails.get("Account_Name")) + "/" + "Affaire Automatique");

 

Et le résultat à l’écran

 

 

Évidemment la deuxième partie du nom peut aussi être dynamique et en lieu et place d”Affaire Automatique" des renseignements pertinents à vos cas d’usages peuvent s’ajouter avec la même logique que pour la première partie du nom.

 

Bien, notre code fonctionne, 

 

Comment faire qu’il fonctionne automatiquement à chaque changement de 1 à 2 dans le champ "Qualif. Client" de notre fiche société.

 

Il suffit d’intégrer l’appel à ce champ dans un modèle d’automation (BluePrint).

 

Comme vous le voyez dans la transition "vers2" il y a une action personnalisée dans l’après.

 

Ne pas oublier de donner comme argument de la fonction le client ID.

 

Petite astuces complémentaire :

Si le champ dont vous souhaitez récupérer la valeur est un champ de recherche (lookup) alors la ligne de code habituelle ne fonctionne pas ou plus exactement elle remonte une ID pour le champ look up et non la valeur visible sélectionnée. Il faut alors appeler le "name" du champ lookup et ceci quelquesoit le nom du champ….en fait, par défaut le champ visible dans le look up est le champ Name du module, donc ce raccourci "name" fonctionne tout le temps quelque soit le module.

 

Cas d’usage : 

Dans le module "Société" j’ai un champ de recherche sur le module produit : champ intitulé : "ProduitsRech".

La ligne traditionnelle suivante donne une erreur de typage de donnée : 

mp.put("produit",ifnull(ClientDetails.get("ProduitsRech"),""));

 

Il faut ajouter : .get("name")

mp.put("produit",ifnull(ClientDetails.get("ProduitsRech").get("name"),""));

 

Attention de bien ajouter ceci après un point et non après la virgule.

 

En suivant ce principe, un champ des possibles assez vaste s’ouvre à nous avec Zoho CRM.