Zoho CRM : Deluge : comment mettre à jour tous les enregistrements liés d’un module

par | 16 Juil 2019 | Code deluge, Confirmé, Ventes, Zoho CRM

Je reprends le cas d’usage de l’article précédent : 

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

Que je vous rappelle : 

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).

Dans le précédent article j’ai montré comment gérer le fait que le conseiller immobilier saisissait une valeur de la date d’actabilité dans le module lié (ici la Réservation) et le code Deluge mettait à jour le champ identique dans le module de départ (ici le Programme).

Mais je n’avais pas géré le fait que dans le module de départ (Programmes) le gestionnaire des Programmes immobiliers peut lui aussi mettre à jour la date d’actabilité et là il faudrait que Zoho CRM mette à jour tous les enregistrements dans le module Réservations qui sont liés à la date d’actabilité.

 

Autrement dit, dans l’article précédent je gérais une mise à jour dans une relation unique (une Réservation vers un Programme), dans cet article je vais gérer la relation multiple : un Programme met à jour n Réservations.

 

Avant toute chose je ne peux faire une fonction qui sera appelée lors de la mise à jour du champ dans Programme, comme ce champ là se met déjà à jour par une fonction cela ferait une boucle infinie.

Donc je propose de lancer la fonction que je vais écrire par un bouton présent par exemple dans l’enregistrement.

 

Je crée donc un bouton dans la fiche Programme.

 

Ensuite je vais créer la fonction avec les arguments nécessaires : 

L’ID du module où je suis (ici le module Programme).

La valeur du champ en modification (ici la date d’actabilité)

 

 

 

La PREMIÈRE fonction utilisé est getRelatedRecords qui permet d’aller chercher une sélection d’enregistrements correspondant liés : 

 ReserRelated = zoho.crm.getRelatedRecords("R_servation","Programmes",IDProg.tolong()); 

Comment trouver le nom API de la liste associée ? Celui ci n’est pas forcément identique au nom du module, voici comment trouver ce nom API : 

J’écris ensuite une simple boucle qui va mettre à jour les enregistrements sélectionnés avec la nouvelle valeur du champ.

 for each reserv in ReserRelated 

 { 
  mp = Map(); 
  mp.put("Date_dactabilite",DateAct); 
  update = zoho.crm.updateRecord("Deals",reserv.get("id").tolong(),mp); 
 } 

 

Ce code s’avère finalement très simple et clair. La ligne mp.put donne simplement la valeur d’un des arguments de la fonction elle-même et le updateRecord suffit à lui-même une fois que j’ai identifié l’ID de l’enregistrement. Attention il s’agit, comme noté dans l’article précédent, de l’id en minuscules qui permet de trouver l’ID de l’enregistrement.

 

Le résultat final :