Commit 99517d9b7af25b69ba1382046ed8601079ccb81e
1 parent
3e57c505
Exists in
master
and in
1 other branch
Meilleur choix noms/couleurs/positions/tooltips pour boutons dé-valid
+ Nouveau Diagramme Etat-Transitions des statuts du matériel (workflow) => v5.2.5-3.7.9
Showing
5 changed files
with
218 additions
and
44 deletions
Show diff stats
CHANGELOG
@@ -341,27 +341,13 @@ Commencer à implémenter le nouveau workflow v5 : | @@ -341,27 +341,13 @@ Commencer à implémenter le nouveau workflow v5 : | ||
341 | *) | 341 | *) |
342 | Mettre à jour le diagramme E-T | 342 | Mettre à jour le diagramme E-T |
343 | 343 | ||
344 | +"Pensez à coller l'étiquette" | ||
345 | +On ne peut pas supprimer les docs attachés d'un matos VALIDATED | ||
346 | +Imprimer étiquette : toujours possible ? | ||
347 | + | ||
344 | 348 | ||
345 | *) | 349 | *) |
346 | NEWS#7 ? | 350 | NEWS#7 ? |
347 | - | ||
348 | - | ||
349 | - *) | ||
350 | - Lister les RG : | ||
351 | - | ||
352 | - - Pouvoir modifier le champ "n° inventaire Tutelle" sur un matos validé | ||
353 | - (Service fait CNRS ----> je récupère le n° inventaire "Tutelle" sur GESLAB (SIFAC ?) et je complète la fiche INVENTIRAP | ||
354 | - | ||
355 | - * - Seul le Créateur de la fiche peut passer la Commande (cliquer sur "Commander") | ||
356 | - - On ne peut pas supprimer le devis attaché (seulement en ajouter) | ||
357 | - - On peut toujous modifier une fiche matériel (les champs obligatoires le restent) | ||
358 | - - même "commandée" : | ||
359 | - - champs obligatoires LOT1 | ||
360 | - - champs qui ne sont plus modifiables : AUCUN ? (tous sont toujours modifiables ?) | ||
361 | - - même "validée" : | ||
362 | - - champs obligatoires LOT2 | ||
363 | - - champs qui ne sont plus modifiables : | ||
364 | - ... | ||
365 | 351 | ||
366 | 352 | ||
367 | *) | 353 | *) |
@@ -397,6 +383,12 @@ Commencer à implémenter le nouveau workflow v5 : | @@ -397,6 +383,12 @@ Commencer à implémenter le nouveau workflow v5 : | ||
397 | ======= CHANGES ======= | 383 | ======= CHANGES ======= |
398 | 384 | ||
399 | ------- | 385 | ------- |
386 | +10/09/2021 v5.2.5-3.7.9 | ||
387 | + - Meilleur choix de couleurs et de positions pour les boutons de validation et de dé-validation | ||
388 | + - Meilleurs noms et tooltips pour les boutons de dé-validation | ||
389 | + - Nouveau Diagramme Etat-Transitions des statuts du matériel (workflow) | ||
390 | + | ||
391 | +------- | ||
400 | 10/09/2021 v5.2.4-3.7.9 | 392 | 10/09/2021 v5.2.4-3.7.9 |
401 | - (i) Quand le statut d'un matos passe à TOBEORDERED, mettre son champ "tobeordered" à true (pour garder trace de la commande) | 393 | - (i) Quand le statut d'un matos passe à TOBEORDERED, mettre son champ "tobeordered" à true (pour garder trace de la commande) |
402 | - (e) Changement de l'effet du bouton "INVALIDER", désormais plus logique, repasse au statut "PRÉCÉDENT" et non pas systématiquement à CREATED : | 394 | - (e) Changement de l'effet du bouton "INVALIDER", désormais plus logique, repasse au statut "PRÉCÉDENT" et non pas systématiquement à CREATED : |
README.md
@@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes : | @@ -53,7 +53,7 @@ Logiciel testé et validé sur les configurations suivantes : | ||
53 | -------------------------------------------------------------------------------------------- | 53 | -------------------------------------------------------------------------------------------- |
54 | 54 | ||
55 | Date: 10/09/2021 | 55 | Date: 10/09/2021 |
56 | -Version: v5.2.4-3.7.9 | 56 | +Version: v5.2.5-3.7.9 |
57 | 57 | ||
58 | 58 | ||
59 | 59 |
src/Template/Materiels/view.ctp
@@ -451,6 +451,8 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | @@ -451,6 +451,8 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | ||
451 | // Donc, on applique ce style à TOUS les boutons de cette 2e ligne | 451 | // Donc, on applique ce style à TOUS les boutons de cette 2e ligne |
452 | $bStyle2 = $bStyle.'; margin-top:10px; display:inline-block'; | 452 | $bStyle2 = $bStyle.'; margin-top:10px; display:inline-block'; |
453 | $bStyle2Red = $bStyle2 . '; color:red'; | 453 | $bStyle2Red = $bStyle2 . '; color:red'; |
454 | + $bStyle2Green = $bStyle2 . '; color:green'; | ||
455 | + $bStyle2Blue = $bStyle2 . '; color:blue'; | ||
454 | 456 | ||
455 | // BOUTONS de changement de statut : Valider, Invalider, Demander archivage, ou Archiver | 457 | // BOUTONS de changement de statut : Valider, Invalider, Demander archivage, ou Archiver |
456 | /* (EP) Moved this to controller:view() | 458 | /* (EP) Moved this to controller:view() |
@@ -464,47 +466,59 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | @@ -464,47 +466,59 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN | ||
464 | // - CREATED : | 466 | // - CREATED : |
465 | 467 | ||
466 | // Bouton COMMANDER | 468 | // Bouton COMMANDER |
467 | - if ($HAS_ORDER_BUTTON && $CAN_ORDER) $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Red, ' Commander', '', 'statusTobeordered', $entity->id, ['view'], "Demander la commande de ce matériel)"); | 469 | + if ($HAS_ORDER_BUTTON && $CAN_ORDER) $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Green, ' Commander', '', 'statusTobeordered', $entity->id, ['view'], "Demander la commande de ce matériel)"); |
468 | 470 | ||
469 | // Bouton VALIDER | 471 | // Bouton VALIDER |
470 | - if ($CAN_VALIDATE) $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Red, ' Valider (=livré)', '', 'statusValidated', $entity->id, ['view'], "Valider ce matériel (le déclarer comme étant livré)"); | 472 | + if ($CAN_VALIDATE) $echoActionButton($this->Html, 'icon-ok-sign', $bStyle2Green, ' Valider (=livré)', '', 'statusValidated', $entity->id, ['view'], "Valider ce matériel (le déclarer comme étant livré)"); |
471 | 473 | ||
472 | - // - VALIDATED or more : | ||
473 | 474 | ||
474 | - // Bouton Invalider (Dévalider) | ||
475 | - //$help = "dé-valider le matériel (le repasser au statut Créé, il faudra le re-valider ensuite)"; | ||
476 | - $help = "dé-valider le matériel "; | ||
477 | - if ($entity->status == 'ARCHIVED') | ||
478 | - $new_status = "(le désarchiver, et repasser au statut 'A SORTIR')"; | ||
479 | - elseif ($entity->status == 'TOBEARCHIVED') | ||
480 | - $new_status = "(annuler la demande d'archivage, et repasser au statut 'VALIDÉ')"; | ||
481 | - elseif ($entity->status == 'VALIDATED') | ||
482 | - $new_status = "(annuler la validation de la livraison, et repasser au statut 'CRÉÉ')"; | ||
483 | - elseif ($entity->status == 'TOBEORDERED') | ||
484 | - $new_status = "(annuler la demande d'achat, et repasser au statut 'CRÉÉ')"; | ||
485 | - // Par défaut => CREATED (VALIDATED ou TOBEORDERED => CREATED) | ||
486 | - else | ||
487 | - $new_status = "(repasser au statut 'CRÉÉ')"; | ||
488 | - $help .= $new_status; | ||
489 | - if ($CAN_INVALIDATE) | ||
490 | - $echoActionButton( | ||
491 | - $this->Html, 'icon-remove-sign', $bStyle2Red, ' Invalider', '', 'statusCreated', $entity->id, ['view'], | ||
492 | - $help | ||
493 | - ); | 475 | + // - VALIDATED or more : |
494 | 476 | ||
495 | // Bouton TBA | 477 | // Bouton TBA |
496 | if ($CAN_TBA) | 478 | if ($CAN_TBA) |
497 | $echoActionButton( | 479 | $echoActionButton( |
498 | - $this->Html, 'icon-ok-sign', $bStyle2Red, ' Demander sortie', '', 'statusTobearchived', $entity->id, ['view'], | 480 | + $this->Html, 'icon-ok-sign', $bStyle2Blue, ' Demander sortie', '', 'statusTobearchived', $entity->id, ['view'], |
499 | "Demander la sortie de l'inventaire" | 481 | "Demander la sortie de l'inventaire" |
500 | ); | 482 | ); |
501 | // Bouton ARCHIVER | 483 | // Bouton ARCHIVER |
502 | if ($CAN_ARCHIVE) | 484 | if ($CAN_ARCHIVE) |
503 | $echoActionButton( | 485 | $echoActionButton( |
504 | - $this->Html, 'icon-ok-sign', $bStyle2Red, ' Sortie inventaire', '', 'statusArchived', $entity->id, ['view'], | 486 | + $this->Html, 'icon-ok-sign', $bStyle2Blue, ' Sortie inventaire', '', 'statusArchived', $entity->id, ['view'], |
505 | "Sortir définitivement de l'inventaire", | 487 | "Sortir définitivement de l'inventaire", |
506 | "Êtes-vous sur de bien vouloir archiver $entity->designation ?" | 488 | "Êtes-vous sur de bien vouloir archiver $entity->designation ?" |
507 | ); | 489 | ); |
490 | + | ||
491 | + // Bouton INVALIDER (Dévalider) | ||
492 | + //$help = "dé-valider le matériel (le repasser au statut Créé, il faudra le re-valider ensuite)"; | ||
493 | + $help = "dé-valider le matériel "; | ||
494 | + if ($entity->status == 'ARCHIVED') { | ||
495 | + $b_label = "Désarchiver"; | ||
496 | + $new_status = "(le désarchiver, et repasser au statut 'A SORTIR')"; | ||
497 | + } | ||
498 | + elseif ($entity->status == 'TOBEARCHIVED') { | ||
499 | + $b_label = "Annuler demande sortie"; | ||
500 | + $new_status = "(annuler la demande d'archivage, et repasser au statut 'VALIDÉ')"; | ||
501 | + } | ||
502 | + elseif ($entity->status == 'VALIDATED') { | ||
503 | + $b_label = "Invalider"; | ||
504 | + $new_status = "(annuler la validation de la livraison, dé-valider et repasser au statut 'CRÉÉ')"; | ||
505 | + } | ||
506 | + elseif ($entity->status == 'TOBEORDERED') { | ||
507 | + $b_label = "Annuler Commande"; | ||
508 | + $new_status = "(annuler la demande d'achat, et repasser au statut 'CRÉÉ')"; | ||
509 | + } | ||
510 | + // Par défaut => CREATED (VALIDATED ou TOBEORDERED => CREATED) | ||
511 | + else { | ||
512 | + $b_label = "Invalider"; | ||
513 | + $new_status = "(repasser au statut 'CRÉÉ')"; | ||
514 | + } | ||
515 | + $help .= $new_status; | ||
516 | + if ($CAN_INVALIDATE) | ||
517 | + $echoActionButton( | ||
518 | + $this->Html, 'icon-remove-sign', $bStyle2Red, ' '.$b_label, '', 'statusCreated', $entity->id, ['view'], | ||
519 | + $help | ||
520 | + ); | ||
521 | + | ||
508 | 522 | ||
509 | /* | 523 | /* |
510 | if ($USER_IS_ADMIN_OR_MORE || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) { | 524 | if ($USER_IS_ADMIN_OR_MORE || ($USER_IS_RESPONSABLE && $USER_IS_SAME_GROUP_AS_MATERIEL)) { |
267 KB
webroot/doc/diagrams/Materiel_status_state_diagram_v5_2021_09.txt
0 → 100755
@@ -0,0 +1,168 @@ | @@ -0,0 +1,168 @@ | ||
1 | +@startuml | ||
2 | + | ||
3 | +'cf http://plantuml.com/fr/state-diagram' | ||
4 | + | ||
5 | +'Taille des etats :' | ||
6 | +'skinparam stateFontSize 10' | ||
7 | + | ||
8 | + | ||
9 | +skinparam titleFontSize 18 | ||
10 | +title | ||
11 | +__CYCLE DE VIE D'UN MATÉRIEL (SES 5 ÉTATS)__ | ||
12 | + | ||
13 | +end title | ||
14 | + | ||
15 | + | ||
16 | +state "**CREATED** (fiche créée, matériel à commander ou valider)" as CREATED | ||
17 | +state "**TOBEORDERED** (en commande)" as TOBEORDERED | ||
18 | +state "**VALIDATED** (fiche validée, matériel livré et payé)" as VALIDATED | ||
19 | +state "**TOBEARCHIVED** (à sortir)" as TOBEARCHIVED | ||
20 | +state "**ARCHIVED** (matériel sorti de l'inventaire)" as ARCHIVED | ||
21 | + | ||
22 | + | ||
23 | +' ======================= | ||
24 | +' 1) CRÉATION (COMMANDE) | ||
25 | +' ======================= | ||
26 | + | ||
27 | +[*] --> CREATED : \l**Créer [& commander]** (add) \n\ | ||
28 | +(par C) \n\ | ||
29 | +__Infos obligatoires (LOT 0)__ \n\ | ||
30 | + => <&envelope-open> (INFO) : GR (si précisé), U, R(s) | ||
31 | + | ||
32 | +CREATED -u-> [*]: \l**Supprimer** (delete)\n(par C, un R, ou un G) \ | ||
33 | +\n => <&envelope-open> (INFO "Fiche supprimée") : \ | ||
34 | +\n GR (cc Gestion), C/U, R(s) | ||
35 | + | ||
36 | +CREATED: Si c'est une commande, le matériel est en attente de commande (par un G) \n\ | ||
37 | +(La section administrative ne peut être saisie que par un G) \n\n\ | ||
38 | + | ||
39 | +CREATED --> CREATED: \l**__Actions possibles__ :**\n\ | ||
40 | +- **Supprimer** \n\ | ||
41 | +- **[Imprimer étiquette]** (date cde + organisme tutelle [+ n° inventaire tutelle]) (par C/U, un R, ou un G) \n\ | ||
42 | +- **Modifier** (edit) (par C/U, un R, ou un G) \n\ | ||
43 | +(LOT 0 reste obligatoire, mais tous les champs sont modifiables) \n\ | ||
44 | + => <&envelope-open> (INFO) "Fiche modifiée" : C/U, R(s) \n\ | ||
45 | + | ||
46 | + | ||
47 | + | ||
48 | +' ============================== | ||
49 | +' 1) COMMANDE (demande d'achat) | ||
50 | +' ============================== | ||
51 | + | ||
52 | +CREATED --> TOBEORDERED: \l**Commander** (demande d'achat) \n\ | ||
53 | +(par C/R ou un G) \n\ | ||
54 | +Infos obligatoires (LOT1 = LOT 0 + ...) : \n\ | ||
55 | + => <&envelope-open> (COMMANDE) : GR (cc Gestion) [avec __devis joint__] \ | ||
56 | +\n => <&envelope-open> (INFO) : C/U, R(s) | ||
57 | + | ||
58 | +TOBEORDERED: Une demande d'achat est faite \nà la Gestion pour ce matériel | ||
59 | + | ||
60 | +TOBEORDERED --> CREATED: \l**Annuler Commande** \n(par un G)\n => <&envelope-open> (INFO) : C/U, R(s) \n\ | ||
61 | + | ||
62 | +TOBEORDERED --> TOBEORDERED: \l**__Actions possibles__ :**\n\ | ||
63 | +- **[Imprimer étiquette]** (date cde + organisme tutelle [+ n° inv. tut.])\n (par C/U, un R, ou un G)\n\ | ||
64 | +- **Modifier** (edit) (par C/U, un R, ou un G) \n\ | ||
65 | +(LOT1 reste obligatoire et certains champs NON MODIFIABLES) \n\ | ||
66 | + => <&envelope-open> (INFO) "Commande modifiée" : GR (cc Gestion), C/U, R(s) \n\ | ||
67 | + | ||
68 | +TOBEORDERED --> VALIDATED: \l**Valider livraison** \n\ | ||
69 | + | ||
70 | + | ||
71 | + | ||
72 | +' ========================== | ||
73 | +' 2) VALIDATION (LIVRAISON) | ||
74 | +' ========================== | ||
75 | + | ||
76 | +CREATED --> VALIDATED: \l**Valider livraison** \n\ | ||
77 | +(par un G) \n\ | ||
78 | +Infos obligatoires (LOT2 = LOT1 + ...) \n\ | ||
79 | + => <&envelope-open> (INFO facture payée) : C/U\n(+ "pensez à coller l'étiquette !") | ||
80 | + | ||
81 | +VALIDATED --> CREATED : \l **Invalider** \n (par un G) \n => <&envelope-open> : C/U | ||
82 | + | ||
83 | +VALIDATED: Le matériel a été livré et payé, \net son étiquette imprimée \n(et collée si posible) | ||
84 | + | ||
85 | +VALIDATED --> VALIDATED: \l**__Actions posibles__ :**\n\ | ||
86 | +- **Modifier** (edit) \n (par C/U, un R, ou un G) \n (LOT2 reste obligatoire et certains champs NON MODIFIABLES)) \n (//NB: on ne doit pas pouvoir modifier la "nature" du bien)// \n => <&envelope-open> : C/U, GR \n\ | ||
87 | +- **Ajouter documents attachés** (par C/U, un R, ou un G) \n (mais on ne peut pas supprimer les documents déjà attachés) \n\ | ||
88 | +- **Imprimer fiche ENTRÉE matériel** (par un G) \n\ | ||
89 | +- **Prêter** (par C/U ou un R) \n\ | ||
90 | +- **Faire un Suivi** (par C/U ou un R) \n\ | ||
91 | +- **Imprimer étiquette** (date cde + tutelle [+ n° inventaire tutelle]) (par C/U, un R, ou un G) | ||
92 | + | ||
93 | + | ||
94 | + | ||
95 | +' ========================== | ||
96 | +' 3) DEMANDE SORTIE | ||
97 | +' ========================== | ||
98 | + | ||
99 | +VALIDATED --> TOBEARCHIVED : \l**Demander sortie** (tobearchived) \n\ | ||
100 | +(par C/U, un R ou un G) \ | ||
101 | +\n => <&envelope-open> : C/U, GR (cc Gestion) | ||
102 | + | ||
103 | +TOBEARCHIVED --> VALIDATED : \l **Annuler demande sortie** \n\ | ||
104 | +(par C/U, un R ou un G) \ | ||
105 | +\n => <&envelope-open> : C/U, GR | ||
106 | + | ||
107 | +TOBEARCHIVED: Le matériel est en instance de sortie d'inventaire | ||
108 | + | ||
109 | + | ||
110 | +' ========================== | ||
111 | +' 4) SORTIE | ||
112 | +' ========================== | ||
113 | + | ||
114 | +TOBEARCHIVED --> ARCHIVED : \l**Archiver (sortir de l'inventaire)** (archive) \n\ | ||
115 | +(par un G) \ | ||
116 | +\n => <&envelope-open> : C/U | ||
117 | + | ||
118 | +ARCHIVED --> VALIDATED : \l **Désarchiver** \n\ | ||
119 | +(par un G) \ | ||
120 | +\n => <&envelope-open> : C/U | ||
121 | + | ||
122 | +ARCHIVED: Le matériel n'est plus visible (sauf par un G) | ||
123 | + | ||
124 | +ARCHIVED --> ARCHIVED: \l**Imprimer fiche SORTIE matériel** \n\ | ||
125 | +(par un G) | ||
126 | + | ||
127 | + | ||
128 | + | ||
129 | + | ||
130 | + | ||
131 | +'On pouvait ausi utiliser _note_ au lieu de _legend_ mais ca se met tout en haut:' | ||
132 | +'(cf note dans http://plantuml.com/fr/class-diagram)' | ||
133 | +'note as N1' | ||
134 | + | ||
135 | + | ||
136 | +skinparam legendFontSize 11 | ||
137 | +legend left | ||
138 | +<u>Légende</u>: | ||
139 | + | ||
140 | +Diagramme UML d'États-Transitions du 10/09/2021 - Logiciel LabInvent v5.x - E. Pallier - IRAP | ||
141 | + | ||
142 | +Acteurs: | ||
143 | +- C = Créateur : la personne qui crée la fiche (ou celle qui commande le matériel) | ||
144 | +- U = Utilisateur : le destinataire du matériel (ou la destination) | ||
145 | +- R = Responsable : le responsable d'un groupe (métier, projet, ou pôle) auquel le matériel est associé | ||
146 | +- G = Gestionnaire : un administratif | ||
147 | +- GR = Gestionnaire de Référence : l'administratif qui passe la commande du matériel (désigné par l'Acheteur) | ||
148 | + (éventuellement, par défaut, celui qui est en charge du projet auquel le matériel est associé) | ||
149 | + (en fait, le DERNIER gestionnaire qui modifie la fiche matériel devient le nouveau GR) | ||
150 | + | ||
151 | +Profils (rôles, pouvoirs) : | ||
152 | +- UTILISATEUR = personne quelconque du laboratoire (authentifiée), profil avec les droits minimum (ne pas confondre avec U qui est l'Utilisateur réel d'un matériel spécifique) | ||
153 | +- RESPONSABLE = Responsable d'un groupe métier, d'un projet ou d'un pôle | ||
154 | +- ADMIN (Gestionnaire) = Administratif | ||
155 | +- SUPERADMIN = Super utilisateur, il a au moins les mêmes droits que ADMIN (mais il peut ausi intervenir sur la configuration technique du logiciel) | ||
156 | + | ||
157 | +Matériel inventoriable = au moins 1000€ HT (en-dessous, le matériel peut quand même être inventorié, mais ne fait pas partie de l'inventaire comptable, seulement de l'inventaire physique) | ||
158 | + | ||
159 | +Un email est envoyé à chaque changement d'état du matériel //(pas de mail envoyé à la personne à l'origine de l'action car inutile)// : | ||
160 | +- à C et U | ||
161 | +- au(x) R(s) du/des groupe(s) (métier, projet, ou pôle) auquel(s) le matériel est affecté | ||
162 | +- au GR (éventuellement avec copie au service Gestion) | ||
163 | + | ||
164 | +endlegend | ||
165 | +'end note' | ||
166 | + | ||
167 | + | ||
168 | +@enduml |