Anomalie #6387
ferméProblème de masque lors de l'application de setState() sur les documents retournés par un SearchDoc
100%
Description
Soit une famille avec un cycle comprenant deux états :
- "state_a" (état initial)
- "state_b"
L'état "state_a" n'a pas de masque.
L'état "state_b" est configuré pour appliquer un masque qui rend l'attribut ATTR_X obligatoire.
Soit un ensemble de documents de cette famille dans l'état initial "state_a" avec l'attribut ATTR_X vide.
On itère sur ces documents avec le code suivant :
$s = new SearchDoc('', 'MA_FAM');
$s->setObjectReturn();
$s->search();
while ($doc = $s->getNextDoc()) {
$err = $doc->setState('state_b');
if ($err != '') {
error_log($err);
}
}
On observe alors que le premier document passe bien dans l'état "state_b".
Par contre, à partir du deuxième document, la transition est mise en erreur avec le message : "ATTR_X doit être rempli".
Ci-joint un module pour importer une famille qui reproduit ce problème :
$ ./wsh.php --api=support_2298
105960) Support 2298 sans titre 105960 [state: state_a]
=> [state: state_b]
105961) Support 2298 sans titre 105961 [state: state_a]
=> [state: state_a] Text doit être rempli
[FAIL]
Ce script de test crée deux document dans l'état "state_a" et les passes dans l'état "state_b" : on observe que la transition pour le deuxième document est mise en erreur.
Il semble que l'application du masque sur le premier document soit persistant lorsqu'on récupère le deuxième document : le deuxième document ne devrait pas avoir de masque appliqué et ne devrait pas remonter l'erreur "ATTR_X doit être rempli" car dans l'état "state_a" aucun masque n'est appliqué.
Fichiers
Mis à jour par Jérôme Augé il y a environ 10 ans
Si je resette "$this->mid = 0" dans la méthode affect(), alors il n'y a plus ce problème.
Par contre, je pense qu'il y a d'autres propriétés qui devraient être resettés...
Mis à jour par Éric Brison il y a environ 10 ans
- Assigné à mis à Jérôme Augé
- Version cible mis à 3.2.21
Mis à jour par Éric Brison il y a environ 10 ans
- Statut changé de Nouveau à Intégré
Appliqué par commit commit:dynacase-core|95f65665338298cb340090263836f74eefd612ed.