Commit 345a9eec40a50c8b39fe31cdd3127c1dcd5033bb
Exists in
master
and in
3 other branches
Merge branch 'master' of https://gitlab.irap.omp.eu/epallier/labinvent.git
Showing
17 changed files
with
121 additions
and
19 deletions
Show diff stats
README-LABINVENT.md
... | ... | @@ -50,12 +50,16 @@ Logiciel testé et validé sur les configurations suivantes : |
50 | 50 | |
51 | 51 | VERSION ACTUELLE |
52 | 52 | |
53 | -Date: 23/06/2016 | |
54 | -Version: 2.4.6.9 | |
53 | +Date: 24/06/2016 | |
54 | +Version: 2.4.7.0 | |
55 | 55 | |
56 | -Date garantie (materiel) + bugfixes calcul date (suivi) | |
56 | +!!! Se placer dans database/update et exécuter le script ./db-update-2016-06-24.sh !!! | |
57 | 57 | |
58 | -Demande (terminé) : https://projects.irap.omp.eu/issues/3804 | |
58 | +gérer panne matériel + validation si champ rempli + menu home profil responsable | |
59 | + | |
60 | +Demande (terminé) : https://projects.irap.omp.eu/issues/3897 | |
61 | + https://projects.irap.omp.eu/issues/3807 | |
62 | + https://projects.irap.omp.eu/issues/3781 | |
59 | 63 | |
60 | 64 | Version majeure en cours (2.4): https://projects.irap.omp.eu/versions/107 |
61 | 65 | |
... | ... | @@ -91,6 +95,8 @@ Liste complète des évolutions: https://gitlab.irap.omp.eu/epallier/labinvent/c |
91 | 95 | |
92 | 96 | MODIFICATIONS STRUCTURELLES A FAIRE MANUELLEMENT APRES LA MISE A JOUR (git pull) |
93 | 97 | |
98 | +24/06/16 (v2.4.7.0) Se placer dans database/update et exécuter le script ./db-update-2016-06-24.sh | |
99 | + | |
94 | 100 | 23/06/16 (v2.4.6.5) Se placer dans database/update et exécuter le script ./db-update-2016-06-23.sh |
95 | 101 | |
96 | 102 | 23/06/16 (v2.4.6.4) Se placer dans database/update et exécuter le script ./db-update-2016-06-22.sh | ... | ... |
database/labinvent_2.1_12-05-16.sql
... | ... | @@ -412,7 +412,7 @@ ALTER TABLE `users` |
412 | 412 | ADD CONSTRAINT `fk_users_groupe_thematique_id` FOREIGN KEY (`groupe_thematique_id`) REFERENCES `groupes_thematiques` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION; |
413 | 413 | |
414 | 414 | -- Insertion par défaut |
415 | -Insert into type_suivis(id, nom) values (9, 'Panne'); | |
415 | +Insert into type_suivis(nom) values ('Réparation'); | |
416 | 416 | Insert into sites(id, nom) values (9, 'N/A'); |
417 | 417 | |
418 | 418 | -- Insertion par défaut pour la table configuration | ... | ... |
... | ... | @@ -0,0 +1,34 @@ |
1 | +#!/bin/bash | |
2 | + | |
3 | +# Pour Mac OS recent (10.10, Yosemite), la syntaxe du SED est differente | |
4 | +# Il faut donc faire une copie de ce fichier et transformer les instructions sed a l'interieur | |
5 | +# Pour cela, il suffit d'executer ces 2 lignes : | |
6 | +# cp ce_script.sh ce_script_macosx.sh | |
7 | +# sed -e "s/ -i / -i '' /" -i '' ce_script_macosx.sh | |
8 | + | |
9 | +if [ ! -f ../../config/app.php ] ; then | |
10 | +echo "Vous devez executer ce script depuis le dossier database/update/" | |
11 | +exit 1 | |
12 | +fi | |
13 | + | |
14 | + | |
15 | +# Get login, pass, dbname, and hostname | |
16 | +username=$(grep "/\*d\*/'username'" ../../config/app.php | cut -d"'" -f4) | |
17 | +password=$(grep "/\*d\*/'password'" ../../config/app.php | cut -d"'" -f4) | |
18 | +database=$(grep "/\*d\*/'database'" ../../config/app.php | cut -d"'" -f4) | |
19 | +host=$(grep "/\*d\*/'host'" ../../config/app.php | cut -d"'" -f4) | |
20 | + | |
21 | + | |
22 | +cp -p ./script_sql/db-update-2016-06-24.sql ./script_sql/db-update-2016-06-24-build.sql | |
23 | + | |
24 | +# Execute sql update script | |
25 | +sed -e "s/database/$database/" -i ./script_sql/db-update-2016-06-24-build.sql | |
26 | +mysql --user=$username --password=$password -h $host < ./script_sql/db-update-2016-06-24-build.sql | |
27 | + | |
28 | +# Delete cakephp cache | |
29 | +sudo rm ../../tmp/cache/models/* | |
30 | +sudo rm ../../tmp/cache/persistent/* | |
31 | + | |
32 | +sudo chmod -R 770 ../../tmp | |
33 | +sudo chmod -R 770 ../../vendor | |
34 | +sudo chmod -R 770 ../../webroot | ... | ... |
database/update/db-update-modele.sh
... | ... | @@ -29,6 +29,6 @@ mysql --user=$username --password=$password -h $host < ./script_sql/db-update-xx |
29 | 29 | sudo rm ../../tmp/cache/models/* |
30 | 30 | sudo rm ../../tmp/cache/persistent/* |
31 | 31 | |
32 | -sudo chmod -R 777 ../../tmp | |
33 | -sudo chmod -R 777 ../../vendor | |
34 | -sudo chmod -R 777 ../../webroot | |
32 | +sudo chmod -R 770 ../../tmp | |
33 | +sudo chmod -R 770 ../../vendor | |
34 | +sudo chmod -R 770 ../../webroot | ... | ... |
database/update/script_sql/.gitignore
install/installation.sh
... | ... | @@ -124,7 +124,7 @@ sudo chgrp -R $grp ./vendor/phpqrcode/ |
124 | 124 | # Normalement, il faudrait ecrire dans app/tmp et pas dans app/webroot |
125 | 125 | # EP 2014/12/11 chmod 775 ne suffit pas |
126 | 126 | #chmod -R 775 ./webroot/img/ |
127 | -sudo chmod -R 777 ./webroot/img/ | |
127 | +sudo chmod -R 770 ./webroot/img/ | |
128 | 128 | #sudo chown -R $grp:$grp ./webroot/img/ |
129 | 129 | sudo chgrp -R $grp ./webroot/img/ |
130 | 130 | # TODO: il faudrait plutot faire ceci : |
... | ... | @@ -149,7 +149,7 @@ sudo chgrp -R $grp ./tmp/ |
149 | 149 | chmod -R 777 ./logs/ |
150 | 150 | sudo chgrp -R $grp ./logs/ |
151 | 151 | #Il semble qu'il manque des droits au dossier Vendor, droit trop général à réduire (identifié les composants qui ont besoin de s'éxécuter ou de se lire, pas d'écriture dans le dossier Vendor normalement...) |
152 | -sudo chmod -R 777 ./vendor/ | |
152 | +sudo chmod -R 770 ./vendor/ | |
153 | 153 | echo "==>Done" |
154 | 154 | |
155 | 155 | ... | ... |
src/Controller/AppController.php
... | ... | @@ -80,7 +80,7 @@ class AppController extends Controller |
80 | 80 | if($role == 'Super Administrateur') return true; |
81 | 81 | |
82 | 82 | //Pour tout le monde |
83 | - if (in_array($action, ['index', 'find', 'view', 'creer', 'add', 'getNextDate'])) return true; | |
83 | + if (in_array($action, ['index', 'find', 'view', 'creer', 'add', 'getNextDate', 'getDateGarantie'])) return true; | |
84 | 84 | |
85 | 85 | |
86 | 86 | // Par défaut refuser | ... | ... |
src/Controller/MaterielsController.php
... | ... | @@ -170,7 +170,18 @@ class MaterielsController extends AppController |
170 | 170 | $this->set('STATUS', $this->passedArgs[0]); |
171 | 171 | } |
172 | 172 | |
173 | - if(!(in_array($this->role, ['Administration', 'Administration Plus', 'Super Administrateur']))) { | |
173 | + $GM = $this->request->query('GM'); | |
174 | + if(isset($GM)) { | |
175 | + $condition = ['Materiels.groupes_metier_id =' => $this->request->query('GM'), 'Materiels.status !=' => 'ARCHIVED']; | |
176 | + } | |
177 | + | |
178 | + $GMV = $this->request->query('GMV'); | |
179 | + if(isset($GMV)) { | |
180 | + $condition = ['Materiels.groupes_metier_id =' => $this->request->query('GMV'), 'Materiels.status =' => 'CREATED', 'Materiels.status !=' => 'ARCHIVED']; | |
181 | + } | |
182 | + | |
183 | + | |
184 | + if($this->role == 'Utilisateur') { | |
174 | 185 | $condition = ['Materiels.status !=' => 'ARCHIVED']; |
175 | 186 | } |
176 | 187 | |
... | ... | @@ -363,6 +374,13 @@ class MaterielsController extends AppController |
363 | 374 | $materiel->set('date_archivage', date('Y-m-d')); |
364 | 375 | } |
365 | 376 | |
377 | + if($newStatus == 'VALIDATED') { | |
378 | + if(!isset($materiel->nom_responsable) || !isset($materiel->fournisseur) || !isset($materiel->numero_commande) || !isset($materiel->organisme_id) || !isset($materiel->date_reception) || !isset($materiel->prix_ht)) { | |
379 | + $this->Flash->success('Pour valider un matériel, les champs suivants ne doivent pas être vide : Nom propriétaire, Fournisseur, Numéro de commande, Organisme, prix et date de reception'); | |
380 | + return $this->redirect(['action' => 'edit', $id]); | |
381 | + } | |
382 | + } | |
383 | + | |
366 | 384 | if ($this->Materiels->save($materiel, ['checkRules' => false, 'checkExisting' => false])) { |
367 | 385 | $this->Flash->success(__($message)); |
368 | 386 | $this->sendEmailToManagement($id); | ... | ... |
src/Controller/SuivisController.php
... | ... | @@ -58,12 +58,19 @@ class SuivisController extends AppController |
58 | 58 | */ |
59 | 59 | public function index() |
60 | 60 | { |
61 | + $condition = ''; | |
62 | + | |
63 | + $GM = $this->request->query('GM'); | |
64 | + if(isset($GM)) { | |
65 | + $condition = ['Suivis.groupes_metier_id =' => $this->request->query('GM')]; | |
66 | + } | |
67 | + | |
61 | 68 | $this->paginate = [ |
62 | 69 | 'contain' => ['Materiels', 'TypeSuivis'] |
63 | 70 | ]; |
64 | - $suivis = $this->paginate($this->Suivis); | |
71 | + $suivis = $this->paginate($this->Suivis->find('all', ['conditions' => $condition])); | |
65 | 72 | |
66 | - $this->set('nbSuivis', $this->Suivis->find('all')->count()); | |
73 | + $this->set('nbSuivis', $this->Suivis->find('all', ['conditions' => $condition])->count()); | |
67 | 74 | |
68 | 75 | $this->set(compact('suivis')); |
69 | 76 | $this->set('_serialize', ['suivis']); | ... | ... |
src/Model/Entity/Materiel.php
... | ... | @@ -48,6 +48,7 @@ use Cake\ORM\Entity; |
48 | 48 | * @property int $organisme_id |
49 | 49 | * @property \App\Model\Entity\Organisme $organisme |
50 | 50 | * @property int $site_id |
51 | + * @property bool $hors_service | |
51 | 52 | * @property \App\Model\Entity\Site $site |
52 | 53 | * @property \App\Model\Entity\Document[] $documents |
53 | 54 | * @property \App\Model\Entity\Emprunt[] $emprunts | ... | ... |
src/Model/Table/MaterielsTable.php
... | ... | @@ -161,6 +161,11 @@ class MaterielsTable extends AppTable |
161 | 161 | ->allowEmpty('etiquette'); |
162 | 162 | |
163 | 163 | $validator |
164 | + ->boolean('hors_service') | |
165 | + ->allowEmpty('hors_service'); | |
166 | + | |
167 | + | |
168 | + $validator | |
164 | 169 | ->notEmpty('site_id', 'Ce champ doit être rempli'); |
165 | 170 | |
166 | 171 | $validator | ... | ... |
src/Template/Layout/default.ctp
... | ... | @@ -94,7 +94,7 @@ $cakeDescription = 'Labinvent 2'; |
94 | 94 | </i></td> |
95 | 95 | <td id="version"> |
96 | 96 | <!-- VERSION M.m.f.b (version (M)ajeure, version (m)ineure, numero de nouvelle (f)onctionnalite, numero de (b)ugfix) --> |
97 | - <font color="black">VERSION 2.4.6.9 (23/06/2016)</font> | |
97 | + <font color="black">VERSION 2.4.7.0 (24/06/2016)</font> | |
98 | 98 | </td> |
99 | 99 | </tr> |
100 | 100 | </table> | ... | ... |
src/Template/Materiels/edit.ctp
... | ... | @@ -21,6 +21,7 @@ if ($IS_VALIDATED) |
21 | 21 | 'materiel_technique', |
22 | 22 | 'site_id', |
23 | 23 | 'date_acquisition', |
24 | + 'date_reception', | |
24 | 25 | 'organisme_id', |
25 | 26 | 'prix_ht' |
26 | 27 | ), |
... | ... | @@ -48,6 +49,10 @@ if ($IS_VALIDATED) |
48 | 49 | |
49 | 50 | ]); |
50 | 51 | |
52 | + if(in_array($role, ['Administration', 'Administration Plus', 'Super Administrateur']) || ($role == 'Utilisateur' && (in_array($username, [$materiel->nom_createur, $materiel->nom_responsable]))) || ($role == 'Responsable' && ($materiel->groupes_metier_id == $userConnected->groupes_metier_id || $materiel->groupes_thematique_id == $userConnected->groupe_thematique_id))) { | |
53 | + echo $this->Form->input('hors_service', ['label' => 'Appareil hors_service']); | |
54 | + } | |
55 | + | |
51 | 56 | echo $this->Form->input('sur_categorie_id', [ |
52 | 57 | 'label' => 'Domaine', |
53 | 58 | 'options' => $surCategories, | ... | ... |
src/Template/Materiels/view.ctp
... | ... | @@ -2,8 +2,14 @@ |
2 | 2 | <div class="materiels view"> |
3 | 3 | |
4 | 4 | <h2> |
5 | - <?php if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; ?> | |
6 | - <?= h($materiel->designation) ?> | |
5 | + <?php if (h($materiel->status) == 'ARCHIVED') echo '<i class="icon-inbox"></i> '; | |
6 | + $panne = ''; | |
7 | + if(h($materiel->hors_service)) { | |
8 | + $panne = ' (HORS SERVICE)'; | |
9 | + } | |
10 | + ?> | |
11 | + | |
12 | + <?= h($materiel->designation).$panne?> | |
7 | 13 | <span style="font-size: 70%; color: grey;"> |
8 | 14 | <?= h($materiel->numero_laboratoire) ?> |
9 | 15 | <?php if (h($materiel->status) == 'ARCHIVED') echo ' (Archivé)'; ?> |
... | ... | @@ -202,7 +208,9 @@ |
202 | 208 | $displayElement(__('Date d\'achat'), h($materiel->date_acquisition)); |
203 | 209 | |
204 | 210 | $displayElement(__('Date de reception'), h($materiel->date_reception)); |
205 | - $displayElement(__('Duree garantie'), h($materiel->duree_garantie).' '.h($materiel->unite_duree_garantie)); | |
211 | + if(!empty(h($materiel->duree_garntie))) { | |
212 | + $displayElement(__('Duree garantie'), h($materiel->duree_garantie).' '.h($materiel->unite_duree_garantie)); | |
213 | + } | |
206 | 214 | $displayElement(__('Date fin de garantie'), h($materiel->date_fin_garantie)); |
207 | 215 | |
208 | 216 | $displayElement(__('Statut'), h($materiel->status)); | ... | ... |
src/Template/Pages/home_app.ctp
... | ... | @@ -20,6 +20,19 @@ |
20 | 20 | 'controller' => 'materiels', 'action' => 'index', 'TOBEARCHIVED']).' </td></tr>'; |
21 | 21 | echo '</table>'; |
22 | 22 | } |
23 | + | |
24 | + //Utilisateur responsable | |
25 | + if ($role == 'Responsable') { | |
26 | + echo '<table cellpadding="0" cellspacing="0" style="width: 800px;">'; | |
27 | + echo '<tr><th></th></tr>'; | |
28 | + echo '<tr><td> '.$this->Html->link('Voir les matériels de mon groupe métier', [ | |
29 | + 'controller' => 'materiels', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id]).' </td></tr>'; | |
30 | + echo '<tr><td> '.$this->Html->link('Voir les matériels de mon groupe métier à valider', [ | |
31 | + 'controller' => 'materiels', 'action' => 'index', 'GMV' => $userConnected->groupes_metier_id]).' </td></tr>'; | |
32 | + echo '<tr><td> '.$this->Html->link('Voir les suivis des materiels donc je suis responsable', [ | |
33 | + 'controller' => 'suivis', 'action' => 'index', 'GM' => $userConnected->groupes_metier_id]).' </td></tr>'; | |
34 | + echo '</table>'; | |
35 | + } | |
23 | 36 | ?> |
24 | 37 | |
25 | 38 | </div> | ... | ... |
tests/Fixture/MaterielsFixture.php
... | ... | @@ -53,7 +53,8 @@ class MaterielsFixture extends TestFixture |
53 | 53 | 'date_reception' => ['type' => 'date', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], |
54 | 54 | 'organisme_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
55 | 55 | 'site_id' => ['type' => 'integer', 'length' => 11, 'unsigned' => false, 'null' => true, 'default' => '2', 'comment' => '', 'precision' => null, 'autoIncrement' => null], |
56 | - '_indexes' => [ | |
56 | + 'hors_service' => ['type' => 'boolean', 'length' => null, 'null' => true, 'default' => null, 'comment' => '', 'precision' => null], | |
57 | + '_indexes' => [ | |
57 | 58 | 'fk_administrative_materials_sub_categories1' => ['type' => 'index', 'columns' => ['sous_categorie_id'], 'length' => []], |
58 | 59 | 'fk_materials_thematic_group1' => ['type' => 'index', 'columns' => ['groupes_thematique_id'], 'length' => []], |
59 | 60 | 'fk_materials_work_group1' => ['type' => 'index', 'columns' => ['groupes_metier_id'], 'length' => []], | ... | ... |