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 | 341 | *) |
342 | 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 | 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 | 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 | 392 | 10/09/2021 v5.2.4-3.7.9 |
401 | 393 | - (i) Quand le statut d'un matos passe à TOBEORDERED, mettre son champ "tobeordered" à true (pour garder trace de la commande) |
402 | 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
src/Template/Materiels/view.ctp
... | ... | @@ -451,6 +451,8 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
451 | 451 | // Donc, on applique ce style à TOUS les boutons de cette 2e ligne |
452 | 452 | $bStyle2 = $bStyle.'; margin-top:10px; display:inline-block'; |
453 | 453 | $bStyle2Red = $bStyle2 . '; color:red'; |
454 | + $bStyle2Green = $bStyle2 . '; color:green'; | |
455 | + $bStyle2Blue = $bStyle2 . '; color:blue'; | |
454 | 456 | |
455 | 457 | // BOUTONS de changement de statut : Valider, Invalider, Demander archivage, ou Archiver |
456 | 458 | /* (EP) Moved this to controller:view() |
... | ... | @@ -464,47 +466,59 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
464 | 466 | // - CREATED : |
465 | 467 | |
466 | 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 | 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 | 477 | // Bouton TBA |
496 | 478 | if ($CAN_TBA) |
497 | 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 | 481 | "Demander la sortie de l'inventaire" |
500 | 482 | ); |
501 | 483 | // Bouton ARCHIVER |
502 | 484 | if ($CAN_ARCHIVE) |
503 | 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 | 487 | "Sortir définitivement de l'inventaire", |
506 | 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 | 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 @@ |
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 | ... | ... |