Zoho CRM : Deluge : comment mettre à jour des données d’un autre module lors d’une saisie.

par | 10 Juil 2019 | Code deluge, Confirmé, Zoho CRM

Le cas d’usage est courant, j’ai un champ identique qui se trouve dans deux modules différents : module 1 (Réservations par exemple) et module 2 (Programmes par exemple).

La date du programme (ici un programme immobilier et une date d’actabilité) peut être mise à jour par le gestionnaire de programmes dans le module Programmes mais parfois peut aussi être mise à jour par le conseiller immobilier dans le module Réservations (de lot dans un programme immobilier).

Il faut donc gérer la mise à jour par le conseiller immobilier du champ « date d’actabilité » en automatisant celle-ci dans le module Programmes dès qu’une modification est faite dans le module Réservations.


Ceci fera l’objet d’un Workflow qui se déclenche lors de la mise à jour du champ Date D’actabilité dans le module Réservations donc : 

Une fois le workflow créé, j’ai donc mon événement déclencheur. Il me faut maintenant écrire le code Deluge qui me permettra d’agir après le déclencheur

Je nomme la fonction et lui donne comme argument l’ID de l’enregistrement du module réservation sur lequel je suis lors du déclenchement.

La première ligne de mon code est souvent la même, je positionne dans une variable l’enregistrement courant.

 ReservDetail = zoho.crm.getRecordById("Deals",IDReserv.tolong()); 

Je fais donc une recherche par ID (le module Réservation est en fait le module affaires (Deals en nom d’API) que j’ai renommé. Et surtout je n’oublie pas d’ajouter le suffixe tolong()à l’ID pour que la recherche s’effectue bien sur la totalité de l’ID et non les premiers chiffres seulement.

 

J’ai ensuite besoin d’aller chercher l’ID du champ de recherche Programme dans l’enregistrement Réservation car c’est ce champ recherche qui fait le lien entre les modules Réservation et Programmes.

Je crée une variable dans laquelle je mets le choix effectué dans le champ recherche programme : 

 ReservChampID = ReservDetail.get("Programme"); 

Cette variable donne le résultat suivant : 

Il faut se rappeler qu’un champ de type recherche dans Zoho CRM est un champ particulier, c’est lui qui fait le lien entre deux modules et il contient deux valeurs : le texte choisi dans la liste sous la sous-variable « name » (attention tout en minuscules) et le numéro d’enregistrement (attention tout en minuscules aussi) dans le module lié, ici le module Programmes, dans la sous-variable « id » (attention tout en minuscules aussi) .

Si je veux pouvoir ensuite recherche l’enregistrement lié pour le mettre à jour j’ai donc besoin de la valeur de la sous-variable « id ». Donc pour l’obtenir je crée une autre variable dans laquelle je stocke cette sous variable.

 ReservID = ReservChampID.get("id"); 

Je vous avoue que le vocabulaire « sous variable » n’existe pas en programmation. C’est une invention qui me permet de bien identifier que je ne peux obtenir cette valeur qu’en allant la chercher dans la variable mère (encore un vocabulaire créatif !).

J’ai donc maintenant une variable avec l’enregistrement en cours du module de départ Réservations et L’ID de l’enregistrement du module d’arrivée Programmes.

Il ne me reste plus qu’à écrire un code très classique posant les valeurs par map et mettant à jour l’enregistrement dans le module d’arrivée avec un zoho.crm.updateRecord.

mp = Map(); 
mp.put("Date_d_actabilit",ifnull(ReservDetail.get("Date_d_actabilit"),"")); 
updateResp = zoho.crm.updateRecord("Programmes",ReservID,mp); 

Mon cas d’usage n’appelle la mise à jour que d’un champ mais si le besoin nécessitait la mise à jour de de plusieurs champs il suffirait de multiplier les lignes mp.put comme suit : 

mp = Map(); 
mp.put("Date_d_actabilit",ifnull(ReservDetail.get("Date_d_actabilit"),"")); 
mp.put("Date_de_livraison",ifnull(ReservDetail.get("Date_livraison_programme"),"")); 
updateResp = zoho.crm.updateRecord("Programmes",ReservID,mp); 

Et voilà.

Nos Services et prestations

Support

Audit

Webinaires

Youtube

0 commentaires