Project

General

Profile

Development #69165

Action formulaire de wkflw : passer à none le contenu d'un champ qui n'est pas rempli

Added by Anaïs Ecuvillon 3 months ago. Updated 2 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
15 September 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

(bon le titre est à revoir, ce n'est pas très explicite)

J'utilise l'action formulaire de workflow pour les échanges entre l'usager et l'agent (en remplacement des actions commentaires et fichier) dans un statut dans lequel la demande peut passer plusieurs fois :
https://demarches-aecuvillon.test.entrouvert.org/backoffice/workflows/48/status/2/

Olivier a levé un comportement non voulu (https://dev.entrouvert.org/issues/68984#note-5), le contenu d'un champ du formulaire est dupliqué dans l'historique de mon workflow, alors que j'ai effectué un saut manuel sans remplir ce champ obligatoire, rendu possible par la case ignore le formulaire.

D'un point de vue technique, ça fonctionne. Mais d'un point de vue fonctionnel c'est pas ok.
Il faudrait que le contenu du champ soit "vidé" à chaque fois que j'affiche mon formulaire.

Du coup, j'ai imaginé pré-remplir le champ en question avec une condition du genre :

{% if form_workflow_form_echange_var_message != form_workflow_form_echange_x_var_message %}{{ form_workflow_form_echange_var_message}}{% else %} {% endif %}

fonctionnellement ça résoudrait le problème, mais je ne sais pas si c'est propre, et il me manque une variable pour remplacer form_workflow_form_echange_x_var_message qui viendrait récupérer la dernière valeur existante (c'est le rôle de form_workflow_form_echange_var_message je dirai), mais qui soit différente de form_workflow_form_echange_var_message.
Est-ce que ça existe ? Ou alors avez-vous une autre solution à me proposer ?

Une demande pour voir : https://demarches-aecuvillon.test.entrouvert.org/backoffice/management/test-new-workflow/9/


Related issues

Related to w.c.s. - Development #69513: Action formulaire : enregistrer dans l'historique le contenu des champsNouveau23 September 2022

Actions
Related to w.c.s. - Development #64258: Simplification : étoffer l'action formulaireNouveau15 April 2022

Actions

History

#2

Updated by Stéphane Laget 3 months ago

Il faut avoir le rôle "Anaïs" pour tester ?

#3

Updated by Anaïs Ecuvillon 3 months ago

oui 😊️

#4

Updated by Stéphane Laget 3 months ago

ben je n'arrive pas à reproduire. Le champs n'est pas pré-rempli. Un truc qui m'échappe ?

#5

Updated by Anaïs Ecuvillon 3 months ago

En tant qu'agent, tu demandes une première fois des pièces complémentaires (donc tu remplis ton champ commentaire), l'usager te répond, tu acceptes ta demande sans remplir le champ commentaire. Dans ton historique, ton premier commentaire est publié dans le statut accepté.
Il faudrait qu'il ne le soit pas.

Pour l'instant je n'ai pas mis de pré-remplissage en place, il me manque une variable pour le faire.

#6

Updated by Stéphane Laget 3 months ago

c'est plutôt un bug, ou du moins un comportement non voulu et en discuter pour voir si ça peut être corrigé. ca va être trop lourd de mettre systématiquement un pré-remplissage.

#7

Updated by Stéphane Laget 3 months ago

le truc bien avec les formulaires de wf c'est que le contenu des champs saisis n'est pas automatiquement affiché dans le statut suivant. Si ce comportement change ça va poser des gros pbs de partout.

#8

Updated by Pierre Cros 3 months ago

Si ce comportement change ce sera via une option, désactivée sur l'existant.

#9

Updated by Stéphane Laget 3 months ago

Pierre Cros a écrit :

Si ce comportement change ce sera via une option, désactivée sur l'existant.

pas uniquement sur l'existant. Il ne faudait pas changer le comportement de l'affichage des données issues des formulaires de wf.

#10

Updated by Frédéric Péters 3 months ago

Je vais sur https://demarches-aecuvillon.test.entrouvert.org/backoffice/management/test-new-workflow/9/ mais je n'ai pas de formulaire ou autre. Il y a moyen d'avoir ça, de certifier qu'on est dans l'état du moment de la création de ce ticket (i.e. pas avec le préremplissage dont le ticket parle), et peut-être expliciter davantage le problème de ce ticket. (Il est juste dit "le contenu d'un champ du formulaire est dupliqué dans l'historique de mon workflow" mais de base les champs d'un formulaire ne viennent pas apparaitre dans l'historique, donc il manque une info.).

#11

Updated by Frédéric Péters 3 months ago

  • Status changed from Nouveau to Information nécessaire
  • Assignee set to Anaïs Ecuvillon
#12

Updated by Anaïs Ecuvillon 3 months ago

Frédéric Péters a écrit :

Je vais sur https://demarches-aecuvillon.test.entrouvert.org/backoffice/management/test-new-workflow/9/ mais je n'ai pas de formulaire ou autre. Il y a moyen d'avoir ça, de certifier qu'on est dans l'état du moment de la création de ce ticket (i.e. pas avec le préremplissage dont le ticket parle),

c'est le cas, la demande n'a pas évoluée depuis la rédaction de mon ticket. Ce qui est intéressant dans cette demande c'est l'historique, mais effectivement je n'ai pas assez explicité.

J'y reviendrai demain, pour être plus intelligible,

#13

Updated by Anaïs Ecuvillon 3 months ago

  • Assignee changed from Anaïs Ecuvillon to Frédéric Péters

Donc je reprends, j'ai créé un workflow qui contient un formulaire qui remplace les actions commentaire et fichier :
l'action formulaire est accessible depuis le statut Demande en cours de traitement :
https://demarches-aecuvillon.test.entrouvert.org/backoffice/workflows/48/status/2/items/6/
Voici une demande où le formulaire apparaît : https://demarches-aecuvillon.test.entrouvert.org/test/test-new-workflow/12/#action-zone

La demande peut passer plusieurs fois par ce même statut, notamment si l'agent demande des pièces complémentaires. Jusque là, tout est ok, le champ commentaire étant obligatoire.

Mais si l'agent valide la demande sans remplir de commentaire (fonctionnalité très demandée par les collectivités), rendu possible avec saut manuel avec la case ignore le formulaire, et que le formulaire a été rempli une première fois pour demander des pièces complémentaires ==> le dernier commentaire est réécrit dans l'historique.

J'ai trouvé une solution pour palier à ça, mais ça ne peut qu'être temporaire, c'est pas top je trouve.
Sur le formulaire, je pré-rempli le champ avec une phrase par défaut :
https://demarches-aecuvillon.test.entrouvert.org/backoffice/workflows/48/status/2/items/6/fields/1/#open:advanced

Dans le message dans l'historique, j'ajoute une condition :

{% if form_workflow_form_echange_var_message == "Rédigez un message personnalisé" %}{% else %}{{ form_workflow_form_echange_var_message }}{% endif %}

Fonctionnellement ça marche, comme on peut le voir dans l'historique de cette démarche, mais on ne peut pas dire que ce soit très propre :
https://demarches-aecuvillon.test.entrouvert.org/backoffice/management/test-new-workflow/11/

#14

Updated by Anaïs Ecuvillon 3 months ago

  • Related to Development #69513: Action formulaire : enregistrer dans l'historique le contenu des champs added
#15

Updated by Anaïs Ecuvillon 3 months ago

#16

Updated by Frédéric Péters 2 months ago

Mais si l'agent valide la demande sans remplir de commentaire (fonctionnalité très demandée par les collectivités), rendu possible avec saut manuel avec la case ignore le formulaire

(ni attacher de fichier, faut-il deviner ?)

Mais surtout ici : un saut manuel qui dit d'ignorer le formulaire.

le dernier commentaire est réécrit dans l'historique

{{form_workflow_form_echange_var_message}} qui dit "le champ message du dernier formulaire 'echange' transmis".

Le problème ici c'est que tu décides d'ignorer le formulaire, puis tu souhaiterais qu'il soit pris en compte.

~~

Ça me semble encore confus.

#17

Updated by Anaïs Ecuvillon 2 months ago

Frédéric Péters a écrit :

Le problème ici c'est que tu décides d'ignorer le formulaire, puis tu souhaiterais qu'il soit pris en compte.

Oui, pour comprendre ce fonctionnement, il faut que je remonte un peu le temps et que j'explique le fonctionnement du workflow utilisé jusqu'à présent (en attendant de le remplacer par une V2 qui fait l'objet de ce ticket).

Dans les workflows qui utilisaient l'action commentaire, il s'agissait de rendre le remplissage obligatoire avant de passer à certains statuts (Demande en attente d'informations complémentaires et Demande rejetée) et facultatif avant de passer au statut Demande acceptée.
Dans l'action commentaire, la case obligatoire est cochée. Dans le saut manuel Accepter la demande, la case ignorer le formulaire est cochée.
Ex. ici : https://demarches-aecuvillon.test.entrouvert.org/backoffice/workflows/15/status/2/

La case ignorer le formulaire est utilisée pour rendre le remplissage de l'action commentaire facultative, c'est peut-être ça qui prête à confusion.

Si maintenant, on en revient à la nouvelle version que je souhaite mettre en place avec une action formulaire pour remplacer les actions commentaire et fichier. Le fonctionnement attendu est le même que décrit plus haut.
En fait, c'est un souci déjà rencontré par des clients avec l'action commentaire : https://dev.entrouvert.org/issues/61624
La solution proposée étant d'utiliser la variable {{form_comment}} qui contient un commentaire uniquement s'il est posé dans le dernier statut.

{{form_workflow_form_echange_var_message}} qui dit "le champ message du dernier formulaire 'echange' transmis".

Est-ce possible dans ce cas d'avoir une variable supplémentaire qui fonctionnera comme {{form_comment}}, c'est-à-dire qui soit vide si le champ n'a pas été pré-rempli dans le dernier statut ?

#18

Updated by Frédéric Péters 2 months ago

Le fonctionnement attendu est le même que décrit plus haut.

En gros : que les champs soient obligatoires mais uniquement sur le clic de certains boutons.

Est-ce possible dans ce cas d'avoir une variable supplémentaire qui fonctionnera comme {{form_comment}}, c'est-à-dire qui soit vide si le champ n'a pas été pré-rempli dans le dernier statut ?

Tu écris "pré-rempli" et je pense que tu veux juste dire "rempli".

Je ne vois pas de moyen vraiment évident d'obtenir ça pour le moment.

#19

Updated by Pierre Cros 2 months ago

Anaïs Ecuvillon a écrit :

{% if form_workflow_form_echange_var_message == "Rédigez un message personnalisé" %}{% else %}{{ form_workflow_form_echange_var_message }}{% endif %}

On aura la même chose je pense avec :

{{ form_workflow_form_echange_var_message|default:"Rédigez un message personnalisé" }}

qui est sans doute plus acceptable

#20

Updated by Anaïs Ecuvillon 2 months ago

Frédéric Péters a écrit :

Tu écris "pré-rempli" et je pense que tu veux juste dire "rempli".

oui

Je ne vois pas de moyen vraiment évident d'obtenir ça pour le moment.

ok, pour le moment je vais utiliser ma méthode qui vaut ce qu'elle vaut, mais qui fonctionne.

Pierre Cros a écrit :

On aura la même chose je pense avec :
[...]
qui est sans doute plus acceptable

Dans la condition que j'ai rédigée, si form_workflow_form_echange_var_message = Rédigez un message personnalisé (pré-remplissage côté formulaire), alors je n'affiche rien dans l'historique. C'est ce que je recherche.

Avec ce que tu me proposes, si form_workflow_form_echange_var_message, alors le message dans l'historique affichera Rédigez un message personnalisé.

#21

Updated by Pierre Cros 2 months ago

Anaïs Ecuvillon a écrit :

Avec ce que tu me proposes, si form_workflow_form_echange_var_message, alors le message dans l'historique affichera Rédigez un message personnalisé.

Ok mais ce que tu fais n'est nécessaire que parce que tu pré-remplis ton champ de formulaire avec "Rédigez un message personnalisé". Si tu remplaces ça par une remarque sous le champ, tu peux mettre dans l'historique :

{{ form_workflow_form_echange_var_message|default:"" }}
#22

Updated by Anaïs Ecuvillon 2 months ago

  • Assignee changed from Frédéric Péters to Pierre Cros

bah non justement, j'ai mis ça en place pour contourner le problème de départ, soulevé par Olivier et que j'ai reproduit ensuite. Je n'ai pas ajouté un pré-remplissage pour rien, ça vient déjà assez compliquer le truc.

Je n'ai pas besoin de mettre |default:"" si ma variable form_workflow_form_echange_var_message est déjà vide car dans ce cas il n'y a pas de problème d'affichage dans l'historique.

C'est justement quand cette variable contient déjà du texte saisit lors d'un précédent passage dans le statut (mais pas le dernier avant la validation) que cela pose problème.
S'il le faut, je fais une vidéo pour reproduire, puisque visiblement je n'arrive pas à être assez claire.

#23

Updated by Pierre Cros 2 months ago

Ok, sorry, j'ai compris cette fois.

De mon point de vue il est normal que la dernière valeur du champ soit utilisée lors qu'on utilise un bouton "qui ne tient pas compte du formulaire", il faut en tirer les conséquences en terme de conception du WF.

#24

Updated by Pierre Cros 2 months ago

  • Assignee changed from Pierre Cros to Anaïs Ecuvillon
#25

Updated by Anaïs Ecuvillon 2 months ago

  • Assignee changed from Anaïs Ecuvillon to Pierre Cros

Pierre Cros a écrit :

il faut en tirer les conséquences en terme de conception du WF

Que conseilles-tu ?
Je voudrais éviter l'ajout d'un statut supplémentaire.
On peut rendre le champs de ce formulaire facultatif et décocher la case ignorer le formulaire, mais l'agent est "moins guidé" du coup.
Ou alors laisser mon astuce de départ, ça fonctionne aussi.
Une autre idée ? (et après je ferme le ticket)

#26

Updated by Pierre Cros 2 months ago

  • Assignee changed from Pierre Cros to Anaïs Ecuvillon

Anaïs Ecuvillon a écrit :

Pierre Cros a écrit :

il faut en tirer les conséquences en terme de conception du WF

Que conseilles-tu ?

Je n'aurais sans doute pas la même réponse pour chaque WF et l'option que tu choisiras sera la bonne.

Je voudrais éviter l'ajout d'un statut supplémentaire.

On peut toujours dans le contexte d'un WF où ils ne sont pas trop nombreux. Peut-être un statut technique (éphémère) auquel on accède quand on valide le formulaire, avec dedans juste un saut auto permettant de mettre, dans le statut suivant, une condition du genre previous_status == "Mon statut technique" sur l'action message dans l'historique.

Pas génial génial, ce serait mieux de pouvoir mettre directement sur l'action "message dans l'historique" une condition liée au clic sur tel ou tel bouton mais je ne sais pas faire ça, je crois pas qu'on puisse.

On peut rendre le champs de ce formulaire facultatif et décocher la case ignorer le formulaire, mais l'agent est "moins guidé" du coup.

Ce serait certainement mon choix number one, avec l'ajout d'un texte d'info dans le formulaire sans doute, d'une aide contextuelle peut-être, éventuellement d'une confirmation pour les clients flippés.

Ou alors laisser mon astuce de départ, ça fonctionne aussi.

C'est ingénieux mais c'est quand même peu lisible, difficile d'en faire la recommandation.

Une autre idée ? (et après je ferme le ticket)

Comme on peut avoir des identifiants sur les sauts manuels (utilisé dans les boutons d'actions des mails), j'imagine vaguement quelque chose à faire avec (mais Fred l'aurait sans doute déjà évoqué si on avait un truc utilisable sans développements)

#27

Updated by Anaïs Ecuvillon 2 months ago

  • Status changed from Information nécessaire to Fermé

Pierre Cros a écrit :

Ce serait certainement mon choix number one, avec l'ajout d'un texte d'info dans le formulaire sans doute, d'une aide contextuelle peut-être, éventuellement d'une confirmation pour les clients flippés.

Je viens de tester, et j'ai été pris d'un rire nerveux quand j'ai vu que None s'affiche dans l'historique. Quitte à poser une condition pour ne pas afficher None, je reste sur mon astuce, peu lisible, on est bien d'accord, mais en attendant d'avoir mieux.
Ma dernière demande de test, https://demarches-aecuvillon.test.entrouvert.org/test/test-new-workflow/14/#action-zone

Also available in: Atom PDF