Commit bbf540f9c8bad2d778100dc7da8b7e74d0ad3729

Authored by Etienne Pallier
1 parent 512ca314
Exists in master and in 1 other branch dev

Divers

- (b) Bugfix tests (ajout Stats en fixture)
- (e) Ajout d'un champs "description" à toutes les tables qui en
manquent
- (i) Ajout de contraintes d'unicité (index unique) sur le champs "nom"
de toutes les tables qui le justifient
- (e) Réarrangement de la page d'accueil
- (e) Réarrangement de la page Outils

v4.106.5-3.7.9
CHANGES.txt
... ... @@ -134,7 +134,12 @@ Outre ces changements, voici d'autres changements importants :
134 134 ======= CHANGES =======
135 135  
136 136 -------
137   -23/10/2020 v4.106.4-3.7.9
  137 +23/10/2020 v4.106.5-3.7.9
  138 + - (b) Bugfix tests (ajout Stats en fixture)
  139 + - (e) Ajout d'un champs "description" à toutes les tables qui en manquent
  140 + - (i) Ajout de contraintes d'unicité (index unique) sur le champs "nom" de toutes les tables qui le justifient
  141 + - (e) Réarrangement de la page d'accueil
  142 + - (e) Réarrangement de la page Outils
138 143 - (b) Très Gros Bugfix des utilisateurs utilisés pour les tests !!!
139 144 => maintenant c'est cohérent et clean
140 145 => ca marche y-compris avec les stats de connexion !
... ...
README.md
... ... @@ -43,7 +43,7 @@ Logiciel testé et validé sur les configurations suivantes :
43 43 --------------------------------------------------------------------------------------------
44 44  
45 45 Date: 23/10/2020
46   -Version: 4.106.4-3.7.9
  46 +Version: 4.106.5-3.7.9
47 47  
48 48  
49 49 HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes)
... ...
database/update/script_sql/db-update-2020-10-23.sql 0 → 100755
... ... @@ -0,0 +1,36 @@
  1 +use database;
  2 +
  3 +
  4 +--
  5 +-- Ajout du champ description à toutes les tables qui en manquent
  6 +--
  7 +
  8 +ALTER TABLE sur_categories ADD description TEXT NULL DEFAULT NULL AFTER nom;
  9 +ALTER TABLE categories ADD description TEXT NULL DEFAULT NULL AFTER nom;
  10 +ALTER TABLE sous_categories ADD description TEXT NULL DEFAULT NULL AFTER nom;
  11 +
  12 +ALTER TABLE fournisseurs ADD description TEXT NULL DEFAULT NULL AFTER nom;
  13 +ALTER TABLE organismes ADD description TEXT NULL DEFAULT NULL AFTER nom;
  14 +ALTER TABLE sites ADD description TEXT NULL DEFAULT NULL AFTER nom;
  15 +
  16 +ALTER TABLE suivis CHANGE commentaire commentaire TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL;
  17 +
  18 +ALTER TABLE type_documents ADD description TEXT NULL DEFAULT NULL AFTER nom;
  19 +ALTER TABLE type_suivis ADD description TEXT NULL DEFAULT NULL AFTER nom;
  20 +
  21 +
  22 +--
  23 +-- Ajout d'une contrainte d'unicité (index UNIQUE) sur le champ nom pour toutes les tables qui en manquent
  24 +--
  25 +
  26 +ALTER TABLE fakeldapusers ADD UNIQUE(uid);
  27 +
  28 +ALTER TABLE groupes_metiers ADD UNIQUE(nom);
  29 +ALTER TABLE groupes_thematiques ADD UNIQUE(nom);
  30 +ALTER TABLE organismes ADD UNIQUE(nom);
  31 +ALTER TABLE sites ADD UNIQUE(nom);
  32 +ALTER TABLE type_suivis ADD UNIQUE(nom);
  33 +
  34 +ALTER TABLE type_documents ADD UNIQUE(nom);
  35 +-- Ajout aussi du type DEVIS (obligatoire)
  36 +INSERT INTO type_documents (nom) VALUES ("DEVIS");
