Quel est le besoin ?
Souvent dans les projets, nous voulons contrôler et guider les utilisateurs pour suivre les process. Dans certains cas il arrive que les utilisateurs sautent certaines étapes du process.
Dans le cas suivant, on prend l’exemple du champ StageName d’une opportunité. Je souhaite que tous les utilisateurs passent par chaque étape avant de pouvoir fermer l’opportunité.
Comment faire ça ?
Par ailleurs, pour pouvoir contrôler le fait que l’on puisse passer du « Stage 1 » vers le « Stage 2 » uniquement, il nous faudra tester l’ancienne valeur du champ et la nouvelle valeur.
AND(
ISPICKVAL(PRIORVALUE(StageName), "Stage 1"),
NOT(ISPICKVAL(StageName, "Stage 2"))
),
Cela signifie donc :
SI ancienne valeur == Stage 1 ET nouvelle valeur != Stage 2
ALORS Erreur
Aussi, je désire aussi implémenter le cas où je peux passer l’opportunité au stage « Closed Lost » depuis n’importe quel stage.
Implémentation
Voici l’implémentation complète pour mon cas :
AND(
ISCHANGED(StageName),
NOT(ISPICKVAL(StageName, "Closed Lost"))
OR(
AND(
ISPICKVAL(PRIORVALUE(StageName), "Potentiel Malette"),
NOT(ISPICKVAL(StageName, "Oral commitment"))
),
AND(
ISPICKVAL(PRIORVALUE(StageName), "Oral commitment"),
NOT(ISPICKVAL(StageName, "Written commitment"))
),
AND(
ISPICKVAL(PRIORVALUE(StageName), "Written commitment"),
NOT(ISPICKVAL(StageName, "Closed Won"))
),
OR(
ISPICKVAL(PRIORVALUE(StageName), "Closed Won"),
ISPICKVAL(PRIORVALUE(StageName), "Closed Lost")
)
)
)
Voilà, maintenant vous pouvez l’utiliser pour n’importe quel path !