Commit 40a911298914f865b7d3f740bb0edbeefb56824e
1 parent
da8091c5
Exists in
master
and in
1 other branch
Grosse amélioration et bugfix liste matériels => bien plus pertinent
- (b) Bugfix et Amélioration filtre matériels (2 sur 2) - (e) Réorganisation des colonnes de la liste des matériels (2 sur 2) Autres modifs : - (i) On peut toujours imprimer une étiquette (plus seulement quand la fiche est validée) - (i) Date achat désormais facultative (avant validation) => si vide, numéro inventaire généré à partir de l'année courante - (b) Bugfix (2eme) remplacement d'un fournisseur par un autre (date achat peut être vide) v4.107.17-3.7.9
Showing
5 changed files
with
233 additions
and
21 deletions
Show diff stats
CHANGES.txt
... | ... | @@ -12,6 +12,20 @@ CHANGEMENTS |
12 | 12 | ======= NEWS ======= |
13 | 13 | |
14 | 14 | |
15 | +------- | |
16 | +NOVEMBRE 2020 - JANVIER 2021 : Chantier en cours pour arriver à la v5 avec le nouveau workflow de commande | |
17 | + | |
18 | +ROADMAP IRAP : | |
19 | +- Janvier : test en production | |
20 | +- Février : présentation aux JST | |
21 | +- Mars : usage obligatoire pour toute commande | |
22 | + | |
23 | + | |
24 | +------- | |
25 | +26/11/2020 NEWS#5 (v4.107.x) : | |
26 | + | |
27 | +Liste des matériels beaucoup plus pratique (colonnes plus pertinentes) et filtrage plus efficace | |
28 | + | |
15 | 29 | |
16 | 30 | ------- |
17 | 31 | 20/10/2020 NEWS#4 (v4.105.29-3.7.9) : |
... | ... | @@ -127,23 +141,166 @@ Outre ces changements, voici d'autres changements importants : |
127 | 141 | - Une VM linux (Ubuntu) est désormais disponible pour faciliter le déploiement |
128 | 142 | |
129 | 143 | |
130 | -======= TODO ======= | |
131 | 144 | |
132 | 145 | |
146 | +======= TODO3 - PEUT ATTENDRE ======= | |
133 | 147 | |
134 | -======= CHANGES ======= | |
148 | +will_stay => resident (ou permanent) | |
149 | + | |
150 | +EOTP : | |
151 | +“Sur quel(s) budget(s) ?” c'est pour le lot 1 pour l'acheteur (status CREATED) | |
152 | +“Entité(s) dépensière(s)” / lot 2 gestionnaire (status VALIDATED) | |
153 | + | |
154 | +Modif d’une fiche materiel ne doit pas refaire une commande !!! | |
155 | + | |
156 | +- Install from scratch | |
157 | + | |
158 | +- Update VM | |
159 | + | |
160 | +- lire article juridique | |
161 | + | |
162 | +- check add by copy | |
163 | + | |
164 | +- appel à contribuer | |
165 | + | |
166 | +STATS | |
167 | +moyenne annuelle, total : arrondir (pas de virgule, ce sont des matos) | |
168 | +2 premières ligne en jaune pour mettre en évidence | |
169 | +mettre en rouge les évol. % négatifs | |
170 | +Ca continue de marcher en 2021 ? | |
171 | + | |
172 | +Fournisseur update : | |
173 | +3 - (LATER) Simplifier le beforeSave() sur le traitement des feurs car ça sera désormais inutile vue que CLEAN | |
174 | + | |
175 | +GO GENERIC : | |
176 | +delete generic | |
177 | +index generic | |
178 | +add_edit generic | |
179 | + | |
180 | +Services (poles) | |
181 | + | |
182 | +cakephp 3.9 | |
183 | + | |
184 | +cake crud + view | |
185 | + | |
186 | + | |
187 | + | |
188 | + | |
189 | +======= TODO2 - URGENT ======= | |
190 | + | |
191 | +- Adapter règles "nouveau suivi" | |
192 | + | |
193 | + | |
194 | +- lot1 toujours obligatoire (en dur dans Table), LOT2 = ssi status > CREATED (géré via soft dans add_edit(), la vue ne doit rien gérer du tout !) | |
195 | + | |
196 | + | |
197 | +- technique/admin inutile | |
198 | + | |
199 | + | |
200 | +- Gestionnaire de ref : + “Je ne sais pas” | |
201 | + | |
202 | + | |
203 | +Install titreuse Carole | |
204 | + | |
205 | +DB complète à mettre à jour | |
206 | + | |
207 | +- (MT) Install locale, puis répondre stagiaire | |
208 | + | |
209 | +- install GEPI | |
135 | 210 | |
136 | -TODO : | |
137 | - - (b) Bugfix "nouveau suivi" | |
211 | +- déclarer etiquette collée => supprimer ? | |
212 | + | |
213 | +- Commande directe ou seulement pour inventaire : "Enregistrer & Commander" et "Enregistrer seulement" | |
214 | + | |
215 | +- Infos obligatoires LOT1 | |
216 | + | |
217 | +- Supprimer un CREATED + Annuler cde + tobeordered=true + edit possible | |
218 | + | |
219 | +- Validation (LOT2 obligatoire) + invalider + edit LOT2 | |
220 | + | |
221 | +ADMIN Dernier modificateur = Gestionnaire de ref. | |
222 | + | |
223 | +Ancien seuil 800€ doit rester valable pour anciens matos | |
224 | + | |
225 | +Partager les imprimantes de Jean-Louis (pour Roche) et Carole (pour Belin) | |
226 | + | |
227 | +Responsable = groupe métier, ou projet, ou pôle (PIME), MAIS PAS thématique | |
228 | + | |
229 | +Bug groupe thématique dans groupe metier sur fiche materiel (+ virer “code comptable” et changer le nom des champs eotp, ajouter ligne budgétaire…) | |
230 | + | |
231 | +Procédure accueil : | |
232 | +>=10K obligatoire (inventaire comptable) | |
233 | +<10K : possible quand même (inventaire physique) | |
234 | +Bouton “Je veux commander un matos” | |
235 | + | |
236 | +Mail “Matériel à commander (Fiche inventirap n° XXX)” : | |
237 | +Ce mail est destiné au gestionnaire “untel” | |
238 | +Acheteur/Demandeur : | |
239 | +Utilisateur : | |
240 | +Désignation : | |
241 | +Description : | |
242 | +A commander sur le(s) budget(s) : | |
243 | +Devis en pièce jointe | |
244 | + | |
245 | + | |
246 | +GEPI (Laurence) | |
247 | + | |
248 | +Nouvelle fiche matos : | |
249 | +Bouton “Commander” | |
250 | +=> Si ADMIN, devient “Enregistrer” (et pas de mail envoyé) | |
251 | +Menu Matos/Nouveau materiel => ADMIN only | |
252 | + | |
253 | +Commander etiqueteuses | |
254 | + | |
255 | + | |
256 | +Bugfix : un profil Utilisateur ne doit pas pouvoir changer l’acheteur (acheteur = lui) !!! | |
257 | + | |
258 | +User = Acheteur | |
259 | + | |
260 | +Modif possible sans devoir dévalider/revalider | |
261 | + | |
262 | +Outils : voir/gérer ? | |
263 | + | |
264 | +Photo : type ? | |
265 | +documents.photo = TRUE | |
266 | + | |
267 | +Fournisseurs : src/Template/Common/add_edit.ctp | |
268 | + | |
269 | + | |
270 | + | |
271 | + | |
272 | + | |
273 | + | |
274 | +Ecran d’accueil : | |
275 | +Voir Mes matériels (que j’ai achetés) | |
276 | +Voir les Matériels que j’utilise (find sur champ utilisateur) | |
277 | +(admin) Voir Matériels à commander (tous les TOBEORDERED qui sont à mon nom de gestionnaire ET qui ont (date-cde null OU num-BC null) | |
278 | +(admin) “Voir toutes les commandes en cours” | |
279 | +(admin) “Voir les matériels ‘zombie’” (materiels CREATED depuis longtemps, et toujours pas ORDERED => sans doute à virer (pour ne pas fausser les stats...) | |
280 | +(admin) Voir matos à archiver | |
281 | + | |
282 | + | |
283 | + | |
284 | +TAG version 3.7.9 finale ANCIEN workflow | |
285 | + | |
286 | + | |
287 | + | |
288 | +======= TODO1 - BUGFIXES (TRES URGENT) ======= | |
289 | + | |
290 | + - (b) Bugfix et Amélioration Recherche matériels | |
291 | + - (e) Réorganisation des colonnes de la liste des matériels recherchés | |
292 | + | |
293 | + | |
294 | +======= CHANGES ======= | |
138 | 295 | |
139 | 296 | ------- |
140 | 297 | 26/11/2020 v4.107.17-3.7.9 |
141 | - - (b) Bugfix et amélioration Recherche et filtre matériels (2 sur 2) | |
298 | + - (b) Bugfix et Amélioration filtre matériels (2 sur 2) | |
142 | 299 | - (e) Réorganisation des colonnes de la liste des matériels (2 sur 2) |
143 | 300 | |
144 | 301 | ------- |
145 | 302 | 25/11/2020 v4.107.16-3.7.9 |
146 | - - (b) Bugfix et amélioration Recherche et filtre matériels (1 sur 2) | |
303 | + - (b) Bugfix et amélioration filtre matériels (1 sur 2) | |
147 | 304 | - (e) Réorganisation des colonnes de la liste des matériels (1 sur 2) |
148 | 305 | - (i) On peut toujours imprimer une étiquette (plus seulement quand la fiche est validée) |
149 | 306 | - (i) Date achat désormais facultative (avant validation) | ... | ... |
README.md
... | ... | @@ -52,8 +52,8 @@ Logiciel testé et validé sur les configurations suivantes : |
52 | 52 | |
53 | 53 | -------------------------------------------------------------------------------------------- |
54 | 54 | |
55 | -Date: 25/11/2020 | |
56 | -Version: 4.107.16-3.7.9 | |
55 | +Date: 26/11/2020 | |
56 | +Version: 4.107.17-3.7.9 | |
57 | 57 | |
58 | 58 | |
59 | 59 | HISTORIQUE DES CHANGEMENTS DE VERSION : voir le fichier CHANGES.txt (ou la page web /pages/changes) | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -899,7 +899,7 @@ class MaterielsController extends AppController { |
899 | 899 | //debug($this->request); |
900 | 900 | $conditions = []; |
901 | 901 | //$contain = []; |
902 | - $contain = ['Fournisseurs', 'Categories', 'Organismes', 'Projets', 'Users']; | |
902 | + $contain = ['Sites', 'Fournisseurs', 'Categories', 'Organismes', 'Projets', 'Users']; | |
903 | 903 | |
904 | 904 | |
905 | 905 | // - FILTRE Statut ? (status=CREATED, status=VALIDATED, ...) |
... | ... | @@ -1295,16 +1295,30 @@ class MaterielsController extends AppController { |
1295 | 1295 | 'limit' => $limit, |
1296 | 1296 | 'maxLimit' => 1000, |
1297 | 1297 | 'sortWhitelist' => [ |
1298 | + | |
1299 | + // - Champs directs | |
1298 | 1300 | 'designation', |
1299 | 1301 | 'numero_laboratoire', |
1300 | - 'Categories.nom', | |
1301 | - 'Organismes.nom', | |
1302 | + // tutelle | |
1302 | 1303 | 'numero_inventaire_organisme', |
1304 | + 'numero_commande', | |
1303 | 1305 | //'nom_responsable', |
1304 | 1306 | 'nom_user', |
1307 | + | |
1305 | 1308 | 'status', |
1306 | 1309 | 'date_acquisition', |
1307 | - 'etiquette', | |
1310 | + 'prix_ht', | |
1311 | + //'etiquette', | |
1312 | + //'lieu_detail', | |
1313 | + | |
1314 | + // - Champs FK (HasOne only) | |
1315 | + 'Sites.nom', | |
1316 | + 'Categories.nom', | |
1317 | + //'Organismes.nom', | |
1318 | + // Gestionnaire | |
1319 | + 'Users.nom', | |
1320 | + 'Fournisseurs.nom', | |
1321 | + | |
1308 | 1322 | ], |
1309 | 1323 | 'order' => [ |
1310 | 1324 | 'numero_laboratoire' => 'desc' |
... | ... | @@ -1423,6 +1437,9 @@ class MaterielsController extends AppController { |
1423 | 1437 | */ |
1424 | 1438 | $materiel = $this->Materiels->get($id, [ |
1425 | 1439 | 'contain' => [ |
1440 | + | |
1441 | + // 1) HasOne | |
1442 | + | |
1426 | 1443 | 'SurCategories', |
1427 | 1444 | 'Categories', |
1428 | 1445 | 'SousCategories', |
... | ... | @@ -1431,15 +1448,23 @@ class MaterielsController extends AppController { |
1431 | 1448 | 'Projets', |
1432 | 1449 | 'Organismes', |
1433 | 1450 | 'Sites', |
1451 | + 'Fournisseurs', | |
1452 | + | |
1453 | + //'Gestionnaires', | |
1454 | + 'Users', | |
1455 | + | |
1456 | + // 2) HasMany | |
1457 | + | |
1434 | 1458 | 'Documents', |
1435 | 1459 | 'Emprunts', |
1436 | 1460 | // Tous les suivis de ce $materiel (sans leur type) |
1437 | 1461 | //'Suivis', |
1438 | 1462 | // Tous les suivis de ce $materiel AVEC leur type de suivi |
1439 | 1463 | 'Suivis.TypeSuivis', |
1440 | - 'Fournisseurs' | |
1464 | + | |
1441 | 1465 | ] |
1442 | 1466 | ]); |
1467 | + | |
1443 | 1468 | $this->e = $materiel; |
1444 | 1469 | $e = $materiel; |
1445 | 1470 | |
... | ... | @@ -2885,6 +2910,7 @@ class MaterielsController extends AppController { |
2885 | 2910 | $search_fields = [ |
2886 | 2911 | |
2887 | 2912 | // 1) Materiels table direct (straight) columns |
2913 | + | |
2888 | 2914 | 'Materiels.designation', |
2889 | 2915 | 'Materiels.numero_laboratoire', |
2890 | 2916 | 'Materiels.numero_inventaire_organisme', |
... | ... | @@ -2899,11 +2925,15 @@ class MaterielsController extends AppController { |
2899 | 2925 | 'Materiels.date_acquisition', |
2900 | 2926 | 'Materiels.lieu_detail', |
2901 | 2927 | |
2902 | - // 2) Materiels table foreign keys | |
2928 | + // 2) Materiels table foreign keys (HasOne only) | |
2929 | + | |
2930 | + 'Sites.nom', | |
2903 | 2931 | 'Fournisseurs.nom', |
2904 | 2932 | 'Categories.nom', |
2905 | 2933 | 'Organismes.nom', |
2906 | 2934 | 'Projets.nom', |
2935 | + | |
2936 | + // - Gestionnaire | |
2907 | 2937 | 'Users.nom', |
2908 | 2938 | |
2909 | 2939 | ]; | ... | ... |
src/Template/Materiels/index.ctp
... | ... | @@ -31,6 +31,7 @@ $statuses_color = $statuses_color; |
31 | 31 | $nbMateriels = $nbMateriels; |
32 | 32 | $controller=$controller; |
33 | 33 | $materiels = $materiels; |
34 | +//debug($materiels); | |
34 | 35 | $configuration = $configuration; |
35 | 36 | $searchfor = $searchfor; |
36 | 37 | |
... | ... | @@ -847,7 +848,10 @@ if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATU |
847 | 848 | --> |
848 | 849 | <th><?= $this->Paginator->sort('nom_user', "Utilisateur") ?></th> |
849 | 850 | |
850 | - <th><?= $this->Paginator->sort('Gestionnaires.nom', 'Gestionnaire') ?></th> | |
851 | + <!-- | |
852 | + <th><= $this->Paginator->sort('Gestionnaires.nom', 'Gestionnaire') ?></th> | |
853 | + --> | |
854 | + <th><?= $this->Paginator->sort('Users.nom', 'Gestionnaire') ?></th> | |
851 | 855 | |
852 | 856 | <!-- |
853 | 857 | <th><= $this->Paginator->sort('categorie_id', 'Catégorie') ?></th> |
... | ... | @@ -858,11 +862,14 @@ if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATU |
858 | 862 | |
859 | 863 | <th><?= $this->Paginator->sort('date_acquisition', 'Date Achat') ?></th> |
860 | 864 | |
861 | - <th><?= $this->Paginator->sort('prix', 'Prix') ?></th> | |
865 | + <th><?= $this->Paginator->sort('prix_ht', 'Prix') ?></th> | |
862 | 866 | |
863 | 867 | <th><?= $this->Paginator->sort('Fournisseurs.nom', 'Fournisseur') ?></th> |
864 | 868 | |
865 | - <th><?= $this->Paginator->sort('lieu_detail', 'Lieu') ?></th> | |
869 | + <!-- | |
870 | + <th><= $this->Paginator->sort('lieu_detail', 'Lieu') ?></th> | |
871 | + --> | |
872 | + <th><?= $this->Paginator->sort('Sites.nom', 'Lieu') ?></th> | |
866 | 873 | |
867 | 874 | <!-- |
868 | 875 | <th><= $this->Paginator->sort('Organismes.nom', 'Org.') ?></th> |
... | ... | @@ -938,7 +945,10 @@ if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATU |
938 | 945 | --> |
939 | 946 | <td class="smallText"><?= h($materiel->nom_user) ?></td> |
940 | 947 | |
941 | - <td class="smallText"><?= $materiel->has('gestionnaire') ? h($materiel->gestionnaires->nom) : '' ?></td> | |
948 | + <!-- | |
949 | + <td class="smallText"><= $materiel->has('gestionnaire') ? h($materiel->gestionnaire->nom) : '' ?></td> | |
950 | + --> | |
951 | + <td class="smallText"><?= $materiel->has('user') ? h($materiel->user->nom) : '' ?></td> | |
942 | 952 | |
943 | 953 | <td class="smallText"><?= $materiel->has('category') ? h($materiel->category->nom) : '' ?></td> |
944 | 954 | |
... | ... | @@ -970,7 +980,14 @@ if ($SELECTED_STATUS) echo $this->Form->hidden('what', ['value'=>$SELECTED_STATU |
970 | 980 | |
971 | 981 | <td class="smallText"><?= $materiel->has('fournisseur') ? h($materiel->fournisseur->nom) : '' ?></td> |
972 | 982 | |
973 | - <td class="smallText"><?= h($materiel->lieu_detail) ?></td> | |
983 | + <?php | |
984 | + $lieu = $materiel->has('site') ? h($materiel->site->nom) : ''; | |
985 | + if ($materiel->lieu_detail) { | |
986 | + if ($materiel->has('site')) $lieu .= '-'; | |
987 | + $lieu .= $materiel->lieu_detail; | |
988 | + } | |
989 | + ?> | |
990 | + <td class="smallText"><?=$lieu?></td> | |
974 | 991 | |
975 | 992 | <!-- |
976 | 993 | <td class="smallText"><= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td> | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -717,7 +717,7 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
717 | 717 | $displayElement(__('Lieu de stockage'), $entity->has('site') ? h($entity->site->nom) : ''); |
718 | 718 | $displayElement(__('Détail lieu de stockage'), h($entity->lieu_detail)); |
719 | 719 | |
720 | - // Acheteur (lien mailto) | |
720 | + // - Acheteur (lien mailto) | |
721 | 721 | $displayElement(__("Nom de l'acheteur"), |
722 | 722 | $this->Html->link( |
723 | 723 | h($entity->nom_responsable), |
... | ... | @@ -727,26 +727,34 @@ $CAN_PRINT_LABEL = $IS_VALIDATED && $configuration->hasPrinter && $USER_IS_ADMIN |
727 | 727 | ) |
728 | 728 | ); |
729 | 729 | |
730 | - // Utilisateur | |
730 | + // - Utilisateur | |
731 | 731 | $displayElement(__("Nom de l'utilisateur (destination du bien)"), h($entity->nom_user)); |
732 | 732 | |
733 | 733 | $displayElement(__('N. interne (labo)'), h($entity->numero_laboratoire)); |
734 | + | |
735 | + // - Gestionnaire | |
736 | + $entity->user && $displayElement(__('Gestionnaire de référence'), h($entity->user->nom)); | |
737 | + /* | |
734 | 738 | if ($entity->gestionnaire_id) { |
735 | 739 | $gestionnaire = TableRegistry::getTableLocator()->get('Users')->get($entity->gestionnaire_id); |
736 | 740 | $displayElement(__('Gestionnaire de référence'), h($gestionnaire->nom)); |
737 | 741 | } |
742 | + */ | |
738 | 743 | /* |
739 | 744 | $gestionnaire = TableRegistry::get('Users')->find()->where([ |
740 | 745 | 'id =' => $entity->gestionnaire_id |
741 | 746 | ]); |
742 | 747 | $displayElement(__('Gestionnaire de référence'), h($gestionnaire->first()['nom'])); |
743 | 748 | */ |
749 | + | |
750 | + // - Créateur et modificateur de la fiche | |
744 | 751 | if ($role == 'Super Administrateur') { |
745 | 752 | //$displayElement(__('Date création'), h($entity->created)); |
746 | 753 | $displayElement(__('Nom du créateur'), h($entity->nom_createur)); |
747 | 754 | $displayElement(__('Date modification'), h($entity->modified)); |
748 | 755 | $displayElement(__('Nom du modificateur'), h($entity->nom_modificateur)); |
749 | 756 | } |
757 | + | |
750 | 758 | ?> |
751 | 759 | </table> |
752 | 760 | ... | ... |