Commit a6df1a78b9fc74ee3c72d9c05f735948d1ed75a9

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

Préparation du partitionnement des materiels par site (phase 2/3)

=> Ajout liste users associés dans vue site (view)
=> Ajout champ site_id dans vues users edit, view, et index : "site"
=> Ajout champ is_site_only dans vues materiels edit, view, et index :
"(réservé au site)"

v5.3.12-3.7.9
@@ -631,8 +631,15 @@ Ne pas autoriser la commande via url si le bouton order est désactivé dans la @@ -631,8 +631,15 @@ Ne pas autoriser la commande via url si le bouton order est désactivé dans la
631 ======= CHANGES ======= 631 ======= CHANGES =======
632 632
633 ------- 633 -------
  634 +26/11/2021 v5.3.12-3.7.9
  635 + - (e) Préparation du partitionnement optionnel des materiels par site (phase 2/3)
  636 + => Ajout liste users associés dans vue site (view)
  637 + => Ajout champ site_id dans vues users edit, view, et index : "site"
  638 + => Ajout champ is_site_only dans vues materiels edit, view, et index : "(réservé au site)"
  639 +
  640 +-------
634 26/11/2021 v5.3.11-3.7.9 641 26/11/2021 v5.3.11-3.7.9
635 - - (i) Préparation du partitionnement optionnel des materiels par site 642 + - (i) Préparation du partitionnement optionnel des materiels par site (phase 1/3)
636 => Ajout de nouveaux champs site_id et is_site_only dans les tables users et materiels (resp.) 643 => Ajout de nouveaux champs site_id et is_site_only dans les tables users et materiels (resp.)
637 - (a) Attention, update bd 644 - (a) Attention, update bd
638 645
src/Controller/SitesController.php
@@ -85,7 +85,7 @@ class SitesController extends AppController @@ -85,7 +85,7 @@ class SitesController extends AppController
85 */ 85 */
86 public function view($id = null) { 86 public function view($id = null) {
87 87
88 - return $this->view_generic($id, ['Emprunts', 'Materiels',]); 88 + return $this->view_generic($id, ['Emprunts', 'Materiels', 'Users']);
89 89
90 /* 90 /*
91 $site = $this->Sites->get($id, [ 91 $site = $this->Sites->get($id, [
src/Controller/UsersController.php
@@ -549,6 +549,7 @@ class UsersController extends AppController { @@ -549,6 +549,7 @@ class UsersController extends AppController {
549 */ 549 */
550 550
551 $contains = [ 551 $contains = [
  552 + 'Sites',
552 'GroupesThematiques', 553 'GroupesThematiques',
553 'GroupesMetiers', 554 'GroupesMetiers',
554 'SurCategories' 555 'SurCategories'
@@ -558,6 +559,7 @@ class UsersController extends AppController { @@ -558,6 +559,7 @@ class UsersController extends AppController {
558 'nom' => 'nom', 559 'nom' => 'nom',
559 'email' => 'email', 560 'email' => 'email',
560 'role' => 'role', 561 'role' => 'role',
  562 + 'site_id' => 'Sites.nom',
561 'groupes_thematique_id' => 'GroupesThematiques.nom', 563 'groupes_thematique_id' => 'GroupesThematiques.nom',
562 'groupes_metier_id' => 'GroupesMetiers.nom', 564 'groupes_metier_id' => 'GroupesMetiers.nom',
563 'sur_categorie_id' => 'SurCategories.nom', 565 'sur_categorie_id' => 'SurCategories.nom',
@@ -571,6 +573,10 @@ class UsersController extends AppController { @@ -571,6 +573,10 @@ class UsersController extends AppController {
571 'nom' => [], 573 'nom' => [],
572 'email' => [], 574 'email' => [],
573 'role' => [], 575 'role' => [],
  576 + 'site_id'=>[
  577 + //'nice_name'=>'Domaine',
  578 + 'contained_entity_name'=>'site', 'controller_name'=>'Sites',
  579 + ],
574 'groupes_thematique_id'=>[ 580 'groupes_thematique_id'=>[
575 //'nice_name'=>'Groupe Thématique', 581 //'nice_name'=>'Groupe Thématique',
576 'contained_entity_name'=>'groupes_thematique', 582 'contained_entity_name'=>'groupes_thematique',
@@ -714,9 +720,10 @@ class UsersController extends AppController { @@ -714,9 +720,10 @@ class UsersController extends AppController {
714 720
715 $user = $this->Users->get($id, [ 721 $user = $this->Users->get($id, [
716 'contain' => [ 722 'contain' => [
717 - 'GroupesMetiers',  
718 - 'GroupesThematiques',  
719 - 'SurCategories' 723 + //'Sites',
  724 + //'GroupesMetiers',
  725 + //'GroupesThematiques',
  726 + //'SurCategories'
720 ] 727 ]
721 ]); 728 ]);
722 $this->set('user', $user); 729 $this->set('user', $user);
@@ -824,7 +831,9 @@ class UsersController extends AppController { @@ -824,7 +831,9 @@ class UsersController extends AppController {
824 public function edit($id = null) 831 public function edit($id = null)
825 { 832 {
826 $user = $this->Users->get($id, [ 833 $user = $this->Users->get($id, [
827 - 'contain' => [] 834 + 'contain' => [
  835 + //'Sites',
  836 + ]
828 ]); 837 ]);
829 if ($this->request->is([ 838 if ($this->request->is([
830 'patch', 839 'patch',
@@ -856,6 +865,10 @@ class UsersController extends AppController { @@ -856,6 +865,10 @@ class UsersController extends AppController {
856 $this->Flash->error(__("L'utilisateur n'a pas pu être modifié")); 865 $this->Flash->error(__("L'utilisateur n'a pas pu être modifié"));
857 } 866 }
858 } 867 }
  868 + $sites = $this->Users->Sites->find('list', [
  869 + 'keyField' => 'id',
  870 + 'valueField' => 'nom'
  871 + ]);
859 $groupesMetiers = $this->Users->GroupesMetiers->find('list', [ 872 $groupesMetiers = $this->Users->GroupesMetiers->find('list', [
860 'keyField' => 'id', 873 'keyField' => 'id',
861 'valueField' => 'nom' 874 'valueField' => 'nom'
@@ -880,10 +893,12 @@ class UsersController extends AppController { @@ -880,10 +893,12 @@ class UsersController extends AppController {
880 'keyField' => 'id', 893 'keyField' => 'id',
881 'valueField' => 'nom' 894 'valueField' => 'nom'
882 ]); 895 ]);
883 - $this->set(compact('user', 'groupesMetiers', 'groupesThematiques', 'sur_categorie')); 896 + $this->set(compact('user', 'sites', 'groupesMetiers', 'groupesThematiques', 'sur_categorie'));
  897 + /* inutile si pas json
884 $this->set('_serialize', [ 898 $this->set('_serialize', [
885 'user' 899 'user'
886 ]); 900 ]);
  901 + */
887 } // edit() 902 } // edit()
888 903
889 /** 904 /**
src/Model/Table/SitesTable.php
@@ -28,6 +28,10 @@ class SitesTable extends AppTable @@ -28,6 +28,10 @@ class SitesTable extends AppTable
28 //$this->setDisplayField('id'); 28 //$this->setDisplayField('id');
29 $this->setDisplayField('nom'); 29 $this->setDisplayField('nom');
30 $this->setPrimaryKey('id'); 30 $this->setPrimaryKey('id');
  31 +
  32 + $this->hasMany('Users', [
  33 + 'foreignKey' => 'site_id'
  34 + ]);
31 35
32 $this->hasMany('Materiels', [ 36 $this->hasMany('Materiels', [
33 'foreignKey' => 'site_id' 37 'foreignKey' => 'site_id'
src/Model/Table/UsersTable.php
@@ -12,10 +12,12 @@ use Cake\ORM\TableRegistry; @@ -12,10 +12,12 @@ use Cake\ORM\TableRegistry;
12 * @property \Cake\ORM\Association\BelongsTo $GroupesThematiques 12 * @property \Cake\ORM\Association\BelongsTo $GroupesThematiques
13 * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers 13 * @property \Cake\ORM\Association\BelongsTo $GroupesMetiers
14 * @property \Cake\ORM\Association\BelongsTo $SurCategories 14 * @property \Cake\ORM\Association\BelongsTo $SurCategories
  15 + * @property \Cake\ORM\Association\BelongsTo $Sites
15 */ 16 */
16 class UsersTable extends AppTable 17 class UsersTable extends AppTable
17 { 18 {
18 19
  20 +
19 /** 21 /**
20 * Initialize method 22 * Initialize method
21 * 23 *
@@ -31,6 +33,10 @@ class UsersTable extends AppTable @@ -31,6 +33,10 @@ class UsersTable extends AppTable
31 //$this->setDisplayField('id'); 33 //$this->setDisplayField('id');
32 $this->setDisplayField('nom'); 34 $this->setDisplayField('nom');
33 $this->setPrimaryKey('id'); 35 $this->setPrimaryKey('id');
  36 +
  37 + $this->belongsTo('Sites', [
  38 + 'foreignKey' => 'site_id'
  39 + ]);
34 40
35 $this->belongsTo('GroupesMetiers', [ 41 $this->belongsTo('GroupesMetiers', [
36 'foreignKey' => 'groupes_metier_id' 42 'foreignKey' => 'groupes_metier_id'
src/Template/Element/materiels_list.ctp
@@ -391,13 +391,14 @@ $displayActionButtonsForMateriel = function($materiel, $statuses_color, $usernam @@ -391,13 +391,14 @@ $displayActionButtonsForMateriel = function($materiel, $statuses_color, $usernam
391 <td class="smallText"><?= $materiel->has('fournisseur') ? h($materiel->fournisseur->nom) : '' ?></td> 391 <td class="smallText"><?= $materiel->has('fournisseur') ? h($materiel->fournisseur->nom) : '' ?></td>
392 392
393 <?php 393 <?php
394 - $lieu = $materiel->has('site') ? h($materiel->site->nom) : '';  
395 - if ($materiel->lieu_detail) {  
396 - if ($materiel->has('site')) $lieu .= '-';  
397 - $lieu .= $materiel->lieu_detail; 394 + $site_lieu = '';
  395 + if ($materiel->has('site')) {
  396 + $site_lieu = h($materiel->site->nom);
  397 + if ($materiel->lieu_detail) $site_lieu .= ' - '.h($materiel->lieu_detail);
  398 + if ($materiel->is_site_only) $site_lieu .= ' (réservé au site)';
398 } 399 }
399 ?> 400 ?>
400 - <td class="smallText"><?=$lieu?></td> 401 + <td class="smallText"><?=$site_lieu?></td>
401 402
402 <!-- 403 <!--
403 <td class="smallText"><= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td> 404 <td class="smallText"><= $materiel->has('organisme') ? h($materiel->organisme->nom) : '' ?></td>
src/Template/Materiels/add_edit.ctp
@@ -77,9 +77,9 @@ $IS_EDIT = !$IS_ADD; @@ -77,9 +77,9 @@ $IS_EDIT = !$IS_ADD;
77 $CAN_PRINT_LABEL = $CAN_PRINT_LABEL; 77 $CAN_PRINT_LABEL = $CAN_PRINT_LABEL;
78 78
79 $entity = $entity; 79 $entity = $entity;
  80 +//debug($entity);
80 // @deprecated 81 // @deprecated
81 $materiel = $entity; 82 $materiel = $entity;
82 -//debug($entity);  
83 83
84 $statuses = $statuses; 84 $statuses = $statuses;
85 85
@@ -404,7 +404,7 @@ if (isset($cpMateriel)) { @@ -404,7 +404,7 @@ if (isset($cpMateriel)) {
404 'disabled' => $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields) 404 'disabled' => $IS_ADD ? false : $this->MyHelper->isReadonlyField($f, $readonlyFields)
405 ]); 405 ]);
406 */ 406 */
407 - 407 +
408 // - Technique et/ou Inventoriable ? 408 // - Technique et/ou Inventoriable ?
409 echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'materiel_technique', "Technique (pas pour l'inventaire officiel)"); 409 echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'materiel_technique', "Technique (pas pour l'inventaire officiel)");
410 /* 410 /*
@@ -670,7 +670,7 @@ if (isset($cpMateriel)) { @@ -670,7 +670,7 @@ if (isset($cpMateriel)) {
670 670
671 671
672 672
673 - // - Site 673 + // - Site (+ réservé ?)
674 echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'site_id', null, 'N/A'); 674 echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'site_id', null, 'N/A');
675 /* 675 /*
676 echo $this->Form->control('site_id', [ 676 echo $this->Form->control('site_id', [
@@ -685,6 +685,9 @@ if (isset($cpMateriel)) { @@ -685,6 +685,9 @@ if (isset($cpMateriel)) {
685 'disabled' => $IS_ADD ? false : $isReadonlyField('site_id', $readonlyFields) 685 'disabled' => $IS_ADD ? false : $isReadonlyField('site_id', $readonlyFields)
686 ]); 686 ]);
687 */ 687 */
  688 + // réservé au site
  689 + echo $this->MyHelper->control($IS_ADD, $readonlyFields, 'is_site_only', 'Ce matériel est réservé au site');
  690 +
688 691
689 // - Detail lieu stockage (avec affichage auto des lieux déjà saisis) 692 // - Detail lieu stockage (avec affichage auto des lieux déjà saisis)
690 /* OLD 693 /* OLD
src/Template/Materiels/view.ctp
@@ -776,9 +776,18 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN @@ -776,9 +776,18 @@ $CAN_PRINT_LABEL = $IS_VALIDATED &amp;&amp; $configuration-&gt;hasPrinter &amp;&amp; $USER_IS_ADMIN
776 ['controller'=>'Fournisseurs', 'action'=>'view', $entity->fournisseur->id] 776 ['controller'=>'Fournisseurs', 'action'=>'view', $entity->fournisseur->id]
777 ) 777 )
778 ); 778 );
779 -  
780 - $displayElement(__('Lieu de stockage'), $entity->has('site') ? h($entity->site->nom) : '');  
781 - $displayElement(__('Détail lieu de stockage'), h($entity->lieu_detail)); 779 +
  780 + // Site et lieu de stockage
  781 + if ($entity->has('site')) {
  782 + $site_lieu = h($entity->site->nom);
  783 + if ($entity->lieu_detail) $site_lieu .= ' - '.h($entity->lieu_detail);
  784 + if ($entity->is_site_only) $site_lieu .= ' (réservé au site)';
  785 + $displayElement(__('Site - lieu de stockage'), $site_lieu);
  786 + /*
  787 + $displayElement(__('Lieu de stockage (site)'), $entity->has('site') ? h($entity->site->nom) : '');
  788 + $displayElement(__('Détail lieu de stockage'), h($entity->lieu_detail));
  789 + */
  790 + }
782 791
783 // - Acheteur (lien mailto) 792 // - Acheteur (lien mailto)
784 $displayElement(__("Nom de l'acheteur"), 793 $displayElement(__("Nom de l'acheteur"),
src/Template/Users/edit.ctp
1 <?php 1 <?php
2 // Variables passées par le controleur 2 // Variables passées par le controleur
  3 +$sites = $sites;
3 $groupesMetiers = $groupesMetiers; 4 $groupesMetiers = $groupesMetiers;
4 $groupesThematiques = $groupesThematiques; 5 $groupesThematiques = $groupesThematiques;
5 $sur_categorie = $sur_categorie; 6 $sur_categorie = $sur_categorie;
6 // ... 7 // ...
7 8
  9 +//debug ($user);
  10 +//debug($sites);
  11 +//debug($groupesMetiers);
8 //debug($groupesThematiques); 12 //debug($groupesThematiques);
9 ?> 13 ?>
10 14
@@ -76,6 +80,13 @@ $sur_categorie = $sur_categorie; @@ -76,6 +80,13 @@ $sur_categorie = $sur_categorie;
76 //'readonly' => $READONLY 80 //'readonly' => $READONLY
77 'readonly' => true 81 'readonly' => true
78 ]); 82 ]);
  83 +
  84 + echo $this->Form->control('site_id', [
  85 + //'label' => $configuration->nom_groupe_metier,
  86 + 'options' => $sites,
  87 + 'empty' => 'N/A',
  88 + //'default' => 1
  89 + ]);
79 90
80 echo $this->Form->control('role', [ 91 echo $this->Form->control('role', [
81 'label' => 'Rôle', 92 'label' => 'Rôle',