Comportement inapproprié lors de l'enregistrement d'un objet lié

Bonjour,

l’objet métier CrbCrePresta a un objet lié CrbCrePrestaData.
je saisi une valeur dans l’attribut date de 1er rdv de CrbCrePresta sans enregistrer.
puis, je saisie les valeurs de l’objet lié “Données spécifiques”.

lorsque j’enregistre l’objet lié, j’ai le message suivant :

je ne veut pas enregistrer l’objet père mais uniquement l’objet lié. C’est très perturbant et pas du tout logique.

si je réponds “Enregistrer”, j’ai des messages d’erreur puisque je n’ai pas fini de saisir les données du père.

si je réponds “Quitter”, pas de message mais je perds la saisie de la date du 1er rdv.

C’est un comportement normal. La logique est justement inverse car il y a de nombreux autres cas d’usages des listes embarquées et modifiables.

Le “save” de la liste fille embarquée dépend de l’intégrité des données de l’objet parent = donc sauvegarde aussi le parent, car elle peut avoir besoin des données à jour en back :

  • via getParentObject pour faire des contrôles de données en fonction du parent
  • ou faire des mises à jour de champs calculés sur le parent (somme de champs de la liste) sans perdre la saisie du parent qui serait modifié

Le save fait donc obligatoirement un save global et recharge l’objet parent = pour afficher les éventuels champs calculés/agrégés sur le parent.

Il faut donc compléter votre objet parent pour pouvoir enregistrer sa liste fille. Votre formulaire est un tout. Si vous saisissez les champs manquants comme indiqué, vous n’aurez aucune perte de données.

si l’enregistrement du père est automatique, je ne vois pas pourquoi la popup “Quitter” apparait.
c’est ça qui perturbe les utilisateurs.
ils n’ont pas cliqué sur “Quitter” mais sur “Enregistrer” dans la liste fille

Ok compris,
Effectivement ce popup semble superflu lorsque l’utilisateur change à la fois le formulaire et la liste.
On va le retirer dans ce cas.

Le popup a été retiré (plus besoin de confirmer pour l’utilisateur, la save de l’objet parent se lance tout seul s’il a été modifié) en V4 et V5.

Ce sera livré au prochain build.

bonjour @Francois

ok pour la popup de confirmation
mais il reste un pb …
si je fais “Ajouter” dans la liste fille et que je fais “Fermer” je perds ce que j’ai saisi dans le père

Bonsoir,
Le bouton Fermer de la liste fille ne doit pas tenir compte du hasChanged de l’objet père.
On va vérifier, et aussi lui ajouter un “auto-save” pour ne pas perdre la saisie ou afficher des erreurs, et éviter un popup inutile de confirmation.

Je ne reproduis pas le symptome, quand on annule une liste fille dans le formulaire, cela demande bien de confirmer avant de quitter si le parent avait été modifié.

On a ajouté le même traitement que pour le “save” de la liste pour éviter ce popup et enregistrer automatiquement le formulaire parent, s’il y a des erreurs elles s’afficheront.

Bonjour François,

je pense qu’il y a un pb avec le bouton fermer des listes depuis tes modifications.

sur une liste qui n’a pas de parent, quand je passe en mode édition et que je veux la fermer, j’ai un message d’erreur

Exact, on livre asap le correctif.

ok, pour le bouton fermer, c’est corrigé.
Mais j’ai quand même tjrs un pb …

Cas 1- je saisi toutes les données obligatoires du formulaire et de l’objet lié Détail. j’enregistre l’objet lié => tout le formulaire est enregistré
Cas 2 - je ne saisi pas toutes les données obligatoires de mon formulaire ni les données de l’objet Détail => message d’erreur Normal


je saisi la donnée manquante puis une partie des données de l’objet lié.
j’enregistre via le bouton de l’objet lié => message d’erreur normal

je corrige et j’enregistre => l’enregistrement de l’objet lié a fonctionné, les données du père ont disparu alors qu’elles sont obligatoires

Très étrange en effet, ça devient compliqué en terme d’UX.
A priori la UI perd son latin, car ne peut pas avoir à la fois certaines données commitées et certaines invalidées en mémoire. On va essayer de reproduire le cas et voir comment faire.

Je ne peux pas reproduire ce problème comme sur la 1ere copie d’écran où il y a le bouton enregistrer sur le parent. Seul le bouton “Save” de la liste fille est accessible si on passe en édition de liste.
L’objet père est sauvegardé automatiquement si et seulement si la liste fille n’a pas d’erreur.

Si on saisie n’importe quoi sur le parent + edit list avec erreur sur une liste liée + save sur la liste (l’autre bouton save du parent est inactif)

  • La UI affiche les erreurs de lignes, et reste en mode edit-list, le parent n’est pas impacté
  • Une fois les erreurs de liste corrigées, le save de la liste est ok et tente un auto-save du parent
  • Là de nouvelles erreurs sont affichées sur le père, mais aucun champ n’est jamais perdu.

Vous devez avoir une autre cinématique ou des choses spécifiques dans le save de la liste fille qui modifie l’objet parent (en back).

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