Anomalie #4162
fermé[Contrôle de vue] Problème pour un mask changeant le need d'un attribut pour les transitions d'un workflow
100%
Le problème se situe au niveau du masque du contrôle de vue et non du masque du cycle de vie.
Sur la méthode Doc::setMask($mid);
Ajout de 2 constantes:
Doc::USEMASKCVVIEW = -1
Doc::USEMASKCVEDIT = -2
Si $mid vaut une des 2 constantes le masque du cv par défaut est utilisé.
Dans WDOC - appeler $this->doc->setMask(Doc::USEMASKCVEDIT) au début du changeState.
Dans viewcard.php utiliser $this->doc->setMask(Doc::USEMASKCVVIEW)
Dans editcard.php utiliser $this->doc->setMask(Doc::USEMASKCVEDIT)
pour factoriser le code.
Description
Testé en 3.2.9
Soient deux familles FAM1 et FAM2. FAM2 hérite de FAM1.
Dans FAM1 on a un ATTR attr1 qui n'est pas obligatoire.
Dans FAM2 on redéfinit attr1 en needed :
MODATTR;attr1;;;;;;;;Y;;;;;;;
La famille FAM2 a 4 états e1 e2 e3 et e4 et le workflow suivant e1 -> t1 -> e2 -> t2 -> e3 -> t3 -> e4
On applique un MASK pour que attr1 ne soit pas obligatoire à l'état e1 (dans le MASK on met N dans la colonne msk_needeeds pour attr1)
Le masque est bien appliqué car à l'état e1 attr1 n'est pas obligatoire en édition et il l'est pour les 3 autres états.
Problème :
Lorsqu'on effectue la transition t1 (pour passer de l'état e1 à l'état e2) une erreur est levée et empêche d'effectuer la transition avec comme message :
Attr 1 doit être rempli
Il n'y a aucune contrainte mise en place dans le m0 de la transition t1.
Fichiers
Mis à jour par Marc Claverie il y a presque 13 ans
- Statut changé de Nouveau à À analyser
- Assigné à mis à Éric Brison
- Version cible mis à 3.2.10
Mis à jour par Éric Brison il y a presque 13 ans
- Assigné à changé de Éric Brison à Jérôme Augé
Mis à jour par Éric Brison il y a presque 13 ans
- Statut changé de À analyser à Analysé
- Solution proposée mis à jour (diff)
Mis à jour par Jérôme Augé il y a presque 13 ans
- Fichier Class.WDEV_4162.php Class.WDEV_4162.php ajouté
- Fichier DEV_4162.csv DEV_4162.csv ajouté
Je ne reproduit pas ce problème sur 3.2.9.
- Pouvez-vous joindre les éléments (ou détailler le contexte) pour reproduire ce problème ?
Ci-joint, les éléments avec lesquels j'ai essayé de reproduire le problème :
- Class.WDEV_4162.php
- DEV_4162.csv
Mis à jour par Jérôme Augé il y a presque 13 ans
C'est l'application du masque d'un contrôle de vue sur un état donné qui ne fonctionne pas.
Le problème est donc sur les masques qui sont positionnés par un contrôle de vue sur un état (et non un masque positionné directement sur un état) : c'est cette indirection du masque via un contrôle de vue qui n'est pas correctement gérée lors du changement d'état.
Mis à jour par Éric Brison il y a presque 13 ans
- Statut changé de Analysé à Intégré
Appliqué par commit commit:cb418a7e383bbd0d8c33847d2772d9c38370bd96.
Mis à jour par Jérôme Augé il y a presque 13 ans
- % réalisé changé de 100 à 80
[24-Jul-2013 15:06:25 UTC] {DOC1000} "-2" mask is not found , cannot apply it to "Foo" document
[24-Jul-2013 15:06:31 UTC] {DOC1000} "-1" mask is not found , cannot apply it to "Foo" document