Editer en liste en appelant une méthode 1 seul et unique fois

Bonjour,

J’ai une méthode qui permet d’avertir par email des responsables.
Cette méthode est appelé lorsque tous les responsables ont validé (Champ ddvPowValidate = 'Yes').

Le problème, c’est que en plus de l’édition classique à l’intérieur du formulaire, les responsables peuvent aussi valider en éditant la liste comme ci-dessous :

Du coup, pour chaque ligne modifiée, la méthode preValidate() est appelé. Par conséquent, ma méthode d’envoie d’email aux responsables sera appelé plusieurs fois (2 fois dans la capture d’écran ci-dessus).

Existe-il un moyen d’appelé 1 seul et unique fois une méthode lorsqu’on sauvegarde en éditant la liste ?

Bonjour,

Vous pouvez implémenter l’appel de mail dans le preSave() plutôt que le preValidate() et utiliser un hasChanged() sur l’attribut ddvPowValidate qui permettra d’envoyer le mail uniquement si la valeur de ce champ a changé.

Mais du coup, si je change 2 lignes, les mails partiront 2 fois. Or je veux qu’ils partent qu’une seul et unique fois.

La règle de gestion ne me parait pas claire. Est-ce qu’il faut envoyer un seul mail lorsque tout est à “Oui” ou lorsqu’un des éléments est passé à “Oui” ? Ou bien un autre cas ?

Envoyer 1 mail quand tout est à “Oui”. Désolé si ce n’était pas assez claire.

Une façon de répondre à ce besoin serait donc de regarder après un save si le nombre de lignes à “Oui” correspond au nombre total de lignes. Et peut être stocker au niveau du parent le fait qu’une notification a été envoyée - de manière à ne pas renvoyer une notification si jamais une des lignes est modifiée à nouveau.

1 Like

Merci de votre réponse.

J’ai juste besoin d’une confirmation pour savoir si tout pourra fonctionner.

Si j’ai une valeur A que je remplace par une valeur B.

Lors de l’appel de la méthode postSave() j’aurais bien

  • getFieldOldValue() = A et getFieldValue() = B ?

PS : Je pose cette question car cette méthode est appelée après la sauvegarde de la valeur. J’en ai besoin pour cette histoire de mail ci-dessus.

Tout à fait ! Et hasChanged() sera true

1 Like

Merci beaucoup pour votre réponse.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.