... ...
src/Template/Pages/home_app.ctp
1 1 <?php
  2 +
  3 +// Variables passées par le controleur
  4 +//debug($this->viewVars);
  5 +$configuration = $configuration;
  6 +$USER_IS_RESPONSABLE = $USER_IS_RESPONSABLE;
  7 +
  8 +
2 9 $lab_name = $configuration->labPresent;
3 10 // ajout d'un espace ssi nécessaire
4 11 if (strpos($configuration->labPresent,"l'")===false) $lab_name.=' ';
5 12 $lab_name .= '<b>'.$configuration->labName.'</b>';
  13 +
  14 +$TABLE_START = '<table cellpadding="0" cellspacing="0" style="width: 270px;">';
  15 +$TABLE_END = '</table>';
  16 +$SEP = '<tr><th></th></tr>';
  17 +
  18 +
  19 +function procedure_commande() {
  20 + ?>
  21 + <h5>Procédure à suivre pour la commande d’un nouveau matériel :</h5>
  22 + <br>
  23 + <p>
  24 + Voici la procédure pour passer commande d’un matériel (je deviens <strong>“acheteur/utilisateur/référent”</strong>
  25 + de ce matériel)
  26 + </p>
  27 + <ol>
  28 + <li>J’obtiens un <strong>devis</strong></li>
  29 + <li>Je <strong>crée une fiche matériel</strong> (clic sur "Nouveau
  30 + Matériel") avec les quelques informations obligatoires (notamment une
  31 + <strong>description précise</strong> du matériel) <i>(éventuellement,
  32 + je peux y associer le devis en document attaché)</i></li>
  33 + <li><strong>J’imprime ma fiche et l’amène (avec le devis)</strong> à
  34 + un gestionnaire (ou bien par email)</li>
  35 + <li>Le gestionnaire retrouve cette fiche (en tapant son n° interne
  36 + labo dans le champ “Recherche”) et la <strong>complète</strong> avec
  37 + les informations administratives
  38 + </li>
  39 + <li>Le gestionnaire crée le bon de <strong>commande</strong> pour ce
  40 + matériel et passe la commande <i>(éventuellement, il peut associer le
  41 + bon de commande à la fiche matériel en document attaché)</i></li>
  42 + <li>A la <strong>livraison</strong> du matériel, le gestionnaire <strong>valide</strong>
  43 + la fiche matériel <i>(éventuellement, il peut y associer le bon de
  44 + livraison en document attaché)</i> => (je reçois un email qui
  45 + m'informe de l'arrivée du matériel et me demande de <strong>vérifier</strong>
  46 + ma fiche)
  47 + </li>
  48 + <li>Le gestionnaire <strong>imprime</strong> l’étiquette d’inventaire
  49 + associée au matériel ainsi que la <strong>fiche complète</strong> du
  50 + matériel et la joint au carton du matériel reçu
  51 + </li>
  52 + <li>Je viens chercher mon nouveau matériel et y <strong>colle
  53 + l’étiquette</strong> d’inventaire
  54 + </li>
  55 + </ol>
  56 + <?php
  57 +}
  58 +
6 59 ?>
7 60  
8 61 <div class="index">
... ... @@ -17,61 +70,81 @@ echo &#39;&lt;p&gt;Vous êtes connecté en tant que &lt;b&gt;&#39; . $username . &#39;&lt;/b&gt; &#39;;
17 70 echo 'et avec le niveau d\'authentification <b>' . $role . '</b>';
18 71 echo '<p>';
19 72  
20   -echo '<table cellpadding="0" cellspacing="0" style="width: 270px;">';
21   -echo '<tr><th></th></tr>';
22   -
23   -echo '<tr><td>';
24   -echo '<a href="/pages/changes">Changements faits sur le logiciel</a>';
25   -echo '</td></tr>';
26   -
27   -echo '<tr><td>';
28   -echo '<a href="/pages/stats">Statistiques sur les matériels</a>';
29   -echo '</td></tr>';
30   -
31   -echo '<tr><td>';
32   -echo $this->Html->link('Voir mes matériels', [
33   - 'controller' => 'materiels',
34   - 'action' => 'index',
35   - 'age' => 0,
36   - 'MY' => $username
37   -]);
38   -echo '</td></tr>';
39   -
40   -echo '<tr><td>';
41   -echo $this->Html->link('Voir les responsables des domaines', [
42   - 'controller' => 'users',
43   - //'action' => 'indexRecap',
44   - 'action' => 'index',
45   - //'sort' => 'sur_categorie_id'
46   - 'filtre' => 'responsable',
  73 +
  74 +
  75 +echo $TABLE_START;
  76 +echo $SEP;
  77 +
  78 + echo '<tr><td>';
  79 + echo '<a href="/pages/changes">Changements faits sur le logiciel</a>';
  80 + echo '</td></tr>';
47 81  
48   -]);
49   -echo '</td></tr>';
  82 + echo '<tr><td>';
  83 + echo '<a href="/pages/stats">Statistiques sur les matériels</a>';
  84 + echo '</td></tr>';
  85 +
  86 +echo $TABLE_END;
  87 +
  88 +
  89 +
  90 +echo $TABLE_START;
  91 +echo $SEP;
  92 +
  93 + echo '<tr><td>';
  94 + echo $this->Html->link('Voir mes matériels', [
  95 + 'controller' => 'materiels',
  96 + 'action' => 'index',
  97 + 'age' => 0,
  98 + 'MY' => $username
  99 + ]);
  100 + echo '</td></tr>';
  101 +
  102 + echo '<tr><td>';
  103 + echo $this->Html->link('Voir les responsables des domaines', [
  104 + 'controller' => 'users',
  105 + //'action' => 'indexRecap',
  106 + 'action' => 'index',
  107 + //'sort' => 'sur_categorie_id'
  108 + 'filtre' => 'responsable',
  109 + ]);
  110 + echo '</td></tr>';
  111 +
  112 +echo $TABLE_END;
  113 +
  114 +
50 115  
51   -echo '</table>';
52 116  
53 117 // Utilisateur admin/super admin
54 118 if (in_array($role, [
55 119 'Administration',
56 120 'Administration Plus'
57 121 ])) {
58   - echo '<table cellpadding="0" cellspacing="0" style="width: 270px;">';
59   - echo '<tr><th></th></tr>';
  122 +
  123 +echo $TABLE_START;
  124 +echo $SEP;
  125 +
60 126 echo '<tr><td> ' . $this->Html->link('Voir les matériels à valider', [
61 127 'controller' => 'materiels',
62 128 'action' => 'index',
63 129 'CREATED'
64 130 ]) . ' </td></tr>';
  131 +
65 132 echo '<tr><td> ' . $this->Html->link('Voir les matériels à sortir de l\'inventaire', [
66 133 'controller' => 'materiels',
67 134 'action' => 'index',
68 135 'TOBEARCHIVED'
69 136 ]) . ' </td></tr>';
70   - echo '</table>';
  137 +
  138 +echo $TABLE_END;
71 139 }
72 140  
73 141 // Utilisateur responsable
74   -if ($role == 'Responsable') {
  142 +//if ($role == 'Responsable') {
  143 +if ($USER_IS_RESPONSABLE) {
  144 +
  145 +echo $TABLE_START;
  146 +echo $SEP;
  147 +
75 148 echo '<table cellpadding="0" cellspacing="0" style="width: 270px;">';
76 149 echo '<tr><th></th></tr>';
77 150 echo '<tr><td> ' . $this->Html->link('Voir les matériels dont je suis responsable', [
... ... @@ -86,54 +159,21 @@ if ($role == &#39;Responsable&#39;) {
86 159 'GM' => $priviledgedUser->groupes_metier_id,
87 160 'GT' => $priviledgedUser->groupes_thematique_id
88 161 ]) . ' </td></tr>';
89   - echo '</table>';
  162 +
  163 +echo $TABLE_END;
90 164 }
91 165  
92   -// A rendre configurable (pourquoi pas)
93   -if (($role == 'Responsable' || $role == 'Utilisateur') && $configuration->procedure_sur_accueil) {
94   - ?>
95   - <h5>Procédure à suivre pour la commande d’un nouveau matériel (8
96   - étapes)</h5>
97   - <br>
98   - <p>
99   - Voici la procédure pour passer commande d’un matériel de plus de 800€
100   - (matériel <strong>inventoriable</strong>) : <br>(je <strong>peux</strong>
101   - aussi, si je le désire, suivre cette procédure pour un matériel &lt;
102   - 800€, afin qu'il soit référencé) <br>(je deviens <strong>“demandeur/utilisateur/référent”</strong>
103   - de ce matériel)
104   - </p>
105   - <ol>
106   - <li>J’obtiens un <strong>devis</strong></li>
107   - <li>Je <strong>crée une fiche matériel</strong> (clic sur "Nouveau
108   - Matériel") avec les quelques informations obligatoires (notamment une
109   - <strong>description précise</strong> du matériel) <i>(éventuellement,
110   - je peux y associer le devis en document attaché)</i></li>
111   - <li><strong>J’imprime ma fiche et l’amène (avec le devis)</strong> à
112   - un gestionnaire (ou bien par email)</li>
113   - <li>Le gestionnaire retrouve cette fiche (en tapant son n° interne
114   - labo dans le champ “Recherche”) et la <strong>complète</strong> avec
115   - les informations administratives
116   - </li>
117   - <li>Le gestionnaire crée le bon de <strong>commande</strong> pour ce
118   - matériel et passe la commande <i>(éventuellement, il peut associer le
119   - bon de commande à la fiche matériel en document attaché)</i></li>
120   - <li>A la <strong>livraison</strong> du matériel, le gestionnaire <strong>valide</strong>
121   - la fiche matériel <i>(éventuellement, il peut y associer le bon de
122   - livraison en document attaché)</i> => (je reçois un email qui
123   - m'informe de l'arrivée du matériel et me demande de <strong>vérifier</strong>
124   - ma fiche)
125   - </li>
126   - <li>Le gestionnaire <strong>imprime</strong> l’étiquette d’inventaire
127   - associée au matériel ainsi que la <strong>fiche complète</strong> du
128   - matériel et la joint au carton du matériel reçu
129   - </li>
130   - <li>Je viens chercher mon nouveau matériel et y <strong>colle
131   - l’étiquette</strong> d’inventaire
132   - </li>
133   - </ol>
  166 +//echo '<hr>';
134 167  
135   - <?php
136   -}
  168 +echo $TABLE_START;
  169 +echo $SEP;
  170 +echo $TABLE_END;
  171 +
  172 +echo '<br>';
  173 +
  174 +// A rendre configurable (pourquoi pas)
  175 +if (($role == 'Responsable' || $role == 'Utilisateur') && $configuration->procedure_sur_accueil)
  176 + procedure_commande();
137 177  
138 178 ?>
139 179  
... ...
src/Template/Pages/tools.ctp
  1 +<?php
  2 +
  3 +// Variables passées par le controleur
  4 +// Voir toutes les variables
  5 +//debug($this->viewVars);
  6 +
  7 +$USER_IS_SUPERADMIN = $USER_IS_SUPERADMIN;
  8 +$USER_IS_ADMIN_OR_MORE = $USER_IS_ADMIN_OR_MORE;
  9 +
  10 +?>
  11 +
1 12  
2 13 <div class="index">
3 14  
... ... @@ -13,21 +24,31 @@
13 24  
14 25 <?php
15 26  
  27 + $SEP = '<tr><td></td></tr>';
  28 +
16 29 // - Page statistiques
17 30 echo '<tr><td>';
18   - echo $this->Html->link('Statistiques', [
  31 + echo $this->Html->link('Statistiques sur les matériels', [
19 32 'controller' => 'pages',
20 33 'action' => 'stats',
21 34 ]);
22 35 echo '</td></tr>';
23 36  
24   - echo '<tr><td></td></tr>';
  37 + if ($USER_IS_SUPERADMIN) {
  38 + echo '<tr><td>';
  39 + echo $this->Html->link('Statistiques sur les connexions', [
  40 + 'controller' => 'stats',
  41 + ]);
  42 + echo '</td></tr>';
  43 + }
  44 +
  45 + echo $SEP;
25 46  
26 47  
27 48  
28 49 // - Page configuration
29 50 //if ($role == 'Super Administrateur') :
30   - if ($role == 'Super Administrateur') {
  51 + if ($USER_IS_SUPERADMIN) {
31 52 echo '<tr><td>';
32 53 echo $this->Html->link("Configuration générale de l'application", [
33 54 'controller' => 'configurations',
... ... @@ -39,7 +60,7 @@
39 60 //endif;
40 61  
41 62 echo '<tr><td>';
42   - echo $this->Html->link('Voir les Notifications', [
  63 + echo $this->Html->link('Voir les Notifications activées', [
43 64 'controller' => 'pages',
44 65 'action' => 'notifications'
45 66 ]);
... ... @@ -53,60 +74,70 @@
53 74 echo '</td></tr>';
54 75  
55 76 echo '<tr><td>';
56   - echo $this->Html->link('Etiqueteuse', [
  77 + echo $this->Html->link('Etiqueteuse (documentation)', [
57 78 'controller' => 'pages',
58 79 'action' => 'printers'
59 80 ]);
60 81 echo '</td></tr>';
61 82  
62   - echo '<tr><td></td></tr>';
  83 + echo $SEP;
63 84  
64 85  
65 86 // - Page "Gérer le contenu variable"
  87 + if ($USER_IS_ADMIN_OR_MORE) {
  88 + /*
66 89 if (in_array($role, [
67 90 'Administration',
68 91 'Administration Plus',
69 92 'Super Administrateur'
70 93 ])) {
  94 + */
71 95 echo '<tr><td>';
72 96 echo $this->Html->link('Gérer le contenu variable de l\'application', [
73 97 'controller' => 'pages',
74 98 'action' => 'tools_sm'
75 99 ]);
76 100 echo '</td></tr>';
  101 +
  102 + echo '<tr><td>';
  103 + echo $this->Html->link('Export de la liste des materiels actifs (format CSV)', [
  104 + 'controller' => 'materiels',
  105 + 'action' => 'export'
  106 + ]);
  107 + echo '</td></tr>';
77 108 }
78 109  
79   -echo '<tr><td>';
80   -//echo $this->Html->link('Gérer les utilisateurs privilégiés', [
81   -echo $this->Html->link('Gérer les utilisateurs', [
  110 +
  111 +
  112 +//if ($role == 'Super Administrateur') :
  113 +if ($USER_IS_SUPERADMIN) :
  114 +
  115 + echo '<tr><td>';
  116 + //echo $this->Html->link('Gérer les utilisateurs privilégiés', [
  117 + echo $this->Html->link('Gérer les utilisateurs', [
82 118 'controller' => 'users',
83 119 //'sort' => 'nom'
84   -]);
85   -echo '</td></tr>';
  120 + ]);
  121 + echo '</td></tr>';
86 122  
87   -if ($role == 'Super Administrateur') :
88 123 echo '<tr><td>';
89 124 echo $this->Html->link('Gérer les fichiers', [
90 125 'controller' => 'documents',
91 126 'action' => 'index'
92 127 ]);
93 128 echo '</td></tr>';
  129 +
94 130 endif;
95 131  
96   -echo '<tr><td>';
97   -echo $this->Html->link('Export de la liste des materiels actifs (format CSV)', [
98   - 'controller' => 'materiels',
99   - 'action' => 'export'
100   -]);
101   -echo '</td></tr>';
102 132  
103   -echo '<tr><td></td></tr>';
  133 +echo $SEP;
104 134  
105 135  
106 136  
107 137  
108   -if ($role == 'Super Administrateur') :
  138 +if ($USER_IS_SUPERADMIN) :
109 139  
  140 + /*
110 141 // Exécution d'un script correctif (bugfix) temporaire (superadmin only)
111 142 echo '<tr><td>';
112 143 echo $this->Html->link('Exécuter le dernier script correctif', [
... ... @@ -114,6 +145,7 @@ if ($role == &#39;Super Administrateur&#39;) :
114 145 'action' => 'exec_sql_request_for_bugfix'
115 146 ]);
116 147 echo '</td></tr>';
  148 + */
117 149  
118 150 /*
119 151 // Nettoyage de la liste des fournisseurs (superadmin only)
... ... @@ -141,6 +173,9 @@ if ($role == &#39;Super Administrateur&#39;) :
141 173 ]);
142 174 echo '</td></tr>';
143 175  
  176 +
  177 + echo $SEP;
  178 +
144 179 /*
145 180 * Mode debug
146 181 */
... ...
tests/Fixture/GroupesMetiersFixture.php
... ... @@ -41,12 +41,12 @@ class GroupesMetiersFixture extends TestFixture
41 41 public $records = [
42 42 [
43 43 //'id' => 1,
44   - 'nom' => 'Lorem ipsum dolor sit amet',
  44 + 'nom' => 'nom1',
45 45 'description' => 'Lorem ipsum dolor sit amet'
46 46 ],
47 47 [
48 48 //'id' => 2,
49   - 'nom' => 'Lorem ipsum dolor sit amet',
  49 + 'nom' => 'nom2',
50 50 'description' => 'Lorem ipsum dolor sit amet'
51 51 ],
52 52 ];
... ...
tests/Fixture/GroupesThematiquesFixture.php
... ... @@ -41,12 +41,12 @@ class GroupesThematiquesFixture extends TestFixture
41 41 public $records = [
42 42 [
43 43 //'id' => 1,
44   - 'nom' => 'Lorem ipsum dolor sit amet',
  44 + 'nom' => 'nom1',
45 45 'description' => 'Lorem ipsum dolor sit amet'
46 46 ],
47 47 [
48 48 //'id' => 2,
49   - 'nom' => 'Lorem ipsum dolor sit amet',
  49 + 'nom' => 'nom2',
50 50 'description' => 'Lorem ipsum dolor sit amet'
51 51 ],
52 52 ];
... ...
tests/Fixture/StatsFixture.php
... ... @@ -51,16 +51,18 @@ class StatsFixture extends TestFixture
51 51 public function init()
52 52 {
53 53 // (EP)
54   - $this->records = [];
  54 + $this->records = null;
  55 + //$this->records = [];
55 56 /*
56 57 $this->records = [
57 58 [
58   - 'year' => 'a4a821dd-3174-4fa5-9672-b2d5b3d9903c',
  59 + //'year' => 'a4a821dd-3174-4fa5-9672-b2d5b3d9903c',
  60 + 'year' => 2020,
59 61 'user_id' => 1,
60   - 'last_login_time' => '2020-10-21 17:11:18',
61   - 'last_logout_time' => '2020-10-21 17:11:18',
62   - 'connex_nb' => 1,
63   - 'connex_dur' => 1
  62 + //'last_login_time' => '2020-10-21 17:11:18',
  63 + //'last_logout_time' => '2020-10-21 17:11:18',
  64 + //'connex_nb' => 1,
  65 + //'connex_dur' => 1
64 66 ],
65 67 ];
66 68 */
... ...
tests/TestCase/Controller/EmpruntsControllerTest.php
... ... @@ -19,6 +19,7 @@ class EmpruntsControllerTest extends General
19 19 */
20 20 public $fixtures = [
21 21 'app.Configurations',
  22 + 'app.Stats',
22 23  
23 24 'app.Emprunts',
24 25  
... ...
tests/TestCase/Controller/MaterielsControllerTest.php
... ... @@ -58,7 +58,8 @@ class MaterielsControllerTest extends General {
58 58 */
59 59 public $fixtures = [
60 60 'app.Configurations',
61   -
  61 + 'app.Stats',
  62 +
62 63 'app.Materiels',
63 64  
64 65 //'app.sur_categories',
... ...