Sélectionner une page

Le cas d’usage est le suivant : un client a créé un champ « Unités » de type « nombre entier » dans son Zoho CRM et il réalise après plusieurs mois d’utilisation qu’il a maintenant besoin d’un champ « Unités » en « décimal ».

Sauf qu’il existe déjà des workflows s’appuyant sur ce champ et des milliers d’enregistrements.

La solution : 

  1. Création d’un champ décimal « UnitésDec » par exemple
  2. Création d’une fonction permettant de prendre toutes les valeurs du champ « Unités » et de les copier dans le champ « UnitésDec »
  3. Exécution de la fonction par elle-même (en standalone)
  4. Renommage des champs en commençant par l’actuel champ « Unités » à renommer en « UnitésOld » par exemple et renommage du champ « Unitésdec » en « Unités ». Attention de reprendre le même nom. Attention de renommer également les noms API. Ce renommage permettra aux fonctions et workflow existants de continuer à fonctionner sans modification.
  5. Supprimer ou cacher les champ « UnitésOld » de toutes les dispositions.

 

Le code de la fonction de Mis à Jour est relativement simple mais il comporte des subtilités que je décris ci dessous : 

 

res = zoho.crm.getRecords(« Prestations »);

for each ele in res

{

 mp = Map();

 mp.put(« Unites_dec »,ifnull(ele.get(« Unites »), » »));

 update = zoho.crm.updateRecord(« Prestations »,ele.get(« id »),mp);

}

return « s »;

 

Tout d’abord je prends l’ensemble de mes enregistrements concernés, ici le module personnalisé « Prestations ».

res = zoho.crm.getRecords(« Prestations »);

Ensuite je créée une boucle pour passer dans tous les enregistrements un à un 

for each ele in res

{

}

Enfin dans la boucle je programme les actions. 

Je crée une Map puis je vais chercher la valeur du champ « Unites »

Attention il s’agit du nom API du champ et pour trouver cette valeur j’ai besoin de faire appel à la commande.get

ele.get(« Unites »)

« ele » étant le diminutif d' »élément » que j’ai utilisé pour identifier un élément de ma boucle.

Afin de ne pas faire des actions dans le vide, je vérifie que la valeur du champ n’est pas nulle.

ifnull(ele.get(« Unites »)

Si elle est nulle je met un caractère vide dans la réponse

ifnull(ele.get(« Unites »), » »)

 

Et je pose cette valeur dans le nouveau champ

mp.put(« Unites_dec »,ifnull(ele.get(« Unites »), » »));

Une fois les valeurs bien copiées, il suffit de mettre à jour (Update) l’enregistrement.

Pour savoir quel enregistrement mettre à jour je vais chercher son ID.

ele.get(« id »)

Puis je vais mettre à jour

zoho.crm.updateRecord(« Prestations »,ele.get(« id »),mp)

 

Il ne me reste plus qu’à écrire une dernière ligne qui est obligatoire car la fonction que je viens d’écrire est une fonction StandAlone et celles-ci ont pour obligation de renvoyer une valeur (comme les fonctions de type Automation).

Dans ce cas précis la valeur n’a pas d’importance pour ma mise à jour mais la fonction StandAlone donnera une erreur si je n’écris pas cette ligne.

return « s »;

Il faut le savoir.

Je vous conseille de toujours garder une fonction comme celle là en bibliothèque dans votre Zoho CRM car à elle est facile à adapter à d’autres champs ou d’autres modules et permet de ne pas perdre de temps lorsque des mise à jour en masse plus compliquées que celles possible dans l’interface normale de Zoho CRM sont nécessaires